聚類算法
聚類算法是一種非監督學習算法,根據數據集的分佈特徵,將其聚集爲相互比較近的多個集合,集合的數量通常指定。
經典算法 k-means
k-means是經典的聚類算法,其算法流程如下:
- 隨機或者有區分的選取k個點作爲k個種類的中心
- 分別計算所有點到每個中心的距離,並將其歸入最近的類
- 再次計算每個類中所有點的平均中心
- 將每個類的中心位置更新,重複2,3直到每個點的所屬類不在變化,或者達到設定的條件
例如下圖:
從左到右依次給點編號爲1,2,3,4,最開始選取1,2爲兩類的中心,則計算的
第一類:1
第二類:2,3,4
從新計算第二類的中心,由於其有三個點,其平均位置向右上方移動,第二個點離中心邊遠。因此第二次計算後分類爲
第一類:1,2
第二類:3,4
從新計算中心,每個點的所屬類都不在變化,算法結束
從上面可以看出,該算法相對簡單,但是容易陷入局部最優,對於初始的每個類的中心的選擇具有比較大的依賴
hierarchical cluster算法,層次聚類
算法流程:
共計k個點
- 對所有的數據點,每個點當做一個類,依次計算其量量之間的距離
- 將相鄰最近的類歸爲一類,總類數減少爲k-1
- 持續進行上述過程,直到達到結束標準
算法特點:
- 對於不知道預先有幾個類的情況有比較好的表現
- 兩個類之間的距離的計算有多種方法,
- 計算兩個類中最近兩個點的距離,容易讓兩個近點將離得很遠的點聚合到一起
- 計算兩個類中最遠兩個點的距離,容易讓兩個本來應該聚合的類因爲特殊點很難聚合
- 兩輛求距離獲得平均值。