目录

LLE(Locally linear Embedding)

基本思想

Step1 最近邻确定与最佳权重

step2 全局嵌入学习模型

step3 求解优化问题

算法步骤

MATLAB程序实现

总的MATLAB代码


流形学习,全称流形学习方法(Manifold Learning),自2000年在著名的科学杂志《Science》被首次提出以来,已成为信息科学领域的研究热点。在理论和应用上,流形学习方法都具有重要的研究意义。假设数据是均匀采样于一个高维欧氏空间中的低维流形,流形学习就是从高维采样数据中恢复低维流形结构,即找到高维空间中的低维流形,并求出相应的嵌入映射,以实现维数约简或者数据可视化。它是从观测到的现象中去寻找事物的本质,找到产生数据的内在规律。(百度百科)

下面我们将介绍三种流形学习及其在瑞士卷上的应用

LLE(Locally linear Embedding)

LLE 方法是发表在science上的文章, 是流形学习的开山之作,自然被最先介绍。论文地址为

S. Roweis and L. Saul, “Nonlinear dimensionality reduction by locally linear embedding,” Science, vol. 290, pp. 2323–2326, 2000.

基本思想

给定数据集,通过最近邻等方式构造一个数据图(data graph)。然后在每一个局部区域,高维空间中的样本线性重构关系在低维空间中均得以保持。

Step1 最近邻确定与最佳权重

对于数据集中的任意一个x_i, 按照欧式距离我们确定出离它最近的 k 个元素, 记为 x_{i_j}, 我们计算x_i 的最优权重表示

由拉格朗日乘子法,可得 W_i 的线性表示解为

$$W_i=\frac{(X_i^TX_i)^{-1}e}{e^T(X_i^TX_i)^{-1}e}$$

其中

e =(1,1,\cdots,1)^T\in \mathbb{R}^k,\\ X_i=(x_{i_1},x_{i_2},\cdots,x_{i_k})\in \mathbb{R}^{m\times k},\\ W_i=(w_{i,i_1},w_{i,i_2},\cdots,w_{i,i_k})\in \mathbb{R}^k.

step2 全局嵌入学习模型

我们希望对于降维后的数据也有这种局部线性重构关系, 即

y_i \approx \sum_{j=1}^k w_{i,i_j}y_{i_j},

故有此可得目标函数

\sum_{i=1}^m\Vert y_i -\sum_{j=1}^k w_{i,i_j}y_{i_j}\Vert_2^2=tr(Y(I-W)^T(I-W)Y^T)

故学习模型为

\min\limits_{Y}\quad tr(Y(I-W)^T(I-W)Y^T)\quad s.t. \quad YY^T=I.

step3 求解优化问题

对矩阵 (I-W)^T(I-W ) 进行特征分解

  1. 取出该矩阵最小的k+1个特征值对应的特征向量
  2. 丢弃特征值零对应的分量全相等的特征向量
  3. 即采用第2至第d+1个最小的特征值对应的特征向量组成样本的新的坐标

由于我们侧重于程序实现,故具体证明细节不作展开只作简要分析,可以参考这篇博客查看具体细节

https://www.cnblogs.com/pinard/p/6266408.html?utm_source=itdadao&utm_medium=referral

算法步骤

MATLAB程序实现

考虑对如下瑞士卷数据进行分类

    N = 2000;rand('state',123456789);%Gaussian noisenoise = 0.001*randn(1,N);%standard swiss roll datatt = (3*pi/2)*(1+2*rand(1,N));   height = 21*rand(1,N);X = [(tt+ noise).*cos(tt); height; (tt+ noise).*sin(tt)];

将其可视化

    %show the picturepoint_size = 20;figure(1)clascatter3(X(1,:),X(2,:),X(3,:), point_size,tt,'filled');view([12 12]); grid off; axis off; hold on;axis off;axis equal;drawnow;

我们取最近邻个数为12 ,降维为2维,即

k = 12;
d = 2;
X = X';

计算每个元素对应的最近邻元素,并按照

