kmeans中的k的含义_如何确定Kmeans中的k值,引出BIC

http://stackoverflow.com/questions/1793532/how-do-i-determine-k-when-using-k-means-clustering

主要包括这么几种方法:计算模型的BIC;从一个较大值的k开始,不断去除质心即减少k的数目;从一个质心开始,不断分解各个簇,直到分配到各个簇的样本点符合高斯分布。

1 利用BIC

​1.1 BIC

BIC的计算公式如下:

​其中,N是数据集中的样本数目,k特征数目。BIC是对模型拟合程度和复杂度的一种度量方式,计算公式中的-2*ln(likehood)部分是对模型拟合度的度量,这个值越大,说明拟合程度越差。模型复杂度由ln(N)*k度量。

​似然函数一般是通过概率计算的,即L(θ)=∏p(y|x;θ),是一个介于0到1的小数值,结合ln函数的图像可知ln(likehood)是一个负数,且似然函数越小,对应的就是一个绝对值越大的负数,所以-2*ln(likehood)越大,说明模型拟合度越差。

1.2 X-means方法确定k值

总体来说,X-means的过程如下:

Improve-Params环节就是运行kmeans算法直到收敛。

Improve-Structure环节是查看是否存在一个存在一个新的质心,并找打其位置。​这一步通常是将已存在的质心,采用某种策略进行分裂。

1.2.1 之前已有的分裂策略

主要包括两种。

第一种,​选取一个质心,在其附近生成一个新的质心,然后重新运行kmeans,查看新的模型是否性能更好(以某个评价标准进行评价,如BIC),如果新的模型性能更好,就接受新的质心,否则返回原有的模型。这种策略的问题在于,如何选择哪个质心进行分裂,如果选择的质心不能提升模型性能,接下来应当选取哪个质心。

第二种,依据某些启发式方法,选择一半的质心进行分裂,分裂后重新运行kmeans,查看模型质量,如果模型质量提高,就接受分裂。​这种策略的问题在于启发式策略的选择,并且当只有一两个簇需要分裂时这种策略效果也不好。

1.2.2​ X-means的策略

以上图中的数据为例进行说明。上图中是一个已经稳定的kmeans结果,并给出了各个簇之间的边界。X-means的过程大致如下:

1)对每个簇进行分裂,得到两个子簇。随机选定一个向量,将两个子簇​沿着向量向两个方向一定距离,距离和子簇的大小成比例。然后在每个簇内进行一个k=2的聚类,注意是只在每个簇内部进行。

这里我有一些疑问:​依据什么标准对每个簇内部的数据进行划分,为什么要沿着随机选定的向量进行移动?我觉得是不是可以直接在每个簇内部进行k=2的聚类?

​2)对原簇和分裂成连个子簇后的簇进行评价,选定依据评价标准效果更好的方案。

​****************

这个思路和Gmeans的大同小异,​都是对一个簇进行判断,是否需要分裂,需要则分裂,不需要则保持原有簇。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值