【PyTorch][chapter 15][李宏毅深度学习][Neighbor Embedding-LLE]

前言:

     前面讲的都是线性降维,本篇主要讨论一下非线性降维.

流形学习(mainfold learning)是一类借鉴了拓扑流行概念的降维方法.

      如上图,欧式距离上面 A 点跟C点更近,距离B 点较远

     但是从图形拓扑结构来看, B 点跟A点更近


目录:

  1.    LLE 简介
  2.    高维线性重构
  3.    低维投影
  4.     Python 例子


一  局部线性嵌入(LLE Locally Linear Embedding )

           局部线性嵌入(Locally Linear Embedding,以下简称LLE)也是非常重要的降维方法。和传统的PCA,LDA等关注样本方差的降维方法相比,LLE关注于降维时保持样本局部的线性特征,由于LLE在降维时保持了样本的局部特征,它广泛的用于图像图像识别,高维数据可视化等领域。下面我们就对LLE的原理做一个总结。

   1.1  LLE 思想

          比如我们有一个样本 x_1,我们在它的原始高维邻域里用K-近邻算法(k=3)找到和它最近的三个样本 x_2,x_3,x_4    然后我们假设x_1,  可以由 x_2,x_3,x_4  线性表示,即:     

            x_1=w_{12}x_2+w_{13}x_3+w_{14}x_4w_{12},w_{13},w_{14}为权重系数。

   在我们通过LLE降维后,我们希望 x_1 在低维空间对应的投影z_1  ′和  x_2,x_3,x_4  对应的投影 z_2,z_3,z_4  也尽量保持同样的线性关系,即

              z_1=w_{12}z_2+w_{13}z_3+w_{14}z_4

 LLE算法的主要优点有:

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

    2)算法归结为稀疏矩阵特征分解,计算复杂度相对较小,实现容易。

    LLE算法的主要缺点有:

    1)算法所学习的流形只能是不闭合的,且样本集是稠密均匀的。

    2)算法对最近邻样本数的选择敏感,不同的最近邻数对最后的降维结果有很大影响。


二  高维线性重构

         设有m个n维的样本

                        \begin{bmatrix} x_1\\ x_2 \\ .. \\ x_m \end{bmatrix}

        使用均方差作为损失函数

           J(W)=\sum_{i=1}^{m}||x_i-\sum_{j\in Q(i)}w_{ij}x_j||_2^2

        其中:

             Q(i): 按照欧式距离作为度量, 计算和样本点 x_i最近的的k个最近邻

               w_{ij}: 权重系数为标量,\sum_{j \in Q(i)} w_{ij}=1

       则

         J(W)=\sum_{i=1}^{m}||x_i\sum_{j\in Q(i)}w_{ij}-\sum_{j\in Q(i)}w_{ij}x_j||_2^2

                     =\sum_{i=1}^{m}||\sum_{j\in Q(i)}w_{ij }x_i-\sum_{j\in Q(i)}w_{ij}x_j||_2^2

                     =\sum_i \sum_j ||w_{ij}(x_i-x_j)||_2^2

                    =\sum_i W_i^T(x_i-x_j)(x_i-x_j)^TW_i

          例:

              

         设

                   S_i=(x_i-x_j)(x_i-x_j)^T(对称矩阵)

          则:

                   J(w)=\sum_{i}W_i^TS_iW_i

                加上约束条件

                  W_i^T1_K=1 其中

                      1_k=\begin{bmatrix} 1\\ 1 \\ .. \\ 1 \end{bmatrix} k行全1的列向量

             现在我们将矩阵化的两个式子用拉格朗日子乘法合为一个优化目标:

             L(W_i)=\sum_{j}W_i^TS_iW_i+\lambda(W_i^T1_k-1)

             对W_i求导并令其值为0,我们得到

             2S_iW_i+\lambda 1_k=0(前半部分 利用了S_i的对称性简化了)

            W_i=\frac{-\lambda}{2}(S_i)^{-1}1_k(公式1)

                   =\frac{S_i^{-1}1_k}{1_k^TS_i^{-1}1_k}(公式2)

公式2的解原理 

由约束条件:   W_i^T1_K=1  ,1_k^TW_i=1

