Press "Enter" to skip to content

线性代数及其应用——主成分降维

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

持之以恒地做广告:

 

本文,我们再介绍一个线性代数的应用:主成分降维。在机器学习中,我们用一套数字表示一个事物。比如,用身高、体重、胸围、腰围、臀围 6 个数字表示一个人。这一套数字称作一套特征(Feature)。将这套特征按顺序列成一个向量:

 

 

这样的向量 称为特征向量(Feature Vector)。它是机器学习模型训练和推理时所使用的代表一个事物的数值模型。特征的获取、选择和构造是机器学习建模中最难,也是最重要的事。特征准备不当(dàng)是机器学习任务达不到理想效果的最重要原因。所谓“不当”有很多情况,我们只关注其中三个:特征相关,维数过高,噪声。这三种情况都会增加模型收敛的难度,败坏模型最终的效果。这三者之间是有联系的。举一个简单的例子,假如我们的样本是身材非常标准的一群人 —— 他们的体重(公斤)都是身高(厘米)的 0.37 倍,偶有一些测量误差。也就是说,他们的体重和身高满足这样一个关系:

 

 

是小误差,可能服从一个比如说 0 均值且小方差的正态分布,它是应该忽略的。现在我们有两个特征,但本质上体重是没有用的,只要知道身高就知道体重(忽略误差)。我们说体重和身高具有共线性(Collinearity)。本来一个特征就够,现在我们有了两个特征,特征“过多”,特征向量维数“过高”。另外,测量误差 稍稍掩盖了真实的数据关系。

 

我们用这两个特征的玩具例子演示了前面提到的三种“不当”。在现实问题中,特征数量要远远更多,其中极可能存在多个特征之间的线性关系,即多重共线性(Multicollinearity),无用特征会很多,维数膨胀会很严重,噪声问题也会更加突出。本文介绍的主成分降维可以缓解这些问题。

 

体重与身高具有共线性,即它们之间呈线性关系 —— 将随机选择的一群人的身高与体重画在以身高为横轴,以体重为纵轴的坐标系上,将呈现一条直线。噪声使得数据点稍稍偏离直线。人群中随机选择一个人,测出的身高和体重是两个随机变量。(皮尔逊)相关系数(Correlation Coefficient,以下简称相关系数) 衡量两个随机变量之间呈线性关系的程度。两个随机变量 和 之间的相关系数是:

 

 

是随机变量 与 的协方差(Covariance)。 和 分别是 和 的标准(Standard Variance)。相关系数衡量两个随机变量之间呈线性关系的程度。正的相关系数表明它们之间呈正的线性关系,一个增大,另一个也增大。负的相关系数表明它们直线呈负的线性关系,一个增大而另一个减小。相关系数最大为 1.0 ,最小为 -1.0 。

 

相关系数绝对值的大小衡量的不是线性关系的斜率(容易误会这一点),而是呈线性关系的“程度”—— 数据点越集中于直线周围,线性关系越明显,相关系数的绝对值越大。反之,数据点越分散,线性关系越不明显,相关系数的绝对值越小。另外,两个随机变量不相关(相关系数绝对值小,接近 0 )不代表它们独立(Indepent,独立的概念我们不在此多讲)。下图展示了几种二元(两个随机变量)分布的采样数据点以及两个随机变量之间的相关系数。

 

三种分布的相关系数

我们看最左侧的分布,相关系数为 0.981(接近 1.0),可以认为这两个随机变量呈很明显的线性关系。数据点偏离直线是因为存在随机噪声。我们可以说这个数据实际上是一维的 —— 只沿着图中那条倾斜的直线有变化。主成分分析就是要发现那条倾斜的直线,忽略随机噪声,取得数据在这条直线上的真实分布。

 

现在我们离开二元分布(两个随机变量),在通用情况 —— 元分布上说话。一个随机向量:

 

 

它的每个分量都是随机变量。分量 和 的协方差我们简记为 。 与自己的协方差就是它的方差(Variance),统一起见仍记为 。以 为元素的矩阵就是随机向量 的协方差矩阵(Covariance Matrix):

 

 

因为协方差是对称的,即 ,所以 是对称的 方阵。好了,对阵矩阵可以进行特征值分解:

 

 

其中, 是 对角矩阵,对角线元素是 的 个实数特征值: 、 、……、 ,其中可能有重复。 矩阵 的 个列是 的 个特征向量: 、 、……、 ,分别对应同编号的特征值,即 是 的特征值。这些特征值是彼此正交的单位向量,它们构成 维线性空间的一组标准正交基(Othonormal Basis)。到此为止陈述的这几点:

 

 

    1. 的 个特征值都是实数;

 

    1. 个特征值对应的特征向量彼此正交。特别是对于 重特征值 ( )来说,能够找到 个彼此正交的单位特征向量 : 、 、…… ,也就是说 重特征值 的特征空间的维数是 。

 

 

都是因为 的对称性才有的,对于普通的方阵则不一定成立。至此我们可以证明 的谱分解。因为 的列是特征向量,于是有:

 

 

又因为 的列是正交标准的,有 , 是克罗内克符号,当 是为 1,否则为 0 。所以 是正交矩阵: , 是单位矩阵。所以就有:

 

 

多提一嘴,像 这样的对称矩阵代表的是线性空间上的幺正变换。因为 的行列式等于 的行列式,所以: 。也就是说 。如果 ,则 代表的幺正变换是“旋转”。如果 ,则 代表的幺正变换除了旋转外,还有一个镜像翻转。

 

