zoukankan      html  css  js  c++  java
  • tsne理论学习

    1.http://www.datakit.cn/blog/2017/02/05/t_sne_full.html,其实这个讲的一般。

     http://bindog.github.io/blog/2016/06/04/from-sne-to-tsne-to-largevis/

    1.SNE原理

    https://zhuanlan.zhihu.com/p/57937096,讲的不错。

    这是在高维空间中,通过仿射将欧几里得距离转换为点之间的相似性的概率分布,p值越大,表示i和j之间的相似性越高,其实也就是表示欧氏距离越小了。高维空间中使用的是高斯分布。

    而未知的低维空间中也建立这么一个 分布,sne中使用的同样是高斯分布:

    这样的话,想让两个空间中的分布尽可能相似相等,所以使用KL散度来度量:

    而我们可以看到,KL散度它是不对称的,它是有偏向性的,所以导致了SNE也有偏向性:当p较大,而q较小时损失之较大,翻译过来也就是点在高维空间中相似度较高,但低维空间相似度较小时,损失会比较大;那么sne就会倾向于选择高维空间中距离较远的,而低维空间中距离较近的,所以就说它倾向于保留数据的局部结构(这个时针对于低维空间来说的)。

    //但我还是有点想不通,保留这个词不应该针对已知的高维空间吗?高维空间的局部结构不就是点尽可能地相似吗?总之这里感觉很矛盾,保留疑问。

    //感觉上面这句话的意思是说,局部特征是针对于低维空间说的,全局结构是针对高维空间说的。所以就说sne更关注于低维空间,也就是局部特征?

    2.SNE求解

    那么上面主要的参数就是sigma,怎么求呢?

    复杂度:

    也就是困惑度,可以理解为某个数据点附近有效近邻点的个数。困惑度通常在5-50之间。Hp公式如下:

    那么在确定了困惑度值之后,就可以根据Hp来计算sigma了。(感觉挺难计算的。)

    损失函数对y求梯度:

    因为我们最终要求的就是yi,数据在2/3维空间中的表示,所以要对它们求梯度啊。

    //但是梯度这个计算公式是怎么求的,我还不会。

    3.对称TSNE

    它使用联合概率分布,所以就是对称的?这一点我还不太懂。

    4.t-SNE

    //这里的t表示的是t分布,低维空间使用t分布来衡量。

    从上面的图和作者的回复来看,因为高斯分布尾部较低对异常值敏感,如果有异常值的话,那么均值方差就会受到影响,曲线形状会照顾那些异常点,而t分布就尾部比较高,对异常点相对不敏感。学习了。而为什么会有异常点出现呢。因为高维降到低维会存在一个拥挤的问题,t可以来缓解这个问题。

    使用t分布,低维空间如下:

     总之,t-sne的改进是:

     它主要就是用来可视化。

  • 相关阅读:
    n皇后问题
    几种NFS系统对比,选型理由
    MooseFs集群故障恢复运维
    TB级NFS数据平滑迁移方案设计与实现
    NFS挂载各机显示用户不同的问题
    TB级NFS数据平滑迁移系列
    mysql备份和恢复
    Java基础赋值符号
    java 流程控制基础之if else
    Java基础赋值符号
  • 原文地址:https://www.cnblogs.com/BlueBlueSea/p/13863065.html
Copyright © 2011-2022 走看看