如何高效使用t-SNE
单细胞数据分析中,t-SNE是重要的数据展示方式。虽然t-SNE在展示高维数据中极其有用,但有时仍然存在一些对t-SNE结果误读和错读的情况。这里作者使用一些简单的例子或数据结构增加对t-SNE不同参数对结果的影响,有助于更高效和准确的使用和解读t-SNE结果。
四个参数
-
点的数目,可以对应细胞数目;
-
维度数目;
-
Perplexity, 混乱度;
-
Epsilon (learning rate)

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:

最左图为数据原始特征——呈现两个离散、数目相同的类。右边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结果。由此可见迭代的不充分会造成不必要的结果陷阱。

比较遗憾的是,iterations的值一成不变,不同数据结构会影响iterations的合理值。
3. T-SNE图Cluster的大小可能是无意义的
上面示例图都是基于相同数目和标准差的两个样本。这种简化模型,在实际数据分析案例中几乎是不存在的。那么,cluster间数目差异又对t-SNE结果产生怎样的噪音呢?作者使用A,B两个数据,其中A数据离散度是B的10倍。

如图所示,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倍。原始数据结果为左图所示。

通过比较不同perplexity结果发现,perplexity取值50较能忠实反映数据结构,A,B,C三个cluster之间的距离能够很好呈现。但是perplexity在取其他值时,无论cluster之间的结构,还是距离都不能很好映射原本数据特征。若不能选择合适的perplexity反而因cluster之间空间关系产生错解。
问题的关键在于,并不是perplexity固定取值50所能解决的。举例而言,如果将A,B,C三个cluster大小都增大到200。同样设置perplexity=50,t-SNE结果会如下图所示。

结果一目了然,非常遗憾。perplexity的取值所反映的数据忠实特征,与cluster大小、数目有很大关系。既没取值金标准(5-50),也不是越大越好。如何忠实反映高维空间中的关系,成为t-SNE分析过程中的关键点。
5. 随机噪音并不一定随机
t-SNE另一个典型的缺陷是,一堆随机噪音数据经过t-SNE处理后呈现出“某种特征”。如下示例为来自100个维度500个随机点。最左图为投影到2维t-SNE图。

perplexity取值过低所导致的局部特征显著的问题依然突出,使得原本这些“云”点呈现假的cluster特征。
6. 一些复杂结构数据示例
实际数据特征大多比较复杂,很少有完美对称的。下面是一个cluster A包含另外一个cluster B的示例。B的紧密程度是A的50倍,在数据特征上B也被A所包含。

同样查看t-SNE图随perplexity取值的变化结果。perplexity=2或5时,原有cluster特征消失。perplexity=50或100,A出现假的分布特征。而 仅perplexity=30能较忠实反映原始数据特征。可见,仅仅基于一个t-SNE plot推测cluster之间关系或cluster自身特征容易造成一些误读。
还有一些更加复杂的拓扑结构示例。这些数据结构同样需要case by case的分析和选择参数。

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