降维算法学习笔记-t 分布随机邻域嵌入

t-SNE

t 分布随机邻域嵌入(t-distributed stochastic neighbor embedding, t-SNE)实现了对非高斯分布数据降维。t-SNE 使用广泛,常用于流行学习降维。

SNE

t-SNE 是基于随机邻域嵌入 (Stochastic Neighbor Embedding, SNE)提出的。SNE 使用条件概率来刻画两个数据之间的相似性,对原始数据 x{x1, x2, x3, …}通过以下公式将数据间的欧几里得距离转化为概率,
在这里插入图片描述
规定 qi|i = 0。
pi| j 和 qi| j 越接近,代表降维算法在局部特征保留上的表现越好。利用 KL散度 (Kullback-Leibler divergences) 建立目标函数 (cost function) 如下:
在这里插入图片描述
Pi 和 Qi 表示给定点 xi 时,其他所有点的条件概率分布。由于 KL 散度的不对称性质,要使得 cost 取到更小,原始数据中距离近的两个点的 pj|i 在降维后应该也较大,所以 SNE 更善于保留数据中的局部特征。但是原始数据中距离较远的两个点如果降维后 qi| j 较大,cost 也会很小,这是 SNE 的一个缺陷,忽视了数据的全局性。
同时由于条件概率的不对称,即 pj|i 不等于 pi| j,qj|i 不等于 qi| j,在梯度下降过程中的计算量太大。后续提出的对称 SNE(SymmetricSNE)对这个问题提出了解决策略。但 SNE 还具有普遍的拥挤问题(crowding problem),就是不同簇的数据点产生交叠,无法完全区分开来。

t-SNE

因此尽管 SNE 提供了很好的可视化方法,但存在不少缺陷。后续,Hinton等人提出了 t-SNE 方法。t-SNE 采用长尾的 t 分布取代高斯分布。由于它的长尾性,它更不容易受到异常点的影响而产生偏移和形变。在 t-SNE 中沿用对称SNE 中提出的:
在这里插入图片描述
和目标函数:
在这里插入图片描述
定义 qi j 使用自由度为 1 的 t 分布:
在这里插入图片描述

优化后的梯度为:
在这里插入图片描述

过程

总体来说,t-SNE 的具体过程如下:

  1. 对于原始数据集 X = x1, …, xn,先使用 PCA 算法进行预降维
  2. 根据困惑度 Perp(通常在 5-50 之间,表示一个点附近的有效近邻点个数),使用二分搜索找到一个合适的 σ,作为目标函数的参数
  3. 设置迭代次数 niter,学习速率 learning_rate, 为了加速优化过程和避免
    陷入局部最优解,设置一个动量 α,簇间距 early_exaggeration
  4. 计算条件概率矩阵,计算 Pi j 矩阵
  5. 随机初始化 Y
  6. 迭代 niter 轮,每轮做操作如下: 计算低维度下的 qi j,计算梯度, 更新 Yt = Yt−1 + learningrate dCdY + α(Yt−1 − Yt−2),Y(t) 表示迭代 t 次的解
    算法结束.

改进与不足

使用了 t 分布后,对原始数据中距离较远的数据,降维后的期望距离变得更远,而原始数据中距离较近的数据在低维空间中的期望距离则再小一些。因此 t-SNE 在拥挤问题上有所减轻,可视化的结果更为清晰。

t-SNE 的不足在于它的速度较慢,且算法是随机的,它没有唯一最优解,由于 t-SNE 的目标函数是非凸的,每次得到的只是一个局部最小结果。同时 t分布只是能够保留局部特征,在结果中超出一定距离范围后的数据点相似度都很小,因此考虑 t-SNE 结果中的距离是无意义的。所以 t-SNE 难以处理其他任务,它只能作为一个降维过程的可视化工具被使用。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值