为什么 Weka XMeans 系统地低估了集群的数量?

Why does Weka XMeans systematically underestimate the number of clusters?

我在使用 Weka 的 XMeans 聚类器时遇到了一些问题。我和其他几个人谈过,我们都同意下面的屏幕截图中有六个集群,如果你眯着眼睛看的话,至少至少有两个集群。无论哪种方式,xMeans 似乎都不同意。

XMeans 似乎系统地低估了集群的数量,这取决于我将最小集群数设置为多少。最大簇数为 100,这是我得到的结果:

-L 1 // 1 cluster
-L 2 // 2 clusters
-L 3 // 3 clusters
-L 4 // 5 clusters
-L 5 // 6 clusters
-L 6 // 6 clusters

最令人震惊的是,-L 1(和-H 100)只找到一个集群。只有将最小簇数设为 5,我才能真正看到 6 个簇。将 improve-structure 参数调高(到 100,000)似乎没有任何效果。 (我也尝试过其他选项,没有发现任何区别。)以下是生成上述屏幕截图的选项,它找到了一个中心:

private static final String[] XMEANS_OPTIONS = {
    "-H", "100",         // max number of clusters (default 4)
    "-L", "1",           // min number of clusters (default 2)
    "-I", "100",         // max overall iterations (default 1)
    "-M", "1000000",     // max improve-structure iterations (default 1000)
    "-J", "1000000",     // max improve-parameter iterations (default 1000) 
};

显然我在这里遗漏了一些东西。如何使 XMeans 的行为符合预期?

我想这就是我害怕的。一个心理问题(我想如果你搜索Gestalttheorie你可能会找到一些关于感知方面的解释)。

人眼在把握星团的形式时发现了六个圆圈。但是,k-means 和 x-means 只关注 距离 。因此,集群看起来相当尴尬。同样,在使用 6-means 多次重启后,我几乎总是获得如下集群: 这可能是局部最小值,可以通过 xmeans

解决

或 3 均值

这很有趣,因为有些点明显违反了预期。

如果你在R中使用K-Means你可以分析聚类结果的内部。这些表明这些看起来笨拙的集群通常表现得很好。因此,不会收敛到预期的不同结果。

我认为这可以通过使用不同的距离度量来解决。例如,平方欧几里得距离强制圆形形状。 或者使用一些基于内核的聚类技术和 RBF 内核

============================================= ==

编辑 1: 不过weka的结果一方面还是比较尴尬,我用RWeka运行做了几个实验。基本上我为 27 之间的每个初始簇大小做了 运行 100 个簇-运行s。我的预期是,对于 26,对于其他我希望它们增长的集群大小,集群相当稳定。

然而,结果却大相径庭

所以基本上 26 相当稳定,但是,簇大小总是最多扩展 1.

让我们看看 BIC

我们可以观察到,随着簇大小的增加,BIC 并没有增加,而是强烈依赖于初始簇大小。

让我们再深入一点,看看初始集群大小为 3。运行 具有不同初始大小的多次重启会生成(可重现)以下两种情况:

不过BIC上的结果好像是BIC计算有BUG