1.K-Means聚類(劃分聚類)
算法步驟:
(1) 首先我們選擇一些類/組,並隨機初始化它們各自的中心點。中心點是與每個數據點向量長度相同的位置。這需要我們提前預 知類的數量(即中心點的數量)。
(2) 計算每個數據點到中心點的距離,數據點距離哪個中心點最近就劃分到哪一類中。
(3) 計算每一類中中心點作爲新的中心點。
(4) 重複以上步驟,直到每一類中心在每次迭代後變化不大爲止。也可以多次隨機初始化中心點,然後選擇運行結果最好的一 個。
下面演示了K-Means進行分類的過程:
2.凝聚聚類(層次聚類)
算法步驟:
(1). 首先我們將每個數據點視爲一個單一的簇,然後選擇一個測量兩個簇之間距離的度量標準。例如我們使用average linkage 作爲標準,它將兩個簇之間的距離定義爲第一個簇中的數據點與第二個簇中的數據點之間的平均距離。
(2). 在每次迭代中,我們將兩個具有最小average linkage的簇合併成爲一個簇。
(3). 重複步驟2知道所有的數據點合併成一個簇,然後選擇我們需要多少個簇。
層次聚類優點: (1)不需要知道有多少個簇
(2)對於距離度量標準的選擇並不敏感
缺點:效率低
下面演示了凝聚聚類進行分類的過程:
3.SOM(Self-Organizing Maps)//單層神經網絡(模型聚類)
SOM網絡包含輸入層和輸出層。輸入層對應一個高維的輸入向量,輸出層由一系列組織在2維網格上的有序節點構成,輸入節點與輸出節點通過權重向量連接。學習過程中,找到與之距離最短的輸出層單元,即獲勝單元,對其更新。同時,將鄰近區域的權值更新,使輸出節點保持輸入向量的拓撲特徵。
算法流程:
(1) 網絡初始化,對輸出層每個節點權重賦初值;
(2) 將輸入樣本中隨機選取輸入向量,找到與輸入向量距離最小的權重向量;
(3) 定義獲勝單元,在獲勝單元的鄰近區域調整權重使其向輸入向量靠攏;
(4) 提供新樣本、進行訓練;
(5) 收縮鄰域半徑、減小學習率、重複,直到小於允許值,輸出聚類結果。
4.FCM(模糊C均值算法)(硬聚類裏的模糊聚類)
算法流程:
(1) 標準化數據矩陣;
(2) 建立模糊相似矩陣,初始化隸屬矩陣;
(3) 算法開始迭代,直到目標函數收斂到極小值;
(4) 根據迭代結果,由最後的隸屬矩陣確定數據所屬的類,顯示最後的聚類結果。
輸入:C 聚類簇數
m 柔性指數(越大,越柔,聚類越不明顯;越小,越接近HCM/硬聚類)
5.均值漂移聚類(密度聚類)
具體步驟:
(1). 確定滑動窗口半徑r,以隨機選取的中心點C半徑爲r的圓形滑動窗口開始滑動。均值漂移類似一種爬山算法,在每一次迭 代中向密度更高的區域移動,直到收斂。
(2). 每一次滑動到新的區域,計算滑動窗口內的均值來作爲中心點,滑動窗口內的點的數量爲窗口內的密度。在每一次移動 中,窗口會想密度更高的區域移動。
(3). 移動窗口,計算窗口內的中心點以及窗口內的密度,知道沒有方向在窗口內可以容納更多的點,即一直移動到圓內密度 不再增加爲止。
(4). 步驟一到三會產生很多個滑動窗口,當多個滑動窗口重疊時,保留包含最多點的窗口,然後根據數據點所在的滑動窗口 進行聚類。
下圖演示了局部窗口與全局多個窗口的均值漂移聚類的計算步驟:
6.高斯混合(GMM)模型聚類
具體步驟:
(1). 選擇簇的數量(與K-Means類似)並隨機初始化每個簇的高斯分佈參數(均值和方差)。也可以先觀察數據給出一個 相對精確的均值和方差。
(2). 給定每個簇的高斯分佈,計算每個數據點屬於每個簇的概率。一個點越靠近高斯分佈的中心就越可能屬於該簇。
(3). 基於這些概率我們計算高斯分佈參數使得數據點的概率最大化,可以使用數據點概率的加權來計算這些新的參數,權 重就是數據點屬於該簇的概率。
(4). 重複迭代2和3直到在迭代中的變化不大。
GMMs的優點:(1)GMMs使用均值和標準差,簇可以呈現出橢圓形而不是僅僅限制於圓形。K-Means是GMMs的一個特殊情況, 是方差在所有維度上都接近於0時簇就會呈現出圓形。
(2)GMMs是使用概率,所有一個數據點可以屬於多個簇。例如數據點X可以有百分之20的概率屬於A簇,百分之 80的概率屬於B簇。也就是說GMMs可以支持混合資格。
下面演示了高斯混合(GMM)聚類進行分類的過程: