机器学习(西瓜书)第 10 章 降维与度量学习
10.1 k近邻学习kNN
k 近邻(k-Nearest Neighbor,简称kNN)学习是一种常用的监督学习方法,其工作机制非常简单:给定测试样本,基于某种距离度量找出训练集中与其最靠近的k个训练样本,然后基于这k个 “邻居”的信息来进行预测.通常,在分类任务中可使用“投票法”,即选择这k个样本中出现最多的类别标记作为预测结果;在回归任务中可使用“平均法”,即将这k个样本的实值输出标记的平均值作为预测结果;还可基于距离远近进行加权平均或加权投票,距离越近的样本权重越大.
与前面介绍的学习方法相比,k近邻学习有一个明显的不同之处:它似乎
没有显式的训练过程!事实上,它是“懒惰学习”(lazy learning)的著名代表,
此类学习技术在训练阶段仅仅是把样本保存起来,训练时间开销为零,待收到
测试样本后再进行处理;相应的,那些在训练阶段就对样本进行学习处理的方
法,称为“急切学习”(eager learning).
图10.1给出了 k近邻分类器的一个示意图.显然,k是一个重要参数,当k取不同值时,分类结果会有显著不同.另一方面,若采用不同的距离计算方式,则找出的“近邻”可能有显著差别,从而也会导致分类结果有显著不同.暂且假设距离计算是“恰当”的,即能够恰当地找出k个近邻,我们来对“最近邻分类器”(1NN,即k = l)在二分类问题上的性能做一个简单的讨论.
给定测试样本x若其最近邻样本为z则最近邻分类器出错的概率就是x与z类别标记不同的概率
(其中c是指类别标签)

假设样本独立同分布,且对任意x和任意小正数sigma,在出附近sigma距离范围内总能找到一个训练样本;换言之,对任意测试样本,总能在任意近的范围内找到式(10.1)中的训练样本z.令表示贝叶斯最优分类器的结果,有:

于是我们得到了有点令人惊讶的结论:最近邻分类器虽简单,但它的泛化错误率不超过贝叶斯最优分类器的错误率的两倍
但是这里计算的重要前提是x->z充分接近,这个是要求整个样本空间是很稠密的,待测样本与观测样本之间的距离要足够近
我们想把样本从高维空间中去做一个降维,那么就能够应用这个近邻学习的技术
10.2 低维嵌入
上一节的讨论是基于一个重要假设:任意测试样本究附近任意小的sigma距离范围内总能找到一个训练样本,即训练样本的采样密度足够大,或称为“密采样”(dense sample).然而,这个假设在现实任务中通常很难满足,例如若sigma = 0.001,仅考虑单个属性,则仅需1000个样本点平均分布在归一化后的属性取值范围内,即可使得任意测试样本在其附近0.001距离范围内总能找到一个训练样本,此时最近邻分类器的错误率不超过贝叶斯最优分类器的错误率的两倍.
然而,这仅是属性维数为1的情形,若有更多的属性,则情况会发生显著变化.例如假定属性维数为20,若要求样本满足密采样条件,则至少需(10^3) ^{20} = 10 ^{60}个样本.现实应用中属性维数经常成千上万,要满足密采样条件所需的样本数目是无法达到的天文数字.此外,许多学习方法都涉及距离计算,而高维空间会给距离计算带来很大的麻烦,例如当维数很高时甚至连计算内积都不再容易
事实上,在高维情形下出现的数据样本稀疏、距离计算困难等问题,是所有机器学习方法共同面临的严重障碍,被称为“维数灾难”
缓解维数灾难的一个重要途径是降维(dimension reduction), 亦称“维数约简”,即通过某种数学变换将原始高维属性空间转变为一个低维“子空间”,在这个子空间中样本密度大幅提高,距离计算也变得更为容易.为什么能进行降维?这是因为在很多时候,人们观测或收集到的数据样本虽是高维的,但与学习任务密切相关的也许仅是某个低维分布,即高维空间中的一个低维“嵌入”(embedding).图10.2给出了一个直观的例子.原始高维空间中的样本点,在这个低维嵌入子空间中更容易进行学习.


10.3 主成分分析PCA
主成分分析(Principal Component Analysis,简称PCA)是最常用的一种降维方法.在介绍P C A 之前,不妨先考虑这样一个问题:对于正交属性空间中的样本点,如何用一个超平面(直线的高维推广)对所有样本进行恰当的表达?
容易想到,若存在这样的超平面,那么它大概应具有这样的性质:
• 最近重构性:样本点到这个超平面的距离都足够近;
• 最大可分性:样本点在这个超平面上的投影能尽可能分开.
有趣的是,基于最近重构性和最大可分性,能分别得到主成分分析的两种
等价推导.

