K-means:如何选择K(cluster的数目)

Posted 李燕

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了K-means:如何选择K(cluster的数目)相关的知识,希望对你有一定的参考价值。

目前决定cluster数目的常用方法手动地决定cluster的数目

哪个K是正确的?

   技术分享技术分享

上图中的数据集,我们可以说它有4个clusters,也可以说它有2个clusters,但哪个是正确答案呢?其实这儿没有正确答案,数据集要划分的cluster的数目本来就是模拟两可的,可以是2个,3个,4个。这也是无监督学习的一部分,因为我们的数据集没有标签,所以没有清晰的答案。所以做一个能自动求出K值的算法是非常困难的

通过肘部法则(elbow method)来选择K值

技术分享

通过画K与cost function的关系曲线图,如左图所示,肘部的值(cost function开始时下降很快,在肘部开始平缓了)做为K值,K=3。

并不是所有的问题都可以通过画肘部图来解决,有的问题如右边的那个图,肘点位置不明显(肘点可以是3,4,5),这时就无法确定K值了。

故肘部图是可以尝试的一种方法,但是并不是对所有的问题都能画出如左边那么好的图来确定K值。

另一种选择K值的方法—后续目的(市场等)

技术分享

通过后续的一些目的,如市场方面的一些计算评估等。例如,T-shirt的例子,是将其设计为3种尺码还是5种尺码呢?要根据后续我们的一些目的来确定,是想T-shirt适应更多的顾客(5种)还是希望T-shirt更便宜(3种),来确定K的值。

总结

  1. 选择K值现在大多数还是通过你的理解与洞察手动来选择的
  2. 可以尝试通过elbow method来选择K值,但是它并不通用,因为很多情况下,肘部点并不明确
  3. 大多数情况下,我们根据后续的目的来选择K值,看后续要做些什么,来看我们的K值应该怎么选

 

以上是关于K-means:如何选择K(cluster的数目)的主要内容,如果未能解决你的问题,请参考以下文章

Scikit Learn K-means Clustering & TfidfVectorizer:如何将具有最高 tf-idf 分数的前 n 项传递给 k-means

数据挖掘--K-means

分组聚集的K-means算法应用实例

Python,OpenCV中的K均值聚类——K-Means Cluster

K-means Clustering of text data : 获取文本属于哪个簇

[ML L9] Clustering (K-MEANS)