已知:            W_i=\frac{-\lambda}{2}(S_i)^{-1}1_k

        则       

       1_k^TW_i=1

        1_k^T\frac{-\lambda}{2}S_i^{-1}1_k=1

         \frac{-\lambda}{2}=1/(1_k^TS_i^{-1}1_k)

     重新带入公式1 ,即得到公式2

          W_i=\frac{S_i^{-1}1_k}{1_k^TS_i^{-1}1_k}


三  低维投影

          我们得到了高维的权重系数W,那么我们希望这些权重系数对应的线性关系在降维后的低维一样得到保持。假设我们的n维样本集{x_1,x_2,...x_m}在低维的d维度对应投影为{z_1,z_2,...z_m}, 则我们希望保持线性关系,也就是希望对应的均方差损失函数最小,即最小化损失函数J(Y)如下:

                 J(z)=\sum_{i=1}^{m}||z_i-\sum_j^{m}w_{ij}z_j||_2^2

  注意:

       低维的损失函数中: 权重系数W已知,目标是求最小值对应的数据z

        W:   是[m,m]矩阵,我们将那些不在邻域位置的W_i的位置取值为0,将W扩充到m×m维度。

一般我们也会加入约束条件如下:

     \sum_{i=1}^{m}z_i=0

     \frac{1}{m}\sum_{i=1}^{m}z_iz_i^T=E: 单位矩阵

3.1 原理推导  

Z\sim R^{d*m}

损失函数为

 J(Z)=\sum_{i=1}^{m}||z_i-\sum_{j}^{m}W_{ij}z_j||_2^2

            =\sum_{i=1}^{m}||ZE_i-ZW_i||_2^2(步骤一)

            =\sum_{i=1}^{m}||Z(E_i-W_i)||_2^2

              =tr(Z(E-W)(E-W)^TZ^T)

备注: 步骤一原理

其中I_i, W_i 为m 行一列的列向量

下面一步推导用到了该知识:

tr(aa^T)=\sum_{i=1}^{m}a_i^2

a=\begin{bmatrix} a_1\\ a_2 \\ .... \\ a_m \end{bmatrix}

设 

M=(E-W)(E-W)^T

J(Z)=tr(ZMZ^T)

加上约束条件,得到拉格朗日函数

L(Z)=tr(ZMZ^T+\lambda(ZZ^T-mE))

对Z 求微分

2MZ^T+2\lambda Z^T=0

