机器学习 第10章-降维与度量学习

news2024/10/1 5:39:16

机器学习 第10章-降维与度量学习

10.1 k近邻学习

k近邻(k-Nearest Neighbor,简称kNN)学习是一种常用的监督学习方法其工作机制非常简单:给定测试样本,基于某种距离度量找出训练集中与其最靠近的k个训练样本,然后基于这k个“邻居”的信息来进行预测。通常,在分类任务中可使用“投票法”,即选择这k个样本中出现最多的类别标记作为预测结果;在回归任务中可使用“平均法”,即将这k个样本的实值输出标记的平均值作为预测结果;还可基于距离远近进行加权平均或加权投票,距离越近的样本权重越大。

与前面介绍的学习方法相比,k近邻学习有一个明显的不同之处:它似乎没有显式的训练过程!事实上,它是“懒惰学习”(lazy learning)的著名代表此类学习技术在训练阶段仅仅是把样本保存起来,训练时间开销为零,待收到测试样本后再进行处理;相应的,那些在训练阶段就对样本进行学习处理的方法,称为“急切学习”(eager learning)。

图10.1给出了k近邻分类器的一个示意图。显然,k是一个重要参数,当k取不同值时,分类结果会有显著不同。另一方面,若采用不同的距离计算方式,则找出的“近邻”可能有显著差别,从而也会导致分类结果有显著不同。

在这里插入图片描述

10.2 低维嵌入

事实上,在高维情形下出现的数据样本稀疏、距离计算困难等问题是所有机器学习方法共同面临的严重障碍,被称为“维数灾难”(curse of dimensionality)。

缓解维数灾难的一个重要途径是降维(dimensionreduction),亦称“维数约简”,即通过某种数学变换将原始高维属性空间转变为一个低维“子空间”(subspace),在这个子空间中样本密度大幅提高,距离计算也变得更为容易。为什么能进行降维?这是因为在很多时候,人们观测或收集到的数据样本虽是高维的,但与学习任务密切相关的也许仅是某个低维分布,即高维空间中的一个低维“嵌入”(embedding)。图10.2给出了一个直观的例子。原始高维空间中的样本点,在这个低维嵌入子空间中更容易进行学习。

假定 m m m个样本在原始空间的距离矩阵为 D ∈ R m ∗ m D\in R^{m*m} DRmm,其中第 i i i j j j列的元素 d i s t i j dist_{ij} distij为样本 x i x_i xi x j x_j xj的距离,目标是要获取样本在 d ′ {d}' d维空间的表示 Z ∈ R ​ d ′ ∗ m , d ′ ≤ d Z\in R^{​{d}'*m},{d}'\leq d ZRdmdd,且任意两个样本在 d ′ {d}' d维空间中的欧氏距离等于原始空间中的距离,即 ∥ z i − z j ∥ = d i s t i j \left \| z_i-z_j \right \|=dist_{ij} zizj=distij

B = Z T Z ∈ R m ∗ m B=Z^T Z\in R^{m*m} B=ZTZRmm,其中 B B B为降维后样本的内积矩阵 b i j = z i T z j b_{ij}=z_i^Tz_j bij=ziTzj,则有:
d i s t i j 2 = ∣ ∣ z i ∣ ∣ 2 + ∣ ∣ z j ∣ ∣ 2 − 2 z i T z j = b i i + b j j − 2 b i j dist_{ij}^2=||z_i||^2+||z_j||^2-2z_i^Tz_j=b_{ii}+b_{jj}-2b_{ij} distij2=∣∣zi2+∣∣zj22ziTzj=bii+bjj2bij
令降维后的样本 Z Z Z中心化,即 ∑ i = 1 m z i = 0 ∑^m_{i=1}z_i=0 i=1mzi=0,且矩阵B的行列之和都为0,可以得到:
∑ i = 1 m d i s t i j 2 = t r ( B ) + m b j j \sum_{i=1}^{m}dist_{ij}^2=tr(B)+mb_{jj} i=1mdistij2=tr(B)+mbjj
∑ j = 1 m d i s t i j 2 = t r ( B ) + m b i i \sum_{j=1}^{m}dist_{ij}^2=tr(B)+mb_{ii} j=1mdistij2=tr(B)+mbii
∑ i = 1 m ∑ i = j m d i s t i j 2 = 2 m   t r ( B ) \sum_{i=1}^{m}\sum_{i=j}^{m}dist_{ij}^2=2m\: tr(B) i=1mi=jmdistij2=2mtr(B)
联立得:
b i j = − 1 2 ( d i s t i j 2 − d i s t i ⋅ 2 − d i s t ⋅ j 2 + d i s t ⋅ ⋅ 2 ) b_{ij}=-\frac{1}{2}(dist_{ij}^2-dist_{i\cdot }^2-dist_{\cdot j}^2+dist_{\cdot \cdot }^2) bij=21(distij2disti2distj2+dist⋅⋅2)

