我们知道,缓解“维度灾难”的一个重要方法就是降维,即通过某种数学变换将原始高维属性空间转变为一个低维空间。而多维度缩放,就是其中的一个经典算法。

简介

多维度缩放,英文全称为Multiple Dimension Scaling,简称为MDS。其基本想法是: 降维后的低维空间d′d^{'}d′的欧式距离等于原始空间ddd的欧式距离。然而,它又是如何实现的呢?

数学推导

假定mmm个样本在原始空间的距离矩阵为D∈Rm×mD \in \mathbb{R}^{m \times m}D∈Rm×m,其第iii行jjj列的元素dijd_{ij}dij​为样本xi\mathbf{x}_ixi​和xj\mathbf{x}_jxj​的距离。我们的目标是获得样本在d′d^{'}d′维空间的表示Z∈Rd′×m,d′≤dZ \in \mathbb{R}^{d^{'} \times m}, d^{'} \le dZ∈Rd′×m,d′≤d,且任意两个样本在d′d^{'}d′维空间的欧式距离等于原始空间中的距离,即∣∣zi−zj∣∣=dij||\mathbf{z}_i - \mathbf{z}_j|| = d_{ij}∣∣zi​−zj​∣∣=dij​。是不是很神奇?!

令B=ZTZ∈Rm×mB = Z^{T}Z \in \mathbb{R}^{m \times m}B=ZTZ∈Rm×m,其中BBB为降维后样本的内积矩阵,bij=zizjb_{ij} = \mathbf{z}_i\mathbf{z}_jbij​=zi​zj​,有

dij2=∣∣zi∣∣2+∣∣zj∣∣2−2ziTzj=bii+bjj−2bij\begin{aligned} d_{ij}^{2} &= ||\mathbf{z}_i||^{2} + ||\mathbf{z}_j||^{2} - 2\mathbf{z}_i^T\mathbf{z}_j \\ &= b_{ii} + b_{jj} - 2b_{ij}\\ \end{aligned} dij2​​=∣∣zi​∣∣2+∣∣zj​∣∣2−2ziT​zj​=bii​+bjj​−2bij​​

此外,为便于讨论,我们令降维后的样本ZZZ被中心化,即∑i=1mzi=0\sum_{i = 1}^{m} \mathbf{z_i} = 0∑i=1m​zi​=0。显然,矩阵BBB的行与列之和均为零,即∑i=1mbij=∑j=1mbij=0\sum_{i = 1}^{m}b_{ij} = \sum_{j = 1}^{m}b_{ij} = 0∑i=1m​bij​=∑j=1m​bij​=0。因此,可有

∑i=1mdij2=tr(B)+mbjj∑j=1mdij2=tr(B)+mbii∑i=1m∑j=1mdij2=2mtr(B)\begin{aligned} \sum_{i = 1}^{m} d_{ij}^{2} &= tr(B) + mb_{jj} \\ \sum_{j = 1}^{m} d_{ij}^{2} &= tr(B) + mb_{ii} \\ \sum_{i = 1}^{m}\sum_{j = 1}^{m} d_{ij}^{2} &= 2m\ tr(B) \\ \end{aligned} i=1∑m​dij2​j=1∑m​dij2​i=1∑m​j=1∑m​dij2​​=tr(B)+mbjj​=tr(B)+mbii​=2m tr(B)​

其中,tr(⋅)tr(\cdot)tr(⋅)表示矩阵的迹,tr(B)=∑i=1m∣∣zi∣∣2tr(B) = \sum_{i = 1}^{m}||\mathbf{z}_i||^{2}tr(B)=∑i=1m​∣∣zi​∣∣2。令,

