一,主成分分析法(Principal Component Analysis)

1,主成分分析法(PCA)是比较常用的数据压缩算法,把高维度数据投影到低维度平面(超平面)上,使投影误差平方最小

python主成分回归PCR实例 主成分回归方法_python主成分回归PCR实例

 

2,PCA与线性回归区别

python主成分回归PCR实例 主成分回归方法_数据_02

在代价函数里线性回归计算的是预测值与实际值的误差(y的差值),PCA里计算的是投影与原特征的差值(x的差值), PCA不需要y值

 

二,PCA计算方法

1,PCA算法的预处理

进行PCA之前先进行特征缩放,使所有的特征的数据范围在同一量级,否则会造成有些取值范围大的特征投直接全部落到超平面上,投影误差小,范围小的投影误差大

python主成分回归PCR实例 主成分回归方法_python主成分回归PCR实例_03

2,PCA算法的目标

假如从n维数据降到k维数据,目标是找到代表投影平面的k个向量\(u^{(1)}, u^{(2},.... u^{(k}\),把该数据到超平面的投影来代替原始数据

 

python主成分回归PCR实例 主成分回归方法_原始数据_04

3,PCA算法步骤

 

python主成分回归PCR实例 主成分回归方法_原始数据_05

从n维降到k维的算法步骤:

1),计算协方差矩阵(covariance matrix)

python主成分回归PCR实例 主成分回归方法_原始数据_06

2),计算协方差矩阵(covariance matrix)的特征向量(eigenvector)

python主成分回归PCR实例 主成分回归方法_监督学习_07

3),选定U的前k列乘以X获得投影之后的坐标(特征)Z

python主成分回归PCR实例 主成分回归方法_原始数据_08 

python主成分回归PCR实例 主成分回归方法_数据_09 

4,Octave或MATLAB伪代码

python主成分回归PCR实例 主成分回归方法_原始数据_10

 5,从投影数据还原成原数据

python主成分回归PCR实例 主成分回归方法_原始数据_11

还原回的\(x_{approx}\)与原\(x\)应该非常接近

python主成分回归PCR实例 主成分回归方法_监督学习_12

三,使用PCA算法的建议

1,如何选择投影平面的维度K的大小

求出差异性小于0.01~0.05的k的最小值,保留99%~95%的差异性

python主成分回归PCR实例 主成分回归方法_数据_13

python主成分回归PCR实例 主成分回归方法_原始数据_14

2,选择k的算法步骤

一种是从小到大依次选择k值,计算差异值是否符合自己的要求,这样至多会执行n次SVD算法

还有一种是利用SVD算法返回的S值

S是一个对角矩阵(对角矩阵(diagonal matrix)是一个主对角线之外的元素皆为 0 的矩阵)

python主成分回归PCR实例 主成分回归方法_原始数据_15对于给定k

python主成分回归PCR实例 主成分回归方法_监督学习_16

python主成分回归PCR实例 主成分回归方法_监督学习_17

总结起来就是

python主成分回归PCR实例 主成分回归方法_监督学习_18

 3,PCA应用于监督学习(Supervised Learning)

PCA可压缩监督学习的数据特征,从而提高学习算法的速率,由python主成分回归PCR实例 主成分回归方法_数据_19

如果无监督学习应用PCA,不仅要应用于\(X_{train}\),而且要应用于\(X_{CV}\),\(X_{test}\)

python主成分回归PCR实例 主成分回归方法_数据_20

 4,PCA应用

PCA应用于数据压缩和数据可视化

python主成分回归PCR实例 主成分回归方法_原始数据_21

 5,PCA不能用于抑制过度拟合

因为用PCA压缩数据,数据多少总会失真,抑制过度拟合最好还是用正则化

python主成分回归PCR实例 主成分回归方法_python主成分回归PCR实例_22

 6,不要在设计机器学习系统的开始阶段就使用PCA

PCA是一种会使原始数据失真的优化方法,不要一开始就使用

使用PCA之前必须先用原来的方法试试,如果学习速度太慢不符合要求,或者想可视化数据,第二次再使用PCA算法

python主成分回归PCR实例 主成分回归方法_python主成分回归PCR实例_23