帝国理工机器学习数学主成分分析笔记-全-
帝国理工机器学习数学主成分分析笔记(全)
001:主成分分析PCA | 课程介绍
概述
在本节课中,我们将学习主成分分析(PCA)的数学基础,这是一种用于数据降维的经典线性方法。我们将从理解高维数据的挑战与特性开始,逐步推导PCA背后的核心数学原理。
高维数据的挑战与特性

现实中的数据通常是高维的。例如,预测未来房价时,我们需要考虑房屋类型、面积、卧室数量、社区房价、交通便利性、犯罪率、经济环境等诸多因素。另一个例子是一张640x480像素的彩色图片,每个像素包含红、绿、蓝三个颜色通道,因此每个数据点位于一个维度高达 \(640 \times 480 \times 3 = 921,600\) 的空间中。

处理高维数据面临一些困难:分析难度大、解释性差、可视化几乎不可能,并且从实践角度看,存储成本可能非常高昂。
然而,高维数据也具备一些有利特性。例如,高维数据常常是“过完备”的,这意味着许多维度是冗余的,可以通过其他维度的组合来解释。以一张包含红、绿、蓝和灰度四个通道的彩色图片为例,灰度通道可以由其他三个通道组合而成,因此仅使用红、绿、蓝三个通道就足以完整地表示这张图片。
降维的目的与类比


降维技术利用数据中的结构和相关性,使我们能够使用更紧凑的形式来表示数据,理想情况下不丢失信息。
我们可以将降维视为一种压缩技术,类似于用于图像的JPEG或用于音乐的MP3压缩算法。以一个手写数字“8”的28x28像素二值图像为例,它可以表示为一个784维的向量。但在这个数据集中,像素值并非随机,而是具有结构性的——相邻像素的值通常相同。所有“8”的图像虽然略有差异,但足够相似,可以被识别为同一类别。降维可以帮助我们找到所有“8”图像的一个更低维度的表示,这种表示比原始的784维向量更易于处理。高维数据点的低维表示通常被称为“特征”或“代码”。
课程结构
本课程将深入探讨用于线性降维的经典算法——主成分分析(PCA)的数学推导细节。课程内容分为四个模块:
以下是四个核心模块的介绍:
- 数据统计表示:我们将学习如何使用均值和方差等统计量来描述数据,并探讨数据经过线性变换后,其均值和方差如何变化。
- 向量空间几何:我们将研究向量空间中的几何关系,定义如何计算向量之间的距离和夹角。
- 子空间投影:我们将运用前面的结果,学习如何将数据投影到更低维度的子空间上。
- PCA推导:最后,我们将推导PCA,将其定义为一种使用正交投影来降低数据维度的方法。
总结

本节课我们一起介绍了主成分分析(PCA)的学习背景和目标。我们认识到高维数据带来的分析、可视化和存储挑战,也了解了其常有的冗余特性。降维,特别是PCA,正是利用这种冗余来寻找数据的紧凑表示。在接下来的课程中,我们将从数据统计、向量几何等数学基础开始,一步步构建起对PCA的完整理解。
002:数据的基本统计属性

在本节课中,我们将学习如何用简洁的统计属性来描述数据集的核心特征,而不是罗列所有数据点。这些属性包括数据的中心位置、离散程度以及方向性。
当我们处理数据时,经常需要找到简洁的方式来描述其某些特性。直接提供整个数据集既不便捷也无必要。相反,我们可以使用一些统计属性来描述数据。例如,我们可以描述数据的中心或平均值,或者数据的离散程度和方向。
在接下来的视频中,我们将具体探讨这类统计属性,并讨论用于描述平均数据点的均值、用于描述数据离散程度的方差,以及用于表征数据方向和相关性的协方差。
上一节我们介绍了用统计属性描述数据的必要性,本节中我们来看看具体有哪些核心属性。
以下是三个核心的统计概念:
-
均值:描述数据集的中心或平均值。对于包含
n个数据点x_i的集合,其均值μ的计算公式为:
μ = (1/n) * Σ (x_i) -
方差:衡量数据点相对于均值的离散或分散程度。方差
σ²的计算公式为:
σ² = (1/n) * Σ (x_i - μ)² -
协方差:描述两个变量之间的线性关系方向(正相关或负相关)及其强度。对于两个变量
X和Y,其协方差Cov(X, Y)的计算公式为:
Cov(X, Y) = (1/n) * Σ ((x_i - μ_x) * (y_i - μ_y))

本节课中我们一起学习了描述数据集的三个基本统计属性:均值用于定位中心,方差用于衡量离散程度,而协方差则用于理解变量间的方向性关系。掌握这些概念是理解更复杂数据分析技术(如主成分分析)的基础。
003:数据集的均值
在本节课中,我们将要学习如何计算数据集的均值。均值是描述数据集中平均数据点的一个核心统计量,它帮助我们理解数据的中心位置。
均值的基本概念
上一节我们介绍了数据可以用统计属性来描述。本节中,我们来看看如何计算数据集的均值。
均值描述了数据的平均点。均值不一定是典型的数据点,也无需是数据集本身的一部分。例如,观察一组数字“8”的图像,其平均图像看起来是这样的。它包含了数据中所有图像的特性,但它本身并不属于原始数据集。
我们通过以下方式获得平均的“8”:


记住,一张图像可以通过将所有像素堆叠在一起,表示为一个高维向量空间中的长向量。将所有图像转换为这些向量后,我们取数据集中所有图像向量,将它们相加,然后除以数据集中的图像数量。这样就得到了平均图像向量。如果我们将该向量重新塑造成图像,就得到了数据集中的平均数字。
计算均值的步骤
以下是计算均值的一般步骤:
- 将每个数据点(如图像)转换为向量形式。
- 将所有数据点向量相加。
- 将总和除以数据点的总数(N)。
- (可选)将得到的平均向量转换回原始数据格式。
一个具体的图像示例
这里有一个包含四个“8”的例子。第一个图像的均值就是图像本身。但当我们加入第二张图像时,平均图像现在包含了这两张图像的特性。加入第三张图像后,均值图像是三张图像叠加并除以三的结果。加入第四张图像后,我们仍然可以在平均图像中看到所有四张图像的特征。😊
当我们向数据中添加更多图像时,平均数字会变得稍微模糊一些。


如果我们取数据集中所有的“8”,就会得到这个“8”作为平均图像。
均值的数学定义
通常,如果我们有一个数据集,包含 N 个数据点 x₁, x₂, ..., x_N。我们通过以下公式得到该数据集的均值(或期望值):
E[D] = (1/N) * Σ (n=1 到 N) x_n
即,我们将数据中所有数据点求和,然后除以数据点的数量。
一个数值示例
让我们看一个例子。我创建一个数据集,包含掷五次骰子得到的五个数字:1, 2, 4, 6, 6。
我们将这个数据集记为 D' = {1, 2, 4, 6, 6}。
现在,这个数据集的期望值或平均值计算如下:
所有元素之和:1 + 2 + 4 + 6 + 6 = 19
除以元素数量:5
因此,均值 = 19 / 5 = 3.8
我们可以清楚地看到,3.8 不是数据集的一部分,甚至无法通过掷骰子得到。因此,值得记住的是,虽然均值是数据集的平均值,但它不一定是一个典型的实例。
总结
本节课中我们一起学习了如何计算数据集的均值。均值是数据点的平均值,通过将所有数据点相加并除以点数得到。重要的是要理解,均值描述了数据的中心趋势,但它本身可能不是数据集中的实际值,也不一定代表典型的数据点。
在下一个视频中,我们将引入方差来描述数据围绕均值的分散程度。


004:一维数据集的方差 📊

在本节课中,我们将要学习如何描述数据集的另一个重要属性——方差。上一节我们介绍了数据集的均值,它代表了数据的平均位置。本节中,我们来看看如何衡量数据点围绕均值的分散程度。
理解数据集的分散程度
让我们观察两个不同的数据集 D1 和 D2。
- D1 由位于 1、2、4 和 5 的蓝色圆点表示。
- D2 由位于 -1、3 和 7 的红色方块表示。
D1 和 D2 拥有相同的均值,都是 3。然而,D2 中的数据点比 D1 中的数据点更分散,离均值更远。均值代表了平均期望的数据点,但要描述数据点围绕均值的集中程度,我们可以使用方差的概念。

什么是方差?
方差用于表征数据集中数据点的变异性或分散程度。在一维情况下,我们可以计算数据点与数据集均值之间距离平方的平均值。

以下是计算 D1 和 D2 方差的具体步骤。
计算示例
数据集 D1:数据点为 1, 2, 4, 5,均值 μ = 3。
数据集 D2:数据点为 -1, 3, 7,均值 μ = 3。
首先计算 D1 的平均平方距离:
- 计算每个数据点与均值的差,然后平方:
- (1 - 3)² = 4
- (2 - 3)² = 1
- (4 - 3)² = 1
- (5 - 3)² = 4
- 将这些平方值求和:4 + 1 + 1 + 4 = 10
- 除以数据点的数量(4),得到方差:10 / 4 = 2.5
接着计算 D2 的平均平方距离:
- 计算每个数据点与均值的差,然后平方:
- (-1 - 3)² = 16
- (3 - 3)² = 0
- (7 - 3)² = 16
- 将这些平方值求和:16 + 0 + 16 = 32
- 除以数据点的数量(3),得到方差:32 / 3 ≈ 10.67
D2 的方差(约10.67)大于 D1 的方差(2.5)。这表明 D2 数据点与均值的平均平方距离更大,即 D2 中的数据比 D1 中的数据更为分散。
方差的正式定义
我们可以将上述计算过程形式化。假设我们有一个包含 N 个数据点的数据集 X = {x₁, x₂, ..., x_N},其均值为 μ。
该数据集的方差定义为:
公式:
方差(σ²) = (1/N) * Σ_{n=1}^{N} (x_n - μ)²
这个公式所做的,正是我们之前为 D1 和 D2 所做的计算:计算数据集中所有数据点与均值之差的平方的平均值。
方差与标准差
关于方差,有几点需要注意:
- 根据定义,方差永远不会是负数,因为我们求和的是平方值。
- 我们可以对方差取平方根,得到的结果称为标准差。
公式:
标准差(σ) = √方差
标准差与均值使用相同的单位,而方差的单位是原始单位的平方。因此,在讨论数据的分散程度时,使用标准差通常更为直观和方便。
总结
本节课中我们一起学习了一维数据集的方差。我们了解到,方差是衡量数据点围绕均值分散程度的重要指标,它通过计算数据点与均值距离平方的平均值来获得。同时,我们引入了标准差的概念,它是方差的平方根,与数据具有相同的单位,便于直接理解和比较数据的波动性。下一节,我们将把方差的概念推广到更高维度的数据中。
005:高维数据集的方差


在本节课中,我们将要学习如何将一维数据集的方差概念扩展到高维数据集。我们将看到,仅靠各个方向上的方差不足以描述数据的全部特征,并引入协方差矩阵这一核心工具来捕捉数据维度之间的关系。
从一维到高维的方差
上一节我们介绍了一维数据集的方差计算。本节中我们来看看高维数据集的情况。
对于一维数据,方差的直觉和定义在高维空间中并不完全适用,因为对向量进行“平方”运算并没有明确的定义。
假设我们有一个二维数据集,我们可以分别计算数据在x方向和y方向上的方差。
然而,这些方差不足以完整描述数据集中的情况。具体来说,我们只得到了数据在各个独立方向上的变化,但可能还需要关注x和y变量之间的关系。
协方差的概念
这时,变量间协方差的概念就变得至关重要。
让我们看一个二维的例子。对于这个数据集,我们可以计算y方向和x方向的方差,分别由垂直和水平方向的条形表示。但这可能不够充分。
因为我们可以找到其他例子,其中x和y方向的方差相同,但数据集看起来却截然不同。
观察这个特定例子,数据形状不同,但x方向的方差和y方向的方差完全相同,且这些数据集的均值也相同。我们还可以看其他不同的数据集。
这四个数据集看起来非常不同。我们看到了四个具有不同属性或形状的数据集示例,但它们的x方向方差、y方向方差以及均值都相同。
如果我们只关注数据的水平和垂直分布,就无法解释x和y之间的任何相关性。
在最后一个图中,我们可以清楚地看到,平均而言,如果数据点的x值增加,那么y值平均会减少,这意味着x和y呈负相关。
协方差的定义
这种相关性可以通过将方差的概念扩展到数据的协方差来捕捉。x和y之间的协方差定义如下:


