机器学习: t-Stochastic Neighbor Embedding 降维算法 (二)

上一篇文章,我们介绍了SNE降维算法,SNE算法可以很好地保持数据的局部结构,该算法利用条件概率来衡量数据点之间的相似性,通过最小化条件概率 pj|i pi|j 之间的 KL-divergence,将数据从高维空间映射到低维空间。

Symmetric SNE

SNE算法利用的是条件概率,我们也可以利用联合概率,衡量两个空间 的联合概率分布的 KL-divergence,假设高维空间 的联合概率分布为 Pi ,低维空间 的联合概率分布为 Qi ,可以定义两者的 KL-divergence 为

C=KL(P||Q)=ijpijlogpijqij

同样的 pi|i=0 , qi|i=0 ,因为 pij=pji , qij=qji ,所以把这种形式的SNE称为 symmetric-SNE,我们可以定义联合概率 pij 以及 qij 为:

pij=exp(xixj2/2σ2)klexp(xkxl2/2σ2)

qij=exp(yiyj2)klexp(ykyl2

联合概率的一个问题在于当数据点 xi 离其它的数据点都很远的时候,意味着 pij 会是一个非常小的值,这样映射的低维空间对应的点 yi 对 cost function 的影响也会很小, yi 将很难被其它点确定。为了解决这个问题,这里定义的联合概率由条件概率来确定 pij=pj|i+pi|j2 , 我们可以进一步地定义梯度:

Cyi=4j(pijqij)(yiyj)

t-SNE

t-SNE 就是利用一个 student-distribution 来表示低维空间的概率分布:

qij=(1+yiyj2)1kl(1+ykyl2)1(4)

而高维空间的联合概率分布依然用高斯函数来拟合,我们可以得到梯度表达式为:

Cyi=4j(pijqij)(yiyj)(1+yiyj2)1(5)

这个算法的流程图如下所示

机器学习: t-Stochastic Neighbor Embedding 降维算法 (二)_第1张图片

这个算法的源代码可以在作者的网站上下载:

https://lvdmaaten.github.io/tsne/

你可能感兴趣的:(机器学习)