整个算法描述如下图所示:

在这里插入图片描述
基于线性变换来进行降维的方法称为线性降维方法,和MDS方法不同之处是对低维子空间的性质有不同的要求。

10.3 主成分分析

主成分分析(Principal Component Analysis,简称 PCA)是最常用的一种降维方法。

对于正交属性空间中的样本点,如何用一个超平面(直线的高维推广)对所有样本进行恰当的表达?
容易想到,若存在这样的超平面,那么它大概应具有这样的性质:
最近重构性:样本点到这个超平面的距离都足够近;
最大可分性:样本点在这个超平面上的投影能尽可能分开

根据最近重构性,可以得到:
KaTeX parse error: Undefined control sequence: \; at position 20: …derset{W}{min} \̲;̲ \; -tr(W^TXX^T…
根据最大可分性,可以得到:
KaTeX parse error: Undefined control sequence: \; at position 19: …nderset{W}{max}\̲;̲ \; \; tr(W^TXX…
显然两式等价,对其使用拉格朗日乘子法可得:
X X T W = λ W XX^TW=\lambda W XXTW=λW
于是,只需对协方差矩阵 X X T XX^T XXT进行特征值分解,将求得的特征值排序: λ 1 ≥ λ 2 ≥ 。。。 ≥ λ d λ_1≥λ_2≥。。。≥λ_d λ1λ2。。。λd,再取前 d ′ d' d个特征值对应的特征向量构成 W = ( w 1 , w 2 , . . . , w d ′ ) W=(w_1,w_2,...,w_{d'}) W=(w1,w2,...,wd)。这就是主成分分析的解。

PCA 算法描述如图 10.5 所示。
在这里插入图片描述

PCA 仅需保留W与样本的均值向量即可通过简单的向量减法和矩阵-向量乘法将新样本投影至低维空间中。显然,低维空间与原始高维空间必有不同因为对应于最小的d-d个特征值的特征向量被舍弃了,这是降维导致的结果但舍弃这部分信息往往是必要的:一方面,舍弃这部分信息之后能使样本的采样密度增大,这正是降维的重要动机;另一方面,当数据受到噪声影响时,最小的特征值所对应的特征向量往往与噪声有关,将它们舍弃能在一定程度上起到去噪的效果。

10.4 核化线性降维

线性降维方法假设从高维空间到低维空间的函数映射是线性的,然而,在不少现实任务中,可能需要非线性映射才能找到恰当的低维嵌入。图10.6给出了一个例子,样本点从二维空间中的矩形区域采样后以S形曲面嵌入到三维空间,若直接使用线性降维方法对三维空间观察到的样本点进行降维,则将丢失原本的低维结构。为了对“原本采样的”低维空间与降维后的低维空间加以区别,我们称前者为“本真”(intrinsic)低维空间。
在这里插入图片描述

10.5 流形学习

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

10.5.1 等度量映射

等度量映射(Isometric Mapping,简称Isomap)的基本出发点,是认为低维流形嵌入到高维空间之后,直接在高维空间中计算直线距离具有误导性,因为高维空间中的直线距离在低维嵌入流形上是不可达的如图 10.7(a)所示,低维嵌入流形上两点间的距离是“测地线”(geodesic)距离想象一只虫子从一点爬到另一点,如果它不能脱离曲面行走,那么图10.7(a)中的红色曲线是距离最短的路径,即S曲面上的测地线,测地线距离是两点之间的本真距离。显然,直接在高维空间中计算直线距离是不恰当的

在这里插入图片描述

在近邻连接图上计算两点间的最短路径,可采用著名的Diikstra算法或Floyd 算法,在得到任意两点的距离之后,就可通过 10.2节介绍的 MDS 方法来获得样本点在低维空间中的坐标。图10.8给出了Isomap 算法描述
在这里插入图片描述
Isomap仅是得到了训练样本在低维空间的坐标,对于新样本如何将其映射到低维空间呢?这个问题的常用解决方案,是将训练样本的高维空间坐标作为输入、低维空间坐标作为输出,训练一个回归学习器来对新样本的低维空间坐标进行预测,这显然仅是一个权宜之计,但目前似乎并没有更好的办法。

