质心匹配问题

机器算法验证 聚类 算法
2022-04-09 18:22:48

对于数据集,我们有黄金标准质心说现在,如果我们用输入上运行 k-means 算法,我们得到 k-means 质心Dc1,c2,,cnDnk1,k2,,kn

我只是想知道,是否有任何算法/启发式来匹配之间的质心,其中之间的一对一映射kicji,j=1,,nkc

我试图计算,并将匹配,其中它们之间的距离最小。但在这种情况下 被分配给,我们不需要。kpcj,j=1,,nkpcrkpkqcr

3个回答

因为 K-means 最小化方差,所以一个好的标准是最小化点对之间的距离平方和

这是一个积分 (0/1) 线性规划具体来说,配对可以由矩阵指定,其中如果配对,我们力求最小化Λ=(λij)λij=1cikjλij=0

i,jλij|cikj|2

受约束(强制一对一配对)

jλij=1
iλij=1
λij{0,1}.

只要质心不超过几百个,这个问题很快就解决了。(设置问题所涉及的矩阵将很快耗尽具有数百个质心的 RAM,因为它们按比例缩放O(n3),然后你可能不得不对编程有点大惊小怪。)例如,Mathematica 8 的 `LinearProgramming' 函数不需要可测量的时间,少于n=20质心,以 400 个质心升级到大约 5 秒。

解决方案 20 分

通过线段来显示配对,该图描绘了一个最优解n=20双变量正态质心ci和独立的双变量正态 K 均值解ki.

您要解决的问题是最小成本匹配问题,特别是最小化功能的问题

F(π)=icikπ(i)2

其中中的所有排列。πSn

这可以通过匈牙利算法(这是一种变相的原始对偶方法)来解决,并且需要时间。n3

听起来您可能需要考虑使用/编写能量函数。更多信息:http ://en.wikipedia.org/wiki/Optimization_%28mathematics%29#Multi-objective_optimization

我想如果您的 k 质心数量“小”,您可以为所有 ck 配对运行距离函数,并选择最小化总距离的集合作为“最佳”解决方案。
希望有帮助 -
佩里