淺談K-means聚類算法


K-means算法的起源

  1967年,James MacQueen在他的論文《用於多變量觀測分類和分析的一些方法》中首次提出 “K-means”這一術語。1957年,貝爾實驗室也將標准算法用於脈沖編碼調制技術。1965年,E.W. Forgy發表了本質上相同的算法——Lloyd-Forgy算法,所以這一算法有時也被稱為Lloyd-Forgy算法。更高效的版本則被Hartigan and Wong提出。

K-means算法的原理

  K-Means聚類算法是聚類算法之一,其中K表示類別的數量,也就是說,我們想要將數據分成幾個類別,Means表示均值。K值決定了初始質心(通常是隨機選擇的中心)的數量。K值是幾,必須有幾個質心。 簡而言之,K-Means聚類算法是一種通過均值聚類數據點的算法。

K-means算法的過程

1、首先輸入K的值,將數據集分為K個類別。

2、從這組數據中隨機選擇K個數據點作為初始大哥(初始質心),其它數據點都作為小弟。

3、對數據集中每一個小弟,計算與每一個大哥的距離,離哪個大哥距離最近,就分配給哪個大哥。

4、每一個大哥手下都聚集了一幫小弟,這時候召開黑幫會議,推選出新的大哥(新的質心)。

5、如果新大哥和老大哥之間的距離很小或為0,說明新任大哥靠譜,選舉結束(可以認為我們進行的聚類已經達到期望的結果,算法終止)。

6、如果新大哥和老大哥之間的距離很大,需要重新選舉新大哥,分配小弟(重復3~5的步驟)。

K-means算法的例子

【例】以下是一組用戶的年齡數據,使用K-means算法划分數據。

   15151619192022283540

【步驟】

1)我們將K值定為2,並隨機選擇1622作為初始大哥。

2)分別計算每一個小弟與初始大哥的距離,划分門派,距離相同的隨機划分。

1 第一次划分數據

所有數據

16距離

22距離

門派116

門派222

15

1

7

16

22

15

1

7

15

20

16

0

6

15

28

19

3

3

19

35

19

3

3

19

40

20

4

2

 

 

22

6

0

 

 

28

12

6

 

 

35

19

13

 

 

40

24

18

 

 

 

3)分別計算兩個門派的均值,把均值推選為新的大哥(新質心)。門派1的均值為16.8,門派2的均值為29.我們以新大哥代替老大哥,並重復之前的操作計算每一個小弟與新大哥的距離,再次划分門派。

第二次划分數據

所有數據

16.8距離

29距離

門派116.8

門派229

15

1.8

14

15

28

15

1.8

14

15

35

16

0.8

13

16

40

19

2.2

10

19

 

19

2.2

10

19

 

20

3.2

9

20

 

22

5.2

7

22

 

28

11.2

1

 

 

35

18.2

6

 

 

40

23.2

11

 

 

 

4)此時門派1均值18,門派2均值34.33,推舉為新大哥,重復划分門派。

表3 第三次划分數據

所有數據

18距離

34.33距離

門派118

門派234.33

15

3

19.33

15

28

15

3

19.33

15

35

16

2

18.33

16

40

19

1

18.33

19

 

19

1

18.33

19

 

20

2

14.33

20

 

22

4

12.33

22

 

28

10

6.33

 

 

35

17

0.67

 

 

40

22

5.67

 

 

 

5)計算門派1均值為18,門派2均值為34.33,推舉為新大哥,此時新大哥和老大哥距離為0,選舉結束。

年齡數據被划分為兩類,如上圖所示,15--22為一類,28--40為一類。

 K-means算法的有趣用例

1.文檔分類器

根據標簽、主題和文檔內容將文檔分為多個不同的種類。這是一個非常標准且經典的K-means算法分類問題。首先需要對文檔進行初始化處理,將每個文檔都用矢量來表示,並使用術語頻率來識別常用術語進行文檔分類,這一步很有必要。然后對文檔向量進行聚類以識別文檔組中的相似性。

2.物品傳輸優化

使用K-means算法的組合找到無人機最佳發射位置和使用遺傳算法來解決旅行商的行車路線問題,優化無人機物品傳輸過程。

3.識別犯罪地點

使用城市中特定地區的相關犯罪數據,分析犯罪類型、犯罪地點以及兩者之間的聯系,可以對城市中容易犯罪的地區做高質量的偵查。這是基於德里飛行情報區犯罪數據的論文。

4.客戶分類

聚類能夠幫助營銷人員改善他們的客戶群(在其目標區域內工作),並根據客戶的購買歷史、興趣或活動監控來對客戶類別做進一步的細分。是關於電信運營商如何將預付費客戶分為充值模式、發送短信和瀏覽網站幾個類別的白皮書。對客戶進行分類有助於公司針對特定客戶群制定特定的廣告。

5.球隊狀態分析

分析球員的狀態一直都是體育界的一個重點。隨着競爭越來越激烈,機器學習在這個領域也扮演着至關重要的角色。要是你想創建一個優秀的球隊並且喜歡根據球員的狀態來識別類似的球員,那么K-means算法是一個很好的選擇。

6.保險欺詐檢測

機器學習在汽車、醫療保險和保險欺詐檢測領域中應用廣泛。利用以往欺詐性索賠的歷史數據,根據它和欺詐性模式聚類的相似性來識別新的索賠。由於保險欺詐可能會對公司造成數百萬美元的損失,因此欺詐檢測對公司來說至關重要。這是汽車保險中使用聚類來檢測欺詐的白皮書。

7.乘車數據分析

面向大眾公開的Uber乘車信息的數據集,為我們提供了大量關於交通、運輸時間、高峰乘車地點等有價值的數據集。分析這些數據不僅對Uber大有好處,而且有助於我們對城市的交通模式進行深入的了解,來幫助我們做城市未來規划。

8.網絡分析犯罪分子

網絡分析是從個人和團體中收集數據來識別二者之間的重要關系的過程。網絡分析源自於犯罪檔案,該檔案提供了調查部門的信息,由此對犯罪現場的罪犯進行分類。

9.呼叫記錄詳細分析

呼叫詳細記錄(CDR)是電信公司收集的關於用戶呼叫,短消息和網絡活動等信息的集合。將通話詳細記錄與客戶個人資料結合在一起,這就能幫助電信公司對客戶需求做更多的預測。

10.IT警報的自動化聚類

大型企業IT基礎架構技術組件(如網絡,存儲或數據庫)會生成大量的警報信息。由於警報信息可以指向具體的操作,因此必須對警報信息進行手動篩選,確保后續過程的優先級。對數據進行聚類可以對警報類別和平均修復時間做深入了解,有助於對未來故障進行預測。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM