pca 累积方差贡献率公式_特征工程 | PCA降维

  基本思想

      主成分分析(PCA)是一种多元统计方法,主要利用降维的思想,在损失很少信息的前提下,把多个变量转化为少数几个互不相关的综合变量,各综合变量即称为主成分。简单来说,主成分与原变量之间应有如下关系:

  • 主成分是原变量的线性组合;

  • 各主成分之间互不相关;

  • 主成分的数目远远小于原变量的数目,且保留了原变量绝大多数信息。

      假设有p个变量,分别用08fbce5f357c9315bc61a751024b8274.png表示,随机向量f187912586a2ee0a256c7aa42a83c369.png,设随机向量X的均值为μ,协方差矩阵为Σ。

      对X进行线性变换得Y,且ef925b6d807cbec4c2634b25cddbd46c.png,其中5e457929a320863b424e759bc8b52d8a.png6dadc334643bed2e70b7ed4b79cb332d.png,即:

pca 累积方差贡献率公式_特征工程 | PCA降维_第1张图片

      令 669fe6d34191539978a9717fc830e107.png方差 58b30a4e780d72b68b24f868ddbd6405.png,希望b32d75686815e11b9f0f8d2f80e7253a.png尽可能的大,但需设置d2117bd9168c3d48db3e39642557b8ec.png限制条件,才使求b32d75686815e11b9f0f8d2f80e7253a.png的最大值有意义。所以求主成分是在下面约束下的线性变换问题:

  • d2117bd9168c3d48db3e39642557b8ec.png(i=1, 2, ..., p)

  • 3cd6bba4a4724c911399196e4c93ba97.png2d800df9d90aac53b18c6a1692d1d336.png相互无关(i≠j; i, j=1, 2, ..., p)

  • d472937405092e74c98f1227b990109a.png是所有线性组合中方差最大者;6a74c68523a6383edf1fab15230597cc.png是与d472937405092e74c98f1227b990109a.png不相关的所有线性组合中方差最大;依次类推,7c614ea1b2e301b390aa1121307d4489.png是与b09c363f136cf98f75d2f3b8245ed05a.png都不相关的所有线性组合中方差最大者。

  求主成分

      假设 63a517d139e206a1b3832e6315009efb.png为随机向量X协方差矩阵Σ的特征值,8d2a4c8e7b3e916979d8af7fbcf780a1.png为各特征值对应的标准正交特征向量。

(1)即有:

pca 累积方差贡献率公式_特征工程 | PCA降维_第2张图片

做线性变换e96b026a792a9d6ca4bb9e21a91ee144.png

(2)主成分方差:8ba658c1e9e86bb8541275e6d9f89c86.png,即主成分方差就是协方差对应的特征值,并有:d21698dba0cc97c7c83e1305f95ef393.png.

(3)不同主成分的协方差为:

d0bf905d1c0f0579d637c5b5ab618eff.png

