1967年,James MacQueen在他的論文《用於多變量觀測分類和分析的一些方法》中首次提出 「K-means」這一術語。1957年,貝爾實驗室也將標準算法用於脈衝編碼調製技術。1965年,E.W. Forgy發表了本質上相同的算法——Lloyd-Forgy算法,因此這一算法有時也被稱爲Lloyd-Forgy算法。更高效的版本則被Hartigan and Wong提出。算法
K-Means聚類算法是聚類算法之一,其中K表示類別的數量,也就是說,咱們想要將數據分紅幾個類別,Means表示均值。K值決定了初始質心(一般是隨機選擇的中心)的數量。K值是幾,必須有幾個質心。 簡而言之,K-Means聚類算法是一種經過均值聚類數據點的算法。數據庫
1、首先輸入K的值,將數據集分爲K個類別。網絡
2、從這組數據中隨機選擇K個數據點做爲初始大哥(初始質心),其它數據點都做爲小弟。架構
3、對數據集中每個小弟,計算與每個大哥的距離,離哪一個大哥距離最近,就分配給哪一個大哥。機器學習
4、每個大哥手下都彙集了一幫小弟,這時候召開黑幫會議,推選出新的大哥(新的質心)。學習
5、若是新大哥和老大哥之間的距離很小或爲0,說明新任大哥靠譜,選舉結束(能夠認爲咱們進行的聚類已經達到指望的結果,算法終止)。優化
6、若是新大哥和老大哥之間的距離很大,須要從新選舉新大哥,分配小弟(重複3~5的步驟)。網站
【例】如下是一組用戶的年齡數據,使用K-means算法劃分數據。編碼
15,15,16,19,19,20,22,28,35,40spa
【步驟】
(1)咱們將K值定爲2,並隨機選擇16和22做爲初始大哥。
(2)分別計算每個小弟與初始大哥的距離,劃分門派,距離相同的隨機劃分。
表1 第一次劃分數據
全部數據 |
距16距離 |
距22距離 |
門派1(16) |
門派2(22) |
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.咱們以新大哥代替老大哥,並重復以前的操做計算每個小弟與新大哥的距離,再次劃分門派。
表2 第二次劃分數據
全部數據 |
距16.8距離 |
距29距離 |
門派1(16.8) |
門派2(29) |
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距離 |
門派1(18) |
門派2(34.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爲一類。
1.文檔分類器
根據標籤、主題和文檔內容將文檔分爲多個不一樣的種類。這是一個很是標準且經典的K-means算法分類問題。首先須要對文檔進行初始化處理,將每一個文檔都用矢量來表示,並使用術語頻率來識別經常使用術語進行文檔分類,這一步頗有必要。而後對文檔向量進行聚類以識別文檔組中的類似性。
2.物品傳輸優化
使用K-means算法的組合找到無人機最佳發射位置和使用遺傳算法來解決旅行商的行車路線問題,優化無人機物品傳輸過程。
3.識別犯罪地點
使用城市中特定地區的相關犯罪數據,分析犯罪類型、犯罪地點以及二者之間的聯繫,能夠對城市中容易犯罪的地區作高質量的偵查。這是基於德里飛行情報區犯罪數據的論文。
4.客戶分類
聚類可以幫助營銷人員改善他們的客戶羣(在其目標區域內工做),並根據客戶的購買歷史、興趣或活動監控來對客戶類別作進一步的細分。這是關於電信運營商如何將預付費客戶分爲充值模式、發送短信和瀏覽網站幾個類別的白皮書。對客戶進行分類有助於公司針對特定客戶羣制定特定的廣告。
5.球隊狀態分析
分析球員的狀態一直都是體育界的一個重點。隨着競爭愈來愈激烈,機器學習在這個領域也扮演着相當重要的角色。要是你想建立一個優秀的球隊而且喜歡根據球員的狀態來識別相似的球員,那麼K-means算法是一個很好的選擇。
6.保險欺詐檢測
機器學習在汽車、醫療保險和保險欺詐檢測領域中應用普遍。利用以往欺詐性索賠的歷史數據,根據它和欺詐性模式聚類的類似性來識別新的索賠。因爲保險欺詐可能會對公司形成數百萬美圓的損失,所以欺詐檢測對公司來講相當重要。這是汽車保險中使用聚類來檢測欺詐的白皮書。
7.乘車數據分析
面向大衆公開的Uber乘車信息的數據集,爲咱們提供了大量關於交通、運輸時間、高峯乘車地點等有價值的數據集。分析這些數據不只對Uber大有好處,並且有助於咱們對城市的交通模式進行深刻的瞭解,來幫助咱們作城市將來規劃。
8.網絡分析犯罪分子
網絡分析是從我的和團體中收集數據來識別兩者之間的重要關係的過程。網絡分析源自於犯罪檔案,該檔案提供了調查部門的信息,由此對犯罪現場的罪犯進行分類。
9.呼叫記錄詳細分析
呼叫詳細記錄(CDR)是電信公司收集的關於用戶呼叫,短消息和網絡活動等信息的集合。將通話詳細記錄與客戶我的資料結合在一塊兒,這就能幫助電信公司對客戶需求作更多的預測。
10.IT警報的自動化聚類
大型企業IT基礎架構技術組件(如網絡,存儲或數據庫)會生成大量的警報信息。因爲警報信息能夠指向具體的操做,所以必須對警報信息進行手動篩選,確保後續過程的優先級。對數據進行聚類能夠對警報類別和平均修復時間作深刻了解,有助於對將來故障進行預測。