机器学习: t-Stochastic Neighbor Embedding 降维算法 (二)
上一篇文章,我们介绍了SNE降维算法,SNE算法可以很好地保持数据的局部结构,该算法利用条件概率来衡量数据点之间的相似性,通过最小化条件概率 pj|ip_{j|i} 与 pi|jp_{i|j} 之间的 KL-divergence,将数据从高维空间映射到低维空间。
Symmetric SNE
SNE算法利用的是条件概率,我们也可以利用联合概率,衡量两个空间 \mathcal{X} 与 \mathcal{Y} 的联合概率分布的 KL-divergence,假设高维空间 \mathcal{X} 的联合概率分布为 PiP_{i},低维空间 \mathcal{Y} 的联合概率分布为 QiQ_{i},可以定义两者的 KL-divergence 为
C=KL(P || Q) = \sum_{i} \sum_{j} p_{ij} \text{log}\frac{p_{ij}}{q_{ij}}
同样的 pi|i=0p_{i|i} =0, qi|i=0q_{i | i} =0,因为 pij=pjip_{ij} = p_{ji}, qij=qjiq_{ij} = q_{ji},所以把这种形式的SNE称为 symmetric-SNE,我们可以定义联合概率 pijp_{ij} 以及 qijq_{ij} 为:
p_{ij} = \frac{\text{exp}(-\| x_{i} - x_{j} \|^{2}/2\sigma^{2})}{\sum_{k \neq l}\text{exp}(-\| x_{k} - x_{l} \|^{2}/2\sigma^{2})}
q_{ij} = \frac{\text{exp}(-\| y_{i} - y_{j} \|^{2})}{\sum_{k \neq l}\text{exp}(-\| y_{k} - y_{l} \|^{2}}
联合概率的一个问题在于当数据点 xix_{i} 离其它的数据点都很远的时候,意味着 pijp_{ij} 会是一个非常小的值,这样映射的低维空间对应的点 yiy_{i} 对 cost function 的影响也会很小,yiy_{i} 将很难被其它点确定。为了解决这个问题,这里定义的联合概率由条件概率来确定 pij=pj|i+pi|j2p_{ij} = \frac{p_{j|i}+p_{i | j}}{2}, 我们可以进一步地定义梯度:
\frac{\partial C}{\partial y_{i}} = 4\sum_{j} (p_{ij}-q_{ij})(y_{i}-y_{j})
t-SNE
t-SNE 就是利用一个 student-distribution 来表示低维空间的概率分布:
q_{ij} = \frac{\left(1+\| y_{i} - y_{j} \|^{2} \right)^{-1}}{\sum_{k \neq l}\left(1+\| y_{k} - y_{l} \|^{2}\right)^{-1}} \qquad (4)
而高维空间的联合概率分布依然用高斯函数来拟合,我们可以得到梯度表达式为:
\frac{\partial C}{\partial y_{i}} = 4\sum_{j} (p_{ij}-q_{ij})(y_{i}-y_{j})\left(1+\| y_{i} - y_{j} \|^{2} \right)^{-1} \qquad (5)
这个算法的流程图如下所示
这个算法的源代码可以在作者的网站上下载:
https://lvdmaaten.github.io/tsne/
机器学习: t-Stochastic Neighbor Embedding 降维算法 (二)相关推荐
- 在线作图丨数据降维方法⑤——t-SNE(t-Distributed Stochastic Neighbor Embedding)
Question 1:什么是t-SNE? t-Distributed Stochastic Neighbor Embedding (t-SNE) 是一种非线性降维技术,特别适用于高维数据集的可视化.它 ...
- t-SNE(t-distributed stochastic neighbor embedding)
t-SNE(t-distributed stochastic neighbor embedding)是用于降维的一种机器学习算法,是由 Laurens van der Maaten 和 Geoffre ...
- 机器学习降维算法二:LDA(Linear Discriminant Analysis)
Linear Discriminant Analysis (也有叫做Fisher Linear Discriminant)是一种有监督的(supervised)线性降维算法.与PCA保持数据信息不同, ...
- python pca降维_机器学习之sklearn中的降维算法
1. PCA与SVD sklearn中降维算法都被包括在模块decomposition中,这个模块本质是一个矩阵分解模块.在过去的十年中,如果要讨论算法进步的先锋,矩阵分解可以说是独树一帜.矩阵分解可 ...
- 机器学习:python实现LDA降维算法
这次,我们来学习一种经典的降维方法: 线性判别分析(Linear Discriminant Analysis, 以下简称LDA). 在前面博客中(点我)我们讲解了PCA降维算法. PCA追求的是在降维 ...
- 关于t-SNE(T-distributed Stochastic Neighbor Embedding) t-分布随机近邻嵌入的简单理解
1.介绍 t-sne 是一种探索高维数据 (high-dimensional data) 的方法,其多用于机器学习 (machine learning), 此方法可以将高维数据通过低维[一般是2-D] ...
- matlab中tsne函数,t-Distributed Stochastic Neighbor Embedding
'euclidean' - Euclidean distance. 'seuclidean' - Standardized Euclidean distance. Each coordinate di ...
- T-SNE( t-distributed stochastic neighbor embedding t-分布随机邻域嵌入)
学习资料详见http://www.datakit.cn/blog/2017/02/05/t_sne_full.html#11%E5%9F%BA%E6%9C%AC%E5%8E%9F%E7%90%86 T ...
- 机器学习之:流形与降维概述
流形与降维:概述 降维算法概述 流形学习 距离的定义 KNN图与流形降维 KNN图 SNE算法 降维算法概述 降维,顾名思义就是把数据或者特征的维度降低,一般分为线性降维和非线性降维. 线性降维有:P ...
最新文章
- Gitlab完整搭建手册+排错
- 解决ASP.Net第一次访问慢的处理 IIS 7.5
- Java_方法的调用①及案例
- 重庆电子工程学院计算机专业,重庆计算机电子工程职业学院2020年招生录取分数线...
- UC伯克利超酷研究:舞痴和舞王之间,只差一个神经网络
- 后台执行命令的工具screen
- winform调用fastreport制作报表(三)绑定数据
- php中多重继承,PHP如何使用接口实现多重继承?(代码示例)
- mysql字符集设置lampp_xampp下mariaDB数据库设置默认字符集utf8(Windows)
- 如何用python制作五子棋
- 讯飞离线语音命令词+TTS离线发音,实现命令词交互(windows dll for unity插件)
- 线性代数之行列式(1) ——行列式的定义以及二阶行列式
- 深入linux设备驱动程序内核机制(第三章) 读书笔记
- 基于拉格朗日对偶的凸全局三维配准
- 微信营销KPI考核标准有哪些?
- ERROR 1010 (HY000): Error dropping database (can‘t rmdir ‘.\qpweb‘, errno: 41) 删库失败问题的解决
- 信息学奥赛一本通-1042
- C语言运算符的优先级表
- 修改Discuz! X2标题、底部和Archiver页面的版权信息
- 基于网络爬虫的负面信息搜集系统