主成份分析

概念

主成份分析(PCA)是一种维度归约的技术。
(维度规约:把高维数据转换成低维数据的。)

涉及的其他概念

  1. 数据标准化处理
  2. 计算相关系数(矩阵)、协方差cov,
    【知乎】如何通俗易懂地解释「协方差」与「相关系数」的概念?https://www.zhihu.com/question/20852004
  3. 特征根
  4. 特征向量
  5. 矩阵方程求解

用途

用较少的变量去解释原始数据中的大部分变量,将许多相关性很高的变量转化成彼此相互独立或不相关的变量。

计算步骤

1.设原始变量为数据矩阵X(n,P),共n条记录,P个属性(列)。
2.将矩阵X按列进行中心标准化,继续记为X(z-score 标准化)。


3.按列计算相关系数矩阵,记为R。
相关系数 = 协方差xy / (样本标准差x样本标准差y)
相关系数计算公式

  1. 求R的特征方程|R-λE|=0 的特征根 λ1≥λ2≥λp>0
  2. 确定主成份个数m。
    分子为第1-第m个特征值的和
    分母为所有特征值的和
    分子/分母>a,一般a去80%。即这m个主成份可以概括80%的信息。
  3. 计算m个相应的单位特征向量:
    把上面m个λ代入方程,求(R-λE)β=0的解,
    得β1、β2、β3..βm
  4. 计算主成份:
    Zi= Xβ,i=1,2,3...m

对计算步骤的理解

  1. 过程如上,首先对矩阵数据进行标准化转换,提升模型的精度。
  2. 对标准化后的矩阵数据,求出每一条记录中两两属性列之间的相关系数。
  3. 由于原矩阵可以分解成特征值Λ及特征向量U。所以计算出相关系数矩阵的所有特征根,这所有的特征根(以及相应的特征向量),包含了100%的数据变量信息。
  4. 把特征根从大到小排序求和,取m个特征值,目的是为了概括80%~90%的信息。
  5. 计算出对应的单位特征向量。
  6. 计算主成份。

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个维度,同时这三个维度占了原始数据大部分的信息。

你可能感兴趣的:(主成份分析)