传统的机器学习方法中,数据点和数据点之间的距离和映射函数f都是定义在欧式空间中的,然而在实际情况中,这些数据点可能不是分布在欧式空间中的,因此传统欧式空间的度量难以用于真实世界的非线性数据,从而需要对数据的分布引入新的假设。

流形(Manifold)是局部具有欧式空间性质的空间,包括各种纬度的曲线曲面,例如球体、弯曲的平面等。流形的局部和欧式空间是同构的。

流形是线性子空间的一种非线性推广。

拓扑学角度:局部区域线性,与低维欧式空间拓扑同胚(连续的变换最后都能变成一样的两个物体,称为同胚,Homeomorphism)。

微分几何角度:有重叠chart的光滑过渡(把流体的任何一个微小的局部看作是欧几里德空间,称为一个chart)。

黎曼流形就是以光滑的方式在每一点的切空间上指定了欧式内积的微分流形。

什么是流形学习

流形学习假设所处理的数据点分布在嵌入于外维欧式空间的一个潜在的流形体上,或者说这些数据点可以构成这样一个潜在的流形体。

假设数据是均匀采样于一个高维欧氏空间中的低维流形,流形学习就是从高维采样数据中恢复低维流形结构,即找到高维空间中的低维流形,并求出相应的嵌入映射,以实现维数约简或者数据可视化。它是从观测到的现象中去寻找事物的本质,找到产生数据的内在规律。

image

常用方法介绍

这些流形学习方法具有一些共同的特征:首先构造流形上样本点的局部邻域结构,然后用这 些局部邻域结构来将样本点全局的映射到一个低维空间。它们之间的不同之处主要是在于构 造的局部邻域结构不同以及利用这些局部邻域结构来构造全局的低维嵌入方法的不同。

image

ISOMAP(Isometric feature mapping)

ISOMAP引入测地线距离来表示潜在流形上点与点之间的距离,并在降维过程中保持该距离不变。

保持全局测地距离: 测地距离反映数据在流形上的真实距离差异。

等距映射: 基于线性算法MDS,采用“测地距离”作为数据差异度量。

多维尺度变换(MDS)

MDS是一种非监督的维数约简方法。

MDS的基本思想:约简后低维空间中任意两点间的距离应该与它们在原高维空间中的距离相同。

MDS的求解:通过适当定义准则函数来体现在低位空间中对高维距离的重建误差,对准则函数用梯度下降法求解,对于某些特殊的距离可以推导出解析解法。

MDS的目标是在降维的过程中将数据的dissimilarity(差异性)保持下来,也可以理解降维让高维空间中的距离关系与低维空间中距离关系保持不变。

这里的距离用矩阵表示,N个样本的两两距离用矩阵A的每一项undefined表示,并且假设在低维空间中的距离是欧式距离。而降维后的数据表示为undefined,那么就有undefined,右边的三项统一用内积矩阵E来表示undefined,去中心化之后,E的每一行每一列之和都是0,从而可以推导得出:

undefined

其中undefined单位矩阵I减去全1矩阵的1/N,i⋅与⋅j是指某列或者某列总和,从而建立了距离矩阵A与内积矩阵E之间的关系。因而在知道A情况下就能够求解出E,进而通过对E做特征值分解,令undefined,其中Λ是对角矩阵,每一项都是E的特征值λ1≥…≥λdλ1≥…≥λd,那么在所有特征值下的数据就能表示成undefined,当选取d个最大特征值就能让在d维空间的距离矩阵近似高维空间D的距离矩阵,从而MDS流程如下:

输入: 距离矩阵undefined,上标表示矩阵大小,原始数据是D维,降维到d维。

输出: 降维后的矩阵undefined

目标:降维的同时保证数据之间的相对关系不变。

假设:已知N个样本的距离矩阵

  1. 计算出undefined

  2. 计算内积矩阵E

  3. 对E做特征值分解

  4. 取d个最大特征值构成undefined,对应的特征向量按序排列构成undefined

测地距离

测地线:流形上连接两个点的最短曲线。

图逼近测地距离

image

ISOMAP算法流程

  1. 计算每个点的近邻点。

  2. 在样本集上定义一个赋权无向图,如果 undefinedundefined互为近邻点,则边的权值为undefined

  3. 计算图中两点间的最短距离,记所得的距离矩阵为undefined

  4. 用MDS求低维嵌入坐标,

    undefined

    低维嵌入是undefined的第1大到第d大的特征值所对应的特征向量。

ISOMAP MATLAB实例