x和y之间的协方差定义为:x减去x方向均值,乘以y减去y方向均值的期望值。其中,μx是x坐标的期望值,μy是y坐标的期望值。
协方差矩阵
对于二维数据,我们可以得到四个重要的量:
- x的方差
- y的方差
- x和y之间的协方差
- y和x之间的协方差
我们将这些值总结在一个称为协方差矩阵的矩阵中,它有4个元素:
- 左上角是x方向的方差
- 右上角是x和y之间的协方差
- 左下角是y和x之间的协方差
- 右下角是y方向的方差
如果x和y之间的协方差为正,则平均而言,增加x时y值也会增加。
如果x和y之间的协方差为负,则平均而言,增加x时y值会减少。
如果x和y之间的协方差为0,则x和y互不相关。
协方差矩阵总是一个对称的正定矩阵,方差位于对角线上,协方差位于非对角线上。
扩展到d维数据集
现在让我们看看d维数据集。假设我们的数据由n个向量组成:

其中,每个Xi都在Rd空间中。那么我们可以计算该数据的方差为:
公式:
S = (1/n) * Σ (Xi - μ)(Xi - μ)^T

其中,μ是数据集的均值。这被称为数据的协方差矩阵,它是一个d×d的矩阵。

总结

本节课中我们一起学习了高维数据集的方差分析。我们认识到,仅靠各维度自身的方差无法全面描述数据特征,因此引入了协方差来量化不同维度之间的线性关系。最终,我们将所有方差和协方差信息整合到协方差矩阵中,这是一个对称的正定矩阵,为后续的主成分分析等降维技术奠定了重要的数学基础。
006:线性变换对均值的影响

在本节课程中,我们将探讨当对数据集进行线性变换(如平移或缩放)时,其均值会发生何种变化。理解这一点对于后续学习主成分分析等数据预处理技术至关重要。
数据集的描述
首先,我们来看一个简单的数据集 D,它由三个数据点组成:-1、2 和 3。我们可以将其可视化为下图中的蓝色圆点。

计算原始均值
我们首先计算这个原始数据集 D 的均值(期望值)。计算公式如下:
公式: E[D] = (Σx_i) / N
其中,x_i 是数据集中的每个数据点,N 是数据点的总数。
对于数据集 D:
E[D] = (-1 + 2 + 3) / 3 = 4/3 ≈ 1.333
这个均值在图中用蓝色的星号(★)标出。
平移变换对均值的影响
现在,我们考虑对数据集进行平移变换。具体来说,我们将每个数据点向右平移(增加)2个单位。

以下是平移操作的步骤:
- 定义平移后的新数据集 D‘。
- 计算 D‘ 的均值。
- 观察新均值与原始均值的关系。
平移后的数据集 D‘ 为:1, 4, 5(即每个原始值加2)。

计算 D‘ 的均值:
E[D‘] = (1 + 4 + 5) / 3 = 10/3 ≈ 3.333
我们可以发现,这个结果恰好等于原始均值加上平移量:
10/3 = 4/3 + 2
由此,我们可以总结出平移变换对均值影响的通用规则:
公式: E[D + a] = E[D] + a
其中,a 是常数平移量。这意味着,当整个数据集被平移时,其均值也会被平移相同的量。
缩放变换对均值的影响
接下来,我们看看缩放(拉伸或压缩)变换对均值的影响。我们对原始数据集 D 进行缩放,将每个数据点乘以缩放因子2。
以下是缩放操作的步骤:
- 定义缩放后的新数据集 D‘‘。
- 计算 D‘‘ 的均值。
- 观察新均值与原始均值的关系。
缩放后的数据集 D‘‘ 为:-2, 4, 6(即每个原始值乘以2)。
计算 D‘‘ 的均值:
E[D‘‘] = (-2 + 4 + 6) / 3 = 8/3 ≈ 2.667
这个结果恰好等于原始均值乘以缩放因子:
8/3 = (4/3) * 2
由此,我们可以总结出缩放变换对均值影响的通用规则:
公式: E[α * D] = α * E[D]
其中,α 是常数缩放因子。这意味着,当整个数据集被缩放时,其均值也会被缩放相同的倍数。
线性变换(平移与缩放)的综合影响
最后,我们将平移和缩放结合起来,考虑一般的线性变换对均值的影响。线性变换的形式为:α * D + a。
结合以上两个规则,我们可以直接得出线性变换后数据集均值的计算公式:
公式: E[α * D + a] = α * E[D] + a
这个公式清晰地表明:
- 缩放因子
α会作用于原始均值。 - 平移量
a会直接加在缩放后的均值上。
总结与过渡
在本节课程中,我们一起学习了线性变换如何影响数据集的均值。我们通过具体的例子推导并验证了以下核心结论:
- 平移:均值增加相同的常数。
E[D + a] = E[D] + a - 缩放:均值乘以相同的常数。
E[α * D] = α * E[D] - 综合线性变换:
E[α * D + a] = α * E[D] + a
理解均值在变换下的行为是分析数据的基础。在下一节视频中,我们将运用相同的思路,探讨线性变换对数据集另一个关键统计量——方差——的影响。方差描述了数据的离散程度,其变换规则与均值略有不同,这将是我们接下来学习的重点。




007:对协方差的影响

在本节课中,我们将要学习线性变换(平移和缩放)如何影响数据集的协方差。我们将从一维数据的方差开始,逐步推广到高维数据的协方差矩阵。
上一节我们介绍了平移和缩放对数据集均值的影响。本节中我们来看看它们对数据离散程度(方差)的影响。
平移对方差的影响
方差是衡量数据点离散程度的指标。平移数据集时,方差会如何变化?
以下是分析过程:
- 我们有一个包含三个数据点的数据集:-1, +2, +3。
- 我们将每个数据点向右平移2个单位。
- 平移后,数据点之间的相对距离保持不变。
因此,平移操作不会改变数据的方差。平移后的数据集方差与原始数据集方差相同。
一个通用的结论是:对于数据集 D,其方差记为 Var(D)。若将每个数据点平移一个常数 a,得到新数据集 D + a,则其方差满足以下公式:
Var(D + a) = Var(D)
缩放对方差的影响
现在,让我们探讨缩放数据集对方差的影响。
以下是分析过程:
- 我们使用与之前相同的数据集。
- 我们将每个数据点缩放(乘以)2倍。
- 方差是数据点到均值距离平方的平均值。
- 当所有数据点缩放2倍时,每个点到均值的距离也变为2倍。
- 距离的平方则变为原来的4倍。
- 因此,方差变为原来的4倍。

由此我们得到另一个结论:对于数据集 D,若将每个数据点缩放(乘以)一个实数 α,得到新数据集 αD,则其方差满足以下公式:
Var(αD) = α² * Var(D)
高维数据的线性变换
现在,让我们将视角转向高维数据。假设我们有一个数据集 D,它包含 n 个数据点 x₁, x₂, ..., xₙ,每个数据点 xᵢ 位于 p 维空间(ℝᵖ)中。这个数据集的离散程度由协方差矩阵 Σ 来描述。
如果我们对每个数据点进行一个线性变换,例如 Axᵢ + b,其中 A 是一个矩阵,b 是一个偏移向量,那么变换后数据集的协方差矩阵会如何变化?
结论如下:变换后数据集 AD + b 的协方差矩阵为:
Cov(AD + b) = A * Cov(D) * Aᵀ
总结
本节课中我们一起学习了线性变换对数据集协方差的影响。
- 平移数据只会影响均值,而不会改变方差或协方差矩阵。
- 缩放数据(乘以一个标量)会使方差按缩放因子的平方倍变化。
- 对于高维数据,线性变换 Ax + b 会将协方差矩阵 Σ 变换为 AΣAᵀ。

理解这些性质对于后续掌握主成分分析(PCA)等降维技术至关重要。
008:主成分分析(PCA)总结

在本模块中,我们学习了如何运用统计学方法来总结和描述数据集的特征。
我们首先介绍了用于描述数据集中心趋势和离散程度的基本统计量,即均值和方差。随后,我们探讨了描述两个变量之间线性关系的统计量——协方差。
统计量的变换
上一节我们介绍了基本的统计量,本节中我们来看看当数据集发生平移或缩放时,这些统计量会如何变化。
以下是数据变换对统计量的影响:
- 平移:数据的均值会随之平移相同的量,但方差和协方差保持不变。
- 缩放:数据的均值、方差和协方差都会按缩放比例的特定规则发生变化。
统计量的应用
理解了这些基础统计量及其性质后,我们将在下一个模块(模块4)中应用它们。
具体来说,我们将利用均值和协方差矩阵,来深入讨论用于数据降维的主成分分析(PCA) 算法。PCA的核心思想是找到数据中方差最大的方向(主成分),其数学基础与我们本模块所学的协方差矩阵的特征分解密切相关。

本节课中我们一起学习了如何用均值、方差和协方差来表征数据集,并了解了这些统计量在数据变换下的行为。这些知识为我们接下来学习强大的降维工具——主成分分析算法奠定了坚实的数学基础。
009:向量空间中的相似性度量


在本节课中,我们将学习如何度量数据点之间的相似性。在降维的背景下,我们的目标是找到数据在低维空间中的紧凑表示,同时这个表示要与原始数据相似。我们将重点探讨正交性这一核心概念,并利用数据点的正交投影来压缩数据,同时最小化信息损失。将数据点视为向量空间中的向量,将使我们能够从两种角度审视数据点间的相似性:数据点之间的距离以及它们之间的夹角。
让我们来看一个例子。假设我们生活在一个二维世界中。


这里有两个向量 x 和 y。在本课程中,我们将讨论如何计算单个向量的长度,即图中这条线的长度。我们还将研究两个向量之间的夹角,以及向量空间中各个数据点或向量之间的距离。在这个例子中,我们感兴趣的是 x 和 y 之间的距离。
为了度量夹角、计算长度和距离,我们需要为向量空间配备一个内积。内积使我们能够讨论向量空间中的几何性质。
在接下来的视频中,我们将具体学习如何计算向量的长度、向量之间的距离以及向量之间的夹角。


本节课中,我们一起学习了在向量空间中度量数据相似性的基本框架。我们了解到,通过将数据视为向量并引入内积,可以计算长度、距离和夹角,这些是后续进行主成分分析等降维操作的基础。下一节我们将深入探讨这些计算的具体方法。
010:点积与内积

在本节课中,我们将学习向量空间中的点积(内积)概念。点积是一种特殊的运算,它使我们能够定义和计算向量的长度、向量之间的距离以及向量之间的夹角。这些几何概念是理解主成分分析(PCA)等机器学习算法的基础。

