機器學習中五種常用的聚類算法

聚類是機器學習中一種重要的無監督算法,它可以將數據點歸結爲一系列特定的組合。理論上歸爲一類的數據點具有相同的特性,而不同類別的數據點則具有各不相同的屬性。在數據科學中聚類會從數據中發掘出很多分析和理解的視角,讓我們更深入的把握數據資源的價值、並據此指導生產生活。以下是五種常用的聚類算法。

K均值聚類

這一最著名的聚類算法主要基於數據點之間的均值和與聚類中心的聚類迭代而成。它主要的優點是十分的高效,由於只需要計算數據點與劇類中心的距離,其計算複雜度只有O(n)。其工作原理主要分爲以下四步:

1.首先我們需要預先給定聚類的數目同時隨機初始化聚類中心。我們可以初略的觀察數據並給出較爲準確的聚類數目;

2.每一個數據點通過計算與聚類中心的距離了來分類到最鄰近的一類中;

3.根據分類結果,利用分類後的數據點重新計算聚類中心;

4.重複步驟二三直到聚類中心不再變化。(可以隨機初始化不同的聚類中心以選取最好的結果)

這種方法在理解和實現上都十分簡單,但缺點卻也十分明顯,十分依賴於初始給定的聚類數目;同時隨機初始化可能會生成不同的聚類效果,所以它缺乏重複性和連續性。

和K均值類似的K中值算法,在計算過程中利用中值來計算聚類中心,使得局外點對它的影響大大減弱;但每一次循環計算中值矢量帶來了計算速度的大大下降。

均值漂移算法

這是一種基於滑動窗口的均值算法,用於尋找數據點中密度最大的區域。其目標是找出每一個類的中心點,並通過計算滑窗內點的均值更新滑窗的中心點。最終消除臨近重複值的影響並形成中心點,找到其對應的類別。

1.首先以隨機選取的點爲圓心r爲半徑做一個圓形的滑窗。其目標是找出數據點中密度最高點並作爲中心;

2.在每個迭代後滑動窗口的中心將爲想着較高密度的方向移動;

3.連續移動,直到任何方向的移動都不能增加滑窗中點的數量,此時滑窗收斂;

4.將上述步驟在多個滑窗上進行以覆蓋所有的點。當過個滑窗收斂重疊時,其經過的點將會通過其滑窗聚類爲一個類;

下圖中每一個黑點都代表一個滑窗的中心,他們最終重疊在每一類的中心;

與K均值相比最大的優點是我們無需指定指定聚類數目,聚類中心處於最高密度處也是符合直覺認知的結果。但其最大的缺點在於滑窗大小r的選取,對於結果有着很大的影響。

基於密度的聚類算法(DBSCAN)

DBSCAN同樣是基於密度的聚類算法,但其原理卻與均值漂移大不相同:

1.首先從沒有被遍歷的任一點開始,利用鄰域距離epsilon來獲取周圍點;

2.如果鄰域內點的數量滿足閾值則此點成爲核心點並以此開始新一類的聚類。(如果不是則標記爲噪聲);

3.其鄰域內的所有點也屬於同一類,將所有的鄰域內點以epsilon爲半徑進行步驟二的計算;

4.重複步驟二、三直到變量完所有核心點的鄰域點;

5.此類聚類完成,同時又以任意未遍歷點開始步驟一到四直到所有數據點都被處理;最終每個數據點都有自己的歸屬類別或者屬於噪聲。

這種方法最大的優點在於無需定義類的數量,其次可以識別出局外點和噪聲點、並且可以對任意形狀的數據進行聚類。

但也存在不可迴避的缺點,當數據密度變化劇烈時,不同類別的密度閾值點和領域半徑會產生很大的變化。同時在高維空間中準確估計領域半徑也是不小的挑戰。

利用高斯混合模型進行最大期望估計

對於較爲複雜的分佈K均值將會產生如下圖般較爲離譜的聚類結果。

而高斯混合模型卻具有更高的靈活性。通過假設數據點符合均值和標準差描述的高斯混合模型來實現的。下圖以二維情況下爲例描述瞭如何利用最大期望優化算法來獲取分佈參數的過程:

1.首先確定聚類的數量,並隨機初始化每一個聚類的高斯分佈參數;

2.通過計算每一個點屬於高斯分佈的概率來進行聚類。與高斯中心越近的點越有可能屬於這個類;

3.基於上一步數據點的概率權重,通過最大似然估計的方法計算出每一類數據點最有可能屬於這一聚類的高斯參數;

4.基於新的高斯參數,重新估計每一點歸屬各類的概率,重複並充分2,3步驟直到參數不再變化收斂爲止。

在使用高斯混合模型時有兩個關鍵的地方,首先高斯混合模型十分靈活,可以擬合任意形狀的橢圓;其次這是一種基於概率的算法,每個點可以擁有屬於多類的概率,支持混合屬性。

凝聚層次聚類

層次聚類法主要有自頂向下和自底向上兩種方式。其中自底向上的方式,最初將每個點看做是獨立的類別,隨後通過一步步的凝聚最後形成獨立的一大類,幷包含所有的數據點。這會形成一個樹形結構,並在這一過程中形成聚類。

1.首先將每一個數據點看成一個類別,通過計算點與點之間的距離將距離近的點歸爲一個子類,作爲下一次聚類的基礎;

2.每一次迭代將兩個元素聚類成一個,上述的子類中距離最近的兩兩又合併爲新的子類。最相近的都被合併在一起;

3.重複步驟二直到所有的類別都合併爲一個根節點。基於此我們可以選擇我們需要聚類的數目,並根據樹來進行選擇。

層次聚類無需事先指定類的數目,並且對於距離的度量不敏感。這種方法最好的應用在於恢復出數據的層次化結構。但其計算複雜度較高達到了O(n^3).

每個聚類算法都有各自的優缺點,我們需要根據計算需求和應用需求選擇合適的算法來進行處理。隨着深度學習的出現,更多的神經網絡、自編碼器被用來提取數據中的高維特徵用於分類,是值得注意的研究熱點。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章