来计算 W 的值, 此处lambda是为了防止矩阵奇异

[m, ~] = size(X); % d < ~
lambda = 1e-10;
W = zeros(m);
e = ones(k,1);
for i =1 : mxx = repmat(X(i, :), m, 1);diff = xx - X;dist = sum(diff.* diff, 2);[~, pos] = sort(dist);index = pos(1 : k + 1)';index(index == i) = [];w_numerator = (X(index, :) * X(index, :)' + lambda * eye(k)) \ e;w_denominator = e' * w_numerator;w = w_numerator / w_denominator;W(i, index) = w;
end

令 A =(I-W)^T(I-W), 则问题的解为 A的第2到d+1个小特征值对应的特征向量,即

W =sparse(W);
I = eye(m);
A = (I - W)' * (I - W);
[eigenvector, eigenvalue] = eig(A);
eigenvalue = diag(eigenvalue);
[~,pos] = sort(eigenvalue);
index = pos(1: d+1);
tran = eigenvector(:, index);
p =sum(tran.*tran);
j = find(p == min(p));
tran(:, j) = [];
X = tran;

最后显示降维结果

figure(2)
scatter(X(:,1),X(:,2),point_size, tt,'filled');
grid off; axis off;

总的MATLAB代码

function X = LLE(X, k, d)
%% minifold learning: locally linear embedding
% k : neighbors
% x : data set
% d : low dimension;
if nargin < 1N = 2000;rand('state',123456789);%Gaussian noisenoise = 0.001*randn(1,N);%standard swiss roll datatt = (3*pi/2)*(1+2*rand(1,N));   height = 21*rand(1,N);X = [(tt+ noise).*cos(tt); height; (tt+ noise).*sin(tt)];%show the picturepoint_size = 20;figure(1)clascatter3(X(1,:),X(2,:),X(3,:), point_size,tt,'filled');view([12 12]); grid off; axis off; hold on;axis off;axis equal;drawnow;X = X';k = 12;d = 2;
end
[m, ~] = size(X); % d < ~
lambda = 1e-10;
W = zeros(m);
e = ones(k,1);
for i =1 : mxx = repmat(X(i, :), m, 1);diff = xx - X;dist = sum(diff.* diff, 2);[~, pos] = sort(dist);index = pos(1 : k + 1)';index(index == i) = [];w_numerator = (X(index, :) * X(index, :)' + lambda * eye(k)) \ e;w_denominator = e' * w_numerator;w = w_numerator / w_denominator;W(i, index) = w;
end
W =sparse(W);
I = eye(m);
A = (I - W)' * (I - W);
[eigenvector, eigenvalue] = eig(A);
eigenvalue = diag(eigenvalue);
[~,pos] = sort(eigenvalue);
index = pos(1: d+1);
tran = eigenvector(:, index);
p =sum(tran.*tran);
j = find(p == min(p));
tran(:, j) = [];
X = tran;
figure(2)
scatter(X(:,1),X(:,2),point_size, tt,'filled');
grid off; axis off;

下一篇我们将介绍 Isomap 算法的思想及实现,详见

https://blog.csdn.net/waitingwinter/article/details/105469511