点积的定义与计算
上一节我们介绍了向量空间的基本概念。本节中,我们来看看如何为向量空间装备一个“内积”,从而能够度量角度、长度和距离。
一个我们可能已经熟悉的内积例子是两个向量之间的点积。对于两个在 R^N 空间中的向量 x 和 y,点积定义如下:
公式:
x · y = x^T y = Σ_{i=1}^{n} x_i * y_i
其中,x 和 y 是 N 维向量。
向量的长度(范数)
利用点积,我们可以定义向量的长度(也称为范数)。向量 x 的长度定义为它与自身点积的平方根。
公式:
||x|| = √(x · x) = √(x^T x) = √( Σ_{i=1}^{n} x_i^2 )
让我们看一个例子。假设在二维平面中,向量 x = (1, 2),向量 y = (2, 1)。
以下是计算向量 x 长度的步骤:
- 计算 x 与自身的点积:
1*1 + 2*2 = 5 - 取平方根:
√5
因此,向量 x 的长度为 √5。同理,向量 y 的长度也为 √5。
向量之间的距离
了解了如何计算长度后,我们自然想知道两个向量之间的距离。两个向量 x 和 y 之间的距离,就是它们差向量 (x - y) 的长度。
公式:
距离(x, y) = ||x - y|| = √( (x - y)^T (x - y) )
现在来计算我们例子中两个向量之间的距离:
- 计算差向量:
(1, 2) - (2, 1) = (-1, 1) - 计算该差向量的长度:
√( (-1)^2 + 1^2 ) = √2
所以,向量 x 和 y 之间的距离为 √2。
向量之间的夹角
最后,我们还可以利用点积来计算两个向量之间的夹角。设夹角为 α,则其余弦值可以通过以下公式求得:
公式:
cos(α) = (x · y) / (||x|| * ||y||)
在我们的例子中:
- 计算 x 和 y 的点积:
1*2 + 2*1 = 4 - 计算分母:
||x|| * ||y|| = √5 * √5 = 5 - 计算余弦值:
cos(α) = 4 / 5 = 0.8
通过反余弦函数,我们可以求得夹角 α 的弧度值约为 0.64 弧度。
总结
本节课中我们一起学习了点积作为内积的一个特例。我们掌握了如何使用点积来计算三个核心的几何量:
- 向量的长度:通过向量与自身的点积开方得到。
- 向量间的距离:通过计算两个向量差值的长度得到。
- 向量间的夹角:通过点积与两个向量长度的比值得到其余弦值。
在下一部分视频中,我们将探讨更一般化的内积概念,并用它来计算这些完全相同的几何量。
011:内积定义

概述
在本节课中,我们将要学习内积的定义。内积是点积的推广,它允许我们以一种更一般化的方式来计算向量之间的角度、长度和距离。我们将从定义出发,解释其性质,并通过例子来理解它。
内积的定义
上一节我们介绍了如何使用点积来计算角度、长度和距离。本节中,我们来看看如何将这些几何属性的计算推广到更一般的情况。有时,我们需要用一种非传统的方式来度量这些几何属性,而内积恰好允许我们做到这一点。
内积是点积的推广,但其核心思想一致:我们希望表达向量之间的几何属性,例如长度和角度。
让我们来定义什么是内积。对于向量空间 V 中的任意两个向量 x 和 y,内积被定义为一个对称、正定、双线性的映射。
这意味着我们有一个映射,它接受向量空间中的两个输入。这是一个从 V × V 到实数 ℝ 的映射。我们称这个函数是对称的、正定的和双线性的。
让我们逐一解释这些性质。
双线性
双线性意味着,对于向量空间中的向量 x, y, z 和实数 λ,我们得到:
- λx + z 与 y 的内积可以写作 λ 乘以 x 与 y 的内积,加上 z 与 y 的内积。
- 公式:
⟨λx + z, y⟩ = λ⟨x, y⟩ + ⟨z, y⟩
- 公式:
- 类似地,我们要求函数的第二个参数也具有线性性质。因此,x 与 λy + z 的内积是 λ 乘以 x 与 y 的内积,加上 x 与 z 的内积。
- 公式:
⟨x, λy + z⟩ = λ⟨x, y⟩ + ⟨x, z⟩
- 公式:
这意味着该函数在其两个参数上都是线性的,因此被称为“双线性”。
正定性
正定性意味着:
- 向量 x 与其自身的内积大于或等于 0。
- 公式:
⟨x, x⟩ ≥ 0
- 公式:
- 等号成立当且仅当 x 是零向量。
- 公式:
⟨x, x⟩ = 0 ⇔ x = 0
- 公式:
对称性
对称性意味着:
- x 与 y 的内积等于 y 与 x 的内积。顺序无关紧要。
- 公式:
⟨x, y⟩ = ⟨y, x⟩
- 公式:
内积的例子
让我们看一些例子来加深理解。
例子1:标准点积
如果我们定义内积为 xᵀ I y,其中 I 是单位矩阵,那么我们得到的就是我们非常熟悉的点积。
- 代码/公式:
⟨x, y⟩ = xᵀ y = x₁y₁ + x₂y₂ + ... + xₙyₙ
例子2:由矩阵定义的内积
现在,让我们看一个不同的例子。我们定义内积为 xᵀ A y,其中 A 是矩阵 [[2, 1], [1, 2]]。
那么,这个内积可以具体写为:
- 公式:
⟨x, y⟩ = 2x₁y₁ + x₂y₁ + x₁y₂ + 2x₂y₂
这个内积与标准的点积不同。事实上,任何在此等式中使用的对称正定矩阵都定义了一个有效的内积。

总结
本节课中,我们一起学习了内积的概念。我们了解到内积是点积的推广,它是一个满足对称性、正定性和双线性性质的映射。我们通过标准点积和一个由矩阵定义的例子,具体看到了内积的不同形式。在接下来的视频中,我们将使用内积来讨论向量的几何属性,如长度和角度。
012:内积与向量长度

概述
在本节课中,我们将学习如何使用内积来计算向量的长度和向量之间的距离。我们将从内积的定义出发,探讨向量长度的计算方法,并了解不同内积定义如何影响向量的几何性质。
向量长度的定义
上一节我们介绍了内积的概念。本节中,我们将利用内积来计算向量的长度。
向量的长度通过内积定义如下:

公式:
[
| \mathbf{x} | = \sqrt{\langle \mathbf{x}, \mathbf{x} \rangle}
]
向量的长度定义为该向量与自身内积的平方根。由于内积具有正定性,该表达式大于等于零,因此可以取平方根。
需要注意的是,向量的长度取决于所选择的内积。不同的内积定义会导致向量的长度不同,进而影响向量空间的几何结构。
向量长度示例
现在,我们通过一个具体例子来理解向量长度的计算。
假设我们有一个二维向量:
[
\mathbf{x} = \begin{bmatrix} 1 \ 1 \end{bmatrix}
]
在坐标系中,该向量位于点 (1, 1) 处。
使用标准点积计算长度
首先,我们使用标准点积作为内积定义:
[
\langle \mathbf{x}, \mathbf{y} \rangle = \mathbf{x}^\top \mathbf{y}
]
那么,向量 (\mathbf{x}) 的长度为:
[
| \mathbf{x} | = \sqrt{1^2 + 1^2} = \sqrt{2}
]
使用自定义内积计算长度
接下来,我们考虑一个不同的内积定义:
[
\langle \mathbf{x}, \mathbf{y} \rangle = \mathbf{x}^\top \begin{bmatrix} 1 & -\frac{1}{2} \ -\frac{1}{2} & 1 \end{bmatrix} \mathbf{y}
]
展开后为:
[
\langle \mathbf{x}, \mathbf{y} \rangle = x_1 y_1 - \frac{1}{2} x_1 y_2 - \frac{1}{2} x_2 y_1 + x_2 y_2
]
根据此定义,向量 (\mathbf{x}) 的长度为:
[
| \mathbf{x} | = \sqrt{1^2 - 1 + 1^2} = \sqrt{1} = 1
]
通过这个例子可以看出,同一个向量在使用不同内积定义时,其长度可能不同。使用标准点积时长度为 (\sqrt{2}),而使用自定义内积时长度仅为 1。
向量长度的性质
向量长度(也称为范数)具有一些重要性质。以下是几个关键性质:
性质 1:缩放性质
[
| \lambda \mathbf{x} | = |\lambda| \cdot | \mathbf{x} |
]
如果将向量拉伸 (\lambda) 倍,其长度变为原长度的 (|\lambda|) 倍。
性质 2:三角不等式
[
| \mathbf{x} + \mathbf{y} | \leq | \mathbf{x} | + | \mathbf{y} |
]
两个向量和的长度小于等于各自长度之和。
性质 3:柯西-施瓦茨不等式
[
|\langle \mathbf{x}, \mathbf{y} \rangle| \leq | \mathbf{x} | \cdot | \mathbf{y} |
]
两个向量内积的绝对值小于等于各自长度的乘积。

总结
本节课中,我们一起学习了如何使用内积定义向量的长度。我们通过具体示例展示了不同内积定义如何影响长度计算,并介绍了向量长度的几个基本性质。下一节,我们将利用这些概念来计算向量之间的距离。
013:内积与向量距离

在本节课中,我们将学习如何利用内积来计算两个向量之间的距离。我们将看到,距离的定义依赖于内积的选择,不同的内积会得出不同的距离结果。
上一节我们介绍了如何计算向量的长度,本节中我们来看看如何计算两个向量之间的距离。
计算向量距离
两个向量 x 和 y 之间的距离,被定义为它们差向量 x - y 的长度。因此,我们可以用以下公式表示距离:
距离(x, y) = ||x - y||
这个长度(或范数)的计算,取决于我们选择的内积定义。如果我们使用标准的点积(欧几里得内积),那么计算出的距离就称为欧几里得距离。
距离计算示例
让我们通过一个具体例子来理解这一点。以下是计算向量距离的步骤:
- 定义向量:假设我们有两个向量 x = [2, 3]^T 和 y = [4, 1]^T。
- 计算差向量:首先,我们需要计算差向量 x - y。
- x - y = [2-4, 3-1]^T = [-2, 2]^T
- 选择内积计算距离:接下来,我们使用不同的内积来计算这个差向量的长度,即距离。
使用点积(欧几里得距离)
如果我们使用标准的点积,距离计算如下:
||x - y|| = sqrt( (-2)^2 + (2)^2 ) = sqrt(4 + 4) = sqrt(8)
使用自定义内积
现在,假设我们定义一个新的内积。设矩阵 A = [[1, -0.5], [-0.5, 1]],则内积定义为 <u, v> = u^T A v。
使用此内积计算差向量 z = [-2, 2]^T 的长度:
||z|| = sqrt( z^T A z ) = sqrt( [-2, 2] * [[1, -0.5], [-0.5, 1]] * [[-2], [2]] )
计算过程:
- 首先计算 A z: [[1, -0.5], [-0.5, 1]] * [-2, 2]^T = [-2 -1, 1 + 2]^T = [-3, 3]^T
- 然后计算 z^T (A z): [-2, 2] * [-3, 3]^T = (-2)(-3) + 23 = 6 + 6 = 12
- 最后取平方根: ||z|| = sqrt(12)
我们可以看到,对于相同的两个向量,使用点积得到的距离是 sqrt(8),而使用自定义内积得到的距离是 sqrt(12)。这清楚地表明,距离的数值依赖于内积的选择。

本节课中我们一起学习了如何利用内积计算向量之间的距离。关键点在于,距离定义为差向量的范数,而范数源于内积。因此,选择不同的内积(如点积或自定义内积),会得到不同的距离度量。理解这一点对于后续学习主成分分析等机器学习算法中数据之间的相似性与差异性至关重要。
机器学习数学:主成分分析:P14:内积、角度与正交性

