让我们假设您有关于汽车的数据:10,000行和10个特征列(mpg,引擎大小,马力等等)的矩阵,您想要探索高维数据。你可以:
(1)在数据集上运行kmeans或其他一些聚类算法...选择聚类数 (2)首先用PCA降低数据集的维数,然后将PC1和PC2传递给聚类算法......选择聚类数
但是你也可以 (3)首先用TSNE减小数据集的维数,并将2个TSNE坐标传递给聚类算法......选择聚类数
有人做#3吗?在查看TSNE的结果之后,每次TSNE运行时2D坐标都会改变。例如,汽车可能同时具有负TSNE坐标,然后如果算法再次运行,则它可以具有正TSNE坐标。例如,如果将坐标传递给聚类算法,则汽车可能在集群4中,然后在重新运行时,它位于集群7或6等中.TSNE看起来像是一个很好的可视化工具,并且您希望能够聚集它。想法?
答案 0 :(得分:1)
这个好的答案主要回答了你的问题:
https://stats.stackexchange.com/a/264647/7828
它提供了一些示例,其中 tSNE图显示输入数据中不存在的群集,即非常误导性。
尚未讨论的一个问题是让tSNE根据您的数据产生有意义的结果。 tSNE在高斯内部使用平方欧几里得。这意味着它非常对比例敏感。只要您的输入数据具有相似的比例(它主要用于图像,每个像素具有相同的比例),它就可以正常工作。但是在您的汽车数据示例中,您将遇到常见的扩展问题,并获得不具有统计意义的结果。 1英里/小时与1个车轮不同。相反,tSNE无法解决这个问题:tSNE对您的预处理选择非常敏感(事实上,在最初的tSNE论文中,他们使用PCA作为额外的预处理步骤。)