機器學習 K means如何選擇k值?

2021-10-13 12:33:55 字數 909 閱讀 3623

k_means聚類是我們在無監督學習中常用的一種演算法,但有乙個很讓人頭疼的問題就是如何選擇k值。在實際業務中,如果根據業務場景明確知道要得到的類數,那就好辦了,但很多時候不知道k怎麼辦呢?下面有三種方法可以用來確定k值,其基本思想還是最小化類內距離,最大化類間距離,使同一簇內樣本盡可能相似,不同簇中樣本盡可能不相似。

1.肘部法

隨著k值增大,誤差值會越來越小(舉乙個極端的例子:當每乙個樣本被分為乙個類時,類內間距最小,但這顯然不是我們想要的),因此可根據不同k值下的誤差曲線選擇使誤差平方和下降最快的k值,當大於此k值時,k值增大,但誤差減少量很小。即選擇曲線上的拐點最佳。在下面這個圖中即選擇k=2,將樣本分為兩類。

2.輪廓係數

結合內聚度和分離度兩種因素,可以用來在相同原始資料的基礎上評價不同方法,也可以評價演算法不同執行方式對聚類結果所產生的影響。使用輪廓係數時先假設已經通過聚類將資料分成了k個簇,對簇中的每個向量,計算其輪廓係數。

任意點i的計算公式為:

該公式只是求得了乙個點的輪廓係數,將所有點的輪廓係數求平均即得到該聚類結果的輪廓係數。取輪廓係數最大的k值作為最優k。

3.calinski-harabasz準則

其計算公式為:

n:聚類數,k:當前的類,

trb(k):類間協方差矩陣的跡。

trb(k):類內協方差矩陣的跡。

什麼是矩陣的跡?乙個n×n矩陣a的主對角線(從左上方至右下方的對角線)上各個元素的總和即為矩陣a的跡。

ch值越大,類內越緊密,類間越分散,因此根據最大化類間距離最小化類內距離原則,ch值越大聚類結果越好。

calinski-harabasz準則計算速度較快,而輪廓係數要計算每個樣本點的距離,其計算速度很慢。

如何選擇K Means中K的值

k means需要設定乙個簇心個數的引數,現實中,最常用於確定k數的方法,其實還是人手工設定。例如,當我們決定將衣服做成幾個碼的時候,其實就是在以 人的衣服的長和寬為為特徵進行聚類。所以,弄清楚我們更在意的是什麼,能夠 引導選擇更合適的k值。有種方法能自動決定k值,也就是所謂的elbow metho...

機器學習 kmeans

1 手寫kemeans 流程 手寫 f 桌面 rna seq1 leetcode 10 面試真題 6 位元組跳動 手寫kmeans.py 2 k 如何確定 t sne視覺化和手肘法,k值所決定的是在該聚類演算法中,所要分配聚類的簇的多少,kmeans 演算法對初始值敏感,相同的k,選的點不同,會影響...

機器學習 K means

這個演算法主要是乙個迭代的過程 1.在乙個資料集中隨機選擇k個聚類中心 2.按照離各個聚類中心的遠近來將資料集中的資料劃分到各個分類中。3.將各個分類中資料點的平均座標來作為新的聚類中心 一直重複2 3過程直到各個分類中的資料點的平均座標正好等於聚類中心的座標為止。k means演算法也有可能會出現...