我正在尝试使用 simpleKmeans 在 weka 中对文本数据(论坛中的帖子内容 + 用户)817 个实例进行聚类。由于某种原因,聚类是这样的:
Clustered Instances
0 812 ( 99%)
1 1 ( 0%)
2 1 ( 0%)
3 1 ( 0%)
4 1 ( 0%)
5 1 ( 0%)
有人可以向我解释一下为什么我没有均匀地得到聚类吗?
最佳答案
K-means 不保证偶数聚类。 (有 a tutorial on how to modify k-means to produce even-sized clusters ;但这并不能解决你的问题)。
k-means 对异常值非常敏感。在存在异常值的情况下,很常见的是仅由单个点组成的“异常值簇”。这可能就是您所观察到的。
但更重要的是,k-means 也不能很好地处理高维离散数据......而您的文本数据很可能正是这样:高维和离散值。问题在于,在这些数据上,每个点或多或少都是唯一的。 IE。异常值。没有两个表单帖子(可能除了垃圾邮件)是相同的。更糟糕的是:它们在欧氏距离平方(这是 k 均值的最佳距离)方面也或多或少相似。
您正在将 k-means 用于并非设计的场景。因此,它效果不佳也就不足为奇了。它用于低维连续数据的量化;不适用于从文本中提取有意义的组。
关于cluster-analysis - weka 中的文本聚类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21991767/