在数据分析中,如果特征太多,或者特征之间的相关性太高,通常可以用PCA来进行降维。比如通过对原有10个特征的线性组合, 我们找出3个主成分,就足以解释绝大多数的方差,该算法在高维数据集中被广泛应用。
算法(没时间看版本):
- 将数据标准化,即把所有数据转换以原点为中心;
- 划一条通过原点的直线,将所有点投影到该直线上,然后计算这些投影点到原点的距离平方和。设想我们不停的转动该直线,最终找到一条直线使得这个距离平方和最大,也就是该直线最接近所有的点,该直线为特征向量的方向,称为PC1,这个距离平方和即为特征值;
- 按同样的方法,找到第二条直线,该直线与PC1垂直且距离平方和最大,为PC2;
- 重复该过程直到找到所有的PC;
- 根据需求,确定头部的几个PC可以解释绝大多数方差。
下面先给出几个相关的概念。
协方差和散度矩阵
样本均值:
xˉ=1n∑i=1Nxi\bar{x} = \frac{1}{n} \sum_{i=1}^N x_ixˉ=n1i=1∑Nxi
样本方差:
S2=1n−1∑i=1n(xi−xˉ)2S^2=\frac{1}{n-1} \sum_{i=1}^n {(x_i-\bar{x})}^2S2=n−11i=1∑n(xi−xˉ)2
样本X和样本Y的协方差:
Cov(X,Y)=E[(X−E(X))(Y−E(Y))]=1n−1∑i=1n(xi−xˉ)(yi−yˉ)Cov(X,Y)=E[(X-E(X))(Y-E(Y))]=\frac{1}{n-1}\sum_{i=1}^{n}(x_i-\bar{x})(y_i-\bar{y})Cov(X,Y)=E[(X−E(X))(Y−