我正在使用 K-Means 聚类(文档聚类),但我意识到每次执行时分区都会发生变化,因为初始节点是由 kmean++ 算法获取的。我想知道是否有某种方法可以找到“平均”分区方案。我的意思是,在执行 100 次后,进行 100 次观察,然后计算平均分区方案。
有什么方法可以做到这一点吗?
我正在使用 K-Means 聚类(文档聚类),但我意识到每次执行时分区都会发生变化,因为初始节点是由 kmean++ 算法获取的。我想知道是否有某种方法可以找到“平均”分区方案。我的意思是,在执行 100 次后,进行 100 次观察,然后计算平均分区方案。
有什么方法可以做到这一点吗?
首先,关于什么是平均分区方案存在一个很大的定义问题。尽管如此,
我想,这个问题有两个可能的意图:
如果后者是问题,那么修复您(或库)实现正在使用的随机数生成器的种子应该可以解决问题。每次运行都会得到相同的结果。
对于一个真正的kmeans问题,很难知道您是否最终得到了一个最优解(因为您仍然在寻找局部最小值而不是全局最小值;但是,kmeans++改进了对.
因此,找到多次运行所获得结果的平均值意味着您正在尝试找到局部最小值的平均值,我认为这对提高分区质量没有任何贡献。
在这个问题中,他们讨论了我们如何比较从几个kmeans运行中获得的分区。但这绝不是平均水平。
总之,用不同的起始标准来启动这种启发式方法以获得更好的结果是很常见的,我不明白为什么要计算平均值,不管这意味着什么。然而,人们可能想看看每次运行所获得的解决方案有何不同,以及它们提供了什么样的错误。