对近邻图的构建通常有两种做法,一种是指定近邻点个数,例如欧氏距离最近的 k k k个点为近邻点,这样得到的近邻图称为 k k k近邻图;另一种是指定距离阈值 ϵ \epsilon ϵ,距离小于 ϵ \epsilon ϵ的点被认为是近邻点,这样得到的近邻图称为 ϵ \epsilon ϵ近邻图。两种方式均有不足,例如若近邻范围指定得较大,则距离很远的点可能被误认为近邻,这样就出现“短路”问题:近邻范围指定得较小,则图中有些区域可能与其他区域不存在连接,这样就出现“断路”问题。短路与断路都会给后续的最短路径计算造成误导

10.5.2 局部线性嵌入

与Isomap试图保持近邻样本之间的距离不同,局部线性嵌入(LocallyLinear Embedding,简称LLE)试图保持邻域内样本之间的线性关系,如图10.9所示,假定样本点 x i x_i xi的坐标可以通过它的邻域样本 x j x_j xj x k x_k xk x l x_l xl的坐标通过线性组合来表示,即
x i = w i j x j + w i k x k + w i l x l x_i=w_{ij}x_j+w_{ik}x_k+w_{il}x_l xi=wijxj+wikxk+wilxl
在这里插入图片描述
LLE先为每个样本KaTeX parse error: Expected group after '_' at position 2: x_̲找到其近邻下标集合 Q i Q_i Qi,然后计算出基于 Q i Q_i Qi;中的样本点 x i x_i xi对;进行线性重构的系数 w i w_i wi:
w i j = ∑ k ∈ Q i C j k − 1 ∑ l , s ∈ Q i C l s − 1 w_{ij}=\frac{\sum_{k\in Q_i}C_{jk}^{-1}}{\sum _{l,s\in Q_i}C_{ls}^{-1}} wij=l,sQiCls1kQiCjk1
然后去求解低维坐标:
Z = ( z 1 , z 2 , ⋯   , z m ) ∈ R ​ d ′ ∗ m , ( W ) i j = w i j Z=(z_1,z_2,\cdots,z_m)\in {R}^{​{d}'*m},(W)_{ij}=w_{ij} Z=(z1,z2,,zm)Rdm,(W)ij=wij
M = ( I − W ) T ( I − W ) M=(I-W)^T(I-W) M=(IW)T(IW)
最后可以得到:
KaTeX parse error: Undefined control sequence: \; at position 19: …nderset{z}{min}\̲;̲ \; tr(ZMZ^T)\;…
LLE 的算法描述如图 10.10所示。
在这里插入图片描述

10.6 度量学习

在机器学习中,对高维数据进行降维的主要目的是希望找到一个合适的低维空间,在此空间中进行学习能比原始空间性能更好。事实上,每个空间对应了在样本属性上定义的一个距离度量,而寻找合适的空间,实质上就是在寻找一个合适的距离度量。那么,为何不直接尝试“学习”出一个合适的距离度量呢?这就是度量学习(metric learning)的基本动机。

对两个 d d d维样本 x i x_i xi x j x_j xj,,它们之间的平方欧氏距离可写为
d i s t e d 2 ( x i , x j ) = ∣ ∣ x i − x j ∣ ∣ 2 2 = d i s t i j , 1 2 + d i s t i j , 2 2 + ⋯ + d i s t i j , d 2 dist_{ed}^{2}(x_{i},x_{j})=||x_{i}-x_{j}||_{2}^{2}=dist_{ij,1}^{2}+dist_{ij,2}^{2}+\cdots+dist_{ij,d}^{2} disted2(xixj)=∣∣xixj22=distij,12+distij,22++distij,d2

其中 d i s t i j , k dist_{ij,k} distij,k表示 x i x_i xi x j x_j xj,在第k维上的距离。若假定不同属性的重要性不同,则可引入属性权重 w w w,得到:
d i s t w e d 2 ( x i , x j ) = ∣ ∣ x i − x j ∣ ∣ 2 2 = w 1 ⋅ d i s t i j , 1 2 + w 2 ⋅ d i s t i j , 2 2 + ⋯ + w d ⋅ d i s t i j , d 2 = ( x i − x j ) T W ( x i − x j ) dist_{wed}^{2}(x_{i},x_{j})=||x_{i}-x_{j}||_{2}^{2}=w_{1}\cdot dist_{ij,1}^{2}+w_{2}\cdot dist_{ij,2}^{2}+\cdots+w_{d}\cdot dist_{ij,d}^{2} =(x_{i}-x_{j})^{T}W(x_{i}-x_{j}) distwed2(xixj)=∣∣xixj22=w1distij,12+w2distij,22++wddistij,d2=(xixj)TW(xixj)
其中 w i ≥ 0 w_i≥0 wi0 W = d i a g ( w ) W=diag(w) W=diag(w)是一个对角矩阵, ( W ) i i = w i (W)ii=w_i (W)ii=wi

式(1033)中的 W W W可通过学习确定,但我们还能再往前走一步: W W W的非对角元素均为零,这意味着坐标轴是正交的,即属性之间无关;但现实问题中往往不是这样,例如考虑西瓜的“重量”和“体积”这两个属性,它们显然是正相关的,其对应的坐标轴不再正交。为此,将式(1033)中的 W W W替换为一个普通的半正定对称矩阵 M M M,于是就得到了马氏距离(Mahalanobis distance)
d i s t m a h 2 ( x i , x j ) = ( x i − x j ) T M ( x i − x j ) = ∣ ∣ x i − x j ∣ ∣ M 2 dist_{mah}^{2}(x_{i},x_{j})=(x_{i}-x_{j})^{T}M(x_{i}-x_{j})=||x_{i}-x_{j}||_{M}^{2} distmah2(xixj)=(xixj)TM(xixj)=∣∣xixjM2
其中 M M M亦称“度量矩阵”,而度量学习则是对 M M M进行学习。注意到为了保持距离非负且对称, M M M必须是(半)正定对称矩阵,即必有正交基 P P P使得 M M M能写为 M = P P T M=PP^T M=PPT

对M进行学习当然要设置一个目标。假定我们是希望提高近邻分类器的性能,则可将M直接嵌入到近邻分类器的评价指标中去,通过优化该性能指标相应地求得M。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1979733.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

YOLOv5改进 | 多尺度特征提取 | 结合多样分支块及融合的高级设计(CVPR2021)

YOLOv5改进 | 多尺度特征提取 | 结合多样分支块及融合的高级设计) 本文介绍论文原理介绍网络代码多种yaml设置网络测试及实验结果 本文介绍 YOLOv5(You Only Look Once)以其高效、准确的实时目标检测性能被广泛应用。然而,随着视觉…