在本节课中,我们将学习向量几何的另一个核心概念:角度。通过角度,我们可以定义正交性,这对于理解投影和降维至关重要。
上一节我们探讨了向量的长度和距离。本节中,我们来看看如何利用内积来计算向量间的角度。
角度与内积的关系
两个向量 x 和 y 之间的角度,可以通过它们的内积来计算。具体关系如下:
cos(ω) = <x, y> / (||x|| * ||y||)
其中,ω 是向量 x 与 y 之间的夹角,<x, y> 表示内积,||x|| 和 ||y|| 分别是向量的范数(长度)。
角度计算示例
让我们通过一个例子来理解这个公式。
假设有两个向量:
- x = [1, 1]
- y = [1, 2]
我们使用点积作为内积。计算过程如下:
- 内积:xᵀy = 11 + 12 = 3
- 范数:||x|| = √(1² + 1²) = √2, ||y|| = √(1² + 2²) = √5
- 代入公式:cos(ω) = 3 / (√2 * √5) = 3 / √10 ≈ 0.949
- 因此,角度 ω ≈ arccos(0.949) ≈ 0.32 弧度(约 18 度)。
直观上,两个向量的夹角越小,说明它们的方向越相似。
正交性的定义
现在,我们来看一个特殊的例子。考虑向量:
- x = [1, 1]
- y = [-1, 1]
再次使用点积计算:
- 内积:xᵀy = 1(-1) + 11 = 0
- 根据公式 cos(ω) = 0 / (||x|| * ||y||) = 0
- 因此,夹角 ω = π/2 弧度(90 度)。
当两个非零向量的内积为 0 时,我们称它们为正交(垂直)的。用公式表示:
<x, y> = 0
正交性依赖于内积
一个关键点是,正交性的定义是相对于所选的内积而言的。两个向量在一种内积下正交,在另一种内积下可能并不正交。
以上面的向量 x = [1, 1] 和 y = [-1, 1] 为例:
- 在点积(<x, y> = xᵀy)下,它们正交(内积为0)。
- 如果我们换一个内积,例如定义为 <x, y> = xᵀ A y,其中矩阵 A = [[2, 0], [0, 1]],则:
- <x, y> = [1, 1] * [[2, 0], [0, 1]] * [-1, 1]ᵀ = -1
- 内积不为0,因此它们在这种内积下不正交。
从几何角度看,两个正交的向量可以被视为“最不相似”的,它们除了共享原点外,没有其他共同方向。
标准正交基
正交性在构建向量空间的基时非常有用。我们可以找到一组基向量 {b₁, b₂, ..., bₙ},使得它们两两正交:
<bᵢ, bⱼ> = 0,当 i ≠ j
如果进一步将每个基向量的长度归一化为1(即 ||bᵢ|| = 1),那么这组基就称为标准正交基。标准正交基能极大简化许多计算。
总结
本节课中,我们一起学习了:
- 如何利用内积公式 cos(ω) = <x, y> / (||x|| * ||y||) 计算向量间的角度。
- 正交性的定义:当两个非零向量的内积为 0 时,它们正交。
- 正交性依赖于所选择的内积,改变内积可能会改变向量的正交关系。
- 标准正交基的概念,即一组两两正交且长度为1的基向量。

正交性是后续课程(如投影、主成分分析PCA)的基石。例如,当我们想找到一个向量到某条直线的最短距离时,这个最短距离所对应的线段,恰好与那条直线是正交的。
015:函数与随机变量的内积(可选)

在本节课中,我们将学习内积概念在两种特殊对象上的应用:连续函数和随机变量。我们将看到,即使对于这些非向量的对象,内积依然能帮助我们定义长度、角度和正交性,从而获得几何直观。
函数的内积
上一节我们介绍了有限维向量空间的内积性质。本节中,我们来看看内积概念如何推广到连续函数。
我们之前讨论的内积是针对具有有限个分量的向量定义的,这些向量可以看作是具有有限个函数值的离散函数。内积的概念同样可以推广到连续值函数,此时向量分量的求和就变成了积分。
两个函数 u 和 v 的内积定义如下:
与普通的内积一样,我们可以通过这个内积来定义范数和正交性。如果上述积分的结果为0,则函数 u 和 v 是正交的。
让我们看一个例子。
如果我们选择:
- u(x) = sin(x)
- v(x) = cos(x)

并定义 f(x) = u(x) v(x) = sin(x) cos(x),我们会得到下图所示的函数。

这个函数是奇函数,意味着 f(-x) = -f(x)。如果我们选择积分限为 -π 到 +π,那么这个乘积 sin(x) cos(x) 的积分结果为0。
这意味着 sin 和 cos 是正交的。事实上,如果我们观察一组函数,例如 1, cos(x), cos(2x), cos(3x), ...,在从 -π 到 +π 的积分下,所有这些函数彼此都是正交的。
随机变量的内积
另一个在内积定义中不常见的对象是随机变量或随机向量。
如果我们有两个不相关的随机变量,我们知道以下关系成立:Var(X + Y) = Var(X) + Var(Y),其中 X 和 Y 是随机变量。
由于方差是以平方单位度量的,这个公式看起来非常像直角三角形的勾股定理:c² = a² + b²。

让我们看看是否能找到不相关随机变量方差关系的几何解释。
随机变量可以被视为向量空间中的向量,我们可以定义内积来获得这些随机变量的几何性质。
如果我们定义两个随机变量 X 和 Y 的内积为它们的协方差:⟨X, Y⟩ = Cov(X, Y),我们可以看到协方差满足对称性、正定性和线性。
线性意味着:Cov(λX + Y, Z) = λ Cov(X, Z) + Cov(Y, Z),其中 X, Y, Z 是随机变量,λ 是实数。
一个随机变量的“长度”定义为:
现在,如果我们看两个随机变量之间的夹角,会得到以下关系:
根据我们内积的定义将其展开:
当且仅当 Cov(X, Y) = 0 时,这个值为0,即 X 和 Y 不相关。
现在回到我们的几何解释。我们可以将 a 替换为 X 的标准差 σX,将 b 替换为 Y 的标准差 σY,将 c 替换为 √(Var(X) + Var(Y))。

这样我们就得到了随机变量的几何解释。
总结

本节课中,我们一起学习了内积在两种特殊对象——函数和随机变量——上的应用。尽管这些对象与常规向量不同,但内积仍然允许我们思考这些对象的长度和夹角。在随机变量的例子中,我们看到两个不相关随机变量之和的方差,可以利用勾股定理进行几何解释。这再次展示了内积作为统一数学工具的强大之处。
机器学习数学:主成分分析:P16:前往下一个模块

在本模块中,我们介绍了内积的概念,它是点积的推广。
内积使我们能够讨论几何概念,例如向量的长度、距离和角度。
我们讨论的一个特例是正交性。
在接下来的模块中,我们将大量使用正交性,将高维数据投影到低维子空间上,这是主成分分析不可或缺的一部分。

恭喜你,本模块到此结束。
017:03_01_01

在本节课中,我们将要学习高维数据的一个核心特性,并引出降维技术的基本思想。高维数据通常难以分析和可视化。然而,高维数据常常具有一个特性:只有少数几个维度包含了大部分信息,而其他大多数维度对于描述数据的关键属性并非必需。

当我们压缩或可视化高维数据时,会不可避免地丢失信息。因此,我们的目标是找到数据中最具信息量的维度,在压缩数据时保留它们,同时忽略不相关的维度。
在本课程中,我们将深入探讨正交投影,它在降维算法中扮演着核心角色。
高维数据的挑战与机遇 🧩
上一节我们提到了高维数据处理的总体目标。本节中,我们来看看高维数据面临的具体挑战及其内在特性。
高维数据通常难以分析或可视化。这主要是因为人类难以直观理解超过三维的空间。
然而,高维数据通常具备一个重要特性:仅有少数维度包含了绝大部分信息。数据的关键属性可以由这些少数“信息丰富”的维度来描述。
大多数其他维度对于描述数据的关键属性并非必需。这些维度可能只包含噪声、冗余信息或微小的变化。
降维的核心思想:保留信息 📉
上一节我们介绍了高维数据“内在维度低”的特性。本节中我们来看看如何利用这一特性进行数据压缩。
当我们压缩或可视化高维数据时,总会丢失一部分信息。这是一个不可避免的权衡。
因此,关键在于找到数据中最具信息量的维度。我们的目标是识别出那些承载了数据主要结构和模式的维度。
在压缩数据时,我们保留这些最具信息量的维度。它们是数据本质特征的代表。
同时,我们忽略那些不相关的维度。这些维度通常对理解数据的核心模式贡献甚微,舍弃它们可以简化问题而不损失关键信息。
正交投影:降维的数学基础 📐
前面我们讨论了降维的总体策略。本节将介绍实现这一策略的一个核心数学工具——正交投影。
在降维算法中,正交投影扮演着核心角色。它提供了一种将数据从高维空间映射到低维子空间的严谨数学方法。
通过正交投影,我们可以将数据点投射到一个由选定维度(或称“主成分”)张成的低维平面上,并确保投影后的点与原点的距离(即投影误差)最小化。这通常通过以下步骤实现:
- 数据中心化:确保数据的均值为零。
- 计算协方差矩阵:
Σ = (1/(n-1)) * X^T * X,其中X是中心化后的数据矩阵。 - 特征值分解:对协方差矩阵
Σ进行分解,得到特征值和特征向量。 - 选择主成分:选取前
k个最大特征值对应的特征向量,构成投影矩阵W。 - 数据投影:将原始数据投影到新的低维空间
Y = X * W。
这种方法(即主成分分析,PCA)能确保在降维后保留数据中最大程度的方差(即信息)。

总结
本节课中我们一起学习了高维数据处理的基本概念。我们认识到高维数据虽然难以直接处理,但其内在维度往往较低。降维的目标是在压缩数据时,有选择地保留信息量最大的维度,舍弃不相关的维度。正交投影是实现这一目标的强大数学工具,为后续学习主成分分析等具体降维算法奠定了重要的理论基础。
018:到1维子空间的投影

在本节课中,我们将学习如何将一个向量正交投影到一维子空间上。这是理解主成分分析(PCA)等降维技术的重要基础。
概述
我们将探讨向量在一维子空间上的正交投影。给定一个高维空间中的向量和一个由单个基向量张成的一维子空间,我们的目标是找到该子空间中与原始向量最接近的点。这个最接近的点就是原始向量在该子空间上的正交投影。
投影的几何意义与条件
让我们先看一个图示。我们有一个二维空间中的向量 x。同时,我们有一个一维子空间 U,它由一个基向量 b 张成。这意味着 U 中的所有向量都可以表示为 λb 的形式,其中 λ 是一个标量。
我们的目标是找到子空间 U 中与 x 最接近的向量。通过计算 U 中所有向量与 x 的差向量的长度,我们发现,可以通过将 x 正交投影到 U 上来找到这个最接近的向量。正交投影意味着差向量 x - π_U(x) 与子空间 U 垂直。
我们将 x 在 U 上的投影记为 π_U(x)。这个投影有两个关键性质:
- 由于 π_U(x) 在 U 中,因此存在一个标量 λ ∈ ℝ,使得投影可以写成基向量 b 的倍数:π_U(x) = λb。这里的 λ 就是投影点相对于子空间基 b 的坐标。
- 原始向量 x 与其投影 π_U(x) 的差向量与子空间 U 正交。由于 U 由 b 张成,这意味着差向量与 b 正交。用公式表示为:< b, (π_U(x) - x) > = 0。
这两个性质对于任何 ℝ^D 空间中的向量 x 和一维子空间 U 都成立。
推导投影公式
上一节我们介绍了投影的两个核心性质,本节中我们利用它们来推导 π_U(x) 的具体计算公式。

我们重新描述一下问题:有一个向量 x,一个由基向量 b 张成的一维子空间 U。投影 π_U(x) 满足:
- 条件一(在子空间中):π_U(x) = λb
- 条件二(正交性):< b, (π_U(x) - x) > = 0
现在,我们结合这两个条件进行推导。
首先,从正交性条件开始:
< b, (π_U(x) - x) > = 0
利用内积的线性性质,可以展开为:
< b, π_U(x) > - < b, x > = 0
接下来,将条件一 π_U(x) = λb 代入:
< b, λb > - < b, x > = 0
再次利用内积的线性性质,将标量 λ 提出:
λ < b, b > - < b, x > = 0
我们知道 < b, b > 就是向量 b 的范数平方 ||b||²。因此:
λ ||b||² - < b, x > = 0
由此,我们可以解出坐标 λ:
λ = < b, x > / ||b||²
现在,我们将求得的 λ 代回条件一,就得到了投影向量的表达式:
π_U(x) = λb = (< b, x > / ||b||²) b
如果我们使用点积作为内积(即 < b, x > = bᵀx),公式可以写为:
π_U(x) = (bᵀx / ||b||²) b
观察这个公式,bᵀx 是一个标量,b / ||b||² 是一个向量。我们也可以调整顺序,将其写为:
π_U(x) = b (bᵀ / ||b||²) x = (b bᵀ / ||b||²) x
这里的矩阵 P = (b bᵀ) / ||b||² 就是一个投影矩阵,它将任何向量 x 投影到由 b 张成的子空间上。
单位基向量的特殊情况
上一节我们得到了通用公式,本节中我们来看一个重要的简化情况:当基向量 b 是单位向量时(即 ||b|| = 1)。
在这种情况下,范数平方 ||b||² = 1。将其代入通用公式,得到:
λ = bᵀx
π_U(x) = (bᵀx) b = b (bᵀx) = (b bᵀ) x
因此,当基向量为单位向量时:
- 投影坐标 λ 简化为 b 与 x 的点积 bᵀx。
- 投影矩阵简化为 P = b bᵀ。
重要说明
最后需要明确一点:投影结果 π_U(x) 仍然是一个位于原始高维空间(ℝ^D)中的向量。然而,我们不再需要 D 个坐标来表示它,而只需要一个标量坐标 λ,再结合已知的基向量 b,就能完整地描述它。这体现了降维的思想。
总结
本节课中,我们一起学习了向量到一维子空间的正交投影。我们通过两个核心观察得出了解决方案:
- 投影点必须能表示为子空间基向量的标量倍数。
- 原始向量与其投影的差向量必须与子空间正交。

