【一起啃书】《机器学习》第十章 降维与度量学习

文章目录

    • 第十章 降维与度量学习
      • 10.1 k k k近邻学习
      • 10.2 低维嵌入
      • 10.3 主成分分析
        • 10.3.1 定义与步骤
        • 10.3.2 最近重构性与最大可分性
      • 10.4 核化线性降维
      • 10.5 流形学习
      • 10.6 度量学习

第十章 降维与度量学习

10.1 k k k近邻学习

   k k k近邻学习是一种常用的监督学习方法,其工作机制非常简单:给定测试样本,基于某种距离度量找出训练集中与其最靠近的 k k k个训练样本,然后基于这 k k k个“邻居”的信息来进行预测。

  通常,在分类任务中可使用“投票法”,即选择这 k k k个样本中出现最多的类别标记作为预测结果;在回归任务中可使用“平均法”,即将这 k k k个样本的实值输出标记的平均值作为预测结果;还可基于距离远近进行加权平均或加权投票,距离越近的样本权重越大。

   k k k近邻学习涉及到三个主要因素: k k k的大小,距离或相似度的度量,以及特征归一化。 k k k的大小决定了近邻范围和投票权重,距离或相似度的度量决定了如何判断两个实例之间的接近程度,特征归一化决定了各个特征对距离或相似度计算的影响。这些因素都需要根据具体问题和数据集来选择合适的方法和参数。

10.2 低维嵌入

   k k k近邻学习是基于“密采样”假设——任意测试样本 x x x附近任意小的 δ \delta δ距离范围内总能找到一个训练样本,即训练样本的采样密度足够大。然而,这个假设在现实中很难满足,假设 δ = 0.001 \delta=0.001 δ=0.001,就意味着至少要有1000个样本点平均分布在归一化后的属性取值范围内,才能保证任意测试样本在其附近的0.001距离范围内总能找到一个训练样本,而这只是属性维数为1的情况,如果属性维数更大不仅需要的样本数会变多,同时高维空间会给距离计算带来很大的困难。所以有时我们需要通过降维来缓解维数灾难,也就是通过某种数学变换将原始高维属性空间转变为一个低维“子空间”,在这个子空间中样本密度大幅提高,而距离计算也变得更为容易。

  下面介绍一种多维缩放方法,Multiple Dimensional Scaling(MDS),多维缩放的原理是:给定样本两两间距离/不相似度,如何获得样本的表示,使得样本间距离/不相似度和给定的一致。从降维角度,就是低维空间的样本间距离/不相似度要和高维空间样本间距离/不相似度基本一致。

  具体来说,多维缩放的过程可以分为以下几个步骤:

  1. 计算高维空间中样本之间的距离矩阵 D D D ,其中 D i j D_{ij} Dij 表示第 i i i个样本和第 j j j 个样本之间的距离,通常为欧氏距离。这一步是为了获得样本之间的相似度或不相似度的信息,作为降维的依据。
  2. 对距离矩阵 D D D 进行中心化处理,得到内积矩阵 B B B ,其中 B i j B_{ij} Bij 表示第 i i i 个样本和第 j j j 个样本之间的内积。中心化处理的公式为 B = − 1 2 H D H B = -\frac {1} {2}HDH B=21HDH ,其中 H 是中心化矩阵 H = I − 1 n 1 1 T H = I - \frac {1} {n}11^T H=In111T I I I 是单位矩阵, 1 1 1 是全 1 1 1 向量。这一步是为了消除样本的均值影响,使得样本在低维空间中也是零均值的,方便后续的特征值分解。
  3. 对内积矩阵 B B B 进行特征值分解,得到 B = V Λ V T B = V\Lambda V^T B=VΛVT ,其中 Λ \Lambda Λ 是对角矩阵,对角线上是特征值; V V V 是特征向量矩阵,每一列是一个特征向量。这一步是为了找到样本在低维空间中的最优表示,即最大化样本间的方差。
  4. 取前 d d d 个最大的特征值以及对应的特征向量,构成 Λ d \Lambda_d Λd V d V_d Vd ,其中 Λ d \Lambda_d Λd d d d 阶对角矩阵, V d V_d Vd n ∗ d n*d nd 矩阵。这一步是为了选择合适的降维目标维度 d d d ,并保留最重要的特征向量。
  5. 计算降维后的数据矩阵 Z = V d Λ d 1 / 2 Z = V_d \Lambda_d^{1/2} Z=VdΛd1/2 ,其中 Z Z Z n ∗ d n*d nd 矩阵,每一行是一个样本在低维空间中的坐标。这一步是为了得到样本在低维空间中的具体坐标,使得样本间距离或相似度不变。

  降维效果的评估方法可以分为两类:

  • 一类是通过降至二维和三维,然后将数据进行可视化分析,这是一种定性的评价标准,比较主观,可以直观地看出降维后的数据是否保持了原始数据的结构和相似度。
  • 另一类是通过比较降维前后学习器的性能进行评价,这是一种定量的评价标准,比较客观,可以用一些指标来衡量,如准确率、召回率、F1值等。这种方法可以反映出降维是否提高了学习器的效果和效率。

