是否有可能在k均值聚类中没有成员的聚类?

时间:2019-11-03 12:05:38

标签: cluster-analysis k-means

我有一个使用k-means算法的文本聚类项目。我的数据集是Facebook评论的政治情绪,因此每个评论都有正面,负面和中立的标签。

我在应用程序中所做的工作如下:

1. Normalize text and delete stopwords.
2. Term weighting using tf-idf.
3. Constructing a matrix of vectors for each comment data.
4. Set the number of clusters to 3 (based on the number of labels).
5. Choose centroid randomly based on the label. So each label contributes 1 comment as a centroid.
6. Calculate the distance of each comment's vector with each centroid, assign to the closest centroid.
7. Calculate the vector's average of each cluster as a new centroid.
8. Repeat steps 6 and 7 until the centroid does not change.
9. The final cluster results.

在我得到的聚类结果中,有一些没有成员的聚类。例如,我将群集数设置为3,但是结果是只有2个群集具有成员,而另外1个群集为空。

k均值算法有可能吗?如何解决这个问题?也许我的应用程序中存在错误?

2 个答案:

答案 0 :(得分:0)

显然,这是可能的。如果您要求三个群集,但只有两个数据点,那么您将不会获得三个群集。

实际上,这似乎非常可疑。 K均值通常以现有数据点作为聚类中心开始。随后的k均值迭代将使用数据中一堆点的质心。对于没有数据点的群集,要求存在一个数据点质心,该质心不是与至少一个数据点最接近的质心。

可能有可能会发生这种情况。但是,在现实世界中,这种可能性似乎很小。集群上是否有其他过滤机制(例如最小大小)正在过滤集群? k均值产生非常小的离群值簇并不少见。实际上,我认为这是最适合找到它们的地方。

答案 1 :(得分:0)

是的,k均值簇可以变为空。

这种情况很可能发生在起始值不正确和其他编程错误的情况下,因此,如果您经常看到这种情况,我仍然会进行调试。

您的方法也有一个重大的概念错误:这里没有没有会使类变为“正”,“负”或“中性”。这些是受监督的概念,集群无法做到这一点。

相关问题