源代码及数据集下载地址

调用ISOMAP作用在swiss_roll_data数据集上:

>> load swiss_roll_data>> D = L2_distance(X_data(:,1:1000), X_data(:,1:1000), 1); >> options.dims = 1:10;>> options.landmarks = 1:50; >> [Y, R, E] = IsomapII(D, 'k', 7, options);

结果:

image

image

summary

前提假设

  1. 数据所在的低维流形与欧式空间的一个子集整体等距。

  2. 该欧式空间的子集是一个凸集。

思想核心

  1. 较近点对之间的测地距离用欧式距离代替。

  2. 较远点对之间的测地距离用最短路径来逼近。

算法特点

  1. 适用于学习内部平坦的低维流形。

  2. 不适用于学习有较大内在曲率的流形。

  3. 计算点对间的最短路径比较耗时。

LLE(Locally linear embedding)

  1. 显式利用“局部线性”的假设,流形学习的局部区域具有欧式空间的性质,那么在LLE中就假设某个点xi坐标可以由它周围的一些点的坐标线性组合求出。

  2. 保持局部邻域几何结构-重构权重。

  3. 权重对样本集的几何变幻具有不变性。

前提假设

  1. 采样数据所在的低维流形在局部是线性的。

  2. 每个采样点均可以利用其近邻样本进行线性重构表示。

学习目标

  1. 低维空间中保持每个邻域中的重构权值不变。

  2. 在嵌入映射为局部线性的条件下,最小化重构误差。

  3. 最终形式化为特征值分解问题。

优点

  1. 算法可以学习任意维的局部线性的低维流形

  2. 算法归结为稀疏矩阵特征值计算,计算复杂度相对较小。

  3. 降维过程中保持了数据的局部拓扑结构。

缺点

  1. 算法所学习的流形只能是不闭合的。

  2. 算法要求样本在流形上是稠密采样的。

  3. 算法对样本中的噪声和邻域参数比较敏感。

LLE算法流程

算法的主要步骤分为三步:

(1)寻找每个样本点的k个近邻点;

(2)由每个样本点的近邻点计算出该样本点的局部重建权值矩阵;

(3)由该样本点的局部重建权值矩阵和其近邻点计算出该样本点的输出值。

Input X: D by N matrix consisting of N data items in D dimensions.Output Y: d by N matrix consisting of d < D dimensional embedding coordinates for the input points.1. Find neighbours in X space [b,c].
for i=1:Ncompute the distance from Xi to every other point Xjfind the K smallest distances assign the corresponding points to be neighbours of Xi
end2. Solve for reconstruction weights W.
for i=1:Ncreate matrix Z consisting of all neighbours of Xi [d]subtract Xi from every column of Zcompute the local covariance C=Z'*Z [e]solve linear system C*w = 1 for w [f]set Wij=0 if j is not a neighbor of iset the remaining elements in the ith row of W equal to w/sum(w);
end3. Compute embedding coordinates Y using weights W.
create sparse matrix M = (I-W)'*(I-W)
find bottom d+1 eigenvectors of M(corresponding to the d+1 smallest eigenvalues)
set the qth ROW of Y to be the q+1 smallest eigenvector(discard the bottom eigenvector [1,1,1,1...] with eigenvalue zero)

LLE matlab代码