10.3 主成分分析

10.3.1 定义与步骤

  主成分分析(PCA)是一种使用最广泛的数据降维算法,它的主要思想是将 n n n维特征映射到 k k k维上,这 k k k维是全新的正交特征,也被称为主成分,是在原有 n n n维特征的基础上重新构造出来的 k k k维特征。

  PCA的数学定义是:一个正交化线性变换,把数据变换到一个新的坐标系统中,使得这一数据的任何投影的第一大方差在第一个坐标(称为第一主成分)上,第二大方差在第二个坐标(第二主成分)上,依次类推。

  PCA的工作就是从原始的空间中顺序地找一组相互正交的坐标轴,新的坐标轴的选择与数据本身是密切相关的。其中,第一个新坐标轴选择是原始数据中方差最大的方向,第二个新坐标轴选取是与第一个坐标轴正交的平面中使得方差最大的,第三个轴是与第1,2个轴正交的平面中方差最大的。依次类推,可以得到 n n n个这样的坐标轴。通过这种方式获得的新的坐标轴,我们发现,大部分方差都包含在前面 k k k个坐标轴中,后面的坐标轴所含的方差几乎为0。于是,我们可以忽略余下的坐标轴,只保留前面 k k k个含有绝大部分方差的坐标轴。事实上,这相当于只保留包含绝大部分方差的维度特征,而忽略包含方差几乎为0的特征维度,实现对数据特征的降维处理。

  为了得到这些包含最大差异性的主成分方向,我们需要对数据进行一些预处理和计算。具体步骤如下:

  • 组织数据集:假设有 m m m n n n维数据样本组成一个 m × n m×n m×n矩阵 X X X
  • 计算均值:对每一个特征求平均值,并将所有样本减去各自特征的平均值。
  • 计算协方差矩阵:协方差矩阵是一个对称矩阵,它描述了不同特征之间的相关性。协方差矩阵可以通过样本矩阵乘以其转置除以样本数减一得到,即 1 m − 1 W W T \frac{1}{{m - 1}}{\bf{W}}{{\bf{W}}^T} m11WWT
  • 求协方差矩阵的特征值和特征向量:协方差矩阵是一个实对称矩阵,它可以被正交对角化为 Q Σ Q − 1 QΣQ^{-1} QΣQ1 的形式,其中 Q Q Q是由特征向量组成的正交矩阵, Σ Σ Σ是由特征值组成的对角矩阵。
  • 选择主成分:根据特征值从大到小排序,选择前 k k k个最大的特征值所对应的特征向量组成一个矩阵 P P P
  • 得到降维后的数据:将原始数据矩阵 X X X乘以 P P P得到降维后的数据矩阵 Y Y Y

