一、主成成分分析介绍
主成分分析(PCA)是最常见的降维算法。
在PCA中,我们要做的是找到一个方向向量(Vector direction),当我们把所有的数据都投射到该向量上时,我们希望投射平均均方误差能尽可能地小。方向向量是一个经过原点的向量,而投射误差是从特征向量向该方向向量作垂线的长度。
下面给出主成分分析问题的描述:
问题是要将维数据降至维,目标是找到向量,,...,使得总的投射误差最小。主成分分析与线性回顾的比较:
主成分分析与线性回归是两种不同的算法。主成分分析最小化的是投射误差(Projected Error),而线性回归尝试的是最小化预测误差。线性回归的目的是预测结果,而主成分分析不作任何预测。
上图中,左边的是线性回归的误差(垂直于横轴投影),右边则是主要成分分析的误差(垂直于红线投影)。
二、主成成分分析算法
PCA 减少维到维:
第一步是均值归一化。我们需要计算出所有特征的均值,然后令 。如果特征是在不同的数量级上,我们还需要将其除以标准差 。
第二步是计算协方差矩阵(covariance matrix):
第三步是计算协方差矩阵的特征向量(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)