基于MATLAB的Iris数据集核判别分析(KDA)分类与降维系统
项目介绍
本项目是一个集成化的MATLAB数据处理平台,旨在实现基于核判别分析(Kernel Discriminant Analysis, KDA)的非线性降维与分类任务。系统采用经典的鸢尾花(Iris)数据集,利用核技巧(Kernel Trick)将原始四维线性特征映射到高维核空间。通过最大化类间散度与最小化类内散度的准则,解决传统线性判别分析(LDA)在处理非线性可分数据时的短板。该系统具有完整的机器学习流水线,涵盖了从原始数据加载、预处理、核空间变换到自动化分类与预测结果可视化全过程。
---
功能特性
- 自动化数据预处理:内置数据加载、多类别数值标签转换及Z-score标准化处理,确保不同量纲特征对模型的贡献度均衡。
- 分层随机采样:实现按类别比例(70%训练,30%测试)的训练集与测试集划分,保证各类别样本分布的一致性。
- 核技巧集成:采用高斯径向基函数(RBF Kernel)计算样本间的相似度矩阵,支持非线性映射。
- 数值稳定性处理:在广义特征值求解过程中引入正则化常数,有效缓解核矩阵的奇异性问题。
- 特征降维与可视化:将数据压缩至二维判别空间,并自动生成训练集投影分布图与带有错误标注的测试集分类散点图。
- 智能分类决策:基于降维后的特征空间构建最近质心分类器(Nearest Centroid Classifier),实现高效的样本类别判定。
---
系统逻辑流程
系统主程序的执行逻辑严格遵循以下步骤:
- 数据初始化:通过内置函数加载150个鸢尾花样本,包含4个生理特征及3个类别,并将文本标签映射为数值索引。
- 划分数据集:设置固定随机数种子(rng 42),对每个类别分别提取70%作为训练样本,其余30%作为独立评估集。
- 均值归一化:以训练集的统计参数(均值和标准差)为基准,对训练集和测试集同步执行规范化。
- 构建核化散度矩阵:
* 计算训练集样本间的RBF核矩阵 $K$。
* 构造权重矩阵 $W$,其中对应同类样本的块设置为该类样本数倒数。
* 计算类间散度相关矩阵 $M = K W K$ 与总散度相关矩阵 $N = K K + lambda I$($lambda$ 为正则化项)。
- 特征提取与投影:
* 求解 $M alpha = lambda N alpha$ 的广义特征值问题。
* 选取特征值最大的前2个特征向量组成投影基底。
* 计算测试样本与训练样本之间的交叉核矩阵,实现测试数据向新空间的映射。
- 执行分类与评估:通过训练投影点的均值计算各类质心,利用欧氏距离对测试集进行分类判别,最终输出准确率指标及混淆矩阵。
---
关键技术点分析
1. 核矩阵计算逻辑
系统在计算核矩阵时利用了向量化运算技巧。通过公式 $||a-b||^2 = ||a||^2 + ||b||^2 - 2a'b$ 快速计算样本间的欧氏距离平方,随后应用高斯核函数公式。这种实现方式避免了逐样本遍历,显著提升处理速度。
2. 判别准则在核空间的应用
KDA的核心在于通过 $W$ 矩阵对类内和类间信息建模。代码中定义的 $W$ 矩阵能够有效地将核矩阵转化为判别统计量。正则化项(1e-3)的加入是确保程序鲁棒性的关键,它解决了当核矩阵在高维空间中秩亏时矩阵求逆失败的问题。
3. 最近质心分类算法
在投影后的二维空间内,系统没有使用复杂的SVM或神经网络,而是选择了与LDA原理高度契合的最近质心法。这种方法在经过KDA降维后通常能达到极高的准确度,反映了投影后空间良好的类簇分离度。
---
使用方法
- 环境配置:确保电脑中已安装 MATLAB R2016b 或更高版本。
- 数据准备:程序直接调用 MATLAB 默认自带的
fisheriris 数据集,无需额外下载数据文件。 - 参数调节:
* 若需更改核函数的映射强度,可调整
sigma_kernel 参数。
* 若需处理更复杂的数据集,可通过
reg_param 控制正则化强度防止过拟合。
- 运行程序:在编辑器中打开主脚本直接点击“运行”或在命令行窗口键入主函数名。
- 查看结果:程序会自动在命令行打印训练/测试准确率和混淆矩阵,并弹出包含两个子图的可视化窗口,直观展示分类边界。
---
系统要求
- 软件环境:MATLAB 2016b 及以上版本(需包含 Statistics and Machine Learning Toolbox 以支持混淆矩阵计算)。
- 硬件要求:标准桌面电脑配置,内存 4GB 以上。
- 核心依赖:主要使用 MATLAB 内置的基础矩阵运算函数、
eig 获取特征权重、scatter 进行图形渲染。