di⋅2=1m∑j=1mdij2d⋅j2=1m∑i=1mdij2d⋅⋅2=1m2∑i=1m∑j=1mdij2\begin{aligned} d_{i\cdot}^{2} &= \frac{1}{m}\sum_{j = 1}^{m}d_{ij}^{2} \\ d_{\cdot j}^{2} &= \frac{1}{m}\sum_{i = 1}^{m}d_{ij}^{2} \\ d_{\cdot \cdot}^{2} &= \frac{1}{m^2}\sum_{i = 1}^{m}\sum_{j = 1}^{m}d_{ij}^{2} \\ \end{aligned} di⋅2​d⋅j2​d⋅⋅2​​=m1​j=1∑m​dij2​=m1​i=1∑m​dij2​=m21​i=1∑m​j=1∑m​dij2​​

因此,综合上式,可得,

bij=−12(dij2−di⋅2−dj⋅2+d⋅⋅2)b_{ij} = -\frac{1}{2}(d_{ij}^{2} - d_{i \cdot}^{2} - d_{j \cdot}^{2} + d_{\cdot \cdot}^{2})bij​=−21​(dij2​−di⋅2​−dj⋅2​+d⋅⋅2​)

由此即可通过降维前后保持不变的距离矩阵DDD求取内积矩阵BBB。那么,我们又如何求取降维后的样本点呢?答案是特征值分解

对矩阵BBB做特征值分解,

B=VΛVTB = V \Lambda V^{T}B=VΛVT

其中,Λ=diag(λ1,λ2,…,λd′)\Lambda = diag(\lambda_1, \lambda_2, \dots, \lambda_{d^{'}})Λ=diag(λ1​,λ2​,…,λd′​)为特征值构成的对角矩阵,λ1≥λ2≥⋯≥λd′\lambda_1 \ge \lambda_2 \ge \dots\ge \lambda_{d^{'}}λ1​≥λ2​≥⋯≥λd′​,VVV表示特征向量矩阵。假定其中有d∗d^{*}d∗个非零特征值,它们构成对角矩阵Λ∗=diag(λ1,λ2,…,λd∗)\Lambda_{*} = diag(\lambda_1, \lambda_2, \dots, \lambda_{d^{*}})Λ∗​=diag(λ1​,λ2​,…,λd∗​),令V∗V_{*}V∗​表示相应的特征向量矩阵,则ZZZ可表达为

Z=Λ∗12V∗TZ = \Lambda_{*}^{\frac{1}{2}}V_{*}^{T}Z=Λ∗21​​V∗T​

在现实生活中,为了有效降维,往往仅需降维后的距离与原始空间中的距离尽可能接近,而不必严格相等。此时,可取d′≪dd^{'} \ll dd′≪d个最大特征值构成对角矩阵Λ~=diag(λ1,λ2,…,λd′)\tilde{\Lambda} = diag(\lambda_1, \lambda_2, \dots, \lambda_{d^{'}})Λ~=diag(λ1​,λ2​,…,λd′​),令V~\tilde{V}V~表示相应的特征向量矩阵,则ZZZ可表达为

