局部线性嵌入(LLE)
关于LLE可参考局部线性嵌入(LLE)原理总结。本文对上述博客中第三节LLE算法推导给出一些自己的理解。
LLE算法推导
对于LLE算法,我们首先要确定邻域大小的选择,即我们需要多少个邻域样本来线性表示某个样本。假设这个值为k。我们可以通过和KNN一样的思想通过距离度量比如欧式距离来选择某样本的k个最近邻。
在寻找到某个样本的xix_ixi的k个最近邻之后我们就需要xix_ixi找到和这k个最近邻之间的线性关系,也就是要找到线性关系的权重系数。找线性关系,这显然是一个回归问题。假设我们有m个n维样本{x1,x2,...,xm}\{x_1,x_2,...,x_m\}{x1,x2,...,xm},我们可以用均方差作为回归问题的损失函数:即:
J(w)=∑i=1m∣∣xi−∑j∈Q(i)wijxj∣∣22J(w) = \sum\limits_{i=1}^{m}||x_i-\sum\limits_{j \in Q(i)}w_{ij}x_j||_2^2J(w)=i=1∑m∣∣xi−j∈Q(i)∑wijxj∣∣22
其中,Q(i)Q(i)Q(i)表示iii的k个近邻样本集合。一般我们也会对权重系数wij做归一化的限制,即权重系数需要满足
∑j∈Q(i)wij=1\sum\limits_{j \in Q(i)}w_{ij} = 1j∈Q(i)∑wij=1
也就是我们需要通过上面两个式子求出我们的权重系数。一般我们可以通过矩阵和拉格朗日子乘法来求解这个最优化问题。
对于第一个式子,我们先将其矩阵化:
J(W)=∑i=1m∣∣xi−∑j∈Q(i)wijxj∣∣22=∑i=1m∣∣∑j∈Q(i)wijxi−∑j∈Q(i)wijxj∣∣22=∑i=1m∣∣∑j∈Q(i)wij(xi−xj)∣∣22=∑i=1mWiTPiTPiWi\begin{align} J(W) & = \sum\limits_{i=1}^{m}||x_i-\sum\limits_{j \in Q(i)}w_{ij}x_j||_2^2 \\& = \sum\limits_{i=1}^{m}||\sum\limits_{j \in Q(i)}w_{ij}x_i-\sum\limits_{j \in Q(i)}w_{ij}x_j||_2^2 \\& = \sum\limits_{i=1}^{m}||\sum\limits_{j \in Q(i)}w_{ij}(x_i-x_j)||_2^2 \\& = \sum\limits_{i=1}^{m} W_i^TP_{i}^TP_iW_i \end{align} J(W)=i=1∑m∣∣xi−j∈Q(i)∑wijxj∣∣22=i=1∑m∣∣j∈Q(i)∑wijxi−j∈Q(i)∑wijxj∣∣22=i=1∑m∣∣j∈Q(i)∑wij(xi−xj)∣∣22=i=1∑mWiTPiTPiWi
其中Wi=(wi1,wi2,...wik)TW_i =(w_{i1}, w_{i2},...w_{ik})^TWi=(wi1,wi2,...wik)T,矩阵Pi=[xi−xj],j∈Q(i)P_i=[x_i-x_j], j \in Q(i)Pi=[xi−xj],j∈Q(i)。
令矩阵Zi=PiTPiZ_i=P_{i}^TP_iZi=PiTPi,则第一个式子进一步简化为J(W)=∑i=1mWiTZiWiJ(W) = \sum\limits_{i=1}^{m} W_i^TZ_iW_iJ(W)=i=1∑mWiTZiWi。对于第二个式子,我们可以矩阵化为:
∑j∈Q(i)wij=WiT1k=1\sum\limits_{j \in Q(i)}w_{ij} = W_i^T1_k = 1j∈Q(i)∑wij=WiT1k=1
其中1k1_k1k为k维全1向量。
现在我们将矩阵化的两个式子用拉格朗日子乘法合为一个优化目标:
L(W)=∑i=1mWiTZiWi+λ(WiT1k−1)L(W) = \sum\limits_{i=1}^{m} W_i^TZ_iW_i + \lambda(W_i^T1_k - 1) L(W)=i=1∑mWiTZiWi+λ(WiT1k−1)
对WWW求导并令其值为0,我们得到:
2ZiWi+λ1k=02Z_iW_i + \lambda1_k = 02ZiWi+λ1k=0
即
Wi=λ′Zi−11kW_i = \lambda'Z_i^{-1}1_kWi=λ′Zi−11k
其中λ′=−12λλ'=−\frac{1}{2}λλ′=−21λ为一个常数。利用WiT1k=1W_{i}^T1_k=1WiT1k=1,对WiW_iWi归一化,那么最终我们的权重系数WiW_iWi为:
Wi=Zi−11k1kTZi−11kW_i = \frac{Z_i^{-1}1_k}{1_k^TZ_i^{-1}1_k} Wi=1kTZi−11kZi−11k
现在我们得到了高维的权重系数,那么我们希望这些权重系数对应的线性关系在降维后的低维一样得到保持。假设我们的n维样本集{x1,x2,...,xm}\{x_1,x_2,...,x_m\}{x1,x2,...,xm}在低维的d维度对应投影为{y1,y2,...,ym}\{y_1,y_2,...,y_m\}{y1,y2,...,ym},则我们希望保持线性关系,也就是希望对应的均方差损失函数最小,即最小化损失函数J(Y)J(Y)J(Y)如下:
J(Y)=∑i=1m∣∣yi−∑j=1kwijyj∣∣22J(Y) = \sum\limits_{i=1}^{m}||y_i-\sum\limits_{j=1}^{k}w_{ij}y_j||_2^2 J(Y)=i=1∑m∣∣yi−j=1∑kwijyj∣∣22
对于不在样本xix_ixi邻域内的样本xjx_jxj,我们令对应的wij=0w_{ij}=0wij=0,这样可以把www扩展到整个数据集的维度。则有
J(Y)=∑i=1m∣∣yi−∑j=1mwijyj∣∣22J(Y) = \sum\limits_{i=1}^{m}||y_i-\sum\limits_{j=1}^{m}w_{ij}y_j||_2^2 J(Y)=i=1∑m∣∣yi−j=1∑mwijyj∣∣22
可以看到这个式子和我们在高维的损失函数几乎相同,唯一的区别是高维的式子中,高维数据已知,目标是求最小值对应的权重系数WWW,而我们在低维是权重系数WWW已知,求对应的低维数据。注意这里WWW的维数为m×mm \times mm×m,其中对应的列为权重,列和为1。
为了得到标准化的低维数据,一般我们也会加入约束条件如下:
∑i=1myi=0;1m∑i=1myiyiT=I\sum\limits_{i=1}^{m}y_i =0;\;\; \frac{1}{m}\sum\limits_{i=1}^{m}y_iy_i^T = Ii=1∑myi=0;m1i=1∑myiyiT=I
首先我们将目标损失函数矩阵化:
J(Y)=∑i=1m∣∣yi−∑j=1mwijyj∣∣22=∑i=1m∣∣YIi−YWi∣∣22=tr(Y(I−W)(I−W)TYT)\begin{align} J(Y) & = \sum\limits_{i=1}^{m}||y_i-\sum\limits_{j=1}^{m}w_{ij}y_j||_2^2 \\& = \sum\limits_{i=1}^{m}||YI_i-YW_i||_2^2 \\& = tr(Y(I-W)(I-W)^TY^T) \end{align} J(Y)=i=1∑m∣∣yi−j=1∑mwijyj∣∣22=i=1∑m∣∣YIi−YWi∣∣22=tr(Y(I−W)(I−W)TYT)
其中Y=[y1,y2,...,ym]Y=[y_1,y_2,...,y_m]Y=[y1,y2,...,ym],(6)式到(7)式利用的迹的性质
tr(AB)=tr(BA)tr(AB) =tr(BA)tr(AB)=tr(BA)
余下内容可见局部线性嵌入(LLE)原理总结
局部线性嵌入(LLE)相关推荐
- 流行学习、流形学习家族、局部线性嵌入LLE、随机投影(Random Projection)、t-SNE降维及可视化
流行学习.流形学习家族.局部线性嵌入LLE.随机投影(Random Projection).t-SNE降维及可视化 目录 流行学习.流形学习家族.局部线性嵌入LLE.随机投影(Random Proje ...
- 用scikit-learn研究局部线性嵌入(LLE)
1. scikit-learn流形学习库概述 在scikit-learn中,流形学习库在sklearn.manifold包中.里面实现的流形学习算法有: 1)多维尺度变换MDS算法:这个对应的类是MD ...
- 局部线性嵌入(LLE)原理总结
局部线性嵌入(Locally Linear Embedding,以下简称LLE)也是非常重要的降维方法.和传统的PCA,LDA等关注样本方差的降维方法相比,LLE关注于降维时保持样本局部的线性特征,由 ...
- 局部线性嵌入LLE算法--学习笔记
流形学习是一大类基于流形的框架,形象说明流形降维: ISOMAP(更多细节可参考:isomap降维算法--学习笔记_Wsyoneself的博客-CSDN博客): LLE: 和传统的PCA,LDA等关注 ...
- 局部线性嵌入(LLE)算法matlab可运行
本文主要是学习LLE算法,可视化原作者给的例程,具体原理请移步参考.如有侵权,请联系删除. 文章目录 绘图结果 代码 参考 绘图结果 以上图片分别为运行代码:scurve_jian.m 和swissr ...
- 两种降维方法的总结——LLE(局部线性嵌入),ISOMAP(等度量映射)
简介 流形学习是一类借鉴了拓扑流形概念的降维方法.流形是在局部与欧式空间同胚的空间,换言之,它在局部具有欧式空间的性质,能用欧式距离来进行距离计算.若低维流形嵌入到高维空间中,则数据样本在高维空间的分 ...
- lle算法c 语言,局部线性嵌入算法(LLE)与其Python实现-Go语言中文社区
PCA是至今为止运用最为广泛的数据降维算法,它通过最小化重构误差达到将高维数据映射到低维并同时保留数据中所存在的绝大部分信息.但是一般的PCA也有缺点,它只能实现线性降维.当然现在也有kernel P ...
- 局部线性嵌入(Locally Linear Embedding,简称LLE)
局部线性嵌入(Locally Linear Embedding,简称LLE) 1 绪论 与Isomap试图保持邻域内样本之间的距离不同,局部线性嵌入(Locally Linear Embedding, ...
- 机器学习:流形学习Manifold Learning之LLE(局部线性嵌入)
流形学习被认为属于非线性降维的一个分支. 线性降维的图例如下: 原图: 线性降维后的图: 线性的算法基本就是这个样子,可以看到线性的算法能把最重要的维度们找出来,蛋卷的形状被保全了下来, 但是对很多应 ...
最新文章
- mysql安装图解 mysql图文安装教程(详细说明)
- hadoop伪分布式安装
- Too many connections解决方法
- Python Django设置中文语言及时区
- 转载+记录数据增广的八种常用方式
- caffe matlab 重启,Matlab caffe 具体使用方法
- win系统CH341驱动安装方法
- 网站/APP统计分析工具及教程
- E企云企业邮箱,选了不后悔
- 2019年严峻的就业形式 如何跳出被裁员的魔圈
- php猜拳,JavaScript面向对象实现猜拳游戏
- 【视频分享】尚硅谷Java视频教程_SpringBoot视频教程
- C#,图像二值化(24)——局部阈值算法的NiBlack算法及源程序
- 度过漫长又艰辛的 2020 年,我收集了 1273 人的年度感悟
- java中报405错误怎么办_405错误的解决方法
- CapsuleNet的一个小例子
- C编程 求1到100之间的奇偶数之和
- python安装 Autodesk FBX 包
- 技术团队负责人应该具备怎样的能力
- 重返月球,铺路火星:2024年首位女性登月,280亿美元开启太空探索新纪元-1
热门文章
- 无刷直流电机矢量控制(三):坐标变换
- 最赚钱的行业和公司排行榜(verified 版本)
- 第二讲 实现Typecho前台注册
- macOS Monterey 12.6.6 (21G646) 正式版发布,ISO、IPSW、PKG 下载
- 以太网(局域网)交换机工作原理
- Scala系列-4、scala中特质、柯里化、闭包等
- windows Domain-Adaptive-Faster-RCNN-PyTorch编译记录
- 全网最稀缺的安卓工具资源APPMT管理+NP管理+云注入+云注入入口解密工具+Apk单机弹窗注入+小黄鸟+黑盒(32位)+黑盒(64位)+算法助手+mhook等等……
- 业务安全 –业务逻辑漏洞
- python用BeautifulSoup抓取知乎小药丸