Kmeans如何確定聚類個數K

weixin_34234823發表於2018-10-12

在面試過程中經常問到K值如何確定,很多人說需要嘗試,的確沒錯,但是更多地需要講出來對每次嘗試的結果是如何進行評價的。

肘部法則

實際上,一開始是很難確定聚類數的,下圖的兩種聚類數似乎都是可行的:


8166116-285956fe95d8cbee.png

但是,也存在一種稱之為肘部法則(Elbow Method)的方法來選定適當的K值:


8166116-e62013933d6c0aed.png

上圖曲線類似於人的手肘,“肘關節”部分對應的 K 值就是最恰當的 K 值,但是並不是所有代價函式曲線都存在明顯的“肘關節”,例如下面的曲線:
8166116-4d054f43b3c0ca57.png

一般來說,K-Means 得到的聚類結果是服務於我們的後續目的(如通過聚類進行市場分析),所以不能脫離實際而單純以數學方法來選擇 K 值。在下面這個例子中,假定我們的衣服想要是分為 S,M,L 三個尺碼,就設定 K=3 ,如果我們想要 XS、S、M、L、XL 5 個衣服的尺碼,就設定 K=5 :

8166116-94eeddf0915cd0bc.png

輪廓係數

  1. 輪廓係數:
    是評判聚類好壞的標準,結合類內聚合度以及類間分離度兩種指標來計算得到。

  2. 計算方法:
    a. 計算樣本 i 到同簇內其他樣本的平均距離 ,該值越小,說明樣本 i 越應該被聚類到該簇中,可以將 稱作樣本的簇內不相似度。
    b. 簇 C 中所有樣本的 均值被稱作是簇C的簇不相似度。
    計算樣本 i 到其他簇 中所有樣本的平均距離 稱作是樣本 i 與簇 的不相似度。定義樣本 i 的簇間不相似度為: = min(bi1, bi2…bik)
    c. 越大說明樣本 i 越不屬於其他簇。
    根據樣本 i 的簇內不相似度 和簇間不相似度 ,定義樣本 i 的輪廓係數:

    8166116-9767b19261446e2c.png

  3. 判斷方法
    □ s_i 越接近1, 則說明樣本 i 聚類合理。
    □ s_i 越接近-1,說明樣本 i 更適合聚到其他類
    □ s_i越接近0,則說明樣本 i 在兩個簇的邊界上

     ○ 根據輪廓係數選取k
    

我們可以在固定的k值上多次執行,求取輪廓係數的均值,再依據上述判斷準則選出合理的k值。

轉載註明:https://www.jianshu.com/p/f2b3a66188f1

相關文章