【问题标题】:Efficient k-means evaluation with silhouette score in sklearn在 sklearn 中使用轮廓分数进行有效的 k-means 评估
【发布时间】:2014-07-04 10:22:48
【问题描述】:

我正在对约 100 万个项目(每个项目表示为约 100 个特征向量)运行 k-means 聚类。我已经对各种 k 运行了聚类,现在想用 sklearn 中实现的轮廓分数来评估不同的结果。尝试在没有采样的情况下运行它似乎不可行并且需要很长时间,所以我认为我需要使用采样,即:

metrics.silhouette_score(feature_matrix, cluster_labels, metric='euclidean',sample_size=???)

但是,我不太清楚什么是合适的抽样方法。考虑到我的矩阵大小,是否有经验法则来使用什么大小的样本?是取我的分析机器可以处理的最大样本,还是取更多更小的样本的平均值更好?

我之所以这么问,很大程度上是因为我的初步测试(sample_size=10000)产生了一些非常不直观的结果。

我也愿意接受其他更可扩展的评估指标。


编辑以可视化问题:该图显示,对于不同的样本大小,轮廓分数作为集群数量的函数

不奇怪的是,增加样本量似乎可以减少噪音。奇怪的是,考虑到我有 100 万个非常异质的向量,2 或 3 是“最佳”集群数。换句话说,不直观的是,随着聚类数量的增加,我会发现轮廓分数或多或少单调下降。

【问题讨论】:

  • 定义不直观的结果,并尝试使用不同的样本大小多次重新运行该测试。
  • 运行代码以生成清晰的图。将尽快编辑和发布。
  • 那些剪影分数很低。具有强聚类结构的数据会给你高于 0.7 左右的轮廓分数。您是否尝试过使用 Gap Statistic 来估计正确的集群数量?另一种可能性是 100 个特征中的一些正在添加噪声并隐藏集群。您可以尝试 PCA 来消除一些噪音。
  • 我也遇到过类似的问题。当我增加聚类数量时,sklearn.metrics.silhouette_score 计算的轮廓分数单调下降,我不知道为什么会这样
  • @asado23 还没有,但我阅读了一篇讨论主要内部验证措施的论文,请参阅 Understanding the Internal Clustering Validation Measures 并将 silhouette score 替换为 SDbw,这被证明是其中最强大的索引纸

标签: python scikit-learn cluster-analysis


【解决方案1】:

由于没有被广泛接受的最佳方法来确定最佳聚类数,所有评估技术,包括 Silhouette ScoreGap Statistic 等。基本上依赖于某种形式的启发式/试错论证。所以对我来说,最好的方法是尝试多种技术,不要对任何一种方法都过度自信。

在您的情况下,应在整个数据集上计算出理想且最准确的分数。但是,如果您需要使用部分样本来加快计算速度,您应该使用您的机器可以处理的最大样本量。原理与从感兴趣的人群中获取尽可能多的数据点相同。

还有一点是,Silhouette Score 的 sklearn 实现使用随机(非分层)采样。您可以使用相同的样本量(例如sample_size=50000)多次重复计算,以了解样本量是否足够大以产生一致的结果。

【讨论】:

    【解决方案2】:

    kmeans 收敛到局部最小值。起始位置在最佳集群数量中起着至关重要的作用。通常使用 PCA 或任何其他降维技术来降低噪声和维度以继续使用 kmeans 是一个好主意。

    只是为了完整起见而添加。通过“围绕中心点进行分区”来获得最佳数量的集群可能是一个好主意。相当于使用剪影法。

    奇怪观察的原因可能是不同大小的样本的不同起点。

    综上所述,评估手头数据集的可聚类性很重要。可处理的方法是按此处讨论的最差对比率Clusterability

    【讨论】:

      【解决方案3】:

      其他指标

      1. 弯头法:计算每个 K 解释的方差百分比,并选择绘图开始趋于平稳的 K。 (这里有一个很好的描述https://en.wikipedia.org/wiki/Determining_the_number_of_clusters_in_a_data_set)。显然,如果您有 k == 数据点数,则可以解释 100% 的方差。问题是解释的方差改进在哪里开始趋于平稳。

      2. 信息论:如果您可以计算给定 K 的可能性,那么您可以使用 AIC、AICc 或 BIC(或任何其他信息论方法)。例如。对于 AICc,它只是平衡了随着 K 增加而增加的可能性与所需参数数量的增加。实际上,您所做的只是选择最小化 AICc 的 K。

      3. 您可以通过运行其他方法(例如 DBSCAN)来估计大致合适的 K。虽然我还没有看到这种方法用于估计 K,但像这样依赖它可能是不可取的。但是,如果 DBSCAN 在这里也为您提供了少量集群,那么您的数据中可能有一些您可能不喜欢的东西(即没有您期望的那么多集群)。

      取样量

      您的情节似乎已经回答了这个问题:无论您的采样是什么,您都会在剪影得分中获得相同的模式。因此,这种模式似乎对抽样假设非常稳健。

      【讨论】:

        猜你喜欢
        • 2018-12-10
        • 2023-03-21
        • 2018-06-07
        • 2015-12-10
        • 2015-03-06
        • 2017-11-20
        • 2021-10-06
        • 2017-05-29
        • 2022-01-19
        相关资源
        最近更新 更多