降维与度量学习-笔记
降维与度量学习
k 近邻学习
k近邻(k-Nearest Neighbor,简称kNN)学习是一种常用的监督学习方法,其工作机制非常简单:给定测试样本,基于某种距离度量找出训练集中与其最靠近的k个训练样本,然后基于这k个“邻居”的信息来进行预测。
通常,在分类任务中可使用“投票法”,即选择这k个样本中出现最多的类别标记作为预测结果;在回归任务中可使用“平均法”,即将这k个样本的实值输出标记的平均值作为预测结果;还可基于距离远近进行加权平均或加权投票,距离越近的样本权重越大。
与前面介绍的学习方法相比,k近邻学习有一个明显的不同之处:它似乎没有显式的训练过程!
事实上,它是“懒惰学习”(lazy learning)的著名代表,此类学习技术在训练阶段仅仅是把样本保存起来,训练时间开销为零,待收到测试样本后再进行处理;相应的,那些在训练阶段就对样本进行学习处理的方法,称为“急切学习”(eager learning)。
该算法的两个重要参数是 k 与 距离度量函数
图10.1给出了k近邻分类器的一个示意图.显然, k是一个重要参数,当k取不同值时,分类结果会有显著不同.另一方面,若采用不同的距离计算方式,则找出的“近邻”可能有显著差别,从而也会导致分类结果有显著不同.
假设样本独立同分布,且对任意 x 和任意小正数 ,在 x 附近 距离范围内总能找到一个训练样本;
书上简单分析了一波,得出一个结论:最近邻分类器虽简单,但它的泛化错误率不超过贝叶斯最优分类器的错误率的两倍!
低维嵌入
上一节的讨论是基于一个重要假设:任意测试样本α附近任意小的距离范围内总能找到一个训练样本,即训练样本的采样密度足够大,或称为“密采样”(dense sample)。
现实应用中属性维数经常成千上万,要满足密采样条件所需的样本数目是无法达到的天文数字。此外,许多学习方法都涉及距离计算,而高维空间会给距离计算带来很大的麻烦,例如当维数很高时甚至连计算内积都不再容易。
事实上,在高维情形下出现的数据样本稀疏、距离计算困难等问题,是所有机器学习方法共同面临的严重障碍,被称为“维数灾难”(curse ofdimensionality )。
缓解维数灾难的一个重要途径是降维(dimension reduction),亦称“维数约简”,即通过某种数学变换将原始高维属性空间转变为一个低维“子空间”(subspace),在这个子空间中样本密度大幅提高,距离计算也变得更为容易。
为什么能进行降维?这是因为在很多时候,人们观测或收集到的数据样本虽是高维的,但与学习任务密切相关的也许仅是某个低维分布,即高维空间中的一个低维“嵌入”(embedding)。
若要求原始空间中样本之间的距离在低维空间中得以保持,即得到“多维缩放”(Multiple Dimensional Scaling,简称MDS)这样一种经典的降维方法。下面做一个简单的介绍。
假定 m 个样本在原始空间的距离矩阵为 , 其第 i 行 j 列的元 素 为样本 到 的距离。
我们的目标是获得样本在 维空间的表示 , ,且任意两个样本在 维空间中的欧氏距离等于原始空间中 的距离, 即 。
令 ,其中 为降维后样本的内积矩阵,,有
为全零向量。
为便于讨论,令降维后的样本 被中心化,即 。显然, 矩阵 的行与列之和均为零, 即 。易知
其中 表示矩阵的迹 , 。令:
由式 (10.3) 和式 (10.4) - (10.9) 可得
由此即可通过降维前后保持不变的距离矩阵 求取内积矩阵 .
对矩阵 做特征值分解(eigenvalue decomposition), ,其中 为特征值构成的对角矩阵,, 为特征向量矩阵。假定其中有 个非零特征值,它们构成对角矩阵 ,令 表示相应的特征向量矩阵,则 可表达为
在现实应用中为了有效降维,往往仅需降维后的距离与原始空间中的距离 尽可能接近,而不必严格相等。此时可取 个最大特征值构成对角矩阵 ,令 表示相应的特征向量矩阵,则 可表达为
一般来说,欲获得低维子空间,最简单的是对原始高维空间进行线性变换。给定 d 维空间中的样本 ,变换之后得到 维 空间中的样本
其中 是变换矩阵, 是样本在新空间中的表达。
变换矩阵 可视为 个 d 维基向量, 是第 i 个样本与这 个 基向量分别做内积而得到的 维属性向量。换言之, 是原属性向量 在新 坐标系 中的坐标向量。若 与 正交,则新坐标 系是一个正交坐标系,此时 为正交变换。显然,新空间中的属性是原空间中 属性的线性组合。
基于线性变换来进行降维的方法称为线性降维方法, 它们都符合 式(10.13)的基本形式, 不同之处是对低维子空间的性质有不同的要求,相当于对 施加了不同的约束。在下一节我们将会看到,若要求低维子空间对样本具有最大可分性,则将得到一种极为常用的线性降维方法。
对降维效果的评估,通常是比较降维前后学习器的性能,若性能有所提高则认为降维起到了作用。若将维数降至二维或三维,则可通过可视化技术来直观地判断降维效果。
主成分分析
主成分分析(Principal Component Analysis,简称PCA)是最常用的一种降维方法。在介绍PCA之前,不妨先考虑这样一个问题:对于正交属性空间中的样本点, 如何用一个超平面(直线的高维推广)对所有样本进行恰当的表达?
容易想到, 若存在这样的超平面, 那么它大概应具有这样的性质:
- 最近重构性: 样本点到这个超平面的距离都足够近;
- 最大可分性: 样本点在这个超平面上的投影能尽可能分开.
有趣的是,基于最近重构性和最大可分性,能分别得到主成分分析的两种 等价推导。
这两种性质优化目标都是:
用拉格朗如乘子法可得:
于是,只需对协方差矩阵 进行特征值分解,将求得的特征值排序: , 再取前 个特征值对应的特征向量构成 。 这就是主成分分析的解。
PCA 算法描述如图 10.5 所示。
实践中常通过对进行奇异值分解来代替协方差矩阵的特征值分解.
降维后低维空间的维数 通常是由用户事先指定, 或通过在 值不同的 低维空间中对 k 近邻分类器(或其他开销较小的学习器) 进行交叉验证来选取 较好的 值. 对 , 还可从重构的角度设置一个重构阈值, 例如 , 然 后选取使下式成立的最小 值:
PCA仅需保留 与样本的均值向量即可通过简单的向量减法和矩阵-向量乘法将新样本投影至低维空间中。显然,低维空间与原始高维空间必有不同,因为对应于最小的 个特征值的特征向量被舍弃了,这是降维导致的结果。但舍弃这部分信息往往是必要的:一方面,舍弃这部分信息之后能使样本的采样密度增大,这正是降维的重要动机:另一方面,当数据受到噪声影响时,最小的特征值所对应的特征向量往往与噪声有关,将它们舍弃能在一定程度上起到去噪的效果。
保存均值向量是为了通过向量减法对新样本同样进行中心化.
核化线性降维
不懂 (@_@😉
线性降维方法假设从高维空间到低维空间的函数映射是线性的。然而,在不少现实任务中,可能需要非线性映射才能找到恰当的低维嵌入。
非线性降维的一种常用方法,是基于核技巧对线性降维方法进行“核化”(kernelized)。下面我们以核主成分分析(Kernelized PCA,简称KPCA)为例来进行演示。
假定我们将在高维特征空间中把数据投影到由 确定的超平面上,即PCA欲求解
其中 是样本点 在高维特征空间中的像。易知
其中 。假定 是由原始属性空间中的样本点 通过映射 产生, 即 . 若 能被显式表达出来,则通过它将样本映射至 高维特征空间,再在特征空间中实施 PCA 即可。式(10.19)变换为
式 变换为
一般情形下,我们不清楚 的具体形式,于是引入核函数
将式(10.22)和(10.23)代入式(10.21)后化简可得
其中 为 对应的核矩阵, 。显然,式 (10.24)是特征值分解问题,取 最大的 个特征值对应的特征向量即可。
对新样本 , 其投影后的第 维坐标为
其中 已经过规范化, 是 的第 个分量。式(10.25)显示出, 为获得投影 后的坐标,KPCA 需对所有样本求和,因此它的计算开销较大。
流形学习
不懂 (@_@😉
流形学习(manifold learning)是一类借鉴了拓扑流形概念的降维方法。“流形”是在局部与欧氏空间同胚的空间,换言之,它在局部具有欧氏空间的性质,能用欧氏距离来进行距离计算。这给降维方法带来了很大的启发:若低维流形嵌入到高维空间中,则数据样本在高维空间的分布虽然看上去非常复杂,但在局部上仍具有欧氏空间的性质,因此,可以容易地在局部建立降维映射关系,然后再设法将局部映射关系推广到全局。当维数被降至二维或三维时,能对数据进行可视化展示,因此流形学习也可被用于可视化。
本节介绍两种著名的流形学习方法.
等度量映射
等度量映射(Isometric Mapping,简称Isomap)的基本出发点是认为低维流形嵌入到高维空间之后,直接在高维空间中计算直线距离具有误导性,因为高维空间中的直线距离在低维嵌入流形上是不可达的。如图10.7(a)所示,低维嵌入流形上两点间的距离是“测地线”(geodesic)距离:想象一只虫子从一点爬到另一点,如果它不能脱离曲面行走,那么图10.7(a)中的红色曲线是距离最短的路径,即S曲面上的测地线,测地线距离是两点之间的本真距离.显然,直接在高维空间中计算直线距离是不恰当的.
那么,如何计算测地线距离呢?这时我们可利用流形在局部上与欧氏空间同胚这个性质,对每个点基于欧氏距离找出其近邻点,然后就能建立一个近邻连接图,图中近邻点之间存在连接,而非近邻点之间不存在连接,于是,计算两点之间测地线距离的问题,就转变为计算近邻连接图上两点之间的最短路径问题。从图10.7(b)可看出,基于近邻距离逼近能获得低维流形上测地线距离很好的近似.
在近邻连接图上计算两点间的最短路径,可采用著名的Dijkstra算法或Floyd 算法,在得到任意两点的距离之后,就可通过10.2节介绍的MDS方法来获得样本点在低维空间中的坐标。图10.8给出了Isomap算法描述.
需注意的是,Isomap仅是得到了训练样本在低维空间的坐标,对于新样本,如何将其映射到低维空间呢?这个问题的常用解决方案,是将训练样本的高维空间坐标作为输入、低维空间坐标作为输出,训练一个回归学习器来对新样本的低维空间坐标进行预测。这显然仅是一个权宜之计,但目前似乎并没有更好的办法。
对近邻图的构建通常有两种做法,一种是指定近邻点个数,例如欧氏距离最近的k个点为近邻点,这样得到的近邻图称为k近邻图;另一种是指定距离阙值 ,距离小于 的点被认为是近邻点,这样得到的近邻图称为 近邻图。两种方式均有不足,例如若近邻范围指定得较大,则距离很远的点可能被误认为近邻,这样就出现“短路”问题;近邻范围指定得较小,则图中有些区域可能与其他区域不存在连接,这样就出现“断路”问题。短路与断路都会给后续的最短路径计算造成误导。
局部线性嵌入
与Isomap试图保持近邻样本之间的距离不同,局部线性嵌入(LocallyLinear Embedding,简称LLE)[Roweis and Saul,2000]试图保持邻域内样本之间的线性关系. 如图 10.9 所示, 假定样本点 的坐标能通过它的邻域样本 的坐标通过线性组合而重构出来, 即
LLE 希望式(10.26)的关系在低维空间中得以保持。
LLE 先为每个样本 找到其近邻下标集合 , 然后计算出基于 中的样本点对 进行线性重构的系数 :
其中 和 均为已知, 令 , 有闭式解
LLE 在低维空间中保持 不变, 于是 对应的低维空间坐标 可通过 下式求解:
式(10.27)与(10.29)的优化目标同形, 唯一的区别是式(10.27)中需确定的是 , 而式(10.29) 中需确定的是 对应的低维空间坐标 .
令 ,
则式(10.29)可重写为
式(10.31)可通过特征值分解求解: 最小的 个特征值对应的特征向量组成 的矩阵即为 .
LLE 的算法描述如图 10.10 所示. 算法第 4 行显示出: 对于不在样本 邻域区域的样本 , 无论其如何变化都对 和 没有任何影响; 这种将变动限制在局部的思想在许多地方都有用.
度量学习
亦称“距离度量学习”(distance metric learning).
在机器学习中,对高维数据进行降维的主要目的是希望找到一个合适的低维空间,在此空间中进行学习能比原始空间性能更好.事实上,每个空间对应了在样本属性上定义的一个距离度量,而寻找合适的空间,实质上就是在寻找一个合适的距离度量.那么,为何不直接尝试“学习”出一个合适的距离度量呢?这就是度量学习(metric learning)的基本动机。
欲对距离度量进行学习, 必须有一个便于学习的距离度量表达形式,'距离计算'一节中 给出了很多种距离度量的表达式, 但它们都是 “固定的”、没有可调节的参数, 因此不能通过对数据样本的学习来加以改善. 为此, 我们先来做一个推广.
对两个 d 维样本 和 , 它们之间的平方欧氏距离可写为
其中 表示 与 在第 k 维上的距离. 若假定不同属性的重要性不同,则可引入属性权重 , 得到
其中 是一个对角矩阵, .
式(10.33)中的 可通过学习确定, 但我们还能再往前走一步: 的非对 角元素均为零, 这意味着坐标轴是正交的, 即属性之间无关; 但现实问题中往往 不是这样, 例如考虑西瓜的 “重量” 和 “体积” 这两个属性, 它们显然是正相 关的, 其对应的坐标轴不再正交. 为此, 将式(10.33)中的 替换为一个普通的 半正定对称矩阵 , 于是就得到了马氏距离(Mahalanobis distance)
马氏距离以印度数学 家 P. C. Mahalanobis 命名. 标准马氏距离中 \mathbf{M} 是协 方差矩阵的逆, 即 ; 在度量学习中 被 赋予更大的灵活性.
其中 M 亦称 “度量矩阵”, 而度量学习则是对 进行学习. 注意到为了保持 距离非负且对称, 必须是(半)正定对称矩阵, 即必有正交基 使得 能写 为 .
对 进行学习当然要设置一个目标. 假定我们是希望提高近邻分类器 的性能, 则可将 直接嵌入到近邻分类器的评价指标中去, 通过优化该性能 指标相应地求得 M. 下面我们以近邻成分分析(Neighbourhood Component Analysis, 简称 NCA) [Goldberger et al., 2005] 为例进行讨论.
近邻分类器在进行判别时通常使用多数投票法, 邻域中的每个样本投 1 票, 邻域外的样本投 0 票. 不妨将其替换为概率投票法. 对于任意样本 , 它对 分类结果影响的概率为
当 i=j 时, p_{i j} 最大. 显然, \boldsymbol{x}{j} 对 \boldsymbol{x} 的影响随着它们之间距离的增大而减小. 若以留一法 (LOO) 正确率的最大化为目标, 则可计算 x_{i} 的留一法正确率, 即 它被自身之外的所有样本正确分类的概率为
其中 表示与 属于相同类别的样本的下标集合. 于是, 整个样本集上的留 一法正确率为
将式(10.35)代入(10.37), 再考虑到 , 则 的优化目标为
求解式(10.38)即可得到最大化近邻分类器 LOO 正确率的距离度量矩阵 .
可用随机梯度下降法求解[Goldberger et al.,2005].
实际上, 我们不仅能把错误率这样的监督学习目标作为度量学习的优化目 标, 还能在度量学习中引入领域知识. 例如, 若已知某些样本相似、某些样本 不相似, 则可定义 “必连” (must-link)约束集合 与 “勿连” (cannot-link) 约束集合 表示 与 相似, 表示 与 不相似. 显然, 我们希望相似的样本之间距离较小, 不相似的样本之间距离较大, 于是可 通过求解下面这个凸优化问题获得适当的度量矩阵 [Xing et al., 2003]:
其中约束 表明 必须是半正定的. 式(10.39)要求在不相似样本间的距 离不小于 1 的前提下, 使相似样本间的距离尽可能小.
不同的度量学习方法针对不同目标获得 “好” 的半正定对称距离度量矩阵 M , 若 M 是一个低秩矩阵, 则通过对 M 进行特征值分解, 总能找到一组正 交基, 其正交基数目为矩阵 的秩 , 小于原属性数 d . 于是, 度量学习 学得的结果可衍生出一个降维矩阵 , 能用于降维之目的.
度量学习自身通常并不要求学得的M是低秩的.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