【保姆级讲解C语言中的运算符的优先级!】

🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出…

【Material-UI】使用指南:快速入门与核心功能解析

文章目录 一、快速入门1.1 安装和导入1.2 组件的独立性 二、全局设置2.1 响应式元标签2.2 CssBaseline2.3 默认字体 三、响应式设计3.1 Grid系统 四、最佳实践4.1 组件的一致性4.2 性能优化4.3 可访问性 五、总结 Material-UI是一个功能强大且灵活的React UI框架,为…

数学建模--二分法

目录 二分法的基本原理 应用实例 求解方程根 查找有序数组中的元素 注意事项 Python代码示例 ​编辑 延伸 二分法在数学建模中的具体应用案例有哪些? 如何选择二分法的初始区间以确保收敛速度和精度? 在使用二分法求解方程时,如何…

通过 ACM 论文模版学习 LaTeX 语法 【四、图】

文章目录 一、LaTeX 简介二、ACM 论文模版三、格式四、图和表4.1 图4.1.1. 导言区设置4.1.2. 插入图片的基本语法4.1.3. 设置图片的尺寸和位置4.1.4. 图片浮动体4.1.4.1. figure 环境4.1.4.2. 位置参数4.1.4.3. \centering4.1.4.4. \includegraphics4.1.4.5. \caption4.1.4.6. …

19061 简单加法

这个问题可以通过使用字符串处理和简单的数学运算来解决。我们可以首先将输入的字符串按照""字符进行分割&#xff0c;然后将分割后的每个字符串转换为整数并求和。 以下是使用C的代码实现&#xff1a; #include <iostream> #include <sstream> #inclu…

LeetCode刷题笔记 | 3 | 无重复字符的最长子串 | 双指针 | 滑动窗口 | 2025兴业银行秋招笔试题 | 哈希集合

&#x1f64b;大家好&#xff01;我是毛毛张! &#x1f308;个人首页&#xff1a; 神马都会亿点点的毛毛张 这是一道银行的面试题&#xff0c;就是简单&#xff1f;&#xff01; LeetCode链接&#xff1a;3. 无重复字符的最长子串 1.题目描述 给定一个字符串 s &#xff0c…

live2d C++ sdk 分析

工具函数 首先会加载各种配置文件如model3.json&#xff0c;以字节流的方式读取(fstream) 读取过程中若报错 Stat failed. errno:2 path&#xff0c;很有可能是路径中出现了中文。因为官方用的stat函数判断文件合法性&#xff0c;stat函数貌似无法处理中文名 MatrixManager:…