我们推导出了通用投影公式 π_U(x) = (< b, x > / ||b||²) b,并探讨了基向量为单位向量时的简化形式 π_U(x) = (bᵀx) b。在下一节课中,我们将通过一个具体例子来巩固这些概念。
019:到1维子空间的投影

概述
在本节课中,我们将通过一个具体的例子,学习如何将一个向量正交投影到一个一维子空间上。我们将使用上一节推导出的投影公式,并借助图示来直观理解计算过程。

从公式到示例
上一节我们介绍了向量到一维子空间的正交投影公式。本节中我们来看看如何将这个公式应用到一个具体的例子中。
投影公式的核心是:
π_U(x) = ( (x^T b) / (b^T b) ) * b
其中,x 是待投影的 d 维向量,b 是张成目标一维子空间 U 的基向量。
示例设定
假设我们的基向量 b 是:
b = [2, 1]^T
我们想要投影的向量 x 是:
x = [1, 2]^T
我们可以将这两个向量在二维坐标系中绘制出来。向量 x 位于坐标点 (1, 2),向量 b 位于坐标点 (2, 1)。由 b 张成的一维子空间 U 是沿着向量 b 方向的一条直线。
计算正交投影
现在,我们使用投影公式来计算 x 在子空间 U 上的正交投影 π_U(x)。
以下是计算步骤:
- 计算
x与b的点积:x^T b = 1*2 + 2*1 = 4 - 计算
b的平方范数(长度平方):b^T b = 2*2 + 1*1 = 5 - 将点积除以平方范数,再乘以向量
b:π_U(x) = (4 / 5) * [2, 1]^T = [8/5, 4/5]^T
因此,正交投影 π_U(x) 是向量 b 的 4/5 倍。在图中,这个投影点位于从原点出发、沿 b 方向 4/5 长度的位置。

总结
本节课中我们一起学习了如何应用正交投影公式。我们通过一个具体的二维向量例子,逐步计算了其到给定一维子空间的投影,并将结果与几何图示对应起来,加深了对投影概念的理解。下一节,我们将把投影的概念推广到更高维度的子空间。
020:到更高维子空间的投影


在本节课中,我们将学习如何将一个向量正交投影到更高维度的子空间上。这是主成分分析(PCA)等机器学习方法的核心数学基础之一。
概述
上一节我们介绍了向量到一维子空间(即直线)的正交投影。本节中,我们将把这一概念推广到更一般的情况:将向量投影到任意维度的子空间上。我们将利用与一维情况相同的核心概念,推导出通用的投影公式。
从三维空间的一个例子开始
让我们从一个具体的例子开始理解。假设我们有一个向量 x,它位于三维空间中。同时,我们定义了一个二维子空间 U。
这个子空间 U 由两个基向量 b₁ 和 b₂ 张成。例如,b₁ 是这个向量,b₂ 是那个向量。因此,我们可以写作 U = span(b₁, b₂)。在这个例子中,U 就是一个平面。
现在,我们考虑将向量 x 正交投影到子空间 U 上,记作 π_U(x)。这个投影点看起来是这样的。
我们可以立即得出两个关键观察结果。
以下是推导投影公式的两个核心性质:
-
由于投影点 π_U(x) 是子空间 U 中的一个元素,它可以用 U 的基向量的线性组合来表示。这意味着我们可以写作:
π_U(x) = λ₁b₁ + λ₂b₂
其中 λ₁ 和 λ₂ 是适当的系数值。 -
原始向量 x 与其投影 π_U(x) 的差向量(即图中这个向量)与子空间 U 正交。这意味着它与 U 的所有基向量都正交。利用内积,我们可以写作:
< x - π_U(x), b₁ > = 0 且 < x - π_U(x), b₂ > = 0。
推广到一般情况
现在,让我们将思路推广到一般情况。假设 x 是一个 d 维向量,我们要将其投影到一个 m 维子空间 U 上。
我们开始推导一般结果。
首先,我们定义两个量:
- 系数向量 λ,它包含所有 λᵢ:λ = [λ₁, λ₂, ..., λₘ]ᵀ
- 基矩阵 B,它将子空间 U 的所有基向量按列拼接起来:B = [b₁, b₂, ..., bₘ]
利用这个定义,我们可以将投影点简洁地写作:
π_U(x) = Bλ
假设我们使用点积作为内积。现在,利用第二个正交性质,对于每个基向量 bᵢ,我们有:
< Bλ - x, bᵢ > = 0,其中 i = 1, 2, ..., m。
利用内积的线性性质展开:
< Bλ, bᵢ > - < x, bᵢ > = 0
对于点积,我们可以将其写成矩阵形式。对于所有 i 的条件可以汇总为:
λᵀBᵀB - xᵀB = 0(这里的 0 是一个 m 维的行向量)。
我们的目标是求解 λ。对上式进行变换:
λᵀBᵀB = xᵀB
假设矩阵 BᵀB 是可逆的,我们在等式两边右乘 (BᵀB)⁻¹:
λᵀ = xᵀB(BᵀB)⁻¹
对等式两边同时转置,得到系数向量 λ:
λ = (BᵀB)⁻¹Bᵀx
现在我们得到了 λ。由于投影点 π_U(x) = Bλ,我们将 λ 代入:
π_U(x) = B(BᵀB)⁻¹Bᵀx
我们可以将表达式 B(BᵀB)⁻¹Bᵀ 识别为投影矩阵,这与一维情况类似。
特殊情况:标准正交基
在子空间 U 的基是标准正交基的特殊情况下,有 BᵀB = I(单位矩阵)。此时,投影公式大大简化:
π_U(x) = BBᵀx
与一维情况的联系
投影向量 π_U(x) 仍然是 Rᵈ 空间中的一个向量,但我们只需要 m 个坐标(即 λ 向量)就可以在子空间 U 的基下表示它。
我们得到的结果与一维情况在本质上是一致的。回忆一下,在一维情况下,我们有:
- λ = (bᵀx) / (bᵀb)
- π_U(x) = [(bᵀx) / (bᵀb)] b
在更高维情况下,BᵀB 变成了一个矩阵,而不再是标量。因此,我们用矩阵的逆 (BᵀB)⁻¹ 代替了除以标量的操作。这是两个结果之间最主要的区别。
总结
本节课中,我们一起学习了如何将向量正交投影到 m 维子空间上。我们通过利用两个核心性质得出了解决方案:
- 投影点必须能用子空间基的线性组合表示。
- 原向量与其投影的差向量必须与子空间正交。
最终,我们得到了通用的投影公式 π_U(x) = B(BᵀB)⁻¹Bᵀx,以及在标准正交基下的简化形式 π_U(x) = BBᵀx。
在下一个视频中,我们将通过一个具体的例子来应用这些公式。
021:到2维子空间的投影

概述
在本节课中,我们将通过一个具体的例子,学习如何将一个三维向量正交投影到一个二维子空间上。我们将使用上一节推导出的投影公式,并展示其计算过程。
投影公式回顾
上一节我们介绍了向量到m维子空间的正交投影公式。本节中,我们来看看如何将这个公式应用到一个具体的例子中。
投影公式的核心是:
Pi_u(x) = B * lambda
其中:
B是由子空间基向量组成的矩阵。lambda是投影向量在基B下的坐标,由以下公式计算:
lambda = (B^T * B)^(-1) * B^T * x
示例设定
我们定义一个三维向量 x 和一个二维子空间 U。
以下是具体的定义:
- 待投影的向量:x = [2, 1, 1]^T
- 子空间
U的基向量:- b1 = [1, 2, 0]^T
- b2 = [1, 1, 0]^T
这意味着子空间 U 是由 b1 和 b2 张成的平面,其所有向量的第三个分量均为0。
计算投影
现在,我们按照公式步骤计算投影向量 Pi_u(x)。
第一步:构造基矩阵 B
基矩阵 B 由两个基向量并排组成:
B = [b1, b2] = [[1, 1], [2, 1], [0, 0]]
第二步:计算 B^T * x
这是将原向量 x 向基向量上“映射”:
B^T * x = [[1, 2, 0], [1, 1, 0]] * [2, 1, 1]^T = [4, 3]^T
第三步:计算 B^T * B
这个矩阵描述了基向量之间的内积关系:
B^T * B = [[5, 3], [3, 2]]
第四步:求解 lambda
我们需要解方程 (B^T * B) * lambda = B^T * x 来找到坐标 lambda。
即求解:
[[5, 3], [3, 2]] * [lambda1, lambda2]^T = [4, 3]^T
使用高斯消元法求解,得到:
lambda = [-1, 3]^T
第五步:计算投影向量
将求得的坐标 lambda 与基向量线性组合,得到投影向量:
Pi_u(x) = B * lambda = (-1) * b1 + 3 * b2 = [2, 1, 0]^T
结果分析
我们得到了投影向量 [2, 1, 0]^T。这个结果符合预期:
- 投影向量的第三个分量为0,这与子空间
U的定义(所有向量第三维为0)完全一致。 - 投影向量本身仍是一个三维向量,但我们可以用两个坐标
[-1, 3]在基{b1, b2}下简洁地表示它。这体现了在低维子空间中表示数据的核心思想。

总结
本节课中,我们一起学习了一个将三维向量投影到二维子空间的具体示例。我们逐步应用了正交投影公式,计算了投影向量及其在子空间基下的坐标。这个例子直观地展示了投影如何将数据“压缩”到低维空间,同时保留其在特定方向上的主要信息。下一节,我们将利用正交投影的概念,推导出一个重要的降维算法——主成分分析(PCA)。
022:正交投影回顾 🎯

在本节课中,我们将回顾模块3的核心内容:向量在子空间上的正交投影。我们将探讨其背后的数学原理,并了解它如何为后续的主成分分析(PCA)算法奠定基础。
正交投影的核心思想
上一节我们介绍了向量空间和子空间的基本概念。本节中,我们来看看如何将一个向量投影到一个子空间上。
正交投影的目标是:在给定的子空间中,找到一个点,使得该点与原向量之间的误差向量垂直于整个子空间。
投影求解的两个关键点
为了找到投影向量,我们利用了以下两个关键性质。
以下是投影向量必须满足的条件:
-
投影向量可表示为子空间基底的线性组合
若子空间有一组基向量{b₁, b₂, ..., bₖ},则投影向量p可表示为:
p = Σ (αᵢ * bᵢ),其中αᵢ是标量系数。 -
连接数据点与其投影的向量必须与子空间正交
设原向量为x,投影向量为p,则误差向量e = x - p必须与子空间中的每一个基向量都正交。这意味着对于所有基向量bᵢ,都有:
bᵢᵀ * (x - p) = 0。
与PCA的联系
我们深入探讨了正交投影的数学机制。接下来,在下一个模块中,我们将应用这些概念,正式引入主成分分析(PCA)算法。PCA的核心目标之一是找到数据方差最大的投影方向,这本质上是一个在高维空间中进行最优正交投影的过程。

总结
本节课中我们一起学习了向量在子空间上正交投影的原理。我们掌握了求解投影的两个核心条件:投影位于子空间内,且误差方向与子空间垂直。这些概念是理解后续降维算法(如PCA)的重要数学基础。虽然这部分内容具有一定挑战性,但我们已经成功掌握了其精髓。
023:主成分分析(PCA)入门 🧮

