【问题标题】:How we can check if TSNE results are real when we cluster data?当我们对数据进行聚类时,我们如何检查 TSNE 结果是否真实?
【发布时间】:2021-05-24 14:32:56
【问题描述】:

我正在申请 TSNE 进行降维。我有几个功能,我减少到 2 个功能。之后,我使用 Kmeans 对数据进行聚类。最后,我使用 seaborn 来绘制聚类结果。

要导入我使用的 TSNE:

from sklearn.manifold import TSNE

申请 TSNE 我使用:

features_tsne_32= TSNE(2).fit_transform(standarized_data)

之后我使用 Kmeans:

kmeans = KMeans(n_clusters=6, **kmeans_kwargs)
kmeans.fit(features_tsne_32)
km_tsne_32 = kmeans.predict(features_tsne_32)

最后,我通过以下方式获得了情节:

import seaborn as sns

#plot data with seaborn

facet = sns.lmplot(data=df, x='km_tsne_32_c1', y='km_tsne_32_c2', hue='km_tsne_32', 
                       fit_reg=False, legend=True, legend_out=True)

我有这个情节:

这个情节似乎过于完美和球形,这是我绘制的程序有问题 这个数据?在上面描述的代码中?

【问题讨论】:

    标签: python cluster-analysis pca tsne


    【解决方案1】:

    您的问题并非特定于 t-SNE,而是任何无监督学习算法。您如何评价其结果?

    我想说,做到这一点的唯一正确方法是,如果您对数据有一些先验知识或专业知识。诸如标签、其他元数据,甚至用户反馈之类的东西。


    话虽如此,关于你的具体情节:

    1. 您从 tSNE 得到一个连续的“饼”而不是像“岛”或“意大利面条”这样的离散结构这一事实可能表明该投影没有很好地学习。通常 tSNE 应该创建相似数据点的半不同组。这种形状看起来像一个过度法律化的模型。 (例如具有高 KL 散度系数的 VAE)。
    2. k-Means 产生的分区正是人们所期望的:k-means 的聚类分配隐式地在特征空间上创建了一个 Voronoi 图,其中单元格是聚类质心。良好的初始化会产生分布在特征空间中的初始质心。由于该空间是对称的,因此质心也可能是对称的。

    所以 k-Means 没问题,但你可能需要调整 t-SNE 的参数。

    【讨论】:

    • 当您说过度正则化模型时,这意味着该模型处于过度拟合状态?好吧,事实是 TSNE 的输入是一个 CAE(卷积自动编码器)模型的输出。如果可能的话,请您详细说明一下这一点吗?
    • 通常,过度正则化会导致拟合不足而不是过度拟合。所有/几乎所有正则化方法在概念上都对输出空间的外观强加了“先验假设”。例如,在具有高斯潜变量的 VAE 中,过度正则化的模型总是会产生(高维)球体。只需检查其他参数值(尤其是“perplexity”),看看是否能得到更好的结果。关于你提到的关于 CAE 的事情,我确实有后续问题,如果你愿意,请联系我。
    【解决方案2】:

    检查 t-SNE 算法的困惑度。当 perplexity 太小时,t-SNE 通常会产生圆盘状的斑点。此外,使用 DBSCAN 聚类算法进行测试,该算法通常比 k-Means 更好。

    【讨论】:

      【解决方案3】:

      我遵循的程序有问题吗?

      是的。

      使用 TSNE 将数据投影到您无法真正控制的另一个空间。
      这样做应该使近点保持近,远点保持远。

      然后您在投影空间上使用 KNN 来确定组。
      这部分丢失了您之前拥有的任何分组信息[需要引用,需要事先查看数据是什么]!

      根据一些先前的标记数据为组着色会更有意义,而不是根据 KNN
      -或-
      在原始空间上使用KNN进行分组,然后根据该分组对投影空间进行着色。

      实际上你所做的事情毫无意义,因为它丢失了所有先前的信息——标签和空间。


      总结:

      1. 如果您有标签,请使用它们
      2. 如果不这样做,请使用更复​​杂的聚类算法,从原始空间上的 KNN 开始,因为您可以看到投影空间上的 KNN 是不够的。

      【讨论】:

      • “使用 TSNE 将数据投影到另一个空间,您无法真正控制该空间。”你这么说是因为 TSNE 的随机性吗?因为我们可以使用例如 PCA 来减少特征空间,然后应用 Kmeans 对数据进行聚类。最好我知道这是一个标准程序(PCA+Kmeans)。
      猜你喜欢
      • 1970-01-01
      • 2011-06-14
      • 2013-09-28
      • 1970-01-01
      • 2016-06-10
      • 2017-10-24
      • 1970-01-01
      • 1970-01-01
      • 2021-12-06
      相关资源
      最近更新 更多