Z=Λ12VT∈Rd′×mZ = \Lambda^{\frac{1}{2}}V^{T} \in \mathbb{R}^{d^{'} \times m}Z=Λ21​VT∈Rd′×m

参考文献

周志华,《机器学习》

郭嘉丰,《无监督学习 —— 维度约简》

多维度缩放——MDS相关推荐

  1. 数据降维之多维缩放MDS(Multiple Dimensional Scaling)

    网上看到关于数据降维的文章不少,介绍MDS的却极少,遂决定写一写. 考虑一个这样的问题.我们有n个样本,每个样本维度为m.我们的目标是用不同的新的k维向量(k<<m)替代原来的n个m维向量 ...

  2. 降维——多维缩放MDS

    转载自 http://blog.csdn.net/victoriaw/article/details/78500894 多维缩放(Multidimensional Scaling, MDS)是一组对象 ...

  3. [论文翻译]A Global Geometric Framework for Nonlinear Dimensionality Reduction

    论文题目:A Global Geometric Framework for Nonlinear Dimensionality Reduction 论文来源:Science 290, 2319 (200 ...

  4. 【论文翻译】A Global Geometric Framework for Nonlinear Dimensionality Reduction

    论文题目:A Global Geometric Framework for Nonlinear Dimensionality Reduction 非线性降维的全局几何框架 科学家们在处理大量高维数据时 ...

  5. ML-降维:PCA、SVD、LDA、MDS、LLE、LE算法总结

    1.PCA主成分分析 PCA是不考虑样本类别输出的无监督降维技术,实现的是高维数据映射到低维的降维. PCA原理这个介绍的不错:https://www.cnblogs.com/pinard/p/623 ...

  6. 维度诅咒_逃避维度的诅咒

    维度诅咒 How do machines 'see'? Or, in general, how can computers reduce an input of complex, high-dimen ...

  7. Java实现mds降维_降维算法MDS

    在现实应用中,许多学习方法都涉及距离计算,而高维空间会给距离计算带来很大的麻烦.例如当维数很高时,甚至连计算内积都很不容易. 这实际上,是所有机器学习都面临的严重障碍,这被称为"维数灾难(即 ...

  8. FEMS综述: 如何从微生物网络中的“毛线球”理出头绪(3万字长文带你系统学习网络)...

    如何从微生物网络中的"毛线球"理出头绪 From hairballs to hypotheses–biological insights from microbial Lisa R ...

  9. scaling之旅_机器学习算法之旅

    在这篇文章中, 我们将介绍最流行的机器学习算法. 浏览该领域的主要算法以了解可用的方法有哪些是有用的. 有很多算法是可用的, 当算法名称被抛出时, 它会让人感到无所适从, 而你只需要知道它们是什么以及 ...

最新文章

  1. 制作模拟器和真机通用静态库
  2. python游戏-零基础python教程-用Python设计你的第一个小游戏
  3. Delphi中流对象 TStream
  4. BZOJ3075[USACO 2013 Mar Gold 3.Necklace]——AC自动机+DP
  5. Go语言TCP Socket编程
  6. Mysql 8 逻辑升级详解
  7. 聊一聊promise的前世今生
  8. [JavaWeb-Bootstrap]CSS样式和JS插件
  9. 显示日历的指令:cal
  10. Gartner Q2服务器市场报告5大要点
  11. c#读蓝牙数据_CSharp--BlueTooth 实现蓝牙通讯的程序 C#开发 可以发送和接收数据 方便二次开发 - 下载 - 搜珍网...
  12. Linux平台gcc和动态共享库的基础知识
  13. 【英语学习】【WOTD】foray 释义/词源/示例
  14. 领域驱动设计-基本概念
  15. 【免费下载】2021年8月热门报告盘点(附热门报告列表及下载链接)
  16. 丰巢回应小学生用照片“刷脸”取件;苹果明年或发布四款 5G 手机;Spring Boot 2.2.0 发布 | 极客头条...
  17. 三、MQTT Windosw下的 进一步调试
  18. 应用商店优化(ASO)之关键词及描述优化
  19. Microsoft Visual Studio 2019 美化之——透明化窗口 Microsoft Visual Studio 2019 C/C++ Windows 下重量级编辑器 Editor
  20. html复选框,如何通过AJAX动态获取数据库的数据作为复选框显示在页面上

热门文章

  1. python输入一个字母判断大小写_python判断字符串是字母 数字 大小写(转载)
  2. PDE的数值解法(有限元,有限差分法)综合介绍
  3. javaweb JAVA JSP水果销售系统购物系统jsp购物系统购物商城系统源码(jsp电子商务系统)网上水果店在线销售
  4. IIS 不能启动的问题
  5. 这几天看了几家培训机构和黑马
  6. 远程实习第一周学习总结
  7. 遭遇Worm.Win32.Viking,Worm.Win32f.ysv,Trojan.PSW.Win32.OnlineGames等
  8. CAD中怎么设置绘图次序?CAD绘图次序设置技巧
  9. iOS开发库和框架大全
  10. 23种设计模式通俗理解