MZ^T=\lambda^{'} Z^T

要得到最小的d维数据集,我们需要求出矩阵M最小的d个特征值所对应的d个特征向量组成的矩阵Z=(z_1,z_2,..z_d)

由于M的最小特征值为0不能反应数据特征,此时对应的特征向量为全1。我们通常选择M的第2个到第d+1个最小的特征值对应的特征向量

2.2 为什么M的最小特征值为0呢?

前面知道约束条件: W^Te=1*e,

                                (W^T-E)e=0(注意大E和小e 不一样,前面是单位矩阵,后面是全1的列向量)

                              (E-W^T)e=0

                              (E-W)(E-W^T)e=0*(E-W)=0

                               (E-W)(E-W^T)e=0*e

                            所以最小的特征值为0,对应的特征向量为全1的列向量。

把该最小特征值丢弃

W^T=\begin{bmatrix} W_1^T\\ .... \\ W_i^T\\ ....\\ W_m^T\end{bmatrix}e=\begin{bmatrix} 1\\ 1 \\ ... \\ 1 \end{bmatrix}   W_1^Te=1,W_2^Te=1,..W_i^T=e


四 Python 例子

# -*- coding: utf-8 -*-
"""
Created on Wed Feb  7 17:02:55 2024@author: chengxf2
"""import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from sklearn import manifold, datasets
from sklearn.utils import check_random_statedef generateData(m = 500):random_state = check_random_state(0)p = random_state.rand(m) * (2 * np.pi - 0.55)t = random_state.rand(m) * np.pi# 让球体不闭合,符合流形定义indices = ((t < (np.pi - (np.pi / 8))) & (t > ((np.pi / 8))))colors = p[indices]x, y, z = np.sin(t[indices]) * np.cos(p[indices]), \np.sin(t[indices]) * np.sin(p[indices]), \np.cos(t[indices])fig = plt.figure()ax = Axes3D(fig, elev=30, azim=-20,auto_add_to_figure=False)fig.add_axes(ax)ax.scatter(x, y, z, c=p[indices], marker='o', cmap=plt.cm.rainbow)plt.show()return x,y,z,colorsdef LLE():x,y,z,colors= generateData()train_data = np.array([x,y,z]).Tprint("\n 高维空间shape",np.shape(train_data))#n_neighbors: 高维空间K邻近选择的点个数#n_components:低维空间的维度#[362,2]trans_data = manifold.LocallyLinearEmbedding(n_neighbors =10, n_components = 2,method='standard').fit_transform(train_data)print("\n 低维空间shape",np.shape(trans_data))size = np.random.rand(363)*100fig = plt.figure()plt.scatter(trans_data[:, 0], trans_data[:, 1],s=size, marker='o',c=colors)LLE()

参考:

15: Unsupervised Learning - Neighbor Embedding_哔哩哔哩_bilibili

https://www.cnblogs.com/pinard/p/6266408.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/253424.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算法学习——华为机考题库10(HJ64 - HJ69)

算法学习——华为机考题库10&#xff08;HJ64 - HJ69&#xff09; HJ64 MP3光标位置 描述 MP3 Player因为屏幕较小&#xff0c;显示歌曲列表的时候每屏只能显示几首歌曲&#xff0c;用户要通过上下键才能浏览所有的歌曲。为了简化处理&#xff0c;假设每屏只能显示4首歌曲&a…

C#,字符串相似度的莱文斯坦距离(Levenshtein Distance)算法与源代码

一、莱文斯坦&#xff08;Levenshtein&#xff09; Vladimir I. Levenshtein 弗拉基米尔I列文施坦博士是纠错码理论的先驱&#xff0c;被称为俄罗斯编码理论之父。Levenshtein是莫斯科俄罗斯科学院Keldysh应用数学研究所的研究教授&#xff0c;他的贡献体现在消费者的日常生活中…

蓝桥杯刷题day08——完全日期

1、题目描述 如果一个日期中年月日的各位数字之和是完全平方数&#xff0c;则称为一个完全日期。 例如&#xff1a;2021年6月5日的各位数字之和为20216516&#xff0c;而16是一个完全平方数&#xff0c;它是4的平方。所以2021年6月5日是一个完全日期。 请问&#xff0c;从200…

vue对于安装依赖时不好习惯的反省

因为一个不好的习惯&#xff0c;我总是喜欢–save去安装依赖包&#xff0c;然后发现最后打包后的内容总是很大。就想着怎么能让包小一些&#xff0c;就发现我遗漏了vue安装依赖的一个小知识点 安装依赖的时候可以-s -d -g去安装&#xff0c;要根据使用的内容选择去安装&#xf…

人工智能 | 深度学习的进展

深度学习的进展 深度学习是人工智能领域的一个重要分支&#xff0c;它利用神经网络模拟人类大脑的学习过程&#xff0c;通过大量数据训练模型&#xff0c;使其能够自动提取特征、识别模式、进行分类和预测等任务。近年来&#xff0c;深度学习在多个领域取得了显著的进展&#…

【高阶数据结构】B-树详解

文章目录 1. 常见的搜索结构2. 问题提出使用平衡二叉树搜索树的缺陷使用哈希表的缺陷 3. B-树的概念4. B-树的插入分析插入过程分析插入过程总结 5. B-树的代码实现5.1 B-树的结点设计5.2 B-树的查找5.3 B-树的插入实现InsertKey插入和分裂测试 6. B-树的删除&#xff08;思想&…

Redis 命令大全

文章目录 启动与连接Key&#xff08;键&#xff09;相关命令String&#xff08;字符串&#xff09;Hash&#xff08;哈希&#xff09;List&#xff08;列表&#xff09;Set&#xff08;集合&#xff09;Sorted Set&#xff08;有序集合&#xff09;其他常见命令HyperLogLog&…

WordPress如何实现随机显示一句话经典语录?怎么添加到评论框中?

我们在一些WordPress网站的顶部或侧边栏或评论框中&#xff0c;经常看到会随机显示一句经典语录&#xff0c;他们是怎么实现的呢&#xff1f; 其实&#xff0c;boke112百科前面跟大家分享的『WordPress集成一言&#xff08;Hitokoto&#xff09;API经典语句功能』一文中就提供…

相机图像质量研究(6)常见问题总结:光学结构对成像的影响--对焦距离

系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结&#xff1a;光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结&#xff1a;光学结构对成…

Spring Data Envers 数据审计实战

随着各行各业信息化发展&#xff0c;决策者们越来越意识到数据版本追踪的重要性&#xff0c;尤其是上市公司&#xff0c;数据对于他们尤为重要。考虑到研发成本&#xff0c;对重要表单数据支持页面级的修改历史查看、对所有业务数据支持DB级的版本查看是一个不错的选择。 对于…

闲聊电脑(5)装个 Windows(一)

​夜深人静&#xff0c;万籁俱寂&#xff0c;老郭趴在电脑桌上打盹&#xff0c;桌子上的小黄鸭和桌子旁的冰箱又开始窃窃私语…… 小黄鸭&#xff1a;冰箱大哥&#xff0c;上次说到硬盘分区和格式化&#xff0c;弄完之后&#xff0c;就该装系统了吧&#xff1f; 冰箱&#x…

【iOS ARKit】人形遮挡

人形遮挡简介 在 AR系统中&#xff0c;计算机通过对设备摄像头采集的图像进行视觉处理和组织&#xff0c;建立起实景空间&#xff0c;然后将生成的虚拟对象依据几何一致性原理嵌入到实景空间中&#xff0c;形成虚实融合的增强现实环境&#xff0c;再输出到显示系统中呈现给使用…

华为配置内部人员接入WLAN网络示例(802.1X认证)

配置内部人员接入WLAN网络示例&#xff08;802.1X认证&#xff09; 组网图形 图1 配置802.1X认证组网图 业务需求组网需求数据规划配置思路配置注意事项操作步骤配置文件 业务需求 用户接入WLAN网络&#xff0c;使用802.1X客户端进行认证&#xff0c;输入正确的用户名和密…

智慧城市:打造低碳未来,引领城市数字化转型新篇章

在“万物皆可数字化”的新时代浪潮下&#xff0c;智慧城市作为未来城市发展的先锋方向&#xff0c;正在以前所未有的速度和规模重塑我们的城市面貌。 智慧城市不仅是一个技术革新的标志&#xff0c;更是城市治理、民生服务等领域全面升级的重要引擎。 一、智慧城市的多元应用领…

Web前端入门 - HTML JavaScript Vue

ps&#xff1a;刚开始学习web前端开发&#xff0c;有什么不正确、不标准的内容&#xff0c;欢迎大家指出~ Web简介 90年代初期&#xff0c;Web1.0&#xff0c;静态页面&#xff0c;不和服务器交互&#xff0c;网页三剑客指Dreamweaver、Fireworks、Flash2000年代中期&#xf…

神经网络的权重是什么?

请参考这个视频https://www.bilibili.com/video/BV18P4y1j7uH/?spm_id_from333.788&vd_source1a3cc412e515de9bdf104d2101ecc26a左边是拟合的函数&#xff0c;右边是均方和误差&#xff0c;也就是把左边的拟合函数隐射到了右边&#xff0c;右边是真实值与预测值之间的均方…

Stable Diffusion 模型下载:Schematics(原理图)

文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八案例九案例十 下载地址 模型介绍 “Schematics”是一个非常个性化的LORA&#xff0c;我的目标是创建一个整体风格&#xff0c;但主要面向某些风格美学&#xff0c;因此它可以用于人物、物体、风景等…

spring boot整合 cache 以redis服务 处理数据缓存 便捷开发

我们常规开发中 就是程序去数据库取数据 然后返回给客户端 但是 如果有些业务业务量非常庞大 不断访问数据库 性能就会非常糟糕 从而造成不好的用户体验 那么 我们自然就可以将数据查到缓存中 然后 用户访问 从缓存中取 这样就会大大提高用户的访问效率 之前 我的文章 java …

CSS之盒子模型

盒子模型 01-选择器 结构伪类选择器 基本使用 作用&#xff1a;根据元素的结构关系查找元素。 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IE…

OpenCV-30 腐蚀操作

一、引入 腐蚀操作也是用卷积核扫描图像&#xff0c;只不过腐蚀操作的卷积核一般都是1&#xff08;卷积核内的每个数字都为1&#xff09;&#xff0c;如果卷积核内所有像素点都是白色&#xff0c;那么锚点&#xff08;中心点&#xff09;即为白色。 大部分时候腐蚀操作使用的都…