Machine Learning第八讲[非监督学习] --(三)主成分分析(PCA)

内容来自Andrew老师课程Machine Learning的第八章内容的Principal Component Analysis(PCA)部分。


一、Principal Component Analysis Problem Formulation(主成分分析构思)


首先来看一下PCA的基本原理:
Machine Learning第八讲[非监督学习] --(三)主成分分析(PCA)
PCA会选择投影误差最小的一条线,由图中可以看出,当这条线是我们所求时,投影误差比较小,而投影误差比较大时,一定是这条线偏离最优直线。

PCA的方向:
Machine Learning第八讲[非监督学习] --(三)主成分分析(PCA)

从图上的分析,我们可能很疑惑PCA和线性回归十如此地相似,那么两者是一回事吗?下面的图可以很好地给出解释:
Machine Learning第八讲[非监督学习] --(三)主成分分析(PCA)
总结:线性回归和PCA的最优模型都是最小化某个值,只是线性回归最小化预测值和真实值之间的误差,而PCA最小化投影误差。

二、Principal Component Analysis Algorithm(主成分分析算法)

主成分分析的具体流程为:

训练集:Machine Learning第八讲[非监督学习] --(三)主成分分析(PCA)

1、数据预处理:计算均值Machine Learning第八讲[非监督学习] --(三)主成分分析(PCA),用Machine Learning第八讲[非监督学习] --(三)主成分分析(PCA)替换Machine Learning第八讲[非监督学习] --(三)主成分分析(PCA)(这样就使得所有特征均值为0),即Machine Learning第八讲[非监督学习] --(三)主成分分析(PCA)若特征之间的值变化太大,可以进行特征缩放)

2、将数据从n维降到k维(k≤n)

(1)计算协方差:Machine Learning第八讲[非监督学习] --(三)主成分分析(PCA),其中Machine Learning第八讲[非监督学习] --(三)主成分分析(PCA)是n*1矩阵(注意,∑不是求和而是协方差的符号

2)计算矩阵∑的特征向量:[ U, S, V ] = svd( Sigma ) = eig( Sigma),在做奇异值分解的时候,svd( )和eig( )的结果相同,但是svd( )相对稳定一些,能够得到U是n*n的矩阵,

[U,S,V]=svd(∑)=eig(∑)

注意:svd产生的U是由特征向量组成的,按照特征值大小排列的,即大的特征值对应的特征向量在前面,小的特征值对应的特征向量在后面。又特征值越大,说明此特征越重要,因此在下一步中可以取前K列特征(使得k固定的情况下,丢失最少的特征)。

(3)取U的前k列,记作Machine Learning第八讲[非监督学习] --(三)主成分分析(PCA),则

Machine Learning第八讲[非监督学习] --(三)主成分分析(PCA)


其算法流程如下:

Machine Learning第八讲[非监督学习] --(三)主成分分析(PCA)




推荐PCA系列文章:
PCA降维算法总结以及matlab实现PCA(个人的一点理解)

PCA 降维算法详解 以及代码示例

PCA的应用示例