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

Symmetric SNE

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

C=KL(P||Q)=∑i∑jpijlogpijqij

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

pij=exp(−∥xi−xj∥2/2σ2)∑k≠lexp(−∥xk−xl∥2/2σ2)
qij=exp(−∥yi−yj∥2)∑k≠lexp(−∥yk−yl∥2

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

∂C∂yi=4∑j(pij−qij)(yi−yj)

t-SNE

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

qij=(1+∥yi−yj∥2)−1∑k≠l(1+∥yk−yl∥2)−1(4)

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

∂C∂yi=4∑j(pij−qij)(yi−yj)(1+∥yi−yj∥2)−1(5)

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

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

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

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

05-26 14:29