常見的六大聚類算法

  1. K-Means(K均值)聚類算法步驟: (1) 首先我們選擇一些類/組,並隨機初始化它們各自的中心點。中心點是與每個數據點向量長度相同的位置。這需要我們提前預知類的數量(即中心點的數量)。 (2) 計算每個數據點到中心點的距離,數據點距離哪個中心點最近就劃分到哪一類中。 (3) 計算每一類中中心點作爲新的中心點。 (4) 重複以上步驟,直到每一類中心在每次迭代後變化不大爲止。也可以多次隨機初始化中心點,然後選擇運行結果最好的一個。 優點: 速度快,計算簡便 缺點: 我們必須提前知道數據有多少類/組。 K-Medians是K-Means的一種變體,是用數據集的中位數而不是均值來計算數據的中心點。 K-Medians的優勢是使用中位數來計算中心點不受異常值的影響;缺點是計算中位數時需要對數據集中的數據進行排序,速度相對於K-Means較慢。2. 均值漂移聚類均值漂移聚類是基於滑動窗口的算法,來找到數據點的密集區域。這是一個基於質心的算法,通過將中心點的候選點更新爲滑動窗口內點的均值來完成,來定位每個組/類的中心點。然後對這些候選窗口進行相似窗口進行去除,最終形成中心點集及相應的分組。 具體步驟: (1)確定滑動窗口半徑r,以隨機選取的中心點C半徑爲r的圓形滑動窗口開始滑動。均值漂移類似一種爬山算法,在每一次迭代中向密度更高的區域移動,直到收斂。 (2) 每一次滑動到新的區域,計算滑動窗口內的均值來作爲中心點,滑動窗口內的點的數量爲窗口內的密度。在每一次移動中,窗口會想密度更高的區域移動。 (3) 移動窗口,計算窗口內的中心點以及窗口內的密度,知道沒有方向在窗口內可以容納更多的點,即一直移動到圓內密度不再增加爲止。 (4) 步驟一到三會產生很多個滑動窗口,當多個滑動窗口重疊時,保留包含最多點的窗口,然後根據數據點所在的滑動窗口進行聚類。優點:(1)不同於K-Means算法,均值漂移聚類算法不需要我們知道有多少類/組。 (2)基於密度的算法相比於K-Means受均值影響較小。 缺點:(1)窗口半徑r的選擇可能是不重要的。3. 基於密度的聚類方法(DBSCAN)與均值漂移聚類類似,DBSCAN也是基於密度的聚類算法。 具體步驟: 1. 首先確定半徑r和minPoints. 從一個沒有被訪問過的任意數據點開始,以這個點爲中心,r爲半徑的圓內包含的點的數量是否大於或等於minPoints,如果大於或等於minPoints則改點被標記爲central point,反之則會被標記爲noise point。 2. 重複1的步驟,如果一個noise point存在於某個central point爲半徑的圓內,則這個點被標記爲邊緣點,反之仍爲noise point。重複步驟1,知道所有的點都被訪問過。 優點:不需要知道簇的數量 缺點:需要確定距離r和minPoints4. 用高斯混合模型(GMM)的最大期望(EM)聚類使用高斯混合模型(GMM)做聚類首先假設數據點是呈高斯分佈的,相對應K-Means假設數據點是圓形的,高斯分佈(橢圓形)給出了更多的可能性。我們有兩個參數來描述簇的形狀:均值和標準差。所以這些簇可以採取任何形狀的橢圓形,因爲在x,y方向上都有標準差。因此,每個高斯分佈被分配給單個簇。 所以要做聚類首先應該找到數據集的均值和標準差,我們將採用一個叫做最大期望(EM)的優化算法。具體步驟: 1. 選擇簇的數量(與K-Means類似)並隨機初始化每個簇的高斯分佈參數(均值和方差)。也可以先觀察數據給出一個相對精確的均值和方差。 2. 給定每個簇的高斯分佈,計算每個數據點屬於每個簇的概率。一個點越靠近高斯分佈的中心就越可能屬於該簇。 3. 基於這些概率我們計算高斯分佈參數使得數據點的概率最大化,可以使用數據點概率的加權來計算這些新的參數,權重就是數據點屬於該簇的概率。 4. 重複迭代2和3直到在迭代中的變化不大。 GMMs的優點:(1)GMMs使用均值和標準差,簇可以呈現出橢圓形而不是僅僅限制於圓形。K-Means是GMMs的一個特殊情況,是方差在所有維度上都接近於0時簇就會呈現出圓形。 (2)GMMs是使用概率,所有一個數據點可以屬於多個簇。例如數據點X可以有百分之20的概率屬於A簇,百分之80的概率屬於B簇。也就是說GMMs可以支持混合資格。5. 凝聚層次聚類層次聚類算法分爲兩類:自上而下和自下而上。凝聚層級聚類(HAC)是自下而上的一種聚類算法。HAC首先將每個數據點視爲一個單一的簇,然後計算所有簇之間的距離來合併簇,知道所有的簇聚合成爲一個簇爲止。 具體步驟: 1. 首先我們將每個數據點視爲一個單一的簇,然後選擇一個測量兩個簇之間距離的度量標準。例如我們使用average linkage作爲標準,它將兩個簇之間的距離定義爲第一個簇中的數據點與第二個簇中的數據點之間的平均距離。 2. 在每次迭代中,我們將兩個具有最小average linkage的簇合併成爲一個簇。 3. 重複步驟2知道所有的數據點合併成一個簇,然後選擇我們需要多少個簇。 層次聚類優點:(1)不需要知道有多少個簇 (2)對於距離度量標準的選擇並不敏感 缺點:效率低6. 圖團體檢測(Graph Community Detection)當我們的數據可以被表示爲網絡或圖是,可以使用圖團體檢測方法完成聚類。在這個算法中圖團體(graph community)通常被定義爲一種頂點(vertice)的子集,其中的頂點相對於網絡的其他部分要連接的更加緊密。具體步驟: 1. 首先初始分配每個頂點到其自己的團體,然後計算整個網絡的模塊性 M。 2. 第 1 步要求每個團體對(community pair)至少被一條單邊鏈接,如果有兩個團體融合到了一起,該算法就計算由此造成的模塊性改變 ΔM。 3. 第 2 步是取 ΔM 出現了最大增長的團體對,然後融合。然後爲這個聚類計算新的模塊性 M,並記錄下來。 4. 重複第 1 步和 第 2 步——每一次都融合團體對,這樣最後得到 ΔM 的最大增益,然後記錄新的聚類模式及其相應的模塊性分數 M。 5. 重複第 1 步和 第 2 步——每一次都融合團體對,這樣最後得到 ΔM 的最大增益,然後記錄新的聚類模式及其相應的模塊性分數 M。


    文章來源於公總號黑馬程序員廣州中心(itheimagz)更多資源請關注
    image.png


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