10.3.2 最近重构性与最大可分性

  主成分分析的目的是找到一个低维的超平面,使得原始数据在这个超平面上的投影能够尽可能地保留原始数据的信息。这个信息可以从两个方面来衡量:最近重构性和最大可分性。

  • 最近重构性:重构后的样本映射回原空间,与原样本的距离都足够的近。也就是说,PCA要求投影后的数据能够用最小的误差来近似原始数据。这个误差可以用样本点到投影超平面的距离来表示,因此,最近重构性可以转化为一个最小化距离平方和的优化问题。

  • 最大可分性:样本在这个超平面上的投影尽可能分开。也就是说,PCA要求投影后的数据能够有最大的方差,以反映原始数据的差异性。这个方差可以用投影后数据的协方差矩阵来表示,因此,最大可分性可以转化为一个最大化协方差矩阵迹的优化问题。

  假定数据样本进行了中心化,即 ∑ x i = 0 \sum {{x_i}} = 0 xi=0,再假定投影变换后得到的新坐标系为 { w 1 , w 2 , . . . , w d } \{ {w_1},{w_2},...,{w_d}\} {w1,w2,...,wd},若丢弃新坐标系中的部分坐标,即将维度降低到 d ′ < d d' < d d<d,则样本点 x i x_i xi在低维坐标系中的投影是 z i = ( z i 1 ; z i 2 ; . . . ; z i d ′ ) {z_i} = ({z_{i1}};{z_{i2}};...;{z_{id'}}) zi=(zi1;zi2;...;zid),其中 z i j = w j T x i {z_{ij}} = w_j^T{x_i} zij=wjTxi x i x_i xi在低维坐标系下第 j j j维的坐标,如果基于 z i z_i zi来重构 x i x_i xi,则会得到 x ‾ i = ∑ j = 1 d ′ z i j w j {\overline x _i} = \sum\limits_{j = 1}^{d'} {{z_{ij}}{w_j}} xi=j=1dzijwj

  考虑整个训练集,原样本点 x i x_i xi与基于投影重构的样本点 x ‾ i {\overline x _i} xi之间的距离为
∑ i = 1 m ∥ ∑ j = 1 d ′ z i j w j − x i ∥ 2 2 = ∑ i = 1 m z i T z i − 2 ∑ i = 1 m z i T W T x i + c o n s t ∝ − t r ( W T ( ∑ i = 1 m x i x i T ) W ) \sum\limits_{i = 1}^m {\left\| {\sum\limits_{j = 1}^{d'} {{z_{ij}}{w_j} - {x_i}} } \right\|_2^2} = \sum\limits_{i = 1}^m {{z_i}^T{z_i} - 2\sum\limits_{i = 1}^m {{z_i}^T{{\bf{W}}^T}{x_i} + const} } \propto - tr({{\bf{W}}^T}(\sum\limits_{i = 1}^m {{x_i}{x_i}^T} ){\bf{W}}) i=1m j=1dzijwjxi 22=i=1mziTzi2i=1mziTWTxi+consttr(WT(i=1mxixiT)W)
  根据最近重构性,上述式子需要最小化,则得到了如下的结果,也是主成分分析的优化目标。
min ⁡ W − t r ( W T X X T W ) s . t . W T W = I \begin{aligned} \min\limits_{\bf{W}} &- tr({{\bf{W}}^T}{\bf{X}}{{\bf{X}}^T}{\bf{W}}) \\ s.t.&{{\bf{W}}^T}{\bf{W}} = {\bf{I}} \\ \end{aligned} Wmins.t.tr(WTXXTW)WTW=I
  根据最大可分性,若所有样本点的投影尽可能分开,则应该使投影后样本点的方差最大化,如下图所示。于是可以对协方差矩阵 X X T {\bf{X}}{{\bf{X}}^T} XXT进行特征值分解,将求得的特征值排序: λ 1 ⩾ λ 2 ⩾ . . . ⩾ λ d {\lambda _1} \geqslant {\lambda _2} \geqslant ... \geqslant {\lambda _d} λ1λ2...λd,再取前 d ′ d' d个特征值对应的特征向量构成 W ∗ = ( w 1 , w 2 , . . . , w d ′ ) {{\bf{W}}^*} = ({w_1},{w_2},...,{w_{d'}}) W=(w1,w2,...,wd),这就是主成分分析的解。

10.4 核化线性降维

  现实任务中可能需要非线性映射来找到恰当的低维嵌入,如下图所示,样本点从二维空间中的矩形区域采样后以S形曲面嵌入到三维空间,若直接使用线性降维方法对三维空间观察到的样本点进行降维,则将失去原本的低维结构。为了对“原本采样的”低维空间与降维后的低维空间加以区别,我们称前者为“本真”低维空间,而非线性降维的一种常用方法,是基于核技巧对线性降维方法进行“核化”。

10.5 流形学习

  流形学习(manifold learning)是一种非线性降维技术,它基于这样一个假设:高维空间中的数据实际上是由一个低维流形映射到高维空间上的。流形是高维空间中的几何结构,可以看作是低维空间中曲线或曲面在高维空间中的推广。流形学习的目的是找到一个合适的映射函数,将高维空间中的数据投影到低维流形上,从而保留数据的内在结构和特征。流形学习有很多应用,例如数据可视化,数据压缩,数据生成,特征提取等。流形学习的典型算法有局部线性嵌入(LLE),拉普拉斯特征映射(LE),局部保持投影(LPP),等距映射(ISOMAP)等。

10.6 度量学习

  度量学习是一种从数据中学习一种度量数据对象间距离的方法,它的目的是使得在学得的距离度量下,相似对象间的距离小,不相似对象间的距离大。度量学习可以用于数据分类,聚类,检索,可视化等任务。

  深度度量学习是一种结合了深度学习和度量学习的方法,它可以从原始数据中自动地学习高质量的特征表示,并利用激活函数来捕捉数据的非线性特征。深度度量学习主要由三个方面组成:样本挖掘,模型结构和损失函数。样本挖掘是指从数据集中选择合适的样本对或三元组来训练模型,使得模型能够从难分辨的样本中学习更多的信息。模型结构是指使用深度神经网络来提取数据的特征向量,常见的模型结构有孪生网络和三元组网络²。损失函数是指定义模型优化的目标函数,常见的损失函数有对比损失,三元组损失,N-pair损失等。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于 unity 配置 adb

1.打开环境变量配置path的环境 2 找到自己的unity安装目录,找到对应路径 配置到 path 属性中 C:\~\Editor\2021.3.0f1c1\Editor\Data\PlaybackEngines\AndroidPlayer\SDK\platform-tools 3 应用保存即可

FPGA中ROM初始化方法

一 读取txt数据文件进行初始化 parameter INIT_FILE "文件路径/Data.txt" &#xff08;**注意文件路径中斜杠方向**&#xff09; reg [DATA_WITDH - 1:0] ROM [DATA_DEPTH - 1:0];initial begin$readmemh(INIT_FILE, ROM, 0, DATA_DEPTH - 1); end Dat…

Java面试题大全(23年整理版)最新全面技巧讲解

程序员面试背八股&#xff0c;可以说是现在互联网开发岗招聘不可逆的形式了&#xff0c;其中最卷的当属 Java&#xff01;&#xff08;网上动不动就是成千上百道的面试题总结&#xff09;你要是都能啃下来&#xff0c;平时技术不是太差的话&#xff0c;面试基本上问题就不会太大…

Loadrunner怎么实现MD5加密

目录 前言&#xff1a; 1、写一个md5.h文件&#xff0c;将其放入脚本路径下 2、在globals.h中加入#include “md5.h” 3、在Action中写脚本&#xff0c;脚本示例如下&#xff1a; 前言&#xff1a; 在 LoadRunner 中实现 MD5 加密可以通过使用 LoadRunner 提供的函数来完成…

使用Python+Flask+HTML写一个测试小工具

背景&#xff1a; 由于公司安全规范限制&#xff0c;我司的测试、预发布、灰度、生产环境&#xff0c;接口间的数据通信通常是加密处理的&#xff0c;给我们日常定位缺陷带来了一定的阻碍&#xff0c;因此我决定使用Python写一个工具&#xff0c;将加密数据转换为正常数据&…

界面开发框架Qt新手入门教程:如何使用Calendar组件创建日历(二)

Qt 是目前最先进、最完整的跨平台C开发工具。它不仅完全实现了一次编写&#xff0c;所有平台无差别运行&#xff0c;更提供了几乎所有开发过程中需要用到的工具。如今&#xff0c;Qt已被运用于超过70个行业、数千家企业&#xff0c;支持数百万设备及应用。 本文中的CalendarWi…

Python3 实例(三) | 菜鸟教程(二十一)

目录 一、Python 二分查找 二、Python 线性查找 三、Python 插入排序 四、Python 快速排序 五、Python 选择排序 六、Python 冒泡排序 七、Python 归并排序 一、Python 二分查找 &#xff08;一&#xff09;二分搜索是一种在有序数组中查找某一特定元素的搜索算法。 &a…

Java8 Stream详解

Stream类继承关系 前置知识 Spliterator接口使用 Spliterator是在java 8引入的一个接口&#xff0c;它通常和stream一起使用&#xff0c;用来遍历和分割序列。 只要用到stream的地方都需要Spliterator&#xff0c;比如List&#xff0c;Collection&#xff0c;IO channel等等…

数据库监控与调优【十七】—— 表结构设计优化

表结构设计优化 第一范式&#xff08;1NF&#xff09; 字段具有原子性&#xff0c;即数据库的每一个字段都是不可分割的原子数据项&#xff0c;不能是集合、数组、记录等非原子数据项 当实体中的某个属性有多个值时&#xff0c;必须拆分为不同的属性 例子&#xff1a; 如图…

《黑马头条》SpringBoot+SpringCloud+ Nacos等企业级微服务架构项目

环境搭建、SpringCloud微服务(注册发现、服务调用、网关) 1)课程对比 2)项目概述 2.1)能让你收获什么 2.2)项目课程大纲 2.3)项目概述 随着智能手机的普及&#xff0c;人们更加习惯于通过手机来看新闻。由于生活节奏的加快&#xff0c;很多人只能利用碎片时间来获取信息&#x…