% LLE ALGORITHM (using K nearest neighbors)
%
% [Y] = lle(X,K,dmax)
%
% X = data as D x N matrix (D = dimensionality, N = #points)
% K = number of neighbors
% dmax = max embedding dimensionality
% Y = embedding as dmax x N matrix%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%function [Y] = lle(X,K,d)[D,N] = size(X);
fprintf(1,'LLE running on %d points in %d dimensions\n',N,D);% STEP1: COMPUTE PAIRWISE DISTANCES & FIND NEIGHBORS
fprintf(1,'-->Finding %d nearest neighbours.\n',K);X2 = sum(X.^2,1);
distance = repmat(X2,N,1)+repmat(X2',1,N)-2*X'*X;[sorted,index] = sort(distance);
neighborhood = index(2:(1+K),:);% STEP2: SOLVE FOR RECONSTRUCTION WEIGHTS
fprintf(1,'-->Solving for reconstruction weights.\n');if(K>D) fprintf(1,'   [note: K>D; regularization will be used]\n'); tol=1e-3; % regularlizer in case constrained fits are ill conditioned
elsetol=0;
endW = zeros(K,N);
for ii=1:Nz = X(:,neighborhood(:,ii))-repmat(X(:,ii),1,K); % shift ith pt to originC = z'*z;                                        % local covarianceC = C + eye(K,K)*tol*trace(C);                   % regularlization (K>D)W(:,ii) = C\ones(K,1);                           % solve Cw=1W(:,ii) = W(:,ii)/sum(W(:,ii));                  % enforce sum(w)=1
end;% STEP 3: COMPUTE EMBEDDING FROM EIGENVECTS OF COST MATRIX M=(I-W)'(I-W)
fprintf(1,'-->Computing embedding.\n');% M=eye(N,N); % use a sparse matrix with storage for 4KN nonzero elements
M = sparse(1:N,1:N,ones(1,N),N,N,4*K*N);
for ii=1:Nw = W(:,ii);jj = neighborhood(:,ii);M(ii,jj) = M(ii,jj) - w';M(jj,ii) = M(jj,ii) - w;M(jj,jj) = M(jj,jj) + w*w';
end;% CALCULATION OF EMBEDDING
options.disp = 0; options.isreal = 1; options.issym = 1;
[Y,eigenvals] = eigs(M,d+1,0,options);
Y = Y(:,2:d+1)'*sqrt(N); % bottom evect is [1,1,1,1...] with eval 0fprintf(1,'Done.\n');%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% other possible regularizers for K>D
%   C = C + tol*diag(diag(C));                       % regularlization
%   C = C + eye(K,K)*tol*trace(C)*K;                 % regularlization

LLE学习实例

调用上述LLE代码,作用在swiss_roll_data数据集中。

image

image

拉普拉斯特征映射(Laplacian Eigenmap)

基本思想

在高维空间中离的很近的点投影到低维空间中也应该离得很紧。

LE方法在黎曼几何的框架内,用邻接图来描述一个流形,并在映射到低维空间的过程中,保持了图的局部邻接关系。

LE的基本思想就是用一个无向有权图来描述一个流形,然后通过用图的嵌入(graph embedding)来找低维表示。简单来说,就是保持图的局部邻接关系的情况把这个图从高维空间中重新画在一个低维空间中(graph drawing)。

求解方法

求解图拉普拉斯算子的广义特征值问题。

优点

算法是局部非线性方法,与谱图理论有很紧密的联系。

算法通过求解稀疏矩阵的特征值问题解析的求出整体最优解,效率非常高。

算法使原空间中离得很近的点在低维空间中也离得很近,可以用于聚类。

缺点

对算法参数和数据采样密度比较敏感。

不能有效保持流形的全局几何结构。

拉普拉斯算子

image

图上的拉普拉斯算子

image

Laplacian Eigenmap算法流程

  1. 从样本点构建一个近邻图,图的顶点为样本点,离得很近的两点用边相连。(K近邻或undefined邻域)。

  2. 给每条边赋予权值,如果第i个点和第j个点不相连,权值为0,否则权值为1.

  3. 计算图拉普拉斯算子的广义特征向量,求得低维嵌入。

    令D为对角矩阵,undefined,L是近邻图上的拉普拉斯算子,求解广义特征值问题undefined

LTSA 算法

LTSA 采取先局部拟合再全局排列的思想,首先利用PCA求得各个样本邻域的近似切空间
,然后利用排列技术将各个切空间上的投影坐标进行全局排列来求得低维嵌入表示。给定采样于d维流形M的D维样本集 X = {x1,x2 ……,xn), d < D,N维样本个数,LTSA算法按照如下步骤求解低维嵌入:

(1) 邻域选择。 对每个样本xi,选择与其最近的k个样本(包括xi在内)构成局部邻域Xi。

(2) 基于PCA计算局部坐标。对局部邻域Xi,求投影矩阵V使得各样本到其投影的距离之和最小:

image

image

对Swiss Roll数据进行稠密采样(2000个样本点)和稀疏采样(400)个样本点后运行LTSA算法的二维嵌入结果。

image

稠密采样下能够较好的保持原始数据的拓扑几何结果。

而稀疏采样下的地位嵌入结果则较为杂乱,无法反映数据的几何结构。

参考资料

[1]中科院计算所,《流形学习专题》。

[2]浙江大学,何晓飞,《机器学习的几何观点》。

[3]简述多种降维方法

[4]Sam T. Roweis & Lawrence K. Saul,Locally Linear Embedding,

[5]J. B. Tenenbaum, V. de Silva and J. C. Langford, A Global Geometric Framework for Nonlinear
Dimensionality Reduction

流形学习(Manifold Learning)简单介绍相关推荐

  1. 四、降维——流形学习 (manifold learning)

    zz from prfans ...............................  dodo:流形学习 (manifold learning) dodo 流形学习是个很广泛的概念.这里我主 ...

  2. 流形学习 (Manifold Learning)

    流形学习 (manifold learning) zz from prfans ...............................  dodo:流形学习 (manifold learnin ...

  3. 机器学习:流形学习Manifold Learning之LLE(局部线性嵌入)

    流形学习被认为属于非线性降维的一个分支. 线性降维的图例如下: 原图: 线性降维后的图: 线性的算法基本就是这个样子,可以看到线性的算法能把最重要的维度们找出来,蛋卷的形状被保全了下来, 但是对很多应 ...

  4. 流形学习(Manifold Learning)以及推导

    流形学习(Manifold Learning) 前言 流行学习简介 主要的代表方法 1) Isomap (等距映射) Isomap算法步骤: 2) LLE(Locally Linear Embeddi ...

  5. 流形学习(Manifold Learning)

    流形学习(Manifold Learning) 前言 流行学习简介 主要的代表方法 1) Isomap (等距映射) Isomap算法步骤: 2) LLE(Locally Linear Embeddi ...

  6. 转发:很好理解流形学习的文章-浅谈流形学习(Manifold Learning)

    转 很好理解流形学习的文章-浅谈流形学习(Manifold Learning) 来源 Machine Learning 虽然名字里带了 Learning 一个词,让人乍一看觉得和 Intelligen ...

  7. 流形学习-Manifold Learning

    来源: 转载本文请联系原作者获取授权,同时请注明本文来自张重科学网博客. 链接地址:http://blog.sciencenet.cn/blog-722391-583413.html 流形(manif ...

  8. 浅谈流形学习(Manifold Learning)

    Machine Learning 虽然名字里带了 Learning 一个词,让人乍一看觉得和 Intelligence 相比不过是换了个说法而已,然而事实上这里的 Learning 的意义要朴素得多. ...

  9. 很好理解流形学习的文章-浅谈流形学习(Manifold Learning)

    来源 Machine Learning 虽然名字里带了 Learning 一个词,让人乍一看觉得和 Intelligence 相比不过是换了个说法而已,然而事实上这里的 Learning 的意义要朴素 ...

  10. 流行学习Manifold Learning

    文章目录 1.流行学习前言: 2.流形学习的概念 流形的概念: 流行学习的概念: 3.流形学习的分类 4.高维数据降维与可视化 5.基本问题和个人观点 6.参考文献 1.流行学习前言: 流形学习是个很 ...

最新文章

  1. 浅析ado.net获取数据库元数据信息
  2. python【力扣LeetCode算法题库】16- 最接近的三数之和
  3. html5——html5简介
  4. 奇咔咔机器人教育_奇咔咔机器人教育,提升孩子的注意力
  5. java算法之冒泡排序
  6. 蔚来事故启示录:被夸大的和被误导的自动驾驶
  7. Android 网络管理
  8. 【TWVRP】基于matalb粒子群算法求解带时间窗的多客户单仓库车辆路径规划问题【含Matlab源码 1407期】
  9. 矩阵连乘备忘录算法java_矩阵连乘(备忘录方法:自顶向下递归)
  10. object-c的继承
  11. 大数据,先推广应用再谈“共享”
  12. 历届全国大学生GIS应用技能大赛试题及数据
  13. Groundhog Chasing Death
  14. 机器视觉 · 工业光源
  15. 前端实习工作找不到,怎么增长实战经验
  16. Windows 7 SATA与XP IDE双启动多个磁盘
  17. Nasdaq股票代码表 zt
  18. python 日历壁纸_Excel+Python=精美DIY壁纸日历
  19. 毕设论文word撰写:如何实现公式居中,编号右对齐?其实非常简单!
  20. Java爬取王者荣耀英雄壁纸

热门文章

  1. 程序员为什么要学数学,要学多难的数学?|真实案例
  2. 【avif格式转换】python借助pillow实现avif转换为jpg,png等常见格式
  3. 如何使用子项目管理方案?
  4. 单片机知识:了解PWM调光
  5. 汽车转向灯的c语言程序,实验三 模拟汽车左右转向灯控制
  6. 用权重的分布规则去初始化权重
  7. Ansible-playbook的使用
  8. 微软q#_掌握Microsoft的P#
  9. 利用记事本编写Hello world 程序
  10. 单精度浮点数的取值,表示以及相关