美文网首页秋招-算法
Kmeans如何确定聚类个数K

Kmeans如何确定聚类个数K

作者: 0过把火0 | 来源:发表于2018-10-12 14:42 被阅读15次

在面试过程中经常问到K值如何确定,很多人说需要尝试,的确没错,但是更多地需要讲出来对每次尝试的结果是如何进行评价的。

肘部法则

实际上,一开始是很难确定聚类数的,下图的两种聚类数似乎都是可行的:



但是,也存在一种称之为肘部法则(Elbow Method)的方法来选定适当的K值:



上图曲线类似于人的手肘,“肘关节”部分对应的 K 值就是最恰当的 K 值,但是并不是所有代价函数曲线都存在明显的“肘关节”,例如下面的曲线:

一般来说,K-Means 得到的聚类结果是服务于我们的后续目的(如通过聚类进行市场分析),所以不能脱离实际而单纯以数学方法来选择 K 值。在下面这个例子中,假定我们的衣服想要是分为 S,M,L 三个尺码,就设定 K=3 ,如果我们想要 XS、S、M、L、XL 5 个衣服的尺码,就设定 K=5 :

轮廓系数

  1. 轮廓系数:
    是评判聚类好坏的标准,结合类内聚合度以及类间分离度两种指标来计算得到。

  2. 计算方法:
    a. 计算样本 i 到同簇内其他样本的平均距离 a_i ,该值越小,说明样本 i 越应该被聚类到该簇中,可以将 a_i 称作样本的簇内不相似度。
    b. 簇 C 中所有样本的 a_i 均值被称作是簇C的簇不相似度。
    计算样本 i 到其他簇C_j 中所有样本的平均距离b_{ij} 称作是样本 i 与簇 C_j 的不相似度。定义样本 i 的簇间不相似度为: b_i = min(bi1, bi2…bik)
    c. b_i 越大说明样本 i 越不属于其他簇。
    根据样本 i 的簇内不相似度a_i 和簇间不相似度 b_i ,定义样本 i 的轮廓系数:

  3. 判断方法
    □ s_i 越接近1, 则说明样本 i 聚类合理。
    □ s_i 越接近-1,说明样本 i 更适合聚到其他类
    □ s_i越接近0,则说明样本 i 在两个簇的边界上

     ○ 根据轮廓系数选取k
    

我们可以在固定的k值上多次执行,求取轮廓系数的均值,再依据上述判断准则选出合理的k值。

转载注明:https://www.jianshu.com/p/f2b3a66188f1

相关文章

网友评论

    本文标题:Kmeans如何确定聚类个数K

    本文链接:https://www.haomeiwen.com/subject/khcgaftx.html