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聚類算法可以作為其他聚類算法的基礎