数据选择是指有M个属性,从中选中N个属性。特征提取(data extraction)则是对原始的特征做了某种变化。
方差
方差衡量了数值的分散程度,并且衡量的是一维数据的分散程度。
最大可分性
不同的基可以对同样的一组数据给出不同的表示,如果基的数量少于向量的维度,则可以达到降维的效果。现在要选取基将向量降到K维,并且要最大程度保留原有信息。
希望投影后的投影值尽可能分散,即对于一维数据,找到一个一维基来使转换后的数据方差最少。
协方差
协方差衡量的是两个变量间的相关性。为了让两个变量尽可能表示更多的原始信息,我们希望他们之间不存在线性相关性,即不存在重复表示的信息。
现在,降维的优化目标为将一组N维向量降维K维,其目标是选择K个单位正交基,使得原始数据变换到这组基上后,各变量之间的协方差为0,而变量方差则尽可能大(即取最大的K个方差)
协方差矩阵
我们希望将变量内方差和变量间协方差统一地表示,两者都可表示为内积的形式,而内积又与矩阵相乘密切相关。于是:
假设只有a和b两个变量,将其按行组成矩阵:
这里假设各变量的均值为0
推广:我们有 m 个 n 维数据记录,将其排列成矩阵
设原始数据矩阵 X 对应的协方差矩阵为 C,而 P 是一组基按行组成的矩阵,设 Y=PX,则 Y 为 X 对 P 做基变换后的数据。设 Y 的协方差矩阵为 D,我们推导一下 D 与 C 的关系:
矩阵对角化
根据优化条件,我们需要将对角线外的其他元素化为0,并且在对角线上的方差尽可能大。
我们要找的 P 是能让原始协方差矩阵对角化的 P。换句话说,优化目标变成了寻找一个矩阵 P,满足
由上文知道,协方差矩阵 C 是一个是对称矩阵,在线性代数中实对称矩阵有一系列非常好的性质:
- 实对称矩阵不同特征值对应的特征向量必然正交。
- 设特征向量
重数为 r,则必然存在 r 个线性无关的特征向量对应于,因此可以将这 r 个特征向量单位正交化。
由上面两条可知,一个 n 行 n 列的实对称矩阵一定可以找到 n 个单位正交特征向量,设这 n 个特征向量为
则对协方差矩阵 C 有如下结论:
其中
到这里,我们发现我们已经找到了需要的矩阵 P:
P 是协方差矩阵的特征向量单位化后按行排列出的矩阵,其中每一行都是 C 的一个特征向量。如果设 P 按照
主成分分析(principal component analysis)
我们当然想把属性变“简单”,同时又不丢掉重要的信息。
一个例子:
方差可以理解为信息,方差越大,那么特征的范围也就越大,比如身高从1m2到1m8都有。方差小,身高小,都中在1m5,那么它的信息也就少。所以如果要选择x1还是x2好的话选x1要好一些。
实际上这种情况却很多,所以这时候该怎么选择属性呢?
想法如下:
最终选择y1。
即:
总结一下 PCA 的算法步骤:
设有 m 条 n 维数据。
- 将原始数据按列组成 n 行 m 列矩阵 X;
- 将 X 的每一行进行零均值化,即减去这一行的均值;
- 求出协方差矩阵
;
- 求出协方差矩阵的特征值及对应的特征向量;
- 将特征向量按对应特征值大小从上到下按行排列成矩阵,取前 k 行组成矩阵 P;
-
即为降维到 k 维后的数据。