主成分分析PCA

PCA原理

PCA思想

PCA是一种重要的降维方法之一,就是找出数据里最主要的方面,用主要方面代替原数据,并希望损失尽可能小。

PCA推导:基于最小投影距离

假设m个n维数据((x^{(1)},x^{(2)},...,x^{(m)}))都已经进行了中心化,即(sumlimits_{i=1}^mx^{(i)}=0),经过投影变换后得到的新坐标系为({w_1,w_2,...,w_n}),其中(w)是标准正交基,即(lVert w Vert_2=1,w_i^Tw_j=0)

如果我们将数据从n维降到n'维,即丢弃新坐标系中部分坐标,则新坐标系为({w_1,w_2,...,w_{n'}}),样本点(x^{(i)})在n'维坐标系中的投影为:(z^{(i)}=(z_1^{(i)},z_2^{(i)},...,z_{n'}^{(i)})^T),其中,(z_j^{(i)}=w_j^Tx^{(i)})(x^{(i)})在低维坐标系里第j维的坐标。

如果我们用(z^{(i)})来恢复原始数据(x^{(i)}),则得到恢复数据(overline x^{(i)}=sumlimits_{j=1}^{n'}z_j^{(i)}w_j=Wz^{(i)})其中,W为标准正交基组成的矩阵。

现在我们考虑整个样本集,我们希望所有的样本到这个超平面的距离足够近,即最小化下式:

[sum_{i=1}^mlVert overline x^{(i)}-x^{(i)} Vert_2^2 ]

将这个式子进行整理可以得到

[egin{align}egin{split} sumlimits_{i=1}^{m}lVert overline{x}^{(i)}-x^{(i)} Vert_2^2&=sumlimits_{i=1}^{m}lVert Wz^{(i)}-x^{(i)} Vert_2^2\ &=sumlimits_{i=1}^{m}(Wz^{(i)})^T(Wz^{(i)})-2sumlimits_{i=1}^{m}(Wz^{(i)})^Tx^{(i)}+sumlimits_{i=1}^{m}x^{(i)T}x^{(i)}\ &=sumlimits_{i=1}^{m}z^{(i)T}z^{(i)}-2sumlimits_{i=1}^{m}z^{(i)T}W^Tx^{(i)}+sumlimits_{i=1}^{m}x^{(i)T}x^{(i)}\ &=sumlimits_{i=1}^{m}z^{(i)T}z^{(i)}-2sumlimits_{i=1}^{m}z^{(i)T}z^{(i)}+sumlimits_{i=1}^{m}x^{(i)T}x^{(i)}\ &=-sumlimits_{i=1}^{m}z^{(i)T}z^{(i)}+sumlimits_{i=1}^{m}x^{(i)T}x^{(i)}\ &=-tr(W^T(sumlimits_{i=1}^{m}x^{(i)}x^{(i)T})W)+sumlimits_{i=1}^{m}x^{(i)T}x^{(i)}\ &=-tr(W^TXX^TW)+sumlimits_{i=1}^{m}x^{(i)T}x^{(i)} end{split} end{align} ]

注意到(sumlimits_{i=1}^{m}x^{(i)}x^{(i)T})是数据集的协方差矩阵,W的每个向量(w_j)是正标准正交基,而(sumlimits_{i=1}^{m}x^{(i)T}x^{(i)})是一个常数,最小化上式等于

[underbrace{argmin}_W-tr(W^TXX^TW)quad s.t. W^TW=I ]

可以发现,最小值对就的W由协方差矩阵(XX^T)最大的n'个特征向量组成。

利用拉格朗日函数可以得到

[J(W)=-tr(W^TXX^TW+lambda(W^TW-I)) ]

对W求导有(-XX^TW+lambda W=0),整理如下

[XX^TW=lambda W ]

这样可以看到,W为(XX^T)的n'个特征向量组成的矩阵,面(lambda)(XX^T)的若干个特征值组成的矩阵,特征值在主对角线上,其余位置为0。当我们将数据集从n维降到n'维时,需要找到的最大的n'个特征值对应的向量。这n'个特征向量组成的矩阵W即为我们需要的矩阵,对于原始数据集,我们只需要用(z^{(i)}=W^Tx^{(i)}),就可以把原始数据集降维到最小投影距离的n'维数据集。

PCA推导:基于最大投影方差

假设m个n维数据((x^{(1)},x^{(2)},...,x^{(m)}))都已经进行了中心化,即(sumlimits_{i=1}^mx^{(i)}=0),经过投影变换后得到的新坐标系为({w_1,w_2,...,w_n}),其中(w)是标准正交基,即(lVert w Vert_2=1,w_i^Tw_j=0)

如果我们将数据从n维降到n'维,即丢弃新坐标系中部分坐标,则新坐标系为({w_1,w_2,...,w_{n'}}),样本点(x^{(i)})在n'维坐标系中的投影为:(z^{(i)}=(z_1^{(i)},z_2^{(i)},...,z_{n'}^{(i)})^T),其中,(z_j^{(i)}=w_j^Tx^{(i)})(x^{(i)})在低维坐标系里第j维的坐标。

对于任意样本(x^{(i)}),在新的坐标系中的投影为(W^Tx^{(i)}),在新坐标系中投影方差为(W^Tx^{(i)}x^{(i)T}W),要使所有的样本投影方差和最大,也就是最大化(sumlimits_{i=1}^{m}W^Tx^{(i)}x^{(i)T}W)的迹,即

[underbrace{argmax}_W tr(W^TXX^TW)quad s.t. W^TW=I ]

与上面一样,只是少一个负号,利用拉格朗日函数可以得到

[J(W)=tr(W^TXX^TW+lambda(W^TW-I)) ]

对W求导有(XX^TW+lambda W=0),整理如下

[XX^TW=-lambda W ]

这样可以看到,和上面一样。W为(XX^T)的n'个特征向量组成的矩阵,面(lambda)(XX^T)的若干个特征值组成的矩阵,特征值在主对角+--位置为0。当我们将数据集从n维降到n'维时,需要找到的最大的n'个特征值对应的向量。这n'个特征向量组成的矩阵W即为我们需要的矩阵,对于原始数据集,我们只需要用(z^{(i)}=W^Tx^{(i)}),就可以把原始数据集降维到最小投影距离的n'维数据集。

PCA算法流程

输入:n维样本集(D=(x^{(1)},x^{(2)},...,x^{(m)})),要降维到的维数n'

输出:降维后的数据集D'

  1. 对所有样本进行中心化:(x^{(i)}=x^{(i)}-frac{1}{m}sumlimits_{j=1}^{m}x^{(j)})

  2. 计算样本的协方差矩阵(XX^T)

  3. 对矩阵(XX^T)进行特征值分解

  4. 对出最大的n'个特征值对应的向量((w_1,w_2,...,w_{n'})),将所有向量标准化后,组成特征向量矩阵W。

  5. 对样本集中的每一个样本(x^{(i)})转化为新的样本(z^{(i)}=W^Tx^{(i)})

  6. 得到输出样本集(D'=(z^{(1)},z^{(2)},...,z^{(m)}))

核主成分分析KPCA

在PCA算法中,我们假设存在超平面,可以让我们对数据进行投影。但有些时候数据不是线性的,不能直接使用PCA的方法直接降维。这就需要用和SVM一样的核函数的思想,先把数据集从n维映射到线性可分的高维N>n,然后再从N维降到一个低维度n',这里有n'<n<N。

假设高维空间的数据是由n维空间的数据通过映射(phi)产生,对于n维空间的特征分解:

[sumlimits_{i=1}^{m}x^{(i)}x^{(i)T}W=lambda W ]

映射为

[sumlimits_{i=1}^{m}phi(x^{(i)})phi(x^{(i)T})W=lambda W ]

和PCA一样进行降维。

方差与协方差的意义

方差:用来度量随机变量与其数据期望之间的偏离程度

协方差:用来度量两个变量之间的相关关系。

协方差:

  1. 大于0,正相关
  2. 小于0,负相关
  3. 等于0,不相关
  4. 协方差小的,两者相关性也小

PCA算法总结

PCA优点:

  1. 仅以方差衡量信息量,不受数据集以外的因素影响
  2. 各主成分之前正交,可消除原始数据成分间的相互影响因素
  3. 计算方法简单,主要计算是特征值分解,易于实现

PCA缺点:

  1. 主成分各特征维度的含义模糊,不如原样本的特征解释性强
  2. 方差小的非主成分也可能含对样本差异的重要信息,因降维丢弃可能对后续数据处理有影响。

sklearn使用PCA

类库

from sklearn.decomposition import PCA

参数

  1. n_components:降维后特征维度数量
  2. whiten:是否进行白化
  3. svd_solver:奇异值分解的方法

实例

from sklearn.decomposition import PCA

pca = PCA(n_components=2)
pca.fit(x)
原文地址:https://www.cnblogs.com/guesswhy/p/12882876.html