流形学习(一)LLE 在 MATLAB 中的实现及实例相关推荐

  1. matlab中有趣的图像,MATLAB中有趣的演示实例

    MATLAB中有趣的演示实例 MATLAB中也同样有许多有意思的实例,为提高读者对MATLAB和Simulink的兴趣,特举部分以供参考.具体如下,运行的时候只要将":"前面的代码 ...

  2. 单目相机(Mono camera)在MATLAB中的表示与实例

    目录 1 概述 2 单目相机(Mono camera) 2.1 基本概念 2.2 车体坐标系到相机坐标系 2.3 相机坐标系到像素坐标系 2.4 相关类和函数 2.4.1 monoCamera类 2. ...

  3. 鸟瞰图-BirdView及其在MATLAB中的表示与实例

    目录 1 什么是鸟瞰图 2 MATLAB鸟瞰图 2.1 birdsEyePlot 2.2 birdsEyeView 3 参考 完 1 什么是鸟瞰图 顾名思义,鸟瞰图就是从鸟的视角去俯视看到的视图,好处 ...

  4. LM(Levenberg-Marquadrdt )算法在MATLAB中的实现及实例

    LM算法简介 考虑如下非线性最小二乘问题 min ⁡ f ( x ) = 1 2 ∥ r ( x ) ∥ 2 , \min \quad f(x) = \frac{1}{2}\Vert r(x)\Ver ...

  5. 流形学习(二) Isomap 在 MATLAB 中的实现及实例

    目录 Isomap(isometric feature mapping) 基本思想 step1 最近邻确定与权重矩阵 step2 确定点对之间的测地距离 step3 MDS Algorithm(Mul ...

  6. isomap的matlab实现,流形学习(二) Isomap 在 MATLAB 中的实现及实例

    降维后的样本仍保持两两之间的距离 假设我们原始样本为   降维后的样本为   我们试图寻找  之间的关系. 我们引入中心化矩阵  不失一般性, 令降维后的样本是零均值的, 即 . 令  为内积矩阵,简 ...

  7. matlab学习笔记:如何在matlab中如何自定义函数和匿名函数

    matlab在一定程度上也能完成编程工作,其程序语言是由C++演变过来的,但却又不尽相同.matlab的程序语言在拓展性上没有C++齐全,但也足够应付一些简单的程序,而且比C++更易于学习. inpu ...

  8. 流形学习之LLE(LocallyLinearEmbedding)模型

    sklearn.manifold.LocallyLinearEmbedding The sklearn.manifold module implements data embedding techni ...

  9. matlab中有关约束条件的实例,数学建模第3讲MATLAB的具体实例.ppt

    * 问题一: 某厂每日8小时的产量不低于1800件.为了进行质量控制,计划聘请两种不同水平的检验员.一级检验员的标准为:速度25件/小时,正确率98%,计时工资4元/小时:二级检验员的标准为:速度15 ...

最新文章

  1. 直播预告|灵动MM32 MCU助力全国大学生智能汽车竞赛——基础培训第二讲
  2. 传播路径可训练的神经网络(云上人二代)
  3. Vue开发跨端应用(一)环境搭建
  4. 爬虫请求库 requests
  5. Perl输出复杂数据结构:Data::Dumper,Data::Dump,Data::Printer
  6. Java案例:基于TCP的简单聊天程序
  7. Linux系统学习: 用户和权限管理指令: 请简述 Linux 权限划分的原则
  8. Nodejs模块初始化
  9. MFC工作笔记0005---::在vc++中是什么意思
  10. python select實現非阻塞socket
  11. Windows Server 2012 将资源发布到 AD DS
  12. Hive的行转列及列转行函数使用总结
  13. html中表格table的内容居中显示
  14. 【2013】将x插入有序数列
  15. 计算机控制面板程序可以设置鼠标,外设门诊:游戏中如何使用鼠标宏提升操作...
  16. 超详细的 Python 方法、函数总结
  17. Extjs6 学习(一)
  18. 使用网络数据采集的好处
  19. Gallery 是国外一个免费开源的图库相册软件
  20. UVALive 4490 Help Bubu

热门文章

  1. 计算机二级电子表格公式怎么记,计算机二级Excel操作公式.doc
  2. Spark SQL Guide——Data Sources
  3. 单机处理1T文件的计算方案
  4. Unity Dropdown 图片Option(sprite)
  5. Kate  一款功能丰富的文本编辑器(可能是目前最好的开源跨平台轻量编辑器 之一)
  6. Dirty COW漏洞原理与简单利用
  7. 盘点 | 北京冬奥会上的那些 AI 黑科技,深延科技全都有
  8. zed相机拆机_ZED 迷你相机:将 VR 转变成 AR 的黑科技
  9. request的基本用法
  10. 爬取(快递100)网页,实现用代码查询物流信息