我们希望它每维特征尽量分散,用数学语言描述就是希望变换后每一行的对应方差最大,因此可以对每一行求一个方差,然后对方差求一个和,最大化方差的和
依据这样的一个思路,进行PCA的求解过程
假定数据样本进行了中心化,即
,也就是PCA的前提假设:Z的每一行均值是0(在数据输到PCA之中就可以做这样一个均值为0的一个规范化的转换),因此所有的z-bar都是0

要求所有W是规范化而且正交的,因为这个式子矩阵W可能有无穷个形式,这个式子任意乘一个数对结果没有影响,因此为了避免求解过程中常数项的影响,我们限制了W^TW是一个单位阵I
这就是主成分分析的优化目标.这实际上是一个受约束的线性规划问题,因此很自然地想到了用拉格朗日乘子的方法去求解

对于这个凸优化问题的话,可以用求微分的方式拿到它的解析解
因为我们现在想求的是这个变换矩阵W,所以我们对这个拉格朗日函数对W求偏微分

(I是一个常数矩阵和W没关系)

10.4 流形学习
流形学习(manifold learning)是一类借鉴了拓扑流形概念的降维方法.“流形”是在局部与欧氏空间同胚的空间,换言之,它在局部具有欧氏空间的性质,能用欧氏距离来进行距离计算.这给降维方法带来了很大的启发:若低维流形嵌入到高维空间中,则数据样本在高维空间的分布虽然看上去非常复杂,但在局部上仍具有欧氏空间的性质,因此,可以容易地在局部建立降维映射关系,然后再设法将局部映射关系推广到全局.当维数被降至二维或三维时,能对数据进行可视化展示,因此流形学习也可被用于可视化.本节介绍两种著名的流形学习方法.
等度量映射
等度量映射(Isometric Mapping,简称 Isomap) [Tenenbaum et al., 2000]的基本出发点,是认为低维流形嵌入到高维空间之后,直接在高维空间中计算直线距离具有误导性,因为高维空间中的直线距离在低维嵌入流形上是不可达的.如图10.7(a)所示,低维嵌入流形上两点间的距离是“测地线”(geodesic)距离:想象一只虫子从一点爬到另一点,如果它不能脱离曲面行走,那么图10.7(a)中的红色曲线是距离最短的路径,即S曲面上的测地线,测地线距离是两点之间的本真距离.显然,直接在高维空间中计算直线距离是不恰当的.



局部线性嵌入
与Isomap试图保持近邻样本之间的距离不同,局部线性嵌入(Locally Linear Embedding,简称LLE) [Roweis and Saul, 2000]试图保持邻域内样本之间的线性关系

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