因而不同主成分是不相关的。

      所以,该线性变换满足上述3个约束条件,得到的新变量即为主成分。第一主成分3ea9e0c674b90c062d6faff8191c0cab.png是将最大特征值fea684b20184bb646537345dc6580115.png对应的特征向量b70acf58ddea0547c37483814b52ede5.png作为线性变换系数的X的线性组合,且3ea9e0c674b90c062d6faff8191c0cab.png的方差为fea684b20184bb646537345dc6580115.png;第二主成分2dcb66124201d79b5af1a9c9828faa92.png是将第二大特征值7f75e62d8444a0adebeff0152dc7c475.png对应的特征向量ace8a3e452720961b8d8f332c3bf81e7.png作为线性变换系数的X的线性组合,且2dcb66124201d79b5af1a9c9828faa92.png的方差为7f75e62d8444a0adebeff0152dc7c475.png;依次类推。也就是说,求主成分问题就变成了求特征值和特征向量的问题。

      求主成分既可以从原始数据的协方差矩阵出发求特征值和特征向量进而求得主成分;也可以从原始数据的相关矩阵出发求特征值和特征向量进而求得主成分。后者相当于先对原始数据进行标准化处理,然后求标准化后的数据的协方差矩阵的特征值和特征向量,并且主成分是标准化后的数据的线性组合。

      不过,两种方法的使用是有一定差异的。如果各变量的取值范围或量级差异比较大,最好先进行标准化处理,否则直接从原始数据的协方差出发求主成分,取值范围或量级大的变量将在主成分中起主导作用,其他变量将很难在主成分中体现出来。当然标准化处理后,各变量的方差均变为1,会损失一部分信息。如果各变量的取值范围或量级差异较小,可以考虑直接从原始数据的协方差出发求主成分。   

  主成分的贡献率
  • 第k个主成分5d3b676d8030fae670fac2611f9f4aed.png的方差贡献率为:

      da0f2244b6c497a3795fa46cf18f3029.png

      贡献率是主成分的差异占原始数据总差异的比例,贡献率越大,说明主成分对总差异的解释能力越强。

  • 前m个主成分546513eb989c0fa484be8844ef89b55b.png的累积贡献率为:

    39bfa8b5c7c3e94f7bd9c39f1e59173a.png

      累积贡献率用于选择合适的主成分个数,比如当m的取值使累积贡献率达到85%以上时,可以认为是一个比较合适的主成分个数。

  例子    

      以python自带iris数据集为例,简单展示scikit-learn的PCA用法。

  • 载入iris数据集:

from sklearn.datasets import load_iris
iris_X = iris.data
  • 主成分计算:

from sklearn.decomposition import PCA
pca = PCA(n_components=4)
pca.fit(iris_X)
  • 协方差的特征值(主成分的方差):

# 特征值
pca.explained_variance_
Out[1]: array([4.22484077, 0.24224357, 0.07852391, 0.02368303])
  • 主成分方差贡献率:

# 方差贡献率
pca.explained_variance_ratio_
Out[2]: array([0.92461621, 0.05301557, 0.01718514, 0.00518309])
  • 累积贡献率:

# 累积贡献率
import numpy as np
np.cumsum(pca.explained_variance_ratio_)
Out[3]: array([0.92461621, 0.97763178, 0.99481691, 1.])

      由累积贡献率绘制碎石图(scree plot):

# 碎石图
import matplotlib.pyplot as plt
plt.plot(np.cumsum(pca.explained_variance_ratio_))
plt.title('Scree Plot')

pca 累积方差贡献率公式_特征工程 | PCA降维_第3张图片

      可以看出,前两个主成分解释了原数据97.8%的方差,所以用两个主成分几乎可以完全代替原4个变量。

  • 协方差的特征向量(线性组合的系数),以下结果每一行对应一个特征向量:

# 特征向量
pca.components_
Out[4]:
array([[ 0.36158968, -0.08226889, 0.85657211, 0.35884393],
    [ 0.65653988, 0.72971237, -0.1757674 , -0.07470647],
    [-0.58099728, 0.59641809, 0.07252408, 0.54906091],
    [ 0.31725455, -0.32409435, -0.47971899, 0.75112056]])
  • 主成分(第一列是第一主成分,第二列是第二主成分):

pca.transform(iris_X)
Out[5]:
array([[-2.68420713e+00, 3.26607315e-01, -2.15118370e-02, 1.00615724e-03],
   [-2.71539062e+00, -1.69556848e-01, -2.03521425e-01, 9.96024240e-02],
   [-2.88981954e+00, -1.37345610e-01, 2.47092410e-02, 1.93045428e-02],
   [-2.74643720e+00, -3.11124316e-01, 3.76719753e-02, -7.59552741e-02],
   [-2.72859298e+00, 3.33924564e-01, 9.62296998e-02, -6.31287327e-02]])

你可能感兴趣的:(pca,累积方差贡献率公式)