问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

PCA主成分分析(上):如何利用协方差矩阵来降维?

创作时间:
作者:
@小白创作中心

PCA主成分分析(上):如何利用协方差矩阵来降维?

引用
1
来源
1.
https://learn.lianglianglee.com/%E4%B8%93%E6%A0%8F/%E7%A8%8B%E5%BA%8F%E5%91%98%E7%9A%84%E6%95%B0%E5%AD%A6%E5%9F%BA%E7%A1%80%E8%AF%BE/42%20PCA%E4%B8%BB%E6%88%90%E5%88%86%E5%88%86%E6%9E%90%EF%BC%88%E4%B8%8A%EF%BC%89%EF%BC%9A%E5%A6%82%E4%BD%95%E5%88%A9%E7%94%A8%E5%8D%8F%E6%96%B9%E5%B7%AE%E7%9F%A9%E9%98%B5%E6%9D%A5%E9%99%8D%E7%BB%B4%EF%BC%9F.md

在机器学习领域中,随着特征数量的不断增加,特征向量的维度也会不断上升。这不仅会加大机器学习的难度,还会影响最终的准确度。针对这种情形,我们需要过滤掉一些不重要的特征,或者是把某些相关的特征合并起来,最终达到在减少特征维度的同时,尽量保留原始数据所包含的信息。

接下来,我们详细讲解主成分分析(PCA)这一降维方法。PCA是一种从矩阵分析的角度出发,找出数据分布之间关系的降维方法,它并不需要监督式学习中样本标签和特征之间的关系。

PCA分析法的主要步骤

1. 标准化原始数据

为了使每维特征的重要性具有可比性,我们需要对原始数据进行标准化处理。标准化的公式如下:

[x'=\frac{x-μ}{σ}]

其中 (x) 为原始值,(μ) 为均值,(σ) 为标准差,(x') 是变换后的值。需要注意的是,这里标准化的数据是针对同一种特征,也是在同一个特征维度之内。不同维度的特征不能放在一起进行标准化。

2. 获取协方差矩阵

协方差是用于衡量两个变量的总体误差。假设两个变量分别是 (x) 和 (y),而它们的采样数量都是 (m),那么协方差的计算公式就是:

其中 (x_k) 表示变量 (x) 的第 (k) 个采样数据,(\bar{x}) 表示这 (k) 个采样的平均值。而当两个变量是相同时,协方差就变成了方差。

协方差矩阵的定义如下:

其中,(x_{k,i}) 表示矩阵中第 (k) 行,第 (i) 列的元素。(\bar{X_{,i}}) 表示第 (i) 列的平均值。

3. 计算协方差矩阵的特征值和特征向量

矩阵的特征向量和特征值是线性代数中两个非常重要的概念。对于一个矩阵 (X),如果能找到向量 (v) 和标量 (λ),使得下面这个式子成立:

[Xv=λv]

那么,我们就说 (v) 是矩阵 (X) 的特征向量,而 (λ) 是矩阵 (X) 的特征值。矩阵的特征向量和特征值可能不止一个。

特征向量 (v) 表示了矩阵 (X) 运动的方向,特征值 (λ) 表示了运动的幅度,这两者结合就能描述左乘矩阵 (X) 所带来的效果,因此被看作矩阵的“特征”。在PCA中的主成分,就是指特征向量,而对应的特征值的大小,就表示这个特征向量或者说主成分的重要程度。特征值越大,重要程度越高,我们要优先现在这个主成分,并利用这个主成分对原始数据进行变换。

计算特征值的推导过程如下:

[Xv=λv]
[Xv-λv=0]
[Xv-λIv=0]
[(X-λI)v=0]

其中 (I) 是单位矩阵。对于上面推导中的最后一步,我们需要计算矩阵的行列式:

[(x_{1,1}-λ)(x_{2,2}-λ)…(x_{n,n}-λ)+x_{1,2}x_{2,3}…x_{n-1,n}x_{n,1}+…)-(x_{n,1}x_{n-1,2}…x_{2,n-1}x_{1,n})=0]

最后,通过解这个方程式,我们就能求得各种 (λ) 的解,而这些解就是特征值。计算完特征值,我们可以把不同的 (λ) 值代入 (λE-A),来获取特征向量。

4. 挑选主要的特征向量,转换原始数据

假设我们获得了 (k) 个特征值和对应的特征向量,那么我们就有:

[Xv_1=λ_1v_1]
[Xv_2=λ_2v_2]
[…]
[Xv_k=λ_kv_k]

按照所对应的 (λ) 数值的大小,对这 (k) 组的 (v) 排序。排名靠前的 (v) 就是最重要的特征向量。

假设我们只取前 (k1) 个最重要的特征,那么我们使用这 (k1) 个特征向量,组成一个 (n×k1) 维的矩阵 (D)。把包含原始数据的 (m×n) 维矩阵 (X) 左乘矩阵 (D),就能重新获得一个 (m×k1) 维的矩阵,达到了降维的目的。

有的时候,我们无法确定 (k1) 取多少合适。一种常见的做法是,看前 (k1) 个特征值的和占所有特征值总和的百分比。假设一共有 10 个特征值,总和是 100,最大的特征值是 80,那么第一大特征值占整个特征值之和的 80%,我们认为它能表示 80% 的信息量,还不够多。那我们就继续看第二大的特征值,它是 15,前两个特征值之和有 95,占比达到了 95%,如果我们认为足够了,那么就可以只选前两大特征值,把原始数据的特征维度从 10 维降到 2 维。

小结

这一节,我们首先简要地重温了为什么有时候需要进行特征的降维和基于分类标签的特征选择。随后,我们引出了和特征选择不同的另一种方法,基于矩阵操作的 PCA 主成分分析。这种方法的几个主要步骤包括,标准化原始数据、获得不同特征的协方差矩阵、计算协方差矩阵的特征值和特征向量、选择最重要的主成分,以及通过所选择的主成分来转换原始的数据集。

要理解 PCA 分析法是有一定难度的,主要是因为两点原因:第一,计算的步骤有些复杂。第二,这个方法的核心思路有些抽象。这两点可能会让刚刚接触 PCA 的学习者,感到无从下手。

为了帮助你更好的理解,下一节,我们会使用一个示例的矩阵进行详细的推算,并用两种 Python 代码进行结果的验证。除此之外,我们还会分析几个要点,包括 PCA 为什么使用协方差矩阵?这个矩阵的特征值和特征向量又表示什么?为什么特征值最大的主成分涵盖最多的信息量?明白了这些,你就能深入理解为什么 PCA 分析法要有这些步骤,以及每一步都代表什么含义。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号