【算法】K-Means聚類算法(k-平均或k-均值)


1.聚類算法和分類算法的區別

a)分類

分類(Categorization or Classification)就是按照某種標准給對象貼標簽(label),再根據標簽來區分歸類。

舉例:

假如你有一堆動物的頭像圖片樣本,想把它們進行分類,分成:貓,狗,魚等。當在有新的動物圖片進來之后,能夠自動的識別出屬於哪一類,這就是分類,而貓,狗,魚等就是標簽

b)聚類

聚類是指事先沒有“標簽”而通過某種成團分析找出事物之間存在聚集性原因的過程。聚類是在沒有划分類別的情況下,根據數據相似度進行樣本分組的一種方法。

與分類模型需要使用有類標記樣本構成的訓練數據不同,聚類模型可以建立在無類標記的數據上,是一種非監督的學習算法。

舉例:

假如你有一堆數據樣本,想把這些數據分類,但是你也不知道怎么分,你只知道要分3類,4類或者其他更多。這時候就等於是把一堆零散的樣本聚成幾類。

c)總結:分類和聚類最大的區別就是有無標簽。

2.K-means屬於聚類算法

假設你有X1——Xi個樣本,想把它們分成Uk個中心

算法的步驟:

a).隨機的選擇U1---Uk個中心,用樣本Xi去減分別減這個中心值,得到距離類別中心最近的類別,歸為同一個簇。
b).將這個簇的中心值歸為這個簇的所有樣本的平均值,重新執行第一步。
c).不斷進行迭代,也就是不斷的執行a)和b)兩步,直到類別中心小於某個閾值也就是終止條件。

這些終止條件可以是:1)迭代次數; 2)簇中心變化率 ;3)最小平方誤差

3.注意事項:

a).K-means算法是初始敏感的

如下圖:在初始選擇簇類點時,對后面的聚類影響很大,下面初始選擇4個紅點作為簇類中心,結果就變成了右邊這種情況了。並不是我們想要分成的四類

解決辦法:聚類完之后計算一下簇的均方誤差,如果某一個簇的均方誤差特別大,就可以判斷這個簇聚的不對,初值選的不行,把簇中心比較近的合成一類,重新再聚一遍

這種叫做二分K-Means聚類

b)異常點處理

K—Means算法是將簇中所有的均值作為質心,若簇中含有異常點,將導致均值偏離嚴重。

例如:當有一個數組:1,2,3,4,100的均值是22,顯然距離大多數數據比較遠

解決辦法:該取中位數3為比較穩妥。這種取中位數的為簇中心的算法叫K-Mediods聚類

4.總結:

雖然有以下缺點:

a)不適合於發現非凸形狀的簇或者大小差別很大的簇

b)對噪聲和孤立點數據敏感

但是,K-Means聚類算法可以作為其他聚類算法的基礎

 


免責聲明!

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



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