K-means:如何选择K(cluster的数目)
2016-03-03 20:30
253 查看
目前决定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的值。
总结
选择K值现在大多数还是通过你的理解与洞察手动来选择的
可以尝试通过elbow method来选择K值,但是它并不通用,因为很多情况下,肘部点并不明确
大多数情况下,我们根据后续的目的来选择K值,看后续要做些什么,来看我们的K值应该怎么选
哪个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的值。
总结
选择K值现在大多数还是通过你的理解与洞察手动来选择的
可以尝试通过elbow method来选择K值,但是它并不通用,因为很多情况下,肘部点并不明确
大多数情况下,我们根据后续的目的来选择K值,看后续要做些什么,来看我们的K值应该怎么选
相关文章推荐
- 类目(分类)
- 《leetCode》:Binary Tree Postorder Traversal
- ConcurrentHashMap之实现细节
- 【数据库】 SQL语言练习
- 杭电2051——Bitset
- 80X86寄存器介绍
- 【C++学习之路】派生类的构造函数(一)
- linux patch中的p0和p1的区别
- poj 3436 最大流的增广路算法
- html代码加密的方法有哪些
- SPOJ QTREE - Query on a tree
- XTU OJ 1209 Alice and Bob 2014(嘉杰信息杯ACM/ICPC湖南程序设计邀请赛暨第六届湘潭市程序设计竞赛)
- 关于最大流模板的补充说明
- 160303、js加密跟后台加密对应
- 5.leetcode题目13: Roman to Integer
- Javascript、js 查找匹配网页html中图片url
- 【C++】用类实现单向单链表的尾插PushBack(),尾删PopBack(),打印PrintSlist()。
- Android使用Volley上传文件
- sudo 命令详解
- 加密和解密