上周浙大机器学习课程看到–PCA,今天开始总结一下基础知识,和简单的项目应用。
此前在生物信息学中也经常应用,最近一次的使用是在挑选样本时,看不同样本间的相关性/平行性。
【PCA的算法流程】
输入:n维样本集X=(x1,x2,…,xm),要降维到的维数n’.
输出:降维后的样本集Y
1、对所有的样本进行中心化
2、计算样本的协方差矩阵
3、求出协方差矩阵的特征值及对应的特征向量
4、将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P
5、Y=PX 即为降维到k维后的数据
注意:有时候,不指定降维后的n’的值,而是换种方式,指定一个降维到的主成分比重阈值t(0,1]。假如n个特征值为λ1≥λ2≥…≥λn,则n’可以通过下式得到:
【PCA项目实践】
【PCA算法总结】
作为一个非监督学习的降维方法,它只需要特征值分解,就可以对数据进行压缩,去噪。因此在实际场景应用很广泛。为了克服PCA的一些缺点,出现了很多PCA的变种,比如为解决非线性降维的KPCA,还有解决内存限制的增量PCA方法Incremental PCA,以及解决稀疏数据降维的PCA方法Sparse PCA等。
PCA算法的主要优点有:
- 仅仅需要以方差衡量信息量,不受数据集以外的因素影响。
- 各主成分之间正交,可消除原始数据成分间的相互影响的因素。
- 计算方法简单,主要运算是特征值分解,易于实现。
PCA算法的主要缺点有:
- 主成分各个特征维度的含义具有一定的模糊性,不如原始样本特征的解释性强。
- 方差小的非主成分也可能含有对样本差异的重要信息,因降维丢弃可能对后续数据处理有影响。