iview切换Select时选项丢失,重置Seletc时选项丢失

分析原因 在旧版本的iview中如果和filterable一起使用时&#xff0c;当值清空选项或者使用重置按钮清空时选项会丢失。 解决方式一 把去掉filterable 解决方式二 使用ref&#xff0c;调用clearSingleSelect()方法清空 ref"perfSelect" this.$refs.perfSelect.c…

【数据库原理与实践】知识点归纳(下)

第6章 规范化理论 一、关系模式设计中存在的问题 关系、关系模式、关系数据库、关系数据库的模式 关系模式看作三元组&#xff1a;R < U,F >&#xff0c;当且仅当U上的一个关系r满足F时&#xff0c;r称为关系模式R < U,F >的一个关系 第一范式&#xff08;1NF&…

Mybatis-Plus:实现自定义SQL

目录 1.简介 2.自定义SQL具体实现 2.1.注解SQL 2.2.Wrapper传参注解SQL 2.3.Wrapper传参xml文件SQL 2.4.正常传参XML文件SQL 3.总结 1.简介 Mybatis-Plus&#xff08;以下简称MBP&#xff09;的初衷是为了简化开发&#xff0c;而不建议开发者自己写SQL语句的&#xff1b…

Java又双叒叕“凉”了?

前几天&#xff0c;TIOBE的一份6月编程语言榜单公布&#xff1a;Java退出前三&#xff0c;位居第四。一波Java凉了的言论甚嚣尘上。其实不止Java&#xff0c;python、C、C&#xff0c;哪一个没被提过“凉”... 而现实是&#xff0c;Java的招聘需求依然很大&#xff1a; 不可否…