PS学习笔记(二、换背景图片)

一、如何将人物抠出来 打开照片——选择——主体 CtrlJ复制图层&#xff0c;即可将任务单独拿出 将照片中的人物分层出来 另存为即可实现人物抠图。 二、背景抠图分离 ①选择——主体 编辑——内容识别填充&#xff08;填充——内容识别&#xff09; 图章工具修复 ②选…

C语言的回调函数(详解sqort函数)

在上一篇文章中我们学习了指针与数组之间的关系&#xff0c;学习了指针数组&#xff0c;数组指针变量&#xff0c;函数指针变量和函数指针数组。那么接下来我们要学习的是一个利用函数指针变量去解决和简化各种问题的回调函数。 一、回调函数 回调函数在编程中是一种很常见的…

Linux shell编程学习笔记68: curl 命令行网络数据传输工具 选项数量雷人(上)

0 前言 在网络时代&#xff0c;有经常需要在网络上传输数据&#xff0c;时我们需要通过网络下载文件&#xff0c;为了满足这种时代需要&#xff0c;Linux提供了众多网络命令&#xff0c;我们今天先研究curl命令。例如&#xff0c;我们可以使用 curl 从 URL 下载文件&#xff0…

QT百度智能云API鉴权,查询 文心一言 服务调用情况

百度智能云API鉴权 做了一个利用Qt实现调用文字大模型的API 小软件 AI.xyz。 想通过api直接访问国产语言大模型的调用情况&#xff0c;翻了半天 豆包、通义、文心 的官方文档。最后只找到百度提供通过api读取访问的功能。 一开始只看到 python 的sdk&#xff0c;试了试还可以…

Java常用类和数据结构与算法

1. 其他常用类 1.1. Math类 java.lang.Math提供了一系列静态方法用于科学计算&#xff1b;其方法的参数和返回值一般为double型。如果需要更加强大的数学运算能力&#xff0c;可以使用apache commons下面的Math类库 public class TestMath {public static void main(String[…

python 图片爬虫记录

看了2-3个小时的奥运会&#xff0c; 感觉内心空虚。 写点代码。 不知道做什么&#xff0c;随便搞一下爬虫&#xff0c;积累一点经验&#xff0c; 写篇博客&#xff0c;记录一下。 1. 注意检查响应头 情况描述: 对于这样一个 图片的 url https://blogger.googleusercontent.…

基于FPGA的数字信号处理(20)--半减器和全减器

目录 1、前言 2、半减器 3、全减器 4、减法器 文章总目录点这里&#xff1a;《基于FPGA的数字信号处理》专栏的导航与说明 1、前言 既然有半加器和全加器&#xff0c;那自然也有半减器和全减器了。尽管在电路中减法的实现基本都是 补码 加法 的形式&#xff0c;但是正所谓…

Hadoop搭建集群

Hadoop搭建集群 前言一、环境配置1.配置JDK2.配置Hadoop环境 二、Hadoop本地运行三、Hadoop集群部署1.准备三台服务器2.节点规划3.环境配置4.无秘登录5.配置核心文件1&#xff09;修改core-site.xml2&#xff09;修改hdfs-site.xml3&#xff09;修改yarn-site.xml4&#xff09;…

【linux】【操作系统】内核之sched.c源码阅读

sched.c提供的代码片段包含了与操作系统内核中的进程调度和管理相关的多个函数。schedule函数首先对所有任务&#xff08;进程&#xff09;进行检测&#xff0c;唤醒任何一个已经得到信号的任务。具体方法是针对任务数组中的每个任务&#xff0c;检查其报警定时值alam。如果任务…

Midjourney咒语之手机壁纸国画艺术

手机壁纸 Mountains, surfaces, mysterious landscapes --ar 9:16 Abstract shapes of billowing flowing colorful gauze fabric, --ar 9:16 国画艺术 Peony is

如何快速看完一个网页上的视频

如何快速看完一个视频 懂的都懂。 Edge浏览器 添加下面两个书签&#xff1a; javascript:document.querySelector("video").dispatchEvent(new Event("ended"))javascript:var vdocument.querySelector("video");if(v){v.mutedtrue;v.playba…

从艺术创作到作物生长,农业AI迎来“GPT“时刻

&#xff08;于景鑫 国家农业信息化工程技术研究中心&#xff09;"GPT"一词早已不再神秘,其在文本、图像生成领域掀起的风暴正以摧枯拉朽之势席卷全球。人们惊叹于ChatGPT对话之智能、思维之敏捷,更对Stable Diffusion、Midjourney创作的艺术画作赞叹不已。而大语言模…