LE(拉普拉斯)数据降维方法

高维数据降维-拉普拉斯特征映射

高维数据降维是指采用某种映射方法,降低随机变量的数量,例如将数据点从高维空间映射到低维空间中,从而实现维度减少。

降维的过程是通过对输入的原始数据特征进行学习,得到一个映射函数,实现将输入样本映射后到低维空间中之后,原始数据特征并没有明显的损失,通常情况下新空间的维度要小于原空间的维度。目前大部分降维算法是处理向量形式的数据。

拉普拉斯矩阵

1.1无向权重图

我们一般使用 G ( V , E ) G(V,E) G(V,E)表示一个图,其中 V V V 表示图中的顶点 { v 1 , v 2 , . . . , v n } \{v_1,v_2,...,v_n\} {v1,v2,...,vn} , E E E表示顶点和顶点之间的边。定义 w i j w_{ij} wij 为顶点 v i v_i vi v j v_j vj 之间的权重。对于一个有 n n n个节点的图,可以得到一个大小为 ( n , n ) (n,n) (n,n) 的权重矩阵 W W W 。根据图中度的定义,我们可以得到图的度矩阵 D D D D D D 是一个对角矩阵,其中 d i i d_{ii} dii 表示顶点 v i v_i vi 的度。其中:
在这里插入图片描述

1.2拉普拉斯矩阵

拉普拉斯矩阵为 L = D − W L=D-W L=DW,具有如下性质

对任意向量 f f f有:
在这里插入图片描述

1.3LE算法

LE算法是一种保留数据局部特征的流形降维算法。其主要思想是在低维空间内尽可能保留数据局部样本点之间的结构不变。
假设原始数据集为 X = x i , x 2 , . . . , x n X=x_i,x_2,...,x_n X=xi,x2,...,xn,为一个(n,m)的数据集。

1. 高维空间样本结构描述
在高维空间使用构建K-近邻图的方法来描述局部样本点之间的结构。对于样本点 x i x_i xi,如果样本点 x j x_j xj于其互为近邻,则有:
在这里插入图片描述
其中 t t t 是一个自己指定的常数。如果 x j x_j xj 不是其近邻,则
在这里插入图片描述
最后得到的 W W W矩阵就是高维空间样本点的结构矩阵。由于这个结构矩阵只存放每个点和其K近邻点的结构关系,(不是K近邻的点,权重值通通为0),所以LE算法只能保留数据的局部结构。

2. 低维空间样本保留结构
我们设降维之后的矩阵为 Y = y 1 , y 2 , . . , y n Y=y_1,y_2,..,y_n Y=y1,y2,..,yn,是一个(n,k)的数据集,为了在低维空间中也保留高维的结构性,定义如下目标函数:
在这里插入图片描述
上述函数的表示如果在高维空间中两点距离越近,则在低维空间中两点的距离也越近,这样可以在低维空间尽可能的保留高维空间样本点的结构。根据拉普拉斯矩阵的性质可得:

在这里插入图片描述

为了消除低维空间中的缩放因子,也为了保证 D i i D_{ii} Dii值较大的样本点在低维空间中更为重要,添加如下限制:
在这里插入图片描述
最终的LE算法的优化目标:
在这里插入图片描述
在这里插入图片描述
此时就将优化目标函数问题转换成为了广义特征值分解问题:
在这里插入图片描述

拉普拉斯特征映射基本步骤:

(1) 构建无向图,将所有的样本以点连接成一个图,例如使用 KNN 算法,将每个点最近的 k 个点进行连接,其中 k 是自己设定的值;

(2) 构建图的权值矩阵,通过点之间的关联程度来确定点与点之间的权重大小,例如,两个点之间如果相连接,则权重为1,否则为0;

(3) 特征映射,通过公式 L y = λ D y L_{y} = \lambda D_{y} Ly=λDy 计算拉普拉斯矩阵 L 的特征向量和特征值,用最小的 m 个非零特征值对应的特征向量作为降维的结果。

例子

# 例子:
from sklearn import manifold, datasets
import numpy as np
import matplotlib.pyplot as plt

X,color = datasets.make_swiss_roll(n_samples = 1500)

ax = plt.subplot(projection = '3d')
# 原始数据
ax.scatter(X[:,0],X[:,1],X[:,2],c = color, cmap=plt.cm.Spectral)  
# 调整三维视角
ax.view_init(4,-50)  

在这里插入图片描述

# 2维10个近邻点
se = manifold.SpectralEmbedding(n_components=2,n_neighbors=10)
# 将原始样本投射到新的子空间中
Y = se.fit_transform(X)  

# LE 降维后可视化
plt.scatter(Y[:,0],Y[:,1],c=color,cmap=plt.cm.Spectral)

在这里插入图片描述

  • 1
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Tc.小浩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值