在本节课中,我们将学习主成分分析(PCA)。这是一种用于线性降维的算法。PCA已有约100年的历史,至今仍是数据压缩和可视化最常用的技术之一。
高维数据,例如图像,通常具有一个特性:它们位于一个低维子空间上,并且许多维度之间存在高度相关性。下图展示了一个二维空间的例子。

虽然数据并不完全位于一条直线上,但它在某一个维度上的变化非常小。因此,我们可以将其近似表示为一条直线上的点,而几乎不损失信息。
PCA背后的一个核心思想是使用正交投影来寻找数据的低维表示,并尽可能多地保留原始信息。这与我们刚刚看到的例子类似。在接下来的内容中,我们将把PCA推导为一种通过正交投影来最小化平均重构误差的算法。
核心概念:最小化重构误差 🔍
上一节我们介绍了PCA的目标是找到数据的最佳低维表示。本节中,我们来看看如何通过数学公式来形式化这个“最佳”的标准。
PCA算法的核心是最小化重构误差。其基本思想是:将高维数据点投影到一个低维子空间上,然后尝试从这个低维表示中重构回原始数据点。我们希望重构出的点与原始点尽可能接近。
这个“接近程度”可以用欧几里得距离来衡量。对于单个数据点 x,其重构误差可以表示为:
公式:|| x - x_reconstructed ||²
其中,x_reconstructed 是从低维表示重构回来的数据点。PCA的目标是找到一个投影子空间,使得所有数据点的平均重构误差最小。
PCA算法步骤 📝
以下是实现PCA算法的具体步骤:
- 数据标准化:将每个特征减去其均值,使数据以原点为中心。这是关键的第一步,确保了主成分分析的正确性。
- 计算协方差矩阵:计算标准化后数据的协方差矩阵。该矩阵反映了数据不同维度之间的相关性。
- 特征值分解:对协方差矩阵进行特征值分解,得到特征值和对应的特征向量。
- 选择主成分:将特征值从大到小排序,选择前k个最大的特征值对应的特征向量。这些特征向量就是我们要找的“主成分”,它们定义了新的低维坐标轴。
- 投影数据:将原始数据点投影到由这k个主成分张成的子空间上,得到降维后的数据表示。
通过以上步骤,我们就能将原始的高维数据有效地压缩到低维空间,同时最大程度地保留了数据中的主要变化模式。
总结 🎯
本节课中,我们一起学习了主成分分析(PCA)的基本原理。我们了解到PCA是一种通过正交投影进行线性降维的经典算法,其目标是最小化数据重构的平均误差。我们介绍了从数据标准化、计算协方差矩阵到特征值分解和投影的完整步骤。掌握PCA有助于我们处理高维数据,实现数据压缩、去噪和可视化,是机器学习中一项基础而重要的工具。
024:问题设置与PCA目标 🎯

在本节课中,我们将介绍主成分分析的问题设置及其核心思想。
概述
我们将学习如何为高维数据寻找一个低维表示,并最小化重建误差。首先,我们需要回顾几个重要的数学概念。
预备知识回顾
在开始PCA之前,我们先简要回顾三个关键概念。
1. 向量的基表示
RD 空间中的任何向量都可以表示为一组基向量的线性组合。
设我们有一个数据集 X,它包含 N 个 D 维向量:X = {x₁, x₂, ..., xₙ},其中 xᵢ ∈ Rᴰ。
任何向量 xₙ 可以写作:
xₙ = Σᵢ₌₁ᴰ (βᵢₙ * bᵢ)
其中,bᵢ 是 Rᴰ 空间的一组基向量,βᵢₙ 是相应的系数。
2. 正交投影系数
如果我们假设基向量 {b₁, ..., bᴰ} 是标准正交基(即两两正交且长度为1),并且使用点积作为内积,那么系数 βᵢₙ 可以计算为:
βᵢₙ = xₙᵀ * bᵢ
这可以解释为向量 xₙ 在第 i 个基向量方向上的正交投影。
3. 子空间投影
如果我们有一组 M 个标准正交基向量 {b₁, ..., bₘ}(其中 M < D),并将它们排列成矩阵 B(其列是这些基向量),那么向量 x 到该子空间的正交投影 x̃ 可以表示为:
x̃ = B * (Bᵀ * x)
其中,Bᵀ * x 是投影向量 x̃ 在该组基下的坐标,也称为编码。
PCA的问题设置
上一节我们回顾了必要的数学基础,本节中我们来看看PCA的核心目标。
PCA的关键思想是:为数据 xₙ 找到一个低维表示 x̃ₙ,该表示可以用更少(例如 M 个)的基向量来表达。
我们假设数据已经中心化(均值为零),并且基向量 {b₁, ..., bᴰ} 是 Rᴰ 空间的标准正交基。
根据性质1,任何 xₙ 可以分解为两部分之和:
xₙ = Σᵢ₌₁ᴰ (βᵢₙ * bᵢ) = Σᵢ₌₁ᴰ (βᵢₙ * bᵢ) + Σᵢ₌ₘ₊₁ᴰ (βᵢₙ * bᵢ)
在PCA中,我们忽略第二部分(即从 M+1 到 D 的求和项)。这样,我们得到数据的近似表示:
x̃ₙ = Σᵢ₌₁ᴰ (βᵢₙ * bᵢ)
尽管 x̃ₙ 仍然是 D 维向量,但它实际上位于由前 M 个基向量 {b₁, ..., bₘ} 张成的 M 维子空间中。我们称这个子空间为主成分子空间。
因此,我们只需要 M 个坐标 β₁ₙ, ..., βₘₙ 就能完全表示 x̃ₙ。这些坐标就是数据在低维子空间中的编码。
PCA的优化目标
PCA的目标是找到最优的参数(基向量 bᵢ 和编码 βᵢₙ),使得平均平方重建误差最小化。
该目标函数 J 定义如下:
J = (1/N) * Σₙ₌₁ᴺ ||xₙ - x̃ₙ||²
以下是其组成部分:
- xₙ: 原始的第 n 个数据点。
- x̃ₙ: 重建后的第 n 个数据点(即其在主成分子空间上的投影)。
- ||...||²: 向量的L2范数平方,即各维度差值的平方和。
- Σₙ₌₁ᴺ: 对所有 N 个数据点求和。
- 1/N: 计算平均值。
直观示例
为了更直观地理解,我们来看一个例子。假设数据点分布在二维平面上(D=2),我们的目标是找到一个最佳的一维直线(M=1),使得所有数据点到该直线上投影点的距离平方和最小。
下图展示了数据点(蓝色)及其在不同直线上的投影(红色)。当直线方向不同时,投影点对原始数据的代表性(即重建误差)差异很大。PCA的目标就是找到那条能使红色投影点最“代表”蓝色原始点的直线(即最小化所有蓝色点到对应红色点的距离)。

求解思路
我们的求解方法是计算目标函数 J 对各个参数(βᵢₙ 和 bᵢ)的偏导数。

首先可以观察到一个关键点:这些参数都只通过重建数据 x̃ₙ 进入损失函数 J。因此,在求偏导时需要使用链式法则。
对于任意参数 θ(代表 βᵢₙ 或 bᵢ),其偏导数为:
∂J/∂θ = Σₙ (∂J/∂x̃ₙ) * (∂x̃ₙ/∂θ)
其中,第一部分关于 x̃ₙ 的偏导数可以直接计算:
∂J/∂x̃ₙ = -(2/N) * (xₙ - x̃ₙ)ᵀ
而第二部分关于具体参数的偏导数(∂x̃ₙ/∂βᵢₙ 和 ∂x̃ₙ/∂bᵢ),我们将在后续视频中详细推导。

总结
本节课中我们一起学习了:
- PCA的核心目标是为高维数据寻找一个最优的低维表示。
- 这通过将数据投影到一个由标准正交基张成的低维“主成分子空间”来实现。
- 最优的标准是最小化平均平方重建误差,即原始点与其投影点之间距离的平方平均值。
- 求解过程涉及对目标函数关于基向量和编码系数求偏导数,并令其为零。

在接下来的课程中,我们将具体推导这些偏导数,并求解出PCA的最优解。
025:找到投影数据的坐标


在本节课中,我们将学习如何为主成分分析(PCA)找到最优参数。具体来说,我们将推导出投影数据点在主成分子空间中的坐标计算公式。
概述
上一节我们介绍了PCA的目标函数,即最小化原始数据点与其在低维子空间上投影之间的平均平方重建误差。本节中,我们将在两个基本假设下,推导出使该目标函数最小化的最优坐标参数。
基本假设
在开始推导前,我们做出两个通用假设:
- 数据已中心化。这意味着数据集的期望值为0。
- 构成子空间的基向量是标准正交基。
回顾与准备
从前一节的结论中,我们得到以下关键结果:
- 投影数据点 x̃_n 可以表示为基向量的线性组合:x̃_n = Σ_{j=1}^{M} β_{jn} b_j,其中 b_j 构成子空间的标准正交基。
- 损失函数 J 是原始数据点 x_n 与其投影 x̃_n 之间的平均平方重建误差。
- 损失函数 J 关于投影 x̃_n 的偏导数表达式为:∂J/∂x̃_n = -(2/N) * (x_n - x̃_n)^T。
推导最优坐标参数
现在,我们准备计算损失函数 J 关于坐标参数 β_{in} 的偏导数。
以下是推导步骤:
-
应用链式法则:损失函数 J 对参数 β_{in} 的偏导数,可以通过其对投影 x̃_n 的偏导数,乘以投影 x̃_n 对 β_{in} 的偏导数得到。公式如下:
∂J/∂β_{in} = (∂J/∂x̃_n) * (∂x̃_n/∂β_{in}) -
计算内层偏导数:投影 x̃_n 对特定参数 β_{in} 的偏导数很简单。由于 x̃_n 是多个 β_{jn} b_j 的和,当对固定的 β_{in} 求导时,只有第 i 项起作用。因此:
∂x̃_n/∂β_{in} = b_i,其中 i = 1, ..., M。 -
代入得到中间表达式:将第1步和第2步的结果结合,我们得到:
∂J/∂β_{in} = [-(2/N) * (x_n - x̃_n)^T] * b_i = -(2/N) * (x_n - x̃_n)^T b_i -
展开投影项:现在,我们用其线性组合形式 x̃_n = Σ_{j=1}^{M} β_{jn} b_j 替换上式中的 x̃_n:
∂J/∂β_{in} = -(2/N) * [ x_n^T b_i - (Σ_{j=1}^{M} β_{jn} b_j)^T b_i ] -
利用标准正交基性质简化:由于基向量 {b_j} 是标准正交的,即 b_j^T b_i = 1 当且仅当 j = i,否则为0。因此,求和项中只有 j = i 的项保留:
(Σ_{j=1}^{M} β_{jn} b_j)^T b_i = β_{in} * (b_i^T b_i) = β_{in} -
得到最终偏导数:代入第5步的结果,偏导数简化为:
∂J/∂β_{in} = -(2/N) * ( x_n^T b_i - β_{in} ) -
求解最优参数:为了找到使损失函数最小的 β_{in},我们将偏导数设为0并求解:
-(2/N) * ( x_n^T b_i - β_{in} ) = 0
这等价于:
β_{in} = x_n^T b_i
结论与意义
通过以上推导,我们得到了最优坐标参数的计算公式:β_{in} = x_n^T b_i。
这个结果具有清晰的几何意义:数据点 x_n 在主成分子空间中的最优坐标 β_{in},等于原始数据点 x_n 在构成该子空间的第 i 个基向量 b_i 上的正交投影。
总结
本节课中,我们一起学习了如何推导PCA中投影数据点的最优坐标。我们证明了,在数据已中心化且使用标准正交基的假设下,最优坐标就是原始数据向量在各个基向量上的点积(即投影长度)。
在接下来的课程中,我们将探讨如何找到构成这个主成分子空间本身的最优标准正交基向量 {b_j}。
026:目标的重新表述
概述
在本节中,我们将重新表述主成分分析(PCA)的损失函数。我们将看到,最小化重构误差等价于最大化投影后保留的数据方差,并且损失函数可以简洁地用数据协方差矩阵来表示。这为我们下一步寻找最优基向量奠定了基础。
投影坐标回顾
在上一节中,我们确定了数据点在其主成分子空间上的最优投影坐标。
在继续求解最优基向量之前,我们先重新表述一下损失函数。
以下是目前已有的结果:数据点的投影描述、损失函数、损失函数对投影数据点的偏导数,以及上一节中找到的最优坐标。
位移向量的分析
在求解最优基向量之前,重新表述损失函数将使问题变得更简单。
为此,让我们仔细分析原始数据点与其投影数据点之间的差向量。
投影数据点 x̃ₙ 由公式A给出:
x̃ₙ = Σⱼ₌₁ᴹ βⱼₙ * bⱼ
如果我们使用上一节得到的最优参数 βⱼₙ 的结果,可以得到:
x̃ₙ = Σⱼ₌₁ᴹ (xₙᵀ * bⱼ) * bⱼ
我们可以按以下方式重写这个表达式。点积是对称的,因此我们可以交换顺序,并将标量移到前面。最终得到:
x̃ₙ = Σⱼ₌₁ᴹ bⱼ * bⱼᵀ * xₙ
我们可以将 xₙ 提到求和符号外面:
x̃ₙ = (Σⱼ₌₁ᴹ bⱼ * bⱼᵀ) * xₙ
观察这个式子,括号内的部分是一个投影矩阵。这意味着 x̃ₙ 是 xₙ 在由基向量 bⱼ (j=1,...,M) 张成的子空间上的正交投影。

