t-SNE初体验
今天用t-SNE以及tensorboard做了word embedding的可视化,简单理解了一下相关t-SNE的说明手册。
原文链接:https://distill.pub/2016/misread-tsne/
以下内容主要是对原文的概括以及个人的理解。
t-SNE多用于高维度数据的可视化。其目标是用低维度的点(多为二维)来较好地代表高维度点。
解读时需要关注以下几点:
(1)该算法是非线性的,并能够对数据进行适应,在不同区域执行不同的转换。
(2)perplexity:不严格的理解,该参数反映了对local与global的平衡。它对每个点周边的临近点(close neighbors )的数量进行猜测;会对最终可视化有很复杂的影响。原文指出该值应该在5-50之间。
a.当取值在该范围之外,可能造成奇怪的结果;
b.该超参数取值不应大于数据点的个数。
(3)需要进行足够的迭代次数获得稳定的结果;根据具体数据确定迭代次数。
(4)多次运行t-SNE,可能会得到不同的结果。
其他:
(1)Cluster sizes in a t-SNE plot mean nothing
t-SNE算法会根据数据集中的区域密度变化调整“距离”的定义,也就是扩展密集的簇,并收缩稀疏的簇。所以大小与实际会可预见性的不一致。
(2)Distances between clusters might not mean anything
(3)Random noise doesn’t always look random
低perplexity取值更容易造成一些其实并不存在但看起来还不错的聚类结果;因此应用中要注意对噪声点的识别。
(4)You can see some shapes, sometimes(调整perplexity)
(5)For topology, you may need more than one plot
总结
t-SNE效果很炫酷,但毕竟是将数据从高维“投映”到低维,不能要求它与事实完全一致,要在理解数据,合理调参,稳定迭代的基础上作为辅助工具使用。