Principal Component Analysis (PCA)主成分分析
什么是主成分分析?
功能:降维以及特征构建
- PCA被用于减少数据维度,但不损失太多信息
- PCA被用于机器学习、信号处理和图像压缩
PCA的目的
通过对变量的线性结合,来解释或者总结一组数据量较大的变量的方差、协方差结构。
PCA的背景
假设有两个属性A1、A2,n个训练样本。x表示A1的值,y表示A2 的值
A1的方差为:
A1和A2 的协方差为:
- 如果方差为正,则这两个维度同时增长
- 如果方差为负,一者增加,另一者减少
- 如果方差为零,两者相互独立
协方差矩阵
假设有n个属性,A1,A2,…,An
协方差矩阵:
特征向量
M为
n×n 的矩阵
如果存在n×n ,那么v是m的特征向量λ 是与特征向量相关的特征值-
对于M的任意特征向量v和尺度a
M×av=λav -
于是我们可以选择长度为1的特征向量
v21+...+v2n‾‾‾‾‾‾‾‾‾‾√=1 如果矩阵M有任意n个特征向量,那么他们两两正交
- 因此,特征向量可以用作三维向量空间的新基础
二维数值示例
-
减去平均值
- 从每个数据维度,将所有的x都减去他们的平均值,y亦如此。这样可以产生一个平均值为零的数据集。
- 该步骤简化了方差和协方差级计算。减去平均值并不影响方差与协方差。
- 给一组原始数据集set,我们可以通过分别减去他们的平均值产生新的数据集:
计算协方差矩阵
由于在本例中的协方矩阵中,差非对角线元素均为正,故x与y成正相关,即x增长的时候y也增长。-
计算协方差的特征值以及特征向量
- 特征向量被绘制成对角点线(如图)
- 特征向量相互垂直
- 一条特征向量穿过数据点,就像绘制最适合这些数据点的直线一样
- 另一条特征向量相比之下,显得不那么重要。
-
降维和 Feature Vector
特征值最高的特征向量就是这组数据的主要成分principle component。
本例中,拥有较大特征值的特征向量正是位于数据中间的那条点线
下一步是根据特征值进行排序,由高到低,即根据成分的重要性进行排序。
现在,你可以决定忽视重要性较低的成分,这可能会导致丢失一些信息,但由于特征值较小,故丢失不多。步骤:
- n维数据
- 计算n为数据的特征向量和特征值
- 仅选择前p个特征向量(从高到低排序)
Feature Vector
Feature Vector 要么包含全部特征向量,要么仅包含我们之前选择的p个重要成分。
5.导出新数据
RowZeroMeanData是经过换位(排序)的的特征向量矩阵
RowZeroMeanData是经过平均值调整的数据,即在数据集在每列当中包含不同的维度
数据重构
- 当数据重构的时候,很明显,我们会失去一些我们选择放弃的维度。
- 我们可以根据
TransformedData=RowFeatureVector×RowDataAdjust
-得出调整后的数据数据RowDataAdjust=RowFeatureVector−1×TransformedData=RowFeatureVectorT×TransformedData - 以及原始数据
-
RowDataOriginal=RowDataAdjust+OriginalMean
主成分分析步骤
根据n维数据得出N个数据向量,找到
1. 正态化输入数据:使得每个属性都落到一个相同的范围
2. 计算k个正交的向量
3. 每一个输入数据(向量)都是k个主成分向量的线性组合
4. 根据主成分的重要性进行降序排序
5. 淘汰弱成分以降维
只适用于数字数据