k-means 中的负 BIC

机器算法验证 r k-均值 比克 优化
2022-04-05 20:40:27

可能是一个简单的问题,但我试图将 BIC 解释为 k-means。

我有一些 k-means 聚类和计算 BIC 给我一个负值,有这样的情节:

-75000 |                 xxxxxxxxxxx
       |            xxxxx           xxxxx
(BIC)  |        xxxx
       |     xxx
       |   xx
-80000 | x
       ------------------------------------
         2           (k)  25             50

我四处搜索,但除了另一个未回答的问题(此处)之外,我找不到任何显示这样的情节的结果

“较小”的 BIC 是否意味着我的最佳聚类数是“2”(最负数)或“25”(接近于零),还是我的情节刚刚破裂?

2个回答

通常,目标是最小化 BIC,因此如果您处于负数区域,则具有最大模数的负数(负数区域最深处)表示首选模型。因此,在您的情节中,最好的情况似乎是“2”。

但是,mclust正如@simone 的回答所表明的那样,包装中使用的 BIC 的定义恰好是标准 BIC 的否定。因此,在此软件包中,您正在寻找具有最大 BIC 的解决方案。在您的示例中,这将是大约 25 或更高,但低于 50。

这可能对其他人有用。我对 mclust 包感到困惑,因为我尝试了高斯混合模型来检查我的数据是否遵循单模态或多模态高斯分布。我发现,根据帮助中提供的示例,最适合我的数据的模型是一个包含两个组件的模型(这表明数据遵循双峰高斯分布)。然而,令我惊讶的是,我发现具有两个组件的模型具有最高的 BIC 值(值的范围在负侧)。

这是因为在这个包中计算的 BIC 值是:2 * loglik - nparams * log(n) 而不是经典的:-2 * loglik + nparams * log(n)

这是解释here