Machine Learning第八讲[非监督学习] --(三)主成分分析(PCA)
内容来自Andrew老师课程Machine Learning的第八章内容的Principal Component Analysis(PCA)部分。
一、Principal Component Analysis Problem Formulation(主成分分析构思)
首先来看一下PCA的基本原理:
PCA会选择投影误差最小的一条线,由图中可以看出,当这条线是我们所求时,投影误差比较小,而投影误差比较大时,一定是这条线偏离最优直线。
PCA的方向:
从图上的分析,我们可能很疑惑PCA和线性回归十如此地相似,那么两者是一回事吗?下面的图可以很好地给出解释:
总结:线性回归和PCA的最优模型都是最小化某个值,只是线性回归最小化预测值和真实值之间的误差,而PCA最小化投影误差。
二、Principal Component Analysis Algorithm(主成分分析算法)
主成分分析的具体流程为:
训练集:
1、数据预处理:计算均值,用
替换
(这样就使得所有特征均值为0),即
(若特征之间的值变化太大,可以进行特征缩放)
2、将数据从n维降到k维(k≤n)
(1)计算协方差:,其中
是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列,记作,则
其算法流程如下:
推荐PCA系列文章:
PCA降维算法总结以及matlab实现PCA(个人的一点理解)