前言
PCA,全称 Principal Component Analysis ,中文称为主成分分析 ,是一种常用的数据降维 技术。它的主要目的是通过线性变换,将原始数据转换到一个新的坐标系中,使得数据的主要信息 (方差)集中在少数几个维度上,从而实现数据降维、去噪或可视化。
请注意:PCA 的使用前提本质上是变量是否有强相关性,或者说多重共线性,一些检测的方法例如:
- 相关性矩阵 (Correlation Matrix)
- KMO检验 (Kaiser-Meyer-Olkin Test)
- Bartlett’s球形检验 (Bartlett’s Test of Sphericity)
- 方差膨胀因子 (Variance Inflation Factor, VIF)
- 特征值与碎石图 (Eigenvalues and Scree Plot)
PCA 的思想
PCA通过线性变换,找到数据中方差最大的方向(主成分),并将数据投影到这些方向上。具体来说,PCA会:
- 找到数据中最大方差的方向 ,称为第一主成分 。
- 找到与第一主成分正交(垂直)且具有次大方差的方向 ,称为第二主成分 。
- 按这种方式继续找到第三、第四主成分,直到找到足够多的主成分来表示数据的主要信息。
这些主成分构成了新的坐标系,数据在这些方向上的投影就是降维后的结果。
PCA的数学过程
假设我们有一个数据集,包含 n 个样本,每个样本有 p 个特征。我们可以把数据表示为一个 n×p 的矩阵。PCA的步骤如下:
Step 1: 数据标准化(可选)
由于PCA对数据的方差非常敏感,如果不同特征的量纲(尺度)不同,方差较大的特征将会主导结果。因此,通常需要对数据进行标准化 ,使每个特征具有均值为0,方差为1。
标准化公式为:
x
′
=
x
−
μ
σ
\Large x^{\prime}=\frac{x-\mu}\sigma
x′=σx−μ
其中,μ 是特征的均值,σ 是特征的标准差。
关于标准化问题参考 [[#标准化与PCA|标准化与PCA]]
Step 2: 计算协方差矩阵
协方差矩阵描述了不同特征之间的线性相关性。对于标准化后的数据矩阵
X
X
X,协方差矩阵
C
C
C 的计算公式为:
C
=
1
n
−
1
X
T
X
\Large C = \frac{1}{n-1} X^T X
C=n−11XTX
其中,
X
T
X^T
XT 是数据的转置,
n
n
n 是样本数量。
Step 3: 计算特征值和特征向量
协方差矩阵 C C C 是一个 p × p p×p p×p 的对称矩阵,接下来我们需要计算它的 特征值 和 特征向量 。特征值表示每个主成分的方差大小,特征向量表示主成分的方向。
特征值按从大到小排列,对应的特征向量就是主成分的方向。
这也就是碎石图的数据来源
Step 4: 选择主成分
根据特征值的大小,[[#Kaiser 准则|选择前 k 个主成分(通常选择累计方差贡献率达到一定比例,比如95%)]]。这些主成分对应的特征向量组成了新的坐标系。
Step 5: 数据投影
将原始数据投影到选定的主成分上,得到降维后的数据。假设我们选择了 k 个主成分,那么降维后的数据就是 n×k 的矩阵。
假设
X
′
X'
X′ 是标准化后的数据矩阵,
v
1
v_1
v1 是选定的主成分,那么降维后的数据
X
new
X_{\text{new}}
Xnew 是
X
′
X'
X′ 与
v
1
v_1
v1 的点积:
X
new
=
X
′
⋅
v
1
\large X_{\text{new}} = X' \cdot v_1
Xnew=X′⋅v1
绘图
PCA 可以绘图基本上是:
- 碎石图 (Scree Plot)
- 载荷图 (Loading Plot)
- 得分图 (Score Plot)
- 双标图 (Biplot)
- 热图 (Heatmap)
碎石图 (Scree Plot)
碎石图的主要作用是帮助我们判断应保留多少个主成分。通常情况下,选择主成分的原则是:在解释大部分方差的前提下,尽量减少主成分的数量 。
通过观察碎石图,你可以寻找一个“拐点”(elbow point ),即主成分解释的方差突然下降的位置。在拐点之前的主成分能够解释较多的方差,因此通常被保留;而拐点之后的主成分解释的方差较少,可能会被舍弃。
碎石图的构成
- 横轴(X轴) :表示主成分的编号,通常按主成分的重要性从第一个主成分(PC1)到最后一个主成分依次排列。
- 纵轴(Y轴) :表示每个主成分所解释的方差(或特征值),通常表现为每个主成分对应的方差百分比,或直接使用特征值。
参考文献
载荷图 (Loading Plot)
载荷图显示每个特征对主成分的影响程度。
通过载荷图,我们可以了解每个主成分主要由哪些原始变量构成,从而帮助我们解释主成分的实际意义。
Figure | |
---|---|
![]() | |
![]() | |
载荷图的构成
- 横轴(X轴) :通常代表第一个主成分(例如PC1),显示各个原始变量在这个主成分上的载荷值(loading)。
- 纵轴(Y轴) :通常代表第二个主成分(例如PC2),显示各个原始变量在这个主成分上的载荷值。
- 点/箭头 :图上的每个点或箭头代表一个原始变量。这些点/箭头的坐标对应于该变量在不同主成分上的载荷值。
- 载荷值 :载荷值的大小反映了原始变量与主成分之间的相关性。载荷值的取值范围通常在-1到1之间。值越接近1或-1,说明该变量与主成分的关系越强;值越接近0,说明该变量与主成分的关系越弱。
解读载荷图
-
方向和大小 :
- 如果一个变量在某个主成分上的载荷值为正且较大,说明该变量与这个主成分正相关,即该变量值越大,主成分值也越大。
- 如果载荷值为负且绝对值较大,说明该变量与主成分负相关,即该变量值越大,主成分值越小。
- 如果载荷值接近0,说明该变量与主成分几乎没有相关性。
-
变量之间的夹角 :
- 如果两个变量在载荷图上的夹角较小,说明这两个变量之间有较强的正相关关系。
- 如果夹角接近90度,说明这两个变量之间几乎没有相关性。
- 如果夹角接近180度,说明这两个变量之间有较强的负相关关系。
-
主成分的组合解释 :通常我们通过观察前两个或前三个主成分的载荷图来解释数据。例如,PC1和PC2组合可能解释了数据中的大部分方差,通过载荷图我们可以看到哪些变量对这两个主成分贡献最大,并尝试从业务角度解释这些主成分的实际意义。
得分图 (Score Plot)
得分图(Scores Plot) 是主成分分析(PCA)中用于展示数据样本在主成分空间中的分布情况的图形工具。通过得分图,我们可以直观地观察各个样本在主成分上的投影位置,从而识别样本之间的相似性、聚类结构或异常点。
人话来说,得分图就是降维后的点的值
得分图的构成
-
横轴(X轴) :通常代表第一个主成分(例如PC1),显示各个样本在这个主成分上的得分。
-
纵轴(Y轴) :通常代表第二个主成分(例如PC2),显示各个样本在这个主成分上的得分。
-
点 :图上的每个点代表一个样本。这些点的坐标对应于该样本在不同主成分上的得分。
解读得分图
得分图的主要作用是帮助我们可视化样本在主成分空间中的分布 ,从而帮助我们:
-
识别样本聚类 :通过观察样本在得分图上的分布,我们可以识别出潜在的样本聚类结构。相似的样本会聚集在一起,而不相似的样本会分布在不同的区域。
-
检测异常值 :得分图还可以帮助我们识别异常点(outliers)。如果某些样本在主成分空间中离其他样本较远,它们可能是一些异常值或离群点。
-
理解主成分对样本的影响 :通过观察样本在不同主成分上的分布,我们可以了解每个主成分对样本的区分能力。
参考文献
双标图 (Biplot)
双标图(Biplot) 是主成分分析(PCA)中一种非常有用的可视化工具,它同时展示样本的得分(scores)和变量的载荷(loadings) 。通过双标图,我们可以在一个图中同时观察到数据样本在主成分空间中的分布情况,以及原始变量与主成分之间的相关性。
热图 (Heatmap)
特征变量相关性了,和 PCA 的主要功能逻辑性不大了。
参考文献
补充说明
主成分数量问题
在主成分分析(PCA)中,有几个原始特征维度就会有几个主成分。
-
原始特征维度 :假设数据集有 n 个样本,每个样本有 d 个特征(维度)。那么这些数据可以看作是位于一个 d 维空间中。
-
主成分数量 :PCA 的目标是找到数据中方差最大的方向,这些方向就是主成分。理论上,在 d 维数据中,最多可以找到 d 个主成分,因为:
- 每个主成分都是数据的一个新的投影方向。
- 这些方向互相正交(垂直),且这些方向的数量最多为数据原本的维度数 d。
虽然可以找到 d d d 个主成分,但通常我们不会选择所有主成分,而是根据需要选择前 k k k 个主成分( k < d k < d k<d),这些主成分的累计方差解释比例(explained variance)足够大,能够很好地代表原始数据的主要信息。这就是 PCA 用于降维的核心思想。
标准化与PCA
主成分分析的目的是寻找数据中的主要变异方向,并将其投影到新的维度(主成分)上。
当变量的单位不同时,例如一个变量以米为单位,另一个变量以千克为单位,那么具有较大单位的变量将在分析中占据更大的权重。
这会导致主成分分析的结果偏向于具有较大单位的变量,而忽略了其他变量的影响。
Kaiser 准则
Kaiser准则 ,又称为特征值大于1准则 (Eigenvalue-Greater-Than-One Rule),是主成分分析(PCA)和探索性因子分析(EFA)中用于确定需要保留的主成分或因子数量的一种常用启发式方法。该准则由统计学家Henry Kaiser在1960年提出,其核心思想是:只保留特征值大于1的主成分或因子 。
Kaiser准则 的逻辑是:如果一个主成分的特征值大于1,那么该主成分解释的方差比单个原始变量解释的方差更多 。对于标准化数据,每个原始变量的方差为1,因此,如果某个主成分的特征值小于1,那么这个主成分解释的方差还不如一个原始变量,可能不值得保留。
参考文献
End
关于我的唯一微信公众号:码上地球。更多的内容会第一时间发布在微信公众号上🌹
参考文献
- Principal component analysis explained simply
- How to read PCA biplots and scree plots
- Building score plot using principal components
- 05 Assessing the quality of RNA-seq experiments
- Dos and don’ts for a heatmap color scale
- Kaiser, H. F. (1960). “The application of electronic computers to factor analysis.” Educational and Psychological Measurement , 20(1), 141-151.
- Abdi, H., & Williams, L. J. (2010). Principal component analysis. Wiley interdisciplinary reviews: computational statistics, 2(4), 433-459.
- Scree Plot 碎石图
- Scree plot 维基百科