1. 原理
KL变换步骤:
1.求样本X的协方差矩阵R
2.求 R的特征值λ。选取前d个较大的特征值。
3.计算d个特征值对应的特征向量,归一化后构成变换矩阵U。
4.对{X}中每一个X进行K-L变换,得到变换后向量Y=U’ * X,d维向量Y就是替代n维向量X进行分类的模式向量。
基于K-L变换分类阈值选择:
2. 过程
2.1 利用KL变换对样本集变换并在二维平面进行绘制
导入两类数据集(前文中同样的数据集)并进行合并,分别求两类数据集的均值以及总体的协方差矩阵,然后通过matlab函数eig求取协方差矩阵的特征值及特征向量:
结果如下:
图1 特征值和特征向量
选择较大的特征值以及对应的特征向量作为变换矩阵,然后对数据集中的每一行数据进行变换,变换后数据将会降为一维,为了在二维平面绘制可以构造为二维数据,投影不变:
结果如下:
图2 特征值、特征向量
图3 变换前后数据分布
从图中可以看出原始分布(右下角)经过KL转换后产生新的特征方向(左上角)
2.2 利用上述主成分进行分类
二维数据通过kl变换转换为一维数据后可以利用变换后的均值作为分类阈值,具体做法为计算出每一个数据的判别函数,以均值y0为阈值进行分类,最后计算准确率:
结果如下:
图4 分类结果
图5 分类阈值及分类准确率
2.3 选取较小的特征值进行对比
上述实验选取的特征值为较大的,接下来对于较小的特征值进行实验观察,结果如下:
图6 KL变换
图7 分类结果
图8 分类阈值及准确率
可以看出效果不佳,可以验证理论
3. 结果与分析
本文对于原始数据集进行KL变换可使得数据集从二维降低至一维,在分类的过程中,为了保证类间的样本投影后尽可能远离,应该选择特征值较大的特征向量作为投影方向,以使得方差尽可能大,突出了模式类之间的差异性,提升分类效果,且变换后样本各分量互不相关,即消除了原先特征之间的相关性。
实验的关键就是得到数据集的协方差矩阵并计算出特征值及特征向量,而使用matlab中的eig函数可以直接求出对应的结果。可以与之前文章中介绍的不同分类算法进行对比。K-L变换的去相关性好,可用于数据压缩和图像旋转。