Kmeans如何確定聚類個數K
序
在面試過程中經常問到K值如何確定,很多人說需要嘗試,的確沒錯,但是更多地需要講出來對每次嘗試的結果是如何進行評價的。
肘部法則
實際上,一開始是很難確定聚類數的,下圖的兩種聚類數似乎都是可行的:
但是,也存在一種稱之為肘部法則(Elbow Method)的方法來選定適當的K值:
上圖曲線類似於人的手肘,“肘關節”部分對應的 K 值就是最恰當的 K 值,但是並不是所有代價函式曲線都存在明顯的“肘關節”,例如下面的曲線:
一般來說,K-Means 得到的聚類結果是服務於我們的後續目的(如通過聚類進行市場分析),所以不能脫離實際而單純以數學方法來選擇 K 值。在下面這個例子中,假定我們的衣服想要是分為 S,M,L 三個尺碼,就設定 K=3 ,如果我們想要 XS、S、M、L、XL 5 個衣服的尺碼,就設定 K=5 :
輪廓係數
輪廓係數:
是評判聚類好壞的標準,結合類內聚合度以及類間分離度兩種指標來計算得到。-
計算方法:
a. 計算樣本 i 到同簇內其他樣本的平均距離 ,該值越小,說明樣本 i 越應該被聚類到該簇中,可以將 稱作樣本的簇內不相似度。
b. 簇 C 中所有樣本的 均值被稱作是簇C的簇不相似度。
計算樣本 i 到其他簇 中所有樣本的平均距離 稱作是樣本 i 與簇 的不相似度。定義樣本 i 的簇間不相似度為: = min(bi1, bi2…bik)
c. 越大說明樣本 i 越不屬於其他簇。
根據樣本 i 的簇內不相似度 和簇間不相似度 ,定義樣本 i 的輪廓係數: -
判斷方法
□ s_i 越接近1, 則說明樣本 i 聚類合理。
□ s_i 越接近-1,說明樣本 i 更適合聚到其他類
□ s_i越接近0,則說明樣本 i 在兩個簇的邊界上○ 根據輪廓係數選取k
我們可以在固定的k值上多次執行,求取輪廓係數的均值,再依據上述判斷準則選出合理的k值。
相關文章
- 第十篇:K均值聚類(KMeans)聚類
- Kmeans如何初始化聚類中心聚類
- 《機器學習實戰》kMeans演算法(K均值聚類演算法)機器學習演算法聚類
- 如何唯一確定一個 Java 類?Java
- kmeans實現文字聚類聚類
- 《機器學習實戰》二分-kMeans演算法(二分K均值聚類)機器學習演算法聚類
- 102、聚類Kmeans演算法聚類演算法
- mahout之聚類演算法——KMeans分析聚類演算法
- 呼叫WEKA包進行kmeans聚類(java)聚類Java
- KMeans演算法與GMM混合高斯聚類演算法聚類
- kmeans聚類演算法matlab實現聚類演算法Matlab
- Mahout學習之聚類演算法Kmeans聚類演算法
- 建模的時候如何確定一個名詞是類還是別一個類的屬性?
- 如何確定一個 Go 變數會被分配在哪裡?Go變數
- 機器學習——KMeans機器學習
- k個最小和;及數對數目分析
- 如何實現跨數百個K8s叢集的管理?K8S
- Java如何正確比較浮點數Java
- 「數倉面試」如何確定主題域?面試
- 聚類kmeans演算法在yolov3中的應用聚類演算法YOLO
- ML.NET技術研究系列-2聚類演算法KMeans聚類演算法
- 一個分數類的實現——Rational類
- 二叉樹節點個數,葉子個數,第K層個數,最低公共節點二叉樹
- Day30--類的個數
- 找最小的k個數(優先佇列)佇列
- 利用python的KMeans和PCA包實現聚類演算法PythonPCA聚類演算法
- 如何保證一個類中的例項變數不被改變變數
- 引數如何在python中明確型別?Python型別
- 淺談如何確定伺服器的數量伺服器
- 找到無序陣列中最小的k個數陣列
- 求陣列中k個數的所有組合陣列
- excel如何確定幾個未知數之和剛好等於給定的總和值Excel
- 如何判斷一個類是從另一個類繼承繼承
- 機器學習之分類:準確率機器學習
- jvm如何載入一個類JVM
- k-means聚類聚類
- K-均值聚類分析聚類
- leetcode:確實的第一個整數(java)LeetCodeJava