0

我正在尝试创建使用分层凝聚聚类对文档进行聚类的程序,并且该程序的输出取决于将树状图切割到我获得最大纯度的级别。

所以以下是我现在正在研究的算法。

Create dedrogram for the documents in the dataset
purity = 0
final_clusters
for all the levels, lvl, in the dendrogram
    clusters = cut dendrogram at lvl
    new_purity = calculate_purity_of(clusters)
    if new_purity > purity
        purity = new_purity
        final_clusters = clusters

根据这个算法,我得到了在所有级别上计算出的纯度最高的簇。

问题是,当我在最低级别切割树状图时,每个簇只包含一个文档,这意味着它是 100% 纯的,因此簇的平均纯度为 1.0。但这不是所需的输出。我想要的是对文件进行适当的分组。难道我做错了什么?

4

2 回答 2

1

您使用的度量太简单了。

是的,关于纯度的“最佳”解决方案是只合并重复的对象,以便每个集群根据定义保持纯净。

这就是为什么优化数学标准通常不是解决实际数据问题的正确方法。相反,您需要问自己一个问题:“什么是有趣的结果”,其中有趣与数学意义上的最佳结果不同。

抱歉,我无法给您更好的答案 - 但我没有您的数据。

恕我直言,任何抽象的数学方法都将遭​​受同样的命运。您需要让您的数据用户需要指定要聚类的内容,而不是一些统计数字;所以不要在数学中寻找答案,而是看你的数据和你的用户需求。

于 2014-03-11T10:09:42.777 回答
0

我知道已经有几年了,但是可以改善结果的一种潜在方法是添加一个惩罚分量,该惩罚分量随着聚类数量的增加而增加。这样,您的“最佳设置”不会走捷径,而是为您提供更平衡的解决方案。

于 2020-12-09T23:05:27.380 回答