类似地,我们可以将原始数据点 xₙ 完整地写为在主成分子空间及其正交补空间上的投影之和:
xₙ = (Σⱼ₌₁ᴹ bⱼ * bⱼᵀ) * xₙ + (Σⱼ₌ₘ₊₁ᴰ bⱼ * bⱼᵀ) * xₙ
第一部分是投影到主成分子空间的部分,第二部分是投影到其正交补空间的部分。而 x̃ₙ 正是缺少了第二部分,因此它是 xₙ 的一个近似。
现在,如果我们观察 xₙ 和 x̃ₙ 之间的差向量,剩下的部分正好是正交补空间上的投影:
xₙ - x̃ₙ = Σⱼ₌ₘ₊₁ᴰ bⱼ * bⱼᵀ * xₙ
这个位移向量完全位于我们忽略的子空间,即主成分子空间的正交补空间中。
直观示例
让我们看一个二维空间的例子。假设我们有一个二维数据集,由下图中的点表示。

现在,我们感兴趣的是将它们投影到 u₁ 子空间上。当我们这样做并观察原始数据与投影数据之间的差向量时,我们得到这些垂直线。这意味着它们在 u₁ 方向(x方向)上没有分量或变化。它们只存在于 u₂ 子空间中的分量,而 u₂ 正是我们投影目标子空间 u₁ 的正交补空间。
损失函数的重新表述
我们分析了数据点与其在主成分子空间上投影之间的位移向量。现在,我们将利用这个结果来重新表述损失函数。
根据公式B,我们的损失函数是平均平方重构误差:
L = (1/N) * Σₙ₌₁ᴺ ||xₙ - x̃ₙ||²
现在,我们使用公式E(位移向量的表达式)来重写它:
L = (1/N) * Σₙ₌₁ᴺ || Σⱼ₌ₘ₊₁ᴰ (bⱼᵀ * xₙ) * bⱼ ||²
由于 bⱼ 构成一组标准正交基,这个表达式可以大大简化。利用标准正交基的性质,向量的范数平方等于其各分量系数的平方和:
L = (1/N) * Σₙ₌₁ᴺ Σⱼ₌ₘ₊₁ᴰ (bⱼᵀ * xₙ)²
接下来,我们将其明确展开:
L = (1/N) * Σₙ₌₁ᴺ Σⱼ₌ₘ₊₁ᴰ (bⱼᵀ * xₙ) * (xₙᵀ * bⱼ)
现在,我们重新排列求和顺序,将关于 j 的求和移到外面:
L = Σⱼ₌ₘ₊₁ᴰ bⱼᵀ * [ (1/N) * Σₙ₌₁ᴺ xₙ * xₙᵀ ] * bⱼ
仔细观察,我们可以识别出括号内的表达式正是数据协方差矩阵 S(因为我们假设数据已经中心化,均值为0)。因此,我们可以用数据协方差矩阵来重写损失函数:
L = Σⱼ₌ₘ₊₁ᴰ bⱼᵀ * S * bⱼ
我们还可以通过重新排列项和使用迹运算符,得到另一种略有不同的解释:
L = trace( Σⱼ₌ₘ₊₁ᴰ bⱼ * bⱼᵀ * S )
这里的矩阵 Σⱼ₌ₘ₊₁ᴰ bⱼ * bⱼᵀ 是一个投影矩阵。它将我们的数据协方差矩阵投影到主成分子空间的正交补空间上。
因此,损失函数的这种重新表述意味着:最小化重构误差等价于最小化被投影到我们忽略的子空间(正交补空间)上的数据的方差。换句话说,我们的目标是使投影后保留的方差尽可能大。
总结
在本节中,我们一起学习了如何将PCA的平均平方重构误差损失函数,重新表述为关于数据协方差矩阵的形式。我们发现,最小化损失等价于最小化数据在主成分子空间正交补空间上的方差,这反过来意味着我们要最大化投影后主成分子空间内保留的方差。这个重新表述为我们下一节寻找主成分子空间的最优基向量提供了一条清晰的路径。


027:找到构成主子空间的基础向量


在本节课中,我们将学习如何为主成分分析(PCA)中的主子空间找到一个正交规范基。我们将利用最小化平均平方重构误差等价于最小化数据在忽略子空间上投影的方差这一结论,并通过求解特征值问题来确定基向量。
概述
上一节我们介绍了最小化平均平方重构误差等价于最小化数据在PCA将要忽略的子空间上的投影方差。本节中,我们将利用这一见解,并运用之前的结果,来确定m维主子空间的一个正交规范基。
损失函数与优化问题
我们可以将损失函数写为:
J = Σ_{j=m+1}^{D} b_j^T S b_j
其中 S 是数据的协方差矩阵。最小化这个目标函数需要我们找到张成我们将忽略的子空间的正交规范基。当我们得到这个基后,取其正交补作为主子空间的基。
一个子空间 U 的正交补由原始向量空间中所有与 U 中每个向量都正交的向量组成。
从二维示例开始
让我们从一个示例开始确定基向量 b。我们从二维情况开始,我们希望找到一个一维子空间,使得数据投影到该子空间上的方差最小。
我们寻找 R^2 中的两个基向量 b1 和 b2。b1 将张成主子空间,而 b2 是其正交补,也就是我们将忽略的子空间。我们还有约束条件:b1 和 b2 是正交规范的,这意味着 b_i^T b_j = δ_{ij}(当 i=j 时为1,否则为0)。
在我们的例子中,损失函数是:
J = b_2^T S b_2
约束条件是:
b_2^T b_2 = 1
为了求解这个优化问题,我们写出拉格朗日函数:
L(b_2, λ) = b_2^T S b_2 + λ(1 - b_2^T b_2)
其中 λ 是拉格朗日乘子。
接下来,我们计算 L 对 b_2 和 λ 的梯度,并令它们为零。
- 对
λ的偏导:∂L/∂λ = 1 - b_2^T b_2 = 0。这等价于恢复了我们的约束条件b_2^T b_2 = 1。 - 对
b_2的偏导:∂L/∂b_2 = 2 b_2^T S - 2λ b_2^T = 0。这等于零当且仅当S b_2 = λ b_2。
我们最终得到了一个特征值问题。b_2 是数据协方差矩阵 S 的一个特征向量,而拉格朗日乘子 λ 扮演了对应特征值的角色。
现在回到损失函数,我们可以利用这个表达式重写 J:
J = b_2^T S b_2 = b_2^T (λ b_2) = λ (b_2^T b_2) = λ
由于我们有正交规范基,b_2^T b_2 = 1。
因此,当 λ 是数据协方差矩阵的最小特征值时,平均平方重构误差被最小化。这意味着我们需要选择 b_2 作为对应的特征向量,它将张成我们将忽略的子空间。
而张成主子空间的 b_1,则是属于数据协方差矩阵最大特征值的特征向量。由于协方差矩阵的对称性,其特征向量彼此正交。
在一个二维数据示例中,最佳投影(即保留最多信息的投影)是将数据投影到由属于最大特征值的特征向量所张成的子空间上,如图中长箭头所示。
推广到一般情况

现在,让我们看一般情况。如果我们想找到一个D维数据集的m维主子空间,并求解基向量 b_j(其中 j = m+1, ..., D),我们优化这些向量。
我们会得到与之前简单示例中相同类型的特征值问题:
S b_j = λ_j b_j,对于 j = m+1, ..., D。
损失函数由对应的特征值之和给出:
J = Σ_{j=m+1}^{D} λ_j
同样,在一般情况下,如果我们选择张成被忽略子空间的基向量为数据协方差矩阵中属于最小特征值的特征向量,那么平均重构误差就被最小化。
这等价地意味着,主子空间是由属于数据协方差矩阵前m个最大特征值的特征向量所张成的。
这与协方差矩阵的性质完美契合:
- 由于对称性,协方差矩阵的特征向量彼此正交。
- 属于最大特征值的特征向量指向数据方差最大的方向,该方向上的方差由对应的特征值给出。
- 属于第二大特征值的特征向量指向数据第二大方差的方向,依此类推。
总结
本节课中,我们一起学习了如何确定PCA主子空间的正交规范基。我们通过求解一个受约束的优化问题,发现主子空间的基正是数据协方差矩阵中与最大特征值相关联的特征向量。而损失函数(重构误差)的值等于被忽略的特征值之和。这为PCA算法提供了坚实的数学基础。
在下一节视频中,我们将把所有部分整合起来,详细讲解PCA算法的完整步骤。
028:P28 | PCA的步骤


在本节课中,我们将要学习主成分分析的具体步骤。我们将从一个简单的二维数据集例子出发,逐步讲解如何将数据投影到一维主成分子空间上。
在开始推导PCA步骤之前,有两个重要的预处理步骤需要说明。虽然这些步骤在理论推导中并非绝对必要,但在实际应用中至关重要。
数据预处理:中心化与标准化
上一节我们介绍了PCA的基本思想,本节中我们来看看实施PCA前的准备工作。首先,我们通常假设数据是中心化的,即均值为零。这个假设可以避免数值计算上的困难。例如,如果数据值围绕10^8分布,计算协方差矩阵时需要处理非常大的数字,可能导致数值不稳定。因此,第一步是减去数据的均值。
其次,通常建议在中心化后,将数据的每个维度除以其对应的标准差。这样做有两个好处:一是消除了数据的单位,使不同尺度的特征具有可比性;二是确保每个维度的方差为1,但保留了维度间的相关性。
以下是数据标准化的一个例子:

在这个数据集中,两个维度都是距离,但一个以厘米为单位,另一个以米为单位。厘米单位的维度自然变化更大。如果不进行标准化,PCA会错误地认为该维度包含更多信息。标准化后,数据变得“单位自由”,两个维度的方差都为1。此时再观察其主成分子空间,会发现两个维度间存在很强的相关性,并且主成分轴的方向也发生了变化。
PCA步骤详解
现在,让我们通过一个运行示例,逐步讲解PCA的完整过程。我们有一个二维数据集,目标是使用PCA将其投影到一个一维子空间上。
第一步:减去均值
首先,我们从数据中减去均值,使数据中心化。
第二步:除以标准差
接着,我们将中心化后的数据的每个维度除以其标准差。此时,数据变得单位自由,并且每个轴上的方差都为1(图中用两个箭头表示)。请注意,维度间的相关性仍然保留。
第三步:计算协方差矩阵及其特征
第三步,我们计算数据的协方差矩阵,然后计算该矩阵的特征值和对应的特征向量。在图中,特征向量按其对应特征值的大小进行缩放。最长的向量张成了主成分子空间,我们称之为 U。
第四步:投影新数据点
最后,我们可以将任何新的数据点 x* 投影到主成分子空间 U 上。为了正确投影,我们需要使用计算协方差矩阵时所用数据的均值和标准差来标准化这个新数据点。
具体操作如下:对于新数据点 x,我们计算其标准化版本 **x~**:
x*~ = (x* - 均值) / 标准差
这个计算针对 x* 的每一个维度进行。

