我正在尝试创建使用分层凝聚聚类对文档进行聚类的程序,程序的输出依赖于在这样一个级别上削减树状图,以便获得最大纯度。
下面是我现在正在研究的算法。
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。但这不是期望的输出。我想要的是对文档进行适当的分组。我做错了什么吗?
发布于 2014-03-11 18:09:43
你使用了一个过于简单的衡量标准。
是的,关于纯度的“最佳”解决方案是只合并重复的对象,这样每个集群在定义上都是纯的。
这就是为什么优化数学标准通常不是解决实际数据问题的正确方法。相反,你需要问自己这个问题:“有趣的结果会是什么”,其中有趣在数学意义上并不等同于最优。
很抱歉,我不能给你一个更好的答案--但我没有你的数据。
天哪,任何抽象的数学方法都会遭受同样的命运。您需要让您的数据和用户需求指定要聚类的内容,而不是某个统计数字;因此,不要在数学中寻找答案,而是要查看您的数据和用户需求。
发布于 2020-12-10 07:05:27
我知道已经有几年了,但是你可以改进你的结果的一种可能的方法是添加一个随着聚类数量增加的惩罚成分。这样,您的“最佳设置”不会走捷径,而是为您提供更平衡的解决方案。
https://stackoverflow.com/questions/22317813
复制相似问题