Manifold Learning: ISOMAP
转:http://hi.baidu.com/chb_seaok/item/faa54786a3ddd1d7d1f8cd0b
在常见的降维方法中,PCA和LDA是最为常用的两种降维方法。PCA是一种无监督方法,它关注的是将数据沿着方差最大化的方向映射。而LDA是一种监督方法,它寻找映射轴(类之间耦合度低,类内的聚合度高),两种方法估计的都是全局的统计信息(均值和协方差)。
manifold learning是最近比较热门的领域,它是一种非线性降维技术,主要研究的是高维数据的潜在的流行结构。首先我们来看下为什么要进行流行学习,先看经典图:
图1
数据在高维空间空间中,什么事合理的距离度量(两个点之间的距离)成了关键,如图1,如果我们用欧式距离分别来度量图中红点与蓝点和黄点的距离的话,红点与蓝点的距离应该较红点与黄点距离远。事实上是否如此的,该距离是否真实的反应了数据之间的距离关系呢?想象力丰富的同学可能可以看出来,这些数据像一条丝带,把他在一个平面内展开,再去度量红点与蓝点和黄点的距离是否更为合理些?
ISOMAP是manifold learning的最为常见的一种方法,它主要的思想是用n维的欧式空间近似于一个N维的流行(n<<N).
第一步:构建点的邻居
图2
用KNN最近邻居算法对高维数据构建一个稀疏图,如果是该点邻居,则添加一条边,两点之间的距离则为欧式距离。
第二步:根据构建的图计算点与点之间最短距离
注:我们用点与点之间最短距离近似于geodesic距离(根据weak bound和asymptotic convergence定理)
计算最短路用Dijkstra或者Floyd算法计算,得到一个距离矩阵M,(表示的是点与点之间的距离)
图3
第三步:高维数据映射到低维空间
建立一个损失函数:
,
注:DG代表原图中数据,DY代表映射后数据
为了使E尽量小,解决的方法类似于PCA,进行矩阵分解,取前P个特征根,也就是将数据映射到P维空间。
PCA分解的是协方差矩阵,而ISOMAP也要进行类似的处理。在第二步中我们计算出距离矩阵M,对M进行算子操作,
= (1)
(2)
注:N为样本数据点个数,为克罗内克函数.
该步的算子操作类似于PCA中的减去均值操作,然后进行矩阵分解,取前P个特征根。
至此,ISOMAP完成了高维数据的非线性降维,降维后的数据极大的保持全局的geodesic距离信息。
Manifold Learning: ISOMAP的更多相关文章
- 流形学习(manifold learning)综述
原文地址:https://blog.csdn.net/dllian/article/details/7472916 假设数据是均匀采样于一个高维欧氏空间中的低维流形,流形学习就是从高维采样数据中恢复低 ...
- 转载manifold learning一篇
我恨自己不干活儿,不过也没辙. 早晚要学习流形的,今天先转一篇文章,以后找不到就尿了. 我真羡慕数学系的人,╮(╯▽╰)╭. 发信人: Kordan (K&M), 信区: AI标 题: do ...
- 流形学习 (Manifold Learning)
流形学习 (manifold learning) zz from prfans............................... dodo:流形学习 (manifold learning) ...
- Manifold learning 流形学习
Machine Learning 虽然名字里带了 Learning 一个词,让人乍一看觉得和 Intelligence 相比不过是换了个说法而已,然而事实上这里的 Learning 的意义要朴素得多. ...
- 流形学习(manifold learning)的一些综述
流形学习(manifold learning)的一些综述 讨论与进展 issue 26 https://github.com/memect/hao/issues/26 Introduction htt ...
- 机器学习算法总结(十二)——流形学习(Manifold Learning)
1.什么是流形 流形学习的观点:认为我们所能观察到的数据实际上是由一个低维流行映射到高维空间的.由于数据内部特征的限制,一些高维中的数据会产生维度上的冗余,实际上这些数据只要比较低的维度就能唯一的表示 ...
- sklearn 下的流行学习(Manifold Learning)—— sklearn.manifold
1. t-SNE from sklearn.manifold import TSNE X_proj = TSNE(random_state=123).fit_transform(X) 2. t_sne ...
- manifold learning
MDS, multidimensional scaling, 线性降维方法, 目的就是使得降维之后的点两两之间的距离尽量不变(也就是和在原是空间中对应的两个点之间的距离要差不多).只是 MDS 是针对 ...
- 流行-Manifold学习理解与应用
流行-Manifold[1] 流形,也就是 Manifold . 1. 比较好的形象理解 流形学习的观点是认为,我们所能观察到的数据实际上是由一个低维流形映射到高维空间上的,即这些数据所在的空间是“ ...
随机推荐
- Kafka 0.9 新特性
Kafka发布0.9了,这一重磅消息,让小伙伴们激动不已,来看看这个版本有哪些值得关注的地方吧! 一.安全特性 在0.9之前,Kafka安全方面的考虑几乎为0,在进行外网传输时,只好通过Linux的防 ...
- javaagent笔记及一个基于javassit的应用监控程序demo
javaagent基本用法 定义入口premain public static void premain(String agentArgs, Instrumentation inst) { Syste ...
- Struts2入门介绍(二)
一.Struts执行过程的分析. 当我们在浏览器中输入了网址http://127.0.0.1:8080/Struts2_01/hello.action的时候,Struts2做了如下过程: 1.Stru ...
- 学习笔记之--认识Xcode中的重要成员:lldb调试器
之前对lldb调试器了解比较少,平时主要用来打印日志和暂定时用鼠标查看属性数据以及使用p po一些简单的命令语句. 今天看了一些关于lldb的文章,顿时觉得之前对它了解太少了,原来它还有那么多的功能. ...
- solr6.6教程-基础环境搭建(一)
目前网上关于solr6.+的安装教程很少,有些6.0之前的教程在应用到6.+的版本中出现很多的问题,所以特别整理出来这一片文章,希望能给各位码农一些帮助! 很少写些文章,如有不对的地方,还希望多多指导 ...
- php实现对数组进行编码转换
1.转换GB2312编码为UTF-8 //更改编码为utf8 protected function array2utf8($array){ $array = array_map(function($v ...
- WebStorm 用法集合
1. 图片宽高提示.<img src="https://pic4.zhimg.com/8345475b687c83a71e0564419b0ac733_b.jpg" ...
- NoSQL集锦
1. http://blog.nosqlfan.com/,有不少Redis.CouchDB.MongoDB的电子书和文章,但没有Memcached的.
- Java Netty简介
Netty和Mina是Java世界非常知名的通讯框架.它们都出自同一个作者,Mina诞生略早,属于Apache基金会,而Netty开始在Jboss名下,后来出来自立门户netty.io(http:// ...
- python之from 和import执行过程分析
原文链接:http://blog.csdn.net/lis_12/article/details/52883729 问题1 同一个目录下,有两个Python文件,A.py,B.py #A.py fro ...