概念
主成份分析(PCA)是一种维度归约的技术。
(维度规约:把高维数据转换成低维数据的。)
涉及的其他概念
- 数据标准化处理
- 计算相关系数(矩阵)、协方差cov,
【知乎】如何通俗易懂地解释「协方差」与「相关系数」的概念?https://www.zhihu.com/question/20852004 - 特征根
- 特征向量
- 矩阵方程求解
用途
用较少的变量去解释原始数据中的大部分变量,将许多相关性很高的变量转化成彼此相互独立或不相关的变量。
计算步骤
1.设原始变量为数据矩阵X(n,P),共n条记录,P个属性(列)。
2.将矩阵X按列进行中心标准化,继续记为X(z-score 标准化)。
3.按列计算相关系数矩阵,记为R。
相关系数 = 协方差xy / (样本标准差x样本标准差y)
- 求R的特征方程|R-λE|=0 的特征根 λ1≥λ2≥λp>0
- 确定主成份个数m。
分子为第1-第m个特征值的和
分母为所有特征值的和
分子/分母>a,一般a去80%。即这m个主成份可以概括80%的信息。 - 计算m个相应的单位特征向量:
把上面m个λ代入方程,求(R-λE)β=0的解,
得β1、β2、β3..βm - 计算主成份:
Zi= Xβ,i=1,2,3...m
对计算步骤的理解
- 过程如上,首先对矩阵数据进行标准化转换,提升模型的精度。
- 对标准化后的矩阵数据,求出每一条记录中两两属性列之间的相关系数。
- 由于原矩阵可以分解成特征值Λ及特征向量U。所以计算出相关系数矩阵的所有特征根,这所有的特征根(以及相应的特征向量),包含了100%的数据变量信息。
- 把特征根从大到小排序求和,取m个特征值,目的是为了概括80%~90%的信息。
- 计算出对应的单位特征向量。
- 计算主成份。
python中如何做主成份分析
在python中,主成份分析的函数在Scikit-Learn下:
sklearn.decomposition.PCA
from sklearn.decomposition import PCA
pca = PCA()
pca.fit(data)
pca.components_ #返回模型的各个特征向量(原始数据)
pca.explained_variance_ratio_ # 返回各个成分各自的方差百分比(贡献率)
# 根据以上贡献率,选取前n个主成份,累积贡献率达到95%左右。然后重新建立模型
pca = PCA(3)#这里假设前3个主成份已经足够代表数据集的大部分信息。
pca.fit(data)
low_d = pca.transform(data) #计算出主成份结果。
#到这里位置,原始数据已经从8维降到了3个维度,同时这三个维度占了原始数据大部分的信息。