主成成分分析(PCA)

一、主成成分分析介绍

主成分分析(PCA)是最常见的降维算法。

在PCA中,我们要做的是找到一个方向向量(Vector direction),当我们把所有的数据都投射到该向量上时,我们希望投射平均均方误差能尽可能地小。方向向量是一个经过原点的向量,而投射误差是从特征向量向该方向向量作垂线的长度。
下面给出主成分分析问题的描述:

问题是要将n维数据降至k维,目标是找到向量u^{(1)},u^{(2)},...,u^{(k)}使得总的投射误差最小。主成分分析与线性回顾的比较:

主成分分析与线性回归是两种不同的算法。主成分分析最小化的是投射误差(Projected Error),而线性回归尝试的是最小化预测误差。线性回归的目的是预测结果,而主成分分析不作任何预测。


image.png

上图中,左边的是线性回归的误差(垂直于横轴投影),右边则是主要成分分析的误差(垂直于红线投影)。

二、主成成分分析算法

PCA 减少n维到k维:

第一步是均值归一化。我们需要计算出所有特征的均值,然后令 x_j= x_j-μ_j。如果特征是在不同的数量级上,我们还需要将其除以标准差 σ^2

第二步是计算协方差矩阵(covariance matrix)Σ\sum=\dfrac {1}{m}\sum^{n}_{i=1}\left( x^{(i)}\right) \left( x^{(i)}\right) ^{T}

第三步是计算协方差矩阵Σ的特征向量(eigenvectors)

三、使用scikit-learn实现PCA

PCA算法可以用在降维、降噪、可视化等方面。

from sklearn.decomposition import PCA

pca = PCA(n_components=2)
pca.fit(X_train)
X_train_reduction = pca.transform(X_train)
X_test_reduction = pca.transform(X_test)
from sklearn.decomposition import PCA

pca = PCA(0.95)
pca.fit(X_train)
X_train_reduction = pca.transform(X_train)
X_test_reduction = pca.transform(X_test)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容