原始特征的数量可能很大,或者说样本是处于一个高维空间中,通过映射或变换的方法,降高维数据降低到低维空间中的数据,这个过程叫特征提取,也称降维

特征提取得基本任务研究从众多特征中求出那些对分类最有效的特征,从而实现特征空间维数的压缩。传统的降维技术可以分为线性和非线性两类。

(1)线性降维算法主要有PCA(Principal Component Analysis)、MDS(Multidimensional Scaling)及ICA;

(2)非线性降维算法主要有自组织影射网络(Self-organising map, 生成拓扑映射(Generative Topographic mapping), 主曲线和表面(Principal Curves and Surfaces), 自编码神经网络(Auto-encoder Neural Networks)和线性混合模型(Mixtures of Linear Models)。 其中LLE,作为一种新的降维方法,既有非线性的特点,又有线性方法的优点,这几年成为人们研究的热点。

Sam T.Roweis 和 Lawrence K.Saul最近提出LLE算法,它是针对非线性数据的一种新的降维技术,并且能够使降维后的数据保持原有的拓扑结构。 LLE算法可以广泛的应用于非线性数据的降维、聚类以及图像分割等领域。 图1是一个将LLE应用于降维的例子, 它将三维空间中的数据(图1中的B)映射到二维空间中(图1中的C)。 如果把图1(B)中红颜色和蓝颜色的数据分别看成是分布在三维空间中的两类数据,通过LLE算法降维后, 则数据在二维空间中仍能保持相对独立的两类。由此LLE算法可以应用于样本的聚类

LLE是最新提出的非线性降维方法。该算法即具有处理非线性数据的优点又有线性降维方法计算性能的优越性。 简单的讲,该方法是将高维流型用剪刀剪成很多的小块,每一小块可以用平面代替,然后再低维中重新拼合出来, 且要求保留各点之间的拓扑关系不变。整个问题最后被转化为两个二次规划问题。

LLE算法可以归结为三步:

  • (1) 寻找每个样本点的k个近邻点;
  • (2)由每个样本点的近邻点计算出该样本点的局部重建权值矩阵;
  • (3)由该样本点的局部重建权值矩阵和其近邻点计算出该样本点的输出值。

算法的第一步是计算出每个样本点的k个近邻点。把相对于所求样本点距离最近的k个样本点规定为所求样本点的k个近邻点。k是一个预先给定值。Sam T.Roweis 和 Lawrence K.Saul算法采用的是欧氏距离,则减轻复杂的计算。然而本文是假定高维空间中的数据是非线性分布的,采用了diijstra距离。Dijkstra 距离是一种测地距离,它能够保持样本点之间的曲面特性,在ISOMAP算法中有广泛的应用。针对样本点多的情况,普通的dijkstra算法不能满足LLE算法的要求。

LLE算法的第二步是计算出样本点的局部重建权值矩阵。这里定义一个误差函数,如下所示:

其中 为 的k个近邻点, 是 与 之间的权值,且要满足条件: 。这里求取W矩阵,需要构造一个局部协方差矩阵  。

将上式与相结合,并采用拉格朗日乘子法,即可求出局部最优化重建权值矩阵:

在实际运算中,可能是一个奇异矩阵,此时必须正则化,如下所示:

其中r是正则化参数,I是一个kxk的单位矩阵。

LLE算法的最后一步将所有的样本点映射到低维空间中。映射条件满足如下所示:

其中,为损失函数值,的输出向量,的k个近邻点,且要满足两个条件,即:

其中I是的单位矩阵。这里的可以存储在的稀疏矩阵W中,当的近邻点时,,否则,。则损失函数可重写为:

其中M是一个的对称矩阵,其表达式为:

要使损失函数值达到最小, 则取Y为M的最小m个非零特征值所对应的特征向量。在处理过程中,将M的特征值从小到大排列,第一个特征值几乎接近于零,那么舍去第一个特征值。通常取第间的特征值所对应的特征向量作为输出结果。

参考 http://smilefuture.blog.sohu.com/54204609.html

[转]LLE的更多相关文章

  1. 四大机器学习降维算法:PCA、LDA、LLE、Laplacian Eigenmaps

    四大机器学习降维算法:PCA.LDA.LLE.Laplacian Eigenmaps 机器学习领域中所谓的降维就是指采用某种映射方法,将原高维空间中的数据点映射到低维度的空间中.降维的本质是学习一个映 ...

  2. 局部线性嵌入(LLE)原理总结

    局部线性嵌入(Locally Linear Embedding,以下简称LLE)也是非常重要的降维方法.和传统的PCA,LDA等关注样本方差的降维方法相比,LLE关注于降维时保持样本局部的线性特征,由 ...

  3. 用scikit-learn研究局部线性嵌入(LLE)

    在局部线性嵌入(LLE)原理总结中,我们对流形学习中的局部线性嵌入(LLE)算法做了原理总结.这里我们就对scikit-learn中流形学习的一些算法做一个介绍,并着重对其中LLE算法的使用方法做一个 ...

  4. ML: 降维算法-LLE

    局部线性嵌入 (Locally linear embedding)是一种非线性降维算法,它能够使降维后的数据较好地保持原有 流形结构 .LLE可以说是流形学习方法最经典的工作之一.很多后续的流形学习. ...

  5. LLE局部线性嵌入算法

    非线性降维 流形学习 算法思想有些类似于NLM,但是是进行的降维操作. [转载自] 局部线性嵌入(LLE)原理总结 - yukgwy60648的博客 - CSDN博客 https://blog.csd ...

  6. 【转】四大机器学习降维算法:PCA、LDA、LLE、Laplacian Eigenmaps

    最近在找降维的解决方案中,发现了下面的思路,后面可以按照这思路进行尝试下: 链接:http://www.36dsj.com/archives/26723 引言 机器学习领域中所谓的降维就是指采用某种映 ...

  7. 降维算法整理--- PCA、KPCA、LDA、MDS、LLE 等

    转自github: https://github.com/heucoder/dimensionality_reduction_alo_codes 网上关于各种降维算法的资料参差不齐,同时大部分不提供源 ...

  8. 机器学习降维方法概括, LASSO参数缩减、主成分分析PCA、小波分析、线性判别LDA、拉普拉斯映射、深度学习SparseAutoEncoder、矩阵奇异值分解SVD、LLE局部线性嵌入、Isomap等距映射

    机器学习降维方法概括   版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u014772862/article/details/52335970 最近 ...

  9. 吴裕雄 python 机器学习——局部线性嵌入LLE降维模型

    # -*- coding: utf-8 -*- import numpy as np import matplotlib.pyplot as plt from sklearn import datas ...

随机推荐

  1. 关于spring的简概

    一.Spring入门操作 IOC 创建对象 <bean id="user" class="com.itheima.domain.User">< ...

  2. linux 之基本命令学习总结

    前言:从今天开始写这系列linux博客了(是学习刘遄老师的<linux就该这么学>),视频学习的资源可以在b站上找到:https://www.bilibili.com/video/av45 ...

  3. Java基础笔记(四)——命名规则、数据类型

    标识符即Java程序中需要自定义的名称,如变量名.方法名.类名.包名.工程名等. 标识符的命名规则: 1.可由字母.数字.下划线(_)和美元符($)组成,不能以数字开头. 2.严格区分大小写. 3.不 ...

  4. 在线获取键盘按键值(ascii码)工具

    在线获取键盘按键值(ascii码)工具 http://www.bejson.com/othertools/keycodes/ 可以根据输入的值获取对应的键盘ascii码值

  5. Codeforces Round #433 (Div. 2, based on Olympiad of Metropolises) D

    Country of Metropolia is holding Olympiad of Metrpolises soon. It mean that all jury members of the ...

  6. mac下配置php+mysql+nginx遇到的问题

    1.mysql:没有useradd和groupadd命令,好在原来的/etc/passwd有了mysql,www用户,/etc/group下也有了mysql,www用户组 2.nginx:编译ngin ...

  7. poj 2406 Power Strings 后缀数组解法

    连续重复子串问题 poj 2406 Power Strings http://poj.org/problem?id=2406 问一个串能否写成a^n次方这种形式. 虽然这题用kmp做比较合适,但是我们 ...

  8. autofac 注入生命周期

    创建实例方法 1.InstancePerDependency 对每一个依赖或每一次调用创建一个新的唯一的实例.这也是默认的创建实例的方式. 官方文档解释:Configure the component ...

  9. nodejs 实践:express 最佳实践(五) connect解析

    nodejs 实践:express 最佳实践(五) connect解析 nodejs 发展很快,从 npm 上面的包托管数量就可以看出来.不过从另一方面来看,也是反映了 nodejs 的基础不稳固,需 ...

  10. JSTORM中IRichBolt与IBasicBolt的区别