Java面试Day17

1.什么是 Java 内部类&#xff1f; 内部类的分类有哪些 &#xff1f;内部类有哪些优点和应用场景&#xff1f; 顾名思义&#xff0c;内部类是指定义在某一个类中的类&#xff0c;主要分为成员内部类&#xff0c;静态内部类&#xff0c;局部内部类和匿名内部类四种。 创建与获取…

ffmpeg+nginx-rtmp转发视频流

本篇博客最早发布于实验室公共博客&#xff0c;但已无人维护&#xff0c;现迁移至个人博客 nginx与nginx-rtmp-module安装 画了好几天图&#xff0c;实在有些乏力&#xff0c;找点有意思的事情做做 觉得视频流传输挺有意思&#xff0c;B站找了些视频&#xff0c;但感觉有些大…

20230627通过WPS给PPT幻灯片加入页码

20230627通过WPS给PPT幻灯片加入页码 2023/6/27 23:16 缘起&#xff1a;不想每次都手工给打印的PPT加页码&#xff0c;就通过百度搜索来自动加页码了&#xff01; 真是偷懒让人进步呀&#xff01; 百度搜索&#xff1a;ppt加页码怎么设置 方法步骤.png ?点击「插入」选项卡「幻…

两台电脑之间传输文件——就近共享

文章目录 背景步骤补充&#xff1a;跨设备共享 背景 两台电脑之间共享文件有很多种方式&#xff0c;这里介绍一种最简洁的——Windows自带的就近共享。它适合偶尔传输一些简单文件。比如把笔记本上的电子书传输到surface上阅读。 注意: 如果共享的电脑正在运行最新版本的Wind…

【数据结构与算法】7、队列(Queue)的实现【用栈实现队列】

目录 一、队列介绍二、使用 LinkedList 实现队列三、LeetCode&#xff1a;用【栈】实现队列(1) 老师讲之前我自己的实现&#xff08;Correct&#xff09;(2) 实现思路(3) 代码实现 四、jdk 的 Queue五、双端队列&#xff08;Deque&#xff09;六、循环队列(1) 分析(2) 入队(3) …

基于FPGA的RC滤波器设计实现

目录 简介&#xff1a; 传递函数 FPGA代码实现 总结 简介&#xff1a; RC滤波器的特性基本情况介绍 RC一阶低通滤波介绍&#xff1b;RC滤波器电路简单&#xff0c;抗干扰性强&#xff0c;有较好的低频性能&#xff0c;并且选用标准的阻容元件易得&#xff0c;所以在工程测…