的 个列构成 维线性空间的一组标准正交基,或者说一套新的坐标轴。对于某个向量 来说,它与 的第 行的内积是 , 是 与 之间的夹角。这就是 向第 个新坐标轴的投影。 是一个新的 维向量,它的各分量是向量 向 的列所代表的一套新坐标轴的投影。或者说是原向量在新坐标轴上的坐标。再换句话说, 是一个新坐标系, 的各分量是任意向量 在这个新坐标系上的坐标。

 

如果 是随机向量,它的各分量是随机变量。 的各分量都是 的各分量的线性组合,它们也都是随机变量。这套新随机变量的协方差矩阵是什幺呢?本文没有涉及概率论上期望(Expection)、方差(Variance)和协方差(Covariance)的定义。我们直接给出结论,有:

 

 

是 方阵。 也是 方阵,它的各元素是 各元素的期望。 是 维向量,它的各分量是 各分量的期望。根据上式, 的第 行第 列元素是:

 

 

本文没有证明,但这正是 与 的协方差。 的对角线元素是:

 

 

这正是 的方差。这印证了式子: 。对于任意矩阵 ,有

 

和 。终于,我们有:

 

 

这一串推导很长,但很简单。结论就是,原来的随机向量 的分量是 个随机变量,通过将 的协方差矩阵进行特征值分解找到了 表示的新坐标系,原随机向量向新坐标系投影得到一套 个新随机变量,这套新随机变量的协方差矩阵是 ,是对角矩阵,对角线元素是 的协方差矩阵的从大到小排列的 个特征值。新随机变量两两之间的相关系数为 0 ,不呈线性关系。新随机变量的方差是原随机向量 的协方差矩阵的特征值。一句话:找到一个新坐标系,随机向量在新坐标系上的坐标不相关。

 

新坐标系的第一个轴由 的第一个列向量 代表,称作第一主轴(First Principle Axis)。原随机向量在第一主轴上的投影(它在这个轴上的坐标)的方差是原随机向量的协方差矩阵的最大特征值 ,这个投影/坐标称为第一主成分(First Principle Component)。新坐标系的第二个轴由 的第二个列向量 代表,称作第二主轴(Second Principle Axis)。随机向量在这个轴上的投影的方差是原随机向量的协方差矩阵的次大特征值 ,这个投影/坐标称为第二主成分(Second Principle Component)。以此类推。

 

二维随机向量的主成分

我们用二维随机向量做例子。这个二元分布还是呈比较明显的线性关系的。计算协方差矩阵的特征值分解,我们找到了两个主轴(二维随机向量一共只有两个主轴)。第一主轴是指向右上方的箭头,数据点落在这个箭头代表的坐标轴(有向直线)上时具有最大的分散程度(方差)。第二主轴是指向右下方的箭头,它与第一主轴垂直。数据点落在这个箭头代表的坐标轴上时,具有第二大的分散程度(方差)。

 

当然,二维随机变量没得选,除了第一主轴就只剩下第二主轴了。但如果是高维随机向量,我们就有第 1 主轴、第 2 主轴、第 3 主轴、…… 、第 主轴。随机向量采样数据点落在这些主轴上时依次具有第 1 大、第 2 大、第 3 大、……、第 “大”方差,分别是原随机向量协方差矩阵的从大到小排列的 个特征值。

 

那幺考虑,如果到了某一个主成分之后,方差就变得很小了,也就是说某一个特征值之后的特征值就很小了,我们是不是就可以认为那些很小的方差并非事物的本质,而只是可忽略的噪声?比如下图:

 

第二主成分是扰动

这个分布就像是本文开始的身高体重那个例子。体重就等于 0.37 乘身高。随机采样一些人,测量得到的数据点应该严格落在斜率为 0.37 的直线上。随机变量“体重”和“身高”的相关系数应该最大 —— 1.0 。但是这里存在一些测量误差,使得数据点偏离了倾斜的直线,但偏离得不严重。测得的身高和体重仍有很大的相关系数(接近 1.0)。

 

主成分分析找到了方差最大的第一主轴,它正是身高和体重本应严格落在其上的倾斜直线。第二主轴垂直于第一主轴,是扰动误差导致变化的方向。如果我们抛弃第二主轴,只保留第一主轴和第一主成分,我们就排除了误差噪声,发现数据的真实维数 —— 一维,而不是二维。这就降低了维数,同时也消除了特征的共线性(就剩一个特征 —— 第一主成分了,跟谁共线去?)。

 

协方差矩阵 的迹(Trace) 是它的全体对角线元素之和,也就是随机向量 各个分量的方差之和。对于矩阵 和 来说,有 ,于是有:

 

 

是原随机向量协方差矩阵的全体特征值之和,即全体主成分的方差之和。这就是说,全体主成分保持了全体原随机变量的变化,“总方差”不变。如果前 个特征值之和占据了总方差的很大比例,比如 98% ,我们就可以说前 个主成分囊括了全体原始随机变量总 98% 的变化,后 个主成分代表的变化只是可忽略的噪声。

 

对随机向量 ,取 的前 个分量,我们就将一个 维随机向量降维成了一个 维随机向量。我们只保留前 个主成分,认为它们抓住了原始随机变量的几乎全部变化(信息),抛弃后 个主成分,认为它们仅仅代表不重要的、可忽略的噪声。同时,前 个主成分两两之间的相关系数(协方差)为 0 。这就是主成分降维,它:

 

 

    1. 降低了特征向量的维数;

 

    1. 消除了特征之间共线性;

 

    1. 抹去了噪声(当然,我们主观上认为方差过小的主成分是噪声,可能它们也并不是真的噪声)。

 

Be First to Comment

发表评论

您的电子邮箱地址不会被公开。