特征选择(一)- 维数问题与类内距离
原文地址:http://blog.csdn.net/ycheng_sjtu/article/details/25343043
什么是特征选择?
简单说,特征选择就是降维。
特征选择的任务
就是要从n维向量中选取m个特征,把原向量降维成为一个m维向量。但是降维必须保证类别的可分离性或者说分类器的性能下降不多。
注意降维具有片面性,算法并不普适。常常会有失效发生。
降维这件小事
在图像处理中叫做图像压缩、特征提取。重在最优区分(可分离性)。
在模式识别中叫做特征选择。重在最优描述(保真性)。
降维的基本思想
就是找一个线性变换使得原来的n维观察值变成了
这样维数就下降了,只是要求不能明显降低类别的可分离性就好。本文介绍的都是线性变换。
为什么要降维?
1.有可能当你使用某个特征就能进行很好的分类,譬如一个二维问题很可能变成一维也可以分类,如图1所示,把原来的样本向y轴投影就好了,用一个y分量就能完成分类。可见降维确实很有用,关键在于如何找到像y方向这么好的特征呢?
图1
2.当特征的维数上升后,样本的可分离性自然是会增加。但是,类别的可分离性和分类器的性能是完全不同的两码事。
G.F.Hughes给出了错误率跟每次试验中的训练样本数n和特征空间块数M之间的关系曲线,如图2所示。
图2
其中d为维数,l是每维分为的段数。则特征空间块数
由图可见随着维数的继续增加,错误率会持续上升。我们不能盲目增加维数来想当然提高分类性能。
3.维与维之间不一定是独立的,可能因为相关性而存在冗余。
4.维数大了计算量存储量就大了嘛。
用什么分类?
还是用距离。
点到点
设k为每个点的分量的下标,则点a到点b之间的距离为:
点到点集
假定点集内共有K个点,表示点集中第i个点的第k个分量:
类内距离
有一种定义类内距离的方法,它把类内所有点两两之间的距离的平均,作为类内距离。下面推导其表达式:
类内某点跟其他点之间的距离的平方:
再j令在集内变化,取平均,就得到类内距离,即:
由于和都取自同一类内,则有
各分量的方差的无偏估值为:
则有
这不是协方差的迹么?
于是得到结论:类内距离为类协方差矩阵迹的2倍。
推论:某类样本的协方差矩阵的迹很小,则类内距离小,说明数据抱团,很紧凑。
于是你会想,降维其实就是找个变换,让变换后的数据各个类别抱团更加紧凑就好了。就是这样没错。
那么,怎么降维?
刚刚已经给出了类内距离的概念。
针对这个概念,有人从完全不同的两个角度给出了方法。
这就是聚类变换与K-L变换。