使用 t 分布的 sne 坐标聚类
clustering using t-distributed sne coordinates
假设您有汽车数据:一个包含 10,000 行和 10 个特征列(mpg、发动机尺寸、马力等)的矩阵,并且您想要探索高维数据。你可以:
(1) 运行 kmeans 或数据集上的一些其他聚类算法...选择聚类数
(2) 先用PCA对数据集进行降维,将PC1和PC2传给聚类算法...选取簇数
但是你也可以
(3) 首先用TSNE对数据集进行降维,将2个TSNE坐标传递给聚类算法...选择簇数
有人做#3 吗?查看 TSNE 的结果后,每次 TSNE 为 运行 时,二维坐标都会发生变化。例如,一辆汽车可能有两个负 TSNE 坐标,然后如果算法再次为 运行 它可以有两个正 TSNE 坐标。例如,如果将坐标传递给聚类算法,则汽车可能在第 4 组中,然后在重新 运行 中它在第 7 或 6 组中,等等。TSNE 似乎是一个很棒的可视化工具,你会想要能够从中聚类。想法?
这个很好的答案主要回答了您的问题:
https://stats.stackexchange.com/a/264647/7828
它给出了一些示例,其中 tSNE 图显示输入数据中不存在的聚类,即非常误导.
尚未讨论的一个问题是让 tSNE 对您的数据产生有意义的结果。 tSNE 使用高斯内部的平方欧几里德。这意味着它对规模 非常 敏感。只要您的输入数据具有相似的比例(它主要用于图像,其中每个像素确实具有相同的比例),它就可以正常工作。但是在您的汽车数据示例中,您将遇到常见的缩放问题,并且得到的结果在统计上意义不大。 1 mph 与 1 个车轮不同。 tSNE 无法解决这个问题,相反:tSNE 对您的预处理选择非常敏感(事实上,在原始 tSNE 论文中,他们使用 PCA 作为额外的预处理步骤)。
假设您有汽车数据:一个包含 10,000 行和 10 个特征列(mpg、发动机尺寸、马力等)的矩阵,并且您想要探索高维数据。你可以:
(1) 运行 kmeans 或数据集上的一些其他聚类算法...选择聚类数 (2) 先用PCA对数据集进行降维,将PC1和PC2传给聚类算法...选取簇数
但是你也可以 (3) 首先用TSNE对数据集进行降维,将2个TSNE坐标传递给聚类算法...选择簇数
有人做#3 吗?查看 TSNE 的结果后,每次 TSNE 为 运行 时,二维坐标都会发生变化。例如,一辆汽车可能有两个负 TSNE 坐标,然后如果算法再次为 运行 它可以有两个正 TSNE 坐标。例如,如果将坐标传递给聚类算法,则汽车可能在第 4 组中,然后在重新 运行 中它在第 7 或 6 组中,等等。TSNE 似乎是一个很棒的可视化工具,你会想要能够从中聚类。想法?
这个很好的答案主要回答了您的问题:
https://stats.stackexchange.com/a/264647/7828
它给出了一些示例,其中 tSNE 图显示输入数据中不存在的聚类,即非常误导.
尚未讨论的一个问题是让 tSNE 对您的数据产生有意义的结果。 tSNE 使用高斯内部的平方欧几里德。这意味着它对规模 非常 敏感。只要您的输入数据具有相似的比例(它主要用于图像,其中每个像素确实具有相同的比例),它就可以正常工作。但是在您的汽车数据示例中,您将遇到常见的缩放问题,并且得到的结果在统计上意义不大。 1 mph 与 1 个车轮不同。 tSNE 无法解决这个问题,相反:tSNE 对您的预处理选择非常敏感(事实上,在原始 tSNE 论文中,他们使用 PCA 作为额外的预处理步骤)。