我正在尝试使用分层凝聚聚类创建聚类文档的程序,程序的输出依赖于将树形图切割到我获得最大纯度的水平。
以下是我正在研究的算法。
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。但这不是理想的输出。我想要的是正确分组文件。我做错了吗?
答案 0 :(得分:1)
您使用的是一个过于简单的措施。
是的,关于纯度的“最佳”解决方案是仅合并重复的对象,以便每个群集按照定义保持纯净。
这就是为什么优化数学标准通常不是解决实际数据问题的正确方法。相反,你需要问自己一个问题:“什么是有趣的结果”,其中有趣的与数学意义上的最佳结果不同。
很抱歉,我无法给你更好的答案 - 但我没有你的数据。
恕我直言,任何抽象的数学方法都会遭受同样的命运。您需要将数据和用户需求指定要集群的内容,而不是某些统计数字;因此,不要在数学中寻找答案,而是查看您的数据和用户需求。答案 1 :(得分:0)
我知道已经有好几年了,但是可以改善结果的一种潜在方法是添加一个随簇数增加而增加的惩罚成分。这样,您的“最佳设置”就不会采用快捷方式,而是会为您提供更加平衡的解决方案。