降维和度量学习

k近邻学习(kNN)

是一种懒惰学习,最开始得到数据集时不进行任何操作,在预测时再进行计算,此时计算复杂度较高
k 近邻学习是一种常用的监督学习方法,其工作机制非常简单:给定测试样本,基于某种距离度量找出训练集中与其最靠近的k个训练样本,然后基于这k个“邻居”的信息来进行预测,通常,在分类任务中可使用“投票法”,即选择这个样本中出现最多的类别标记作为预测结果;在回归任务中可使用“平均法”,即将这k个样本的实值输出标记的平均值作为预测结果;还可基于距离远近进行加权平均或加权投票,距离越近的样本权重越大

低维嵌入

上述算法实际基于一个假设:任意测试样本附近一定能找到一个训练样本,也就是训练样本的采样密度足够大
但是在高维情形下(例如属性较多),总会出现数据样本稀疏、距离计算困难等问题(维数增大时,两个点计算得到的距离一般会更大,导致在空间上显的分布更为稀疏)
为了解决这个问题,一般想到的就是使用降维
若要求原始空间中样本的距离在低维空间中得以保持,即可得到多维缩放(MDS)这一降维方法

主成分分析(PCA)

一种常用的降维方法

PCA学习一种线性投影,使最大方差的方向和新空间的轴对齐
PCA 的一个重要性质是将数据变换为元素之间彼此不相关表示。它是消除数据中未知变化因素的简单表示示例。在 PCA 中,这个消除是通过寻找输入空间的一个旋转(由 W 确定),使得方差的主坐标和 z 相关的新表示空间的基对齐。

通过一个超平面对一个正交属性空间中的样本点进行恰当表达,那么应当具有如下的性质:
容易想到,若存在这样的超平面,那么它大概应具有这样的性质:

  • 最近重构性:样本点到这个超平面的距离都足够近;
  • 最大可分性:样本点在这个超平面上的投影能尽可能分开.

由这两个目标性质都可以得到PCA算法的优化目标
\(\begin{align*} \max_{\mathbf{W}} \quad & \text{tr} \left( \mathbf{W}^\mathrm{T} \mathbf{X} \mathbf{X}^\mathrm{T} \mathbf{W} \right) \\ \text{s.t.} \quad & \mathbf{W}^\mathrm{T} \mathbf{W} = \mathbf{I}, \end{align*}\)
对该问题使用拉格朗日乘子法可以得到
\( \mathbf{X}\mathbf{X}^\mathrm{T}\mathbf{W} = \lambda \mathbf{W}, \tag{10.17} \)
于是,只需对协方差矩阵\(\mathbf{X}\mathbf{X}^\mathrm{T}\)进行特征值分解,将求得的特征值排序:
\(\lambda_1 \geq \lambda_2 \geq \ldots \geq \lambda_d\),再取前 \(d'\) 个特征值对应的特征向量构成\(\mathbf{W} = (\mathbf{w}_1, \mathbf{w}_2, \ldots, \mathbf{w}_{d'})\)。这就是主成分分析的解
image

核化线性降维

上面的降维方法假设从高维空间到低维空间的函数映射是线性的,但是有时需要非线性映射才能得到恰当的低维嵌入,这时候就需要引入核技巧,即对线性降维方法进行"核化"
例如核主成分分析,现将x映射到高维特征空间中,其像记为z,再在高维特征空间中把数据投影到由\(\mathbf{W}\)确定的超平面上
\(\left( \sum_{i=1}^{m} z_i z_i^{\mathrm{T}} \right) \mathbf{W} = \lambda \mathbf{W}\),将该等式对\(\lambda\)进行移项,可以得到\(\mathbf{W} = \frac{1}{\lambda} \left( \sum_{i=1}^{m} \mathbf{z}_i \mathbf{z}_i^{\mathrm{T}} \right) \mathbf{W} = \sum_{i=1}^{m} \mathbf{z}_i \frac{\mathbf{z}_i^{\mathrm{T}} \mathbf{W}}{\lambda} = \sum_{i=1}^{m} \mathbf{z}_i \boldsymbol{\alpha}_i, \tag{10.20}\)
引入x映射到高维特征空间的函数后,变换为\(\left( \sum_{i=1}^{m} \phi(\mathbf{x}_i) \phi(\mathbf{x}_i)^{\mathrm{T}} \right) \mathbf{W} = \lambda \mathbf{W} \tag{10.21}\)
由于\(\phi\)的具体形式难以得到,因此引入核函数,在带入上述等式可得
\(\mathbf{K} \mathbf{A} = \lambda \mathbf{A}\)\(\mathbf{K}\)是对应的核矩阵

流形学习

流形学习是一类借鉴了拓扑流形概念的降维方法
“流形”是在局部与欧氏空间同胚的空间,换言之,它在局部具有欧氏空间的性质,能用欧氏距离来进行距离计算.这给降维方法带来了很大的启发:若低维流形嵌入到高维空间中,则数据样本在高维空间的分布虽然看上去非常复杂,但在局部上仍具有欧氏空间的性质,因此,可以容易地在局部建立降维映射关系,然后再设法将局部映射关系推广到全局

每个点周围邻域的定义暗示着存在变换能够从一个位置移动到其邻域位置。

机器学习倾向于更松散地定义一组点,只需要考虑少数嵌入在高维空间中的自由度或维数就能很好地近似。每一维都对应着局部的变化方向。
这意味着即使原数据是高维的,但实际上可以通过少数几个参数(或特征)来描述。

流形学习假设假设认为\(\mathbb{R}^n\)中大部分区域都是无效的输入,有意义的输入只分布在包含少量数据点的子集构成的一组流形中,而学习函数的输出中,有意义的变化都沿着流形的方向或仅发生在我们切换到另一流形时。流形学习最初用于连续数值和无监督学习的环境,尽管这个概率集中的想法也能够泛化到离散数据和监督学习的设定下:关键假设仍然是概率质量高度集中。

度量学习

在机器学习中,对高维数据进行降维的主要目的是希望找到一个合适的低维空间,在此空间中进行学习能比原始空间性能更好
事实上,每个空间对应了在样本属性上定义的一个距离度量,因为不同空间映射得到的点,在对应空间上的距离会有所不同
因此寻找一个合适的空间实质上就是在寻找一个合适的距离度量,因此度量学习的想法就是直接学习一个合适的距离度量

posted @ 2025-04-09 22:21  rdcamelot  阅读(14)  评论(0)    收藏  举报