然后,x* 在主成分子空间 U 上的投影 π_U(x*~) 可以通过以下公式获得:
π_U(x*~) = B * B^T * x*~
其中,B 是一个矩阵,其列是由最大特征值对应的特征向量组成的。B^T * x*~ 给出了投影点在主成分子空间基下的坐标。
总结
本节课中,我们一起学习了主成分分析的具体实施步骤。
首先,我们从数据中减去均值使其中心化,以避免数值问题。
其次,我们除以标准差使数据单位自由。
接着,我们计算数据协方差矩阵的特征值和特征向量。
最后,我们可以将任何数据点投影到由最大特征值对应的特征向量所张成的主成分子空间上。


029:高维PCA


在本节课中,我们将要学习如何对高维数据(即数据维度D远大于样本数量N的情况)高效地执行主成分分析。我们将介绍一种计算技巧,将原本计算量巨大的D×D协方差矩阵特征分解问题,转化为一个更小的N×N矩阵的特征分解问题。
概述
上一节我们介绍了标准PCA算法的完整步骤。为了执行PCA,我们需要计算数据的协方差矩阵 S。当数据维度D非常高时,计算这个D×D矩阵的特征值和特征向量会非常耗时,其计算复杂度与维度的立方成正比。
本节中,我们来看看当数据点数量N远小于数据维度D时,如何利用这一特性来显著提升PCA的计算效率。
高维PCA的计算技巧
假设我们有一个数据集,由N个D维数据点组成,且数据已经中心化(均值为0)。数据矩阵 X 是一个 N×D 的矩阵,其中每一行是一个数据点的转置。
X = [[x₁ᵀ], ..., [x_Nᵀ]]
数据协方差矩阵 S 的定义为:
S = (1/N) * Xᵀ X
这是一个 D×D 的矩阵。当我们假设 N << D 时,矩阵 S 的秩最大为 N。这意味着 S 有 (D - N) 个特征值为 0,矩阵不是满秩的,其行与列之间存在线性依赖或冗余。
接下来的几分钟,我们将利用这个性质,将 D×D 的协方差矩阵 S 转化为一个满秩的 N×N 矩阵,从而避免计算大量零特征值。
推导过程
我们将协方差矩阵的定义写在上面,以便有更多空间进行推导。在PCA中,我们最终需要解决以下特征值/特征向量方程:
S bᵢ = λᵢ bᵢ
其中 bᵢ 是主成分子空间正交补集的一个基向量。
现在,让我们重写这个方程。我们用上面 S 的定义来替换它:
(1/N) * Xᵀ X bᵢ = λᵢ bᵢ
接下来,我们从等式左边乘以数据矩阵 X:
X * [(1/N) * Xᵀ X bᵢ] = λᵢ * X bᵢ
整理后,我们得到了一个新的特征值方程:
(1/N) * (X Xᵀ) * (X bᵢ) = λᵢ * (X bᵢ)
这里,λᵢ 仍然是特征值。我们定义一个新的向量 cᵢ = X bᵢ。于是方程变为:
(1/N) * (X Xᵀ) cᵢ = λᵢ cᵢ
关键结论:矩阵 (1/N) * X Xᵀ 与原始数据协方差矩阵 S 具有相同的非零特征值 λᵢ。然而,(1/N) * X Xᵀ 是一个 N×N 的矩阵,而 S 是一个 D×D 的矩阵。
因此,我们可以通过计算这个小得多的 N×N 矩阵的特征值和特征向量 cᵢ,来间接获得原始大矩阵 S 的非零特征值。
恢复原始特征向量
目前,我们知道了小矩阵 (1/N) * X Xᵀ 的特征向量 cᵢ。为了执行PCA,我们还需要恢复原始协方差矩阵 S 的特征向量 bᵢ。
如果我们对新的特征值方程两边同时左乘 Xᵀ,可以得到:
Xᵀ * [(1/N) * X Xᵀ cᵢ] = λᵢ * Xᵀ cᵢ
(1/N) * (Xᵀ X) * (Xᵀ cᵢ) = λᵢ * (Xᵀ cᵢ)
S * (Xᵀ cᵢ) = λᵢ * (Xᵀ cᵢ)
由此我们发现,向量 Xᵀ cᵢ 正是原始协方差矩阵 S 的、对应于特征值 λᵢ 的特征向量。我们可以将其归一化后,作为我们寻找的主成分方向 bᵢ。
高效PCA算法步骤
以下是针对 N << D 情况的高效PCA算法步骤:
- 中心化数据:确保数据矩阵 X 的每一列均值为零。
- 计算小矩阵:构造 N×N 矩阵 K = (1/N) * X Xᵀ。
- 特征分解:计算矩阵 K 的特征值和特征向量,得到 λᵢ 和 cᵢ。
- 恢复主成分:对于每个非零特征值 λᵢ,计算对应的原始特征向量 bᵢ = Xᵀ cᵢ。
- 归一化:将 bᵢ 归一化为单位向量(即除以其范数)。
- 投影:使用恢复出的特征向量 bᵢ 将数据投影到低维空间。
总结
本节课中,我们一起学习了如何对高维数据高效地进行主成分分析。通过将 D×D 协方差矩阵的特征分解问题,转化为 N×N 矩阵 X Xᵀ 的特征分解问题,我们极大地降低了计算复杂度,从 O(D³) 降至 O(N³)。这种方法特别适用于样本数量远小于数据维度的场景,例如在基因表达数据分析或某些图像处理任务中。核心在于利用矩阵 X Xᵀ 与 Xᵀ X 共享非零特征值的性质,从而绕过对大矩阵的直接操作。
030:PCA的其他解释(可选)

概述
在本节中,我们将从多个不同的视角来理解主成分分析。虽然我们之前是从最小化平均平方重构误差的角度推导PCA的,但PCA还可以通过其他几种等价的方式来解释。了解这些不同的视角有助于我们更全面地把握PCA的本质及其应用场景。
线性自编码器视角
上一节我们介绍了PCA通过最小化重构误差来寻找最优投影。本节中,我们来看看PCA如何被理解为一个线性自编码器。
一个自编码器旨在编码一个数据点 x,并试图将其解码为与原始数据点相似的内容。从数据到编码的映射称为编码器,从编码回原始数据空间的映射称为解码器。
在PCA的设定中:
- 编码器:
z = B^T x。它将高维数据x映射到低维表示z(即编码)。 - 解码器:
\tilde{x} = B z。它将低维编码z映射回原始数据空间,得到重构数据\tilde{x}。
当编码器和解码器都是线性映射,并且我们最小化平方自编码损失(即重构误差)时,得到的解就是PCA的解。
如果我们用非线性映射替换PCA中的线性映射,就得到了非线性自编码器。一个著名的例子是深度自编码器,其编码器和解码器中的线性函数被深度神经网络所取代。
信息论视角
从信息论的角度看,我们可以将编码 z 视为原始数据点 x 的一个压缩版本。
当我们使用编码 z 重构原始数据时,无法得到完全精确的数据点,而是一个略有失真或带有噪声的版本。这意味着我们的压缩是有损的。
直观上,我们希望最大化原始数据 x 与低维编码 z 之间的相关性。更形式化地说,这涉及到最大化互信息——信息论中的一个核心概念。通过最大化互信息,我们同样可以得到本课程前面讨论的PCA解。
最大化方差视角
之前从投影角度推导PCA时,我们将平均重构误差损失重新表述为:最小化数据投影到主成分子空间的正交补空间上的方差。
最小化那个正交补空间上的方差,等价于最大化数据投影到主成分子空间上的方差。
如果我们把数据中的方差视为数据所包含的信息,那么PCA也可以被解释为一种尽可能保留最多信息的方法。
潜变量模型视角
我们还可以从潜变量模型的角度来看待PCA。我们假设存在一个未知的低维潜变量 z 生成了观测数据 x,并且假设 z 和 x 之间存在线性关系。
通常,我们可以将此关系写作:
x = B z + \mu + \epsilon
其中,\epsilon 是噪声,我们假设其为各向同性的高斯噪声,均值为0,协方差矩阵为 \sigma^2 I。我们进一步假设潜变量 z 的分布是标准正态分布,即 p(z) = \mathcal{N}(0, I)。
基于此,我们可以写出模型的似然函数和边际似然。该模型的参数是 \mu、B 和 \sigma^2。
我们可以使用最大似然估计来确定这些参数,结果会发现:
\mu是数据的均值。B是一个矩阵,其列向量是对应最大特征值的特征向量。
为了获得一个数据点的低维编码,我们可以应用贝叶斯定理来反转 z 和 x 之间的线性关系,计算后验分布 p(z | x)。
总结
本节课中,我们一起学习了PCA的五种不同解释视角,它们分别导向不同的优化目标:
- 最小化平方重构误差。
- 最小化自编码器损失(线性情况)。
- 最大化互信息(信息论)。
- 最大化投影数据的方差。
- 最大化潜变量模型中的似然。

所有这些不同的视角都给出了相同的PCA问题解。当我们考虑真实数据的特性时,每种视角的优缺点会变得更加清晰和重要。
031:本模块总结

📚 概述
在本节课中,我们将总结主成分分析模块的核心内容。我们将回顾PCA的推导过程、关键性质,并探讨它与其他机器学习算法的联系。
🔍 PCA推导回顾
上一节我们详细推导了PCA。PCA的目标是找到一个低维子空间,使得数据点投影到该子空间后,与原始数据点的平均平方距离最小。
通过最小化数据点与其在主成分子空间上投影之间的平均平方误差,我们发现最优解是将数据投影到由最大特征值对应的特征向量所张成的子空间上。
🔗 PCA与其他算法的联系
PCA与许多其他机器学习算法有诸多相似之处。因此,深入理解PCA有助于我们掌握更广泛的机器学习概念。
本模块内容具有一定难度,但希望你能通过详细的推导过程或实践练习,获得新的、有价值的见解。
🎯 总结

本节课中,我们一起学习了主成分分析的推导与核心性质。我们了解到,PCA通过寻找数据方差最大的方向来实现降维,其数学基础是特征值分解。完成本模块是一个重要的成就。
032:课程总结与回顾


在本节课中,我们将一起回顾主成分分析(PCA)这一用于降维和数据压缩的实用机器学习算法。我们将总结从基础概念到完整算法的推导过程。
概述
我们学习了许多内容,最终得以推导并理解PCA的工作原理。整个学习路径从数据的基本统计量开始,逐步深入到向量运算,最后将这些知识整合成PCA算法。
课程内容回顾
上一节我们介绍了PCA算法的具体步骤,本节中我们来回顾整个课程的知识体系。
以下是我们在课程中逐步构建的核心知识模块:
-
数据摘要统计量
我们首先学习了数据的均值与方差。这些统计量是后续计算的基础,特别是在PCA中用于构建数据的协方差矩阵。 -
向量内积
接着,我们探讨了向量的内积。内积运算允许我们计算向量之间的长度、距离和夹角。其公式为:a · b = ||a|| ||b|| cosθ。 -
数据投影
我们利用内积的概念,将数据投影到更低维度的子空间上。这本质上是将高维数据点映射到一条线或一个平面上,同时尽可能保留原始信息。 -
PCA算法集成
最后,我们将以上所有概念整合在一起,形成了完整的PCA算法。其核心步骤包括:中心化数据、计算协方差矩阵、进行特征值分解,并选取主要特征向量构成投影矩阵。
总结
本节课中我们一起学习了主成分分析(PCA)的完整知识框架。我们从基础的均值和方差出发,理解了内积与投影的几何意义,最终掌握了PCA这一强大的降维工具。虽然课程内容具有一定挑战性,但希望你能从中有所收获。
非常感谢坚持学习并完成本课程的每一位同学。



浙公网安备 33010602011771号