在机器学习 (ML) 中,一些最重要的线性代数概念是奇异值分解 (SVD) 和主成分分析 (PCA)。收集到所有原始数据后,我们如何发现结构?例如,通过过去 6 天的利率,我们能否了解其构成以发现趋势?
对于高维原始数据,这变得更加困难。这就像大海捞针。SVD允许我们提取和解开信息。在本文中,我们将详细介绍 SVD 和 PCA。我们假设您具有基本的线性代数知识,包括秩和特征向量。如果您在阅读本文时遇到困难,我建议您先刷新这些概念。在文章的最后,我们将回答上面的利率示例中的一些问题。本文还包含可选部分。请根据您的兴趣水平随意跳过它。
我意识到非初学者可能会问的一些常见问题。让我先谈谈房间里的大象。PCA尺寸是否减小?PCA减少了尺寸,但它远不止于此。我喜欢 Wiki 的描述(但如果你不知道 PCA,这只是胡言乱语):
主成分分析 (PCA) 是一种统计过程,它使用正交变换将一组可能相关的变量(每个实体都具有各种数值)的观测值转换为一组线性不相关的变量值,称为主成分。
从简化的角度来看,PCA 将数据线性转换为彼此不相关的新属性。对于ML,将PCA定位为特征提取可能使我们能够比降维更好地探索其潜力。
SVD 和 PCA 有什么区别?SVD 为您提供了将矩阵对角化为易于操作和分析的特殊矩阵的整个九码。它为将数据解开为独立组件奠定了基础。PCA 跳过不太重要的组件。显然,我们可以使用 SVD 通过截断原始 SVD 矩阵中不太重要的基向量来查找 PCA。
在关于特征值和特征向量的文章中,我们描述了一种将 n × n 方阵 A 分解为
例如
如果 A 是方阵,A 具有 n 个线性独立的特征向量,则矩阵可以对角化。现在,是时候使用 SVD 为所有矩阵开发解决方案了。
矩阵AAT和ATA在线性代数中非常特殊。考虑任何m×n矩阵A,我们可以将其与AT相乘,分别形成AAT和ATA。这些矩阵是
此外,我们在 ML 中经常使用的协方差矩阵采用这种形式。由于它们是对称的,我们可以选择其特征向量是正交的(以单位长度彼此垂直)——这是对称矩阵的基本属性。
让我们介绍一些SVD中经常使用的术语。我们将 AAT 的特征向量命名为 ui 和 ATA 为 vi,并将这些特征向量集 u 和 v 称为 A 的奇异向量。两个矩阵具有相同的正特征值。这些特征值的平方根称为奇异值。
到目前为止没有太多的解释,但让我们先把所有东西放在一起,接下来会解释。我们将向量 ui 连接成 U,将 vi 连接到 V 以形成正交矩阵。
由于这些向量是正交的,因此很容易证明 U 和 V 服从
让我们先从困难的部分开始。SVD 指出任何矩阵 A 都可以分解为:
其中 U 和 V 是正交矩阵,正交特征向量分别从 AAT 和 ATA 中选择。S 是一个对角矩阵,其中 r 元素等于 AAT 或 AT A 的正特征值的根(无论如何,两个矩阵具有相同的正特征值)。对角线元素由奇异值组成。
i.e. an m× n matrix can be factorized as:
我们可以按不同的顺序排列特征向量以产生 U 和 V。为了标准化解决方案,我们对特征向量进行排序,使特征值较高的向量优先于特征值较小的向量。
与特征分解相比,SVD 适用于非平方矩阵。U 和 V 对于 SVD 中的任何矩阵都是可逆的,它们是我们喜欢的正交矩阵。如果没有证据,我们还告诉您奇异值比特征值更稳定。
示例(示例来源)
在走得太远之前,让我们用一个简单的例子来演示它。这将使事情变得非常容易理解。
我们计算:
这些矩阵至少是正半定的(所有特征值都是正数或零)。如图所示,它们具有相同的正特征值(25 和 9)。下图还显示了它们对应的特征向量。
奇异值是正特征值的平方根,即 5 和 3。因此,SVD 组成是
为了证明 SVD,我们希望用以下公式求解 U、S 和 V:
我们有 3 个未知数。希望我们能用上面的 3 个方程来解决它们。A 的转置是
会意
我们计算 ATA,
最后一个方程等效于矩阵 (ATA) 的特征向量定义。 我们只是将所有特征向量放在一个矩阵中。
与 VS² 等于
V 保存 ATA 的所有特征向量 vi,S 保存 ATA 所有特征值的平方根。我们可以对AAT重复相同的过程,并返回类似的等式。
现在,我们只需求解 U、V 和 S
并证明定理。
以下是 SVD 的回顾。
哪里
由于矩阵 V 是正交的,因此 VTV 等于 I。我们可以将 SVD 方程重写为:
这个等式在ui和vi之间建立了重要的关系。
召回
应用 AV = US,
这可以概括为
等同于
和
SVD分解可以识别为ui和vi的一系列外积。
SVD的这种公式化是理解A的组成部分的关键。它提供了一种将 m × n 个纠缠数据数组分解为 r 个组件的重要方法。由于 ui 和 vi 是单位向量,我们甚至可以忽略奇异值 σi 非常小的项 (σiuiviT)。(我们稍后会回到这个问题。
让我们首先重用之前的示例并展示它是如何工作的。
上面的矩阵 A 可以分解为
接下来,我们将看看U&V由什么组成。假设 A 是秩 r 的 m × n 矩阵。ATA 将是一个 n×n 对称矩阵。所有对称矩阵都可以选择 n 个正交特征向量 vj。由于 Avi = σiui 和 vj 是 ATA 的正交特征向量,我们可以将 uiTuj 的值计算为
它等于零。即 UI 和 uj 彼此正交。如前所述,它们也是AAT的特征向量。
从 Avi = σui,我们可以认识到 ui 是 A 的列向量。
因为 A 的秩为 r,我们可以选择这些 r ui 向量作为正交向量。那么AAT剩余的m-r正交特征向量是什么?由于 A 的左零空间与列空间正交,因此选择它们作为剩余的特征向量是很自然的。(左边的零点 N(AT) 是 ATx=0 中 x 的空间跨度。类似的参数也适用于 ATA 的特征向量。因此
回到以前的 SVD 方程,从
我们只是将特征向量放回左零空间和零空间中。
对于线性方程组,我们可以计算方阵 A 的逆函数来求解 x。
但并非所有矩阵都是可逆的。此外,在 ML 中,在数据中存在噪声的情况下,不太可能找到精确的解决方案。我们的目标是找到最适合数据的模型。为了找到最合适的解决方案,我们计算了一个伪逆
这最大限度地减少了下面的最小二乘误差。
x的解可以估计为,
在线性回归问题中,x 是我们的线性模型,A 包含训练数据,b 包含相应的标签。我们可以通过以下方式解决 x
下面是一个示例。
在 ML 中,我们识别模式和关系。我们如何识别数据中属性的相关性?让我们从一个例子开始讨论。我们对 12 人的身高和体重进行抽样并计算他们的平均值。我们通过用其平均值减去原始值来将其归零。例如,下面的矩阵 A 保存调整后的零中心高度和体重。
当我们绘制数据点时,我们可以认识到身高和体重是正相关的。但是,我们如何量化这种关系呢?
首先,房产有何不同?我们可能从高中开始学习差异。让我们介绍一下它的表弟。样本方差定义为:
请注意,它在方差中除以 n-1 而不是 n。在样本大小有限的情况下,样本均值存在偏差并与样本相关。与该均值的平均平方距离将小于与一般总体的平均平方距离。样本协方差 S² 除以 n-1 补偿较小的值,并且可以证明是方差 σ² 的无偏估计。(证明不是很重要,所以我在这里简单地提供一个证明的链接。
方差衡量变量在自身之间如何变化,而协方差在两个变量(a 和 b)之间变化。
我们可以将所有这些可能的协方差组合保存在一个称为协方差矩阵 Σ 的矩阵中。
我们可以用简单的矩阵形式重写它。
对角元素保存各个变量(如高度)的方差,非对角元素保存两个变量之间的协方差。现在让我们计算样本协方差。
正样本协方差表示体重和身高呈正相关。如果它们负相关,则为负,如果它们是独立的,则为零。
协方差矩阵和SVD
我们可以使用 SVD 来分解样本协方差矩阵。由于σ₂与σ₁相比相对较小,我们甚至可以忽略σ₂项。当我们训练 ML 模型时,我们可以对体重和身高执行线性回归以形成一个新属性,而不是将它们视为两个分离且相关的属性(纠缠数据通常会使模型训练更加困难)。
U₁ 具有一个重要的重要性。它是 S 的主要成分。
SVD 上下文中的样本协方差矩阵有几个属性:
垂直最小二乘法
财产
协方差矩阵不仅是对称的,而且是正半定的。由于方差为正或零,因此下面的uTVu始终大于或等于零。通过能量测试,V是正半定的。
因此
通常,在一些线性变换 A 之后,我们想知道转换后数据的协方差。这可以使用转换矩阵 A 和原始数据的协方差来计算。
相关矩阵
相关矩阵是协方差矩阵的缩放版本。相关矩阵将变量标准化(缩放)为标准差为 1。
如果变量的尺度非常不同,则将使用相关矩阵。不良缩放可能会损害梯度下降等 ML 算法。
到目前为止,我们有很多方程式。让我们可视化 SVD 的作用并逐步开发洞察力。SVD 将矩阵 A 分解为 USVT。 将 A 应用于矢量 x (Ax) 可以可视化为在 x 上执行旋转 (VT)、缩放 (S) 和另一个旋转 (U)。
如上所示,V 的特征向量 vi 转换为:
或以全矩阵形式
演示 r = m < n
如前所述,SVD 可以表述为
由于 ui 和 vi 具有单位长度,因此决定每个项的重要性的最主要因素是奇异值 σi。我们特意按降序对σi进行排序。如果特征值变得太小,我们可以忽略剩余的项(+σiuiviT + ...)。
这种公式化有一些有趣的含义。例如,我们有一个矩阵,其中包含不同投资者交易的股票收益率的回报。
作为基金经理,我们可以从中得到什么信息?寻找模式和结构将是第一步。也许,我们可以确定收益率最高的股票和投资者的组合。SVD 将 n × n 个矩阵分解为 r 个分量,奇异值 σi 表明其显著性。将此视为一种将纠缠和相关属性提取到较少的主方向上且没有相关性的方法。
如果数据高度相关,我们应该期望许多σi值很小并且可以忽略。
在我们前面的示例中,体重和身高高度相关。如果我们有一个包含 1000 人的体重和身高的矩阵,SVD 分解中的第一个分量将占主导地位。u₁ 矢量确实展示了我们之前讨论过的这 1000 人中体重和身高之间的比率。
从技术上讲,SVD 分别在方差最大的方向上提取数据。PCA 是将 m 维输入特征映射到 k 维潜在因子(k 个主成分)的线性模型。如果我们忽略不太重要的项,我们将删除不太关心的组件,但保留具有最高方差(最大信息)的主方向。
考虑下面显示为蓝点的三维数据点。它可以很容易地用飞机近似。
源
您可能很快意识到,我们可以使用 SVD 来查找矩阵 W。考虑下面位于二维空间上的数据点。
SVD 选择最大化其输出方差的投影。因此,如果方差较高,PCA 将选择蓝线而不是绿线。
As indicated below, we keep the eigenvectors that have the top kth highest singular value.
利率
让我们通过追溯来自美国财政部的利率数据来更深入地说明这个概念。9种不同利率的基点(从3个月,6个月,...至 20 年)收集连续 6 个工作日以上,A 存储与前一个日期的差额。在此期间,A 的元素也已经减去其平均值。即它是以零为中心的(跨其行)。
样本协方差矩阵等于 S = AAT/(5–1)。
现在我们有了想要分解的协方差矩阵 S。SVD 分解为
从 SVD 分解中,我们意识到我们可以专注于前三个主组件。
如图所示,第一个主成分与所有到期期限的每日变化的加权平均值相关。第二个主成分调整对债券到期期限敏感的每日变化。(第三个主成分可能是曲率——二阶导数。
我们在日常生活中非常了解利率变化与到期日之间的关系。因此,主要成分再次证实了我们对利率行为的看法。但是,当我们看到不熟悉的原始数据时,PCA对于提取数据的主要组成部分以找到底层信息结构非常有帮助。这可能会回答一些关于如何在大海捞针中找到针的问题。
在执行 SVD 之前缩放要素。
比如说,我们想保留 99% 的方差,我们可以选择 k 这样