【问题标题】:How to calculate BIC for K-Means to get best K如何计算 K-Means 的 BIC 以获得最佳 K
【发布时间】:2016-02-13 20:23:55
【问题描述】:

我对 K-Means 聚类技术非常陌生。我想计算 K-Means 的 BIC 以找到最佳 K(簇数)。我在网上四处寻找python中的解决方案,但除了this thread之外没有具体的例子,我不确定它是否正确。有什么想法吗?

【问题讨论】:

标签: machine-learning k-means


【解决方案1】:

BIC 基本上是一种(合理的)启发式

BIC(theta|x, n) = -2 ln L(x|theta) + params(theta) lg n

其中x 是样本,n 是样本数,theta 是您的模型,params(theta) 是估计参数的数量,L 是与您的模型相关的似然函数,因此您需要 概率模型,分配概率 (ln L(x|theta) = ln PROD_{i=1}^n P(x|theta) = SUM_{i=1}^d ln P(x|theta))。事实上,虽然计算参数很容易(因为它只是 K*d,其中 K 是来自 K-means 的 K 和空间的 d 维),但您无法真正计算概率,因为 K-means 没有为您提供概率直接建模。

另一方面,您实际上可以证明 (http://mlg.eng.cam.ac.uk/teaching/3f3/1011/lect4.pdf) 存在等效的概率方法,从而导致相同的成本函数。因此,即使您首先拟合的是非概率模型,您也可以在拟合 k-means 后轻松恢复实际概率模型的解。

例如,正确的 python 实现位于:https://github.com/mynameisfiber/pyxmeans/blob/master/pyxmeans/xmeans.py(他们的_loglikelihood 函数是上面等式中的ln L(x|theta))。

【讨论】:

    猜你喜欢
    • 2020-12-16
    • 2013-02-02
    • 2016-07-15
    • 2013-07-03
    • 2014-05-20
    • 2020-07-23
    • 2012-07-06
    • 2010-12-05
    相关资源
    最近更新 更多