美文网首页
如何高效使用t-SNE

如何高效使用t-SNE

作者: scienceboy | 来源:发表于2020-05-29 19:39 被阅读0次

如何高效使用t-SNE

单细胞数据分析中,t-SNE是重要的数据展示方式。虽然t-SNE在展示高维数据中极其有用,但有时仍然存在一些对t-SNE结果误读和错读的情况。这里作者使用一些简单的例子或数据结构增加对t-SNE不同参数对结果的影响,有助于更高效和准确的使用和解读t-SNE结果。

四个参数

  • 点的数目,可以对应细胞数目;

  • 维度数目;

  • Perplexity, 混乱度;

  • Epsilon (learning rate)

image.png

t-SNE最早由van der Maaten和Hinton提出,用于在低维度空间展示高维空间数据的结构。由于t-SNE能够有效将几百甚至上千高维度复杂数据结构非线性降维到2维空间,已被广泛应用到机器学习中。t-SNE固然强大,但是设置合理的参数,忠实解释和正确理解t-SNE结果,才能更好应用t-SNE。

"perplexity"是t-SNE算法中比较重要的参数,用于权衡局部特征和全局特征。"perplexity",有点类似于临近值,perplexity值越小局部特征越明显,perplexity值越大全局特征更显著。虽然文章介绍推荐"perplexity"的在5-50之间是强健的,但不同"perplexity"对不同类型数据结果的影响还是比较显著的。后续的参数比较也能说明这一点。

其实t-SNE算法还隐藏了一些超参数(hyperparameters),这些超参数造成t-SNE在不同硬件,接连运行的结果不同。

1. 一些关键的超参数

示例数据1:

image.png

最左图为数据原始特征——呈现两个离散、数目相同的类。右边5个图为不同perplexity值下的t-SNE图。显而易见:

  • perplexity在5-50的取值可以较好的反应数据原始特征。即便如此,不同perplexity值呈现的数据结果特征是迥异的。

  • 过低的perplexity取值(perplexity=2)导致局部特征处于主导地位,影响全局特征的呈现

  • 反之,过高的perplexity取值(perplexity=100)导致全局特征的过拟合,产生失真现象。

2. Step 参数

示例1中,5个perplexity值下的迭代次数(iterations)都是5000。这个参数的主要用途在于通过设置多少次的迭代计算,最终使得t-SNE处于稳定的结果。过低的迭代次数,会造成t-SNE处于不稳定状态。下图就是设置perplexity=30,iterations不同取值的t-SNE结果。由此可见迭代的不充分会造成不必要的结果陷阱。

image.png

比较遗憾的是,iterations的值一成不变,不同数据结构会影响iterations的合理值。

3. T-SNE图Cluster的大小可能是无意义的

上面示例图都是基于相同数目和标准差的两个样本。这种简化模型,在实际数据分析案例中几乎是不存在的。那么,cluster间数目差异又对t-SNE结果产生怎样的噪音呢?作者使用A,B两个数据,其中A数据离散度是B的10倍。

image.png

如图所示,t-SNE显示的A,Bcluster大小比较相近,远小于原始差异。这是因为t-SNE算法会将空间几何距离('distance')转变为区域密度差异('regional density variations')。导致t-SNE转换后,聚集稠密的数据会被扩张,稀松零散的数据会被聚拢,显得cluster的大小比较相近。也因此不能通过t-SNE比较cluster相对大小。

4. cluster之间的距离可能不具有意义

下面的示例数据用来探究t-SNE展示cluster距离的意义。假设A(蓝色),B(橙色),C(绿色)三个cluster,大小都是50。其中B与C的距离是B到A距离的5倍。原始数据结果为左图所示。

image.png

通过比较不同perplexity结果发现,perplexity取值50较能忠实反映数据结构,A,B,C三个cluster之间的距离能够很好呈现。但是perplexity在取其他值时,无论cluster之间的结构,还是距离都不能很好映射原本数据特征。若不能选择合适的perplexity反而因cluster之间空间关系产生错解。

问题的关键在于,并不是perplexity固定取值50所能解决的。举例而言,如果将A,B,C三个cluster大小都增大到200。同样设置perplexity=50,t-SNE结果会如下图所示。

image.png

结果一目了然,非常遗憾。perplexity的取值所反映的数据忠实特征,与cluster大小、数目有很大关系。既没取值金标准(5-50),也不是越大越好。如何忠实反映高维空间中的关系,成为t-SNE分析过程中的关键点。

5. 随机噪音并不一定随机

t-SNE另一个典型的缺陷是,一堆随机噪音数据经过t-SNE处理后呈现出“某种特征”。如下示例为来自100个维度500个随机点。最左图为投影到2维t-SNE图。

image.png

perplexity取值过低所导致的局部特征显著的问题依然突出,使得原本这些“云”点呈现假的cluster特征。

6. 一些复杂结构数据示例

实际数据特征大多比较复杂,很少有完美对称的。下面是一个cluster A包含另外一个cluster B的示例。B的紧密程度是A的50倍,在数据特征上B也被A所包含。

image.png

同样查看t-SNE图随perplexity取值的变化结果。perplexity=2或5时,原有cluster特征消失。perplexity=50或100,A出现假的分布特征。而 仅perplexity=30能较忠实反映原始数据特征。可见,仅仅基于一个t-SNE plot推测cluster之间关系或cluster自身特征容易造成一些误读。

还有一些更加复杂的拓扑结构示例。这些数据结构同样需要case by case的分析和选择参数。

image.png

t-SNE之所以流行,是因为它的简单易行和找到数据结构。通过以上分析,也发现t-SNE存在的一些问题。对于初始数据结构的了解有助于增强t-SNE结果的忠诚度。毕竟garbage in也会garbage out。

相关文章

  • 如何高效使用t-SNE

    如何高效使用t-SNE 单细胞数据分析中,t-SNE是重要的数据展示方式。虽然t-SNE在展示高维数据中极其有用,...

  • t-SNE:如何理解与高效使用

    摘要 尽管t-SNE对于可视化高维数据非常有用,但有时其结果可能无法解读或具有误导性。通过探索它在简单情况下的表现...

  • 2.如何高效使用GitHub

    如何高效利用GitHub 如何高效使用github 参考链接如何高效利用GitHubgit - 简明指南

  • 08高通量测序-t-SNE

    t-SNE 这是一个基本的二维散点图,我们来看看t-SNE是如何变换这个图的,在数轴上画出平面的一维图。 注意:如...

  • python代写主题LDA建模和t-SNE可视化

    原文:http://tecdat.cn/?p=4261 使用潜在Dirichlet分配(LDA)和t-SNE中的可...

  • 201701

    如何高效地使用 OneNote? https://www.zhihu.com/question/23094626 ...

  • ios图像和图形最佳实践(一)

    UIKit - Images and Graphics Best Praticies - 如何在app中高效使用图...

  • 工具:t-SNE的使用

    在机器学习包:sklearn中已经有了t-SNE的包: 1. 导入: from sklearn.manifold ...

  • TypesScript + Nodejs + Express +

    你会学习到什么? 如何使用 TypeScript 结合编辑工具更好的进行高效率完美开发 如何使用 TypeScri...

  • 如何高效学习

    如何高效学习 今天我们要使用分析阅读的方法来阅读斯考特杨的《如何高效学习》,这是一本实用型书,重点是教会读者使用整...

网友评论

      本文标题:如何高效使用t-SNE

      本文链接:https://www.haomeiwen.com/subject/aqvfzhtx.html