【问题标题】:What can be the reasons for 90% of samples belong to one cluster when there is 8 clusters?当有 8 个聚类时,90% 的样本属于一个聚类的原因是什么?
【发布时间】:2015-01-03 19:01:31
【问题描述】:

我使用 k-means 算法对文档集进行聚类。

(参数为 - 簇数=8,不同质心的运行次数=10)

文档数为5800

令人惊讶的是聚类的结果是

90% 的文档属于集群 - 7(最终集群) 9% 的文档属于集群 - 0(第一个集群)

其余 6 个集群只有一个样本。这可能是什么原因?

【问题讨论】:

标签: python cluster-analysis k-means


【解决方案1】:

K-means 确实对噪声敏感,但请调查您的数据! 在应用距离测量之前,您是否对“真实数据”进行了预处理? 您确定您的距离指标代表您所期望的接近度吗?

有很多可能的“错误”可能导致这种情况.. 不必要的 k-means 错误

【讨论】:

    【解决方案2】:

    K-means 对噪声非常敏感!

    离数据较远的噪声在平方其偏差时变得更加有影响力。这使得 k-means 对此非常敏感。

    产生一个数据集,50 个点分布在 N(0;0.1),50 个点分布在 N(1;0.1) 和 100 处。运行 k-means 与 k=2,你一定会得到一个点一个簇,两个真实的簇合并了。

    这正是k-means 假定的工作方式:找到数据的最小二乘量化;它不关心数据集中是否存在“团块”。

    现在,如果存在异常值(在这里,您显然至少有 6 个这样的异常值),制作单元素聚类通常可能是有益的(相对于最小二乘目标)。在这种情况下,您可能需要将 k 增加您获得的此类单元素集群的数量。或者使用异常值检测方法,或者像 DBSCAN 这样可以容忍的聚类算法。噪音。

    【讨论】:

    • 这描述了我心中最大的问题之一。谢谢@Anony-Mousse
    【解决方案3】:

    K-means 聚类尝试最小化每个点与每个点所属的聚类质心之间的距离总和。因此,如果 90% 的点靠得很近,那么这些点与簇质心之间的距离之和就相当小,因此,k-means 求解算法会在此处放置一个质心。单点被放在自己的集群中,因为它们离其他点真的很远,并且这些点与其他点的集群不是最优的。

    【讨论】:

    • 非常感谢 Akavall。我需要找到更多随机化数据
    猜你喜欢
    • 2016-03-27
    • 2018-10-10
    • 2019-01-20
    • 2015-03-10
    • 1970-01-01
    • 2014-06-04
    • 2015-09-22
    • 2017-12-31
    • 2017-02-09
    相关资源
    最近更新 更多