• 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值应该怎么选
  • 相关阅读:
    POJ 1386 Play on Words(单词建图+欧拉通(回)路路判断)
    HTTP协议详解??
    Python 中三大框架各自的应用场景??
    django 开发中数据库做过什么优化??
    谈一下你对 uWSGI 和 nginx 的理解??
    django 中间件的使用??
    Flask 中请求钩子的理解和应用?
    七层模型? IP ,TCP/UDP ,HTTP ,RTSP ,FTP 分别在哪层?
    说说 HTTP 和 HTTPS 区别??
    hasattr() getattr() setattr() 函数使用详解??
  • 原文地址:https://www.cnblogs.com/yan2015/p/5239970.html
Copyright © 2020-2023  润新知