数据降维可视化

原文链接:https://www.cnblogs.com/bonelee/p/7849867.html

参考:SNE、TSNE

一:TSNE

      TSNE是由SNE衍生出的一种算法,SNE最早出现在2002年,它改变了MDS和ISOMAP中基于距离不变的思想,SNE将高维映射到低维的同时,尽量保证相互之间的分布概率不变,SNE将高维和低维中的样本分布都看作高斯分布,而Tsne将低维中的坐标当做T分布,这样做的好处是为了让距离大的簇之间距离拉大,从而解决了拥挤问题。从SNE到TSNE之间,还有一个对称SNE,其对SNE有部分改进作用。

  1. SNE算法
  2. 对称SNE算法
  3. TSNE算法(***)

1、SNE

高维数据用X表示,Xi表示第i个样本,低维数据用Y表示,则高维中的分布概率矩阵P定义如下:

数据降维可视化

P(i,j)表示第i个样本分布在样本j周围的概率。delta是依据最大熵原理来决定,entropy=sum(pi*log(pi)),以每个样本点作为中心的delta都需要使得最后分布的熵较小,通常以log(k)为上限,k为你所决定的邻域点的个数。

低维中的分布概率矩阵计算如下:

数据降维可视化

这里我们把低维中的分布看作是均衡的,每个delta都是0.5,由此可以基本判断最后降维之后生成的分布也是一个相对均匀的分布。

随机给定一个初始化的Y,进行优化,使得Y的分布矩阵逼近X的分布矩阵。我们给定目的函数,用KL散度来定义两个不同分布之间的差距:

数据降维可视化

则可以计算梯度为:

数据降维可视化

每次梯度下降的步长可设定固定或者自适应、随机等,也可以加上一个动量的梯度,初始值一般设为1e-4的随机正态分布。

数据降维可视化

 

2、对称SNE

顾名思义,就是让高维和低维中的概率分布矩阵是对称的,能方便运算,但是对拥挤问题无改进。

数据降维可视化

同样采用KL散度作为两个分布之间的差异标准,只是梯度有一些改变:

数据降维可视化

3、TSNE

TSNE对高维中的分布采用对称SNE中的做法,低维中的分布则采用更一般的T分布,也是对称的,我们可以发现sum(P)=sum(Q)=1。

数据降维可视化

数据降维可视化

TSNE算法流程如下:

数据降维可视化

上一篇:纯CSS3代码实现switch滑动开关按钮效果


下一篇:移动端 1px边框 问题