相关文章:
机器学习(西瓜书)第 10 章 降维与度量学习
10.1 k近邻学习kNN k 近邻(k-Nearest Neighbor,简称kNN)学习是一种常用的监督学习方法,其工作机制非常简单:给定测试样本,基于某种距离度量找出训练集中与其最靠近的k个训练样本,然后基于这k个 “邻居”的信息来进行预测.通常,在…...
828华为云征文 | 云服务器Flexus X实例,Docker集成搭建Halo博客平台
828华为云征文 | 云服务器Flexus X实例,Docker集成搭建Halo博客平台 Halo博客平台是一款基于Java的开源博客系统,以其简单易用、功能强大、美观大方等特点而受到广泛欢迎,采用了多种先进的技术框架,包括Freemarker模板引擎、Vue.j…...
Android carrier_list.textpb 和apns-conf.xml 配置文件参考
简介 针对SIM 的APN配置是在apns-conf.xml,而Google源码中有apns-full-conf.xml案例参考,是加入了carrier_id的统一配置,就不用单独的一张张卡配了。 apns-conf.xml和apns-full-conf.xml有什么区别? 在于它们包含的配置内容和复杂性,full包含了carrier_id字段。 详细代…...
二期 1.4 Nacos安装部署 - Window版
本文目录 Nacos支持三种部署模式环境准备下载Nacos启动登录服务注册与查看Nacos支持三种部署模式 单机模式 - 用于测试和单机试用。集群模式 - 用于生产环境,确保高可用。多集群模式 - 用于多数据中心场景。以 Window单机模式 抛转引玉,其它部署方式参考官方文档: https://n…...
vue3基础九问,你会几问
1. Vue是什么? Vue.js 是一个用于构建用户界面的渐进式 JavaScript 框架。它的核心库只关注视图层,采用自下而上的增量开发设计,这使得你可以将 Vue 轻松地整合到现有的项目中,或者与其他前端库一起使用。Vue 的目标是通过提供反…...
Linux系统应用之知识补充——OpenEuler(欧拉)的安装和基础配置
前言 这篇文章将会对OpenEuler的安装进行详解,一步一步跟着走下去就可以成功 注意 :以下的指令操作最好在root权限下进行(即su - root) ☀️工贵其久,业贵其专! 1、OpenEuler的安装 这里我不过多介绍&a…...
Git(4):修改git提交日志
修改最新一次提交的信息 git commit --amend 修正提交信息 在打开的编辑器中修改信息,保存并退出,Git 会用新的提交信息替换掉旧的提交信息(commit-id 变化)。也可以使用 git commit --amend -m "" 直接修改日志&#…...
【深度学习】(1)--神经网络
文章目录 深度学习神经网络1. 感知器2. 多层感知器偏置 3. 神经网络的构造4. 模型训练损失函数 总结 深度学习 深度学习(DL, Deep Learning)是机器学习(ML, Machine Learning)领域中一个新的研究方向。 从上方的内容包含结果,我们可以知道,在学习深度学…...
测试文件和数据库文件
接口测试 flaks项目入口文件manage.py路由配置 import requests#首先面向对象作封装,避免相同代码反复编写 class HttpApiTest:def test_get(self,url,data{}): #用来测试get方法的接口 #self通过共享self类中间的变量 #url用来请求接口 #data可传可不传res reques…...
redis集群模式连接
目录 一:背景 二:实现过程 三:总结 一:背景 redis集群通过将数据分散存储在多个主节点上,每个主节点可以有多个从节点进行数据的复制,以此来实现数据的高可用性和负载均衡。在集群模式下,客户…...
Linux高级I/O:多路转接模型
目录 一.常见的IO模型介绍二.多路转接I/O1.select1.1.函数解析1.2. select特点和缺点1.3.基于 select 的多客户端网络服务器 2.poll2.1.poll函数解析2.2.poll特点和缺点2.3.基于poll的tcp服务器 3.epoll3.1.系列函数解析3.2.epoll原理解析2.3.基于 select 的多客户端网络服务器…...
MongoDB Limit 与 Skip 方法
MongoDB Limit 与 Skip 方法 MongoDB 是一个流行的 NoSQL 数据库,它提供了灵活的数据存储和强大的查询功能。在处理大量数据时,我们常常需要限制返回的结果数量或者跳过一部分结果,这时就可以使用 MongoDB 的 limit 和 skip 方法。 Limit 方…...
【2025】中医药健康管理小程序(安卓原生开发+用户+管理员)
博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…...
VulnHub-Bilu_b0x靶机笔记
Bilu_b0x 靶机 概述 Vulnhub 的一个靶机,包含了 sql 注入,文件包含,代码审计,内核提权。整体也是比较简单的内容,和大家一起学习 Billu_b0x.zip 靶机地址: https://pan.baidu.com/s/1VWazR7tpm2xJZIGUS…...
Python | Leetcode Python题解之第421题数组中两个数的最大异或值
题目: 题解: class Trie:def __init__(self):# 左子树指向表示 0 的子节点self.left None# 右子树指向表示 1 的子节点self.right Noneclass Solution:def findMaximumXOR(self, nums: List[int]) -> int:# 字典树的根节点root Trie()# 最高位的二…...
如何将普通Tokenizer变成Fast Tokenizer
现在的huggingface库里面Tokenizer有两种,一种就是普通的,另一种是fast的。fast和普通的区别就是fast使用rust语言编写,在处理大量文本的时候会更快。我自己测试的时候单一一句的话fast要比普通的慢一些,当量叠上来,到…...
联合复现!考虑最优弃能率的风光火储联合系统分层优化经济调度!
前言 目前,尽管不断地追逐可再生能源全额消纳方式,大幅减小弃风弃光电量,但是若考虑风电、光伏发电的随机属性,全额消纳可能造成电网峰谷差、调峰难度及调峰调频等辅助服务费用的剧增,引起电网潜在运行风险。因此&…...
Vue开发前端图片上传给java后端
前端效果图 图片上传演示 1 前端代码 <template><div><!-- 页面标题 --><h1 class"page-title">图片上传演示</h1><div class"upload-container"><!-- 使用 van-uploader 组件进行文件上传,v-model 绑…...
react hooks--useCallback
概述 useCallback缓存的是一个函数,主要用于性能优化!!! 基本用法 如何进行性能的优化呢? useCallback会返回一个函数的 memoized(记忆的) 值;在依赖不变的情况下,多次定义的时候,返回的值是…...
828华为云征文|华为云Flexus X实例docker部署最新Appsmith社区版,搭建自己的低代码平台
828华为云征文|华为云Flexus X实例docker部署最新Appsmith社区版,搭建自己的低代码平台 华为云最近正在举办828 B2B企业节,Flexus X实例的促销力度非常大,特别适合那些对算力性能有高要求的小伙伴。如果你有自建MySQL、Redis、Ng…...
最新短网址系统源码 短网址源码 分用户链接 全新UI短网址源码
最新短网址系统源码 分用户链接 简单介绍一下这个短链接源码,这个是我根据自己需要自建的,偏向于个人需求的完成 说一下特点吧,短链接格式如同https://域名/0810a7/tlWl6y,其中0810a7区分用户,tlWl6y是短链接的短码 …...
大规模模型训练卡在92%?PyTorch 3.0静态图分布式调试全流程:从Graph IR Dump到Device Placement热力图分析
第一章:PyTorch 3.0静态图分布式训练全景概览PyTorch 3.0 引入了原生静态图编译能力(TorchDynamo Inductor 后端深度集成),结合 torch.distributed 的增强型 SPMD(Single Program, Multiple Data)抽象&…...
Agentic SOC:AI原生时代,安全运营的终极范式革命
2026年RSAC全球网络安全大会上,一个现象级的行业转折正在发生:全场超过90%的主流安全厂商将核心展位与重磅发布聚焦于Agentic SOC,全球500强企业中超过62%已启动相关试点,21%完成了核心生产环境的规模化落地。与之形成强烈对比的是…...
Windows10下PaddleOCR与Python3.8.5的完美搭配:从安装到实战OCR识别
Windows10下PaddleOCR与Python3.8.5的深度实践指南 在数字化办公和自动化流程日益普及的今天,光学字符识别(OCR)技术已经成为从图像中提取文本信息的重要工具。PaddleOCR作为百度开源的OCR工具库,凭借其出色的识别准确率和易用性…...
训练自定义游戏,构建Gymnasium训练环境
认识Gymnasium使用stable_baseline3只需要定义好Gymnasium环境,关注训练的奖励机制,将重点放在业务的开发上而不是复杂的算法。Gymnasium提供了几个核心的api:方法功能返回值reset()将环境重置为初始状态,开始新回合。obs, infost…...
Alfred-Workflow 自动化更新:利用 GitHub Releases 实现工作流无缝升级
Alfred-Workflow 自动化更新:利用 GitHub Releases 实现工作流无缝升级 【免费下载链接】alfred-workflow Full-featured library for writing Alfred 3 & 4 workflows 项目地址: https://gitcode.com/gh_mirrors/al/alfred-workflow Alfred-Workflow 是…...
打造个人离线书库:番茄小说下载器全场景应用指南
打造个人离线书库:番茄小说下载器全场景应用指南 【免费下载链接】Tomato-Novel-Downloader 番茄小说下载器不精简版 项目地址: https://gitcode.com/gh_mirrors/to/Tomato-Novel-Downloader 番茄小说下载器是一款开源工具,专为小说爱好者设计&am…...
快速生成git安装配置脚本,快马平台助你一键搭建版本控制环境
最近在帮团队新成员配置开发环境时,发现git安装这个看似简单的步骤,其实藏着不少坑。不同操作系统下的安装方式差异很大,新手经常要反复查阅各种教程。于是我用InsCode(快马)平台快速搭建了一个git安装配置助手,整个过程比想象中顺…...
别再傻傻分不清了!LDO和DC-DC到底怎么选?从效率、温升到选型实战一次讲透
LDO与DC-DC终极选型指南:从理论到实战的完整决策框架 在硬件设计领域,电源方案的选择往往决定了整个系统的稳定性与能效表现。面对LDO(低压差线性稳压器)和DC-DC(直流-直流转换器)这两大主流方案࿰…...
实战指南:基于快马平台与yolov11快速开发货架商品检测系统
今天想和大家分享一个最近用yolov11实现的零售商品检测项目,整个过程在InsCode(快马)平台上完成得特别顺利。这个系统可以自动识别超市货架上的商品,特别适合库存管理或者智能结算场景。 项目背景与需求分析 超市货架商品识别看似简单,实际会…...
