日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【聚类算法】常见聚类算法总结

發布時間:2025/3/21 编程问答 55 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【聚类算法】常见聚类算法总结 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉自:https://blog.csdn.net/u010062386/article/details/82499777
感謝博主

1.常見算法

1.原型聚類

“原型”是指樣本空間中具有代表性的店。此類算法假設聚類結構能夠通過一組原型刻畫,通常情形下,算法先對原型進行初始化,然后對原型進行迭代更新求解。–西瓜書

(1).K均值聚類(K-Means)

給定樣本集D={x1,x2,..xn},K均值算法針對聚類所得簇劃分C={C1,C2,..CK}最小化平方誤差,采用的貪心算法來迭代優化求解近似解。

E=i=1kxCix?μi22E=∑i=1k∑x∈Ci‖x?μi‖22
在基本術語中,算法有三個步驟。第一步選擇初始質心,最基本的方法是?從數據集中選擇樣本 X。初始化之后,K-means包括在其他兩個步驟之間循環。第一步將每個樣品分配到最近的質心。第二步通過獲取分配給每個先前質心的所有樣本的平均值來創建新質心。計算舊的和新的質心之間的差異,并且算法重復這最后兩個步驟,直到該值小于閾值。換句話說,它重復直到質心不顯著移動。

sklearn的實現:

y_pred = KMeans(n_clusters=2, random_state=random_state).fit_predict(X)sklearn.cluster.KMeans(n_clusters=8,init='k-means++', n_init=10, max_iter=300, tol=0.0001, precompute_distances='auto', verbose=0, random_state=None, copy_x=True, n_jobs=1, algorithm='auto')參數的意義:n_clusters:簇的個數,即你想聚成幾類 init: 初始簇中心的獲取方法 n_init: 獲取初始簇中心的更迭次數,為了彌補初始質心的影響,算法默認會初始10次質心,實現算法,然后返回最好的結果。 max_iter: 最大迭代次數(因為kmeans算法的實現需要迭代) tol: 容忍度,即kmeans運行準則收斂的條件 precompute_distances:是否需要提前計算距離,這個參數會在空間和時間之間做權衡,如果是True 會把整個距離矩陣都放到內存中,auto 會默認在數據樣本大于featurs*samples 的數量大于12e6 的時候False,False 時核心實現的方法是利用Cpython 來實現的 verbose: 冗長模式(不太懂是啥意思,反正一般不去改默認值) random_state: 隨機生成簇中心的狀態條件。 copy_x: 對是否修改數據的一個標記,如果True,即復制了就不會修改數據。bool 在scikit-learn 很多接口中都會有這個參數的,就是是否對輸入數據繼續copy 操作,以便不修改用戶的輸入數據。這個要理解Python 的內存機制才會比較清楚。 n_jobs: 并行設置 algorithm: kmeans的實現算法,有:’auto’, ‘full’, ‘elkan’, 其中 ‘full’表示用EM方式實現
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 優點

  • 原理比較簡單,實現也是很容易,收斂速度快。
  • 算法的可解釋度比較強。
  • 主要需要調參的參數僅僅是簇數k。
    • 缺點、

    • 需要事先確定分類的簇數,即k值。
    • 采用迭代方法,得到的結果只是局部最優。
    • 對初始值的選取比較敏感。(改進1:k-means++(sklearn已經添加該參數的取值);改進2:二分K-means)
    • 當數據量非常大時,算法的時間開銷是非常大的(改進:Mini Batch K-Means(精確度會降低,在可接受的范圍即可));
    • 若簇中含有異常點,將導致均值偏離嚴重,對噪聲和孤立點數據敏感(改進1:離群點檢測的LOF算法,通過去除離群點后再聚類,可以減少離群點和孤立點對于聚類效果的影響;改進2:改成求點的中位數,這種聚類方式即K-Mediods聚類(K中值));
    • 對于不是凸的數據集比較難收斂(改進:基于密度的聚類算法更加適合,比如DESCAN算法)
    • (2).學習向量化(LVQ)
      假設數據樣本帶有類別標記,利用這些監督信息來輔助聚類。

      (3).高斯混合聚類

      與k均值采用原型向量來刻畫聚類結構不同的是,高斯混合聚類采用的概率模型來表達聚類原型。–西瓜書

      用k-means算法解決聚類問題非常簡單,將數據聚為一個一個的點,但這樣往往比較粗糙,不適用于很多數據集。所以是采用概率模型來表達原型,即通過統計得到每個樣本點屬于各個類的概率,而不是判定它完全屬于一個類,所以有時也會被稱為軟聚類。從貝葉斯我們可以看出,給出一個概率來估計比直接得出一個結果要好得多。利用高斯分布函數估計出概率值。


      自己理解:
      一堆數據,先初始化幾個高斯分布,然后根據貝葉斯的后驗定理計算每個數據屬于該簇的概率,然后將該數據點劃分到該簇。一輪之后,重新根據屬于該簇的點計算高斯分布,在計算概(E操作)率,重復操作,直到點的聚類信息不再發生變化。(M操作的)

      2. 密度聚類

      基于密度的聚類假設聚類結構能通過樣本分布的緊密程度確定,通常情形下,密度聚類算法從樣本密度的角度來考察樣本之間的可連接性,并基于可連接樣本的不斷擴展聚類粗以獲得最終的聚類結果。–西瓜書

      這類密度聚類算法一般假定類別可以通過樣本分布的緊密程度決定。同一類別的樣本,他們之間的緊密相連的,也就是說,在該類別任意樣本周圍不遠處一定有同類別的樣本存在。通過將緊密相連的樣本劃為一類,這樣就得到了一個聚類類別。通過將所有各組緊密相連的樣本劃為各個不同的類別,則我們就得到了最終的所有聚類類別結果。

      (1).DBSCAN

      DBSCAN是基于一組鄰域來描述樣本集的緊密程度的,參數(?, MinPts)用來描述鄰域的樣本分布緊密程度。其中,?描述了某一樣本的鄰域距離閾值,MinPts描述了某一樣本的距離為?的鄰域中樣本個數的閾值。

          假設我的樣本集是D=(x1,x2,…,xm),則DBSCAN具體的密度描述定義如下:

          1) ?-鄰域:對于xj∈D,其?-鄰域包含樣本集D中與xj的距離不大于?的子樣本集,即N?(xj)={xi∈D|distance(xi,xj)≤?}, 這個子樣本集的個數記為|N?(xj)| 

          2) 核心對象:對于任一樣本xj∈D,如果其?-鄰域對應的N?(xj)至少包含MinPts個樣本,即如果|N?(xj)|≥MinPts,則xj是核心對象?!?/p>

          3)密度直達:如果xi位于xj的?-鄰域中,且xj是核心對象,則稱xi由xj密度直達。注意反之不一定成立,即此時不能說xj由xi密度直達, 除非且xi也是核心對象。

          4)密度可達:對于xi和xj,如果存在樣本樣本序列p1,p2,…,pT,滿足p1=xi,pT=xj, 且pt+1由pt密度直達,則稱xj由xi密度可達。也就是說,密度可達滿足傳遞性。此時序列中的傳遞樣本p1,p2,…,pT?1均為核心對象,因為只有核心對象才能使其他樣本密度直達。注意密度可達也不滿足對稱性,這個可以由密度直達的不對稱性得出。

          5)密度相連:對于xi和xj,如果存在核心對象樣本xk,使xi和xj均由xk密度可達,則稱xi和xj密度相連。注意密度相連關系是滿足對稱性的。

      DBSCAN的聚類定義很簡單:由密度可達關系導出的最大密度相連的樣本集合,即為我們最終聚類的一個類別,或者說一個簇。
      這個DBSCAN的簇里面可以有一個或者多個核心對象。如果只有一個核心對象,則簇里其他的非核心對象樣本都在這個核心對象的?-鄰域里;如果有多個核心對象,則簇里的任意一個核心對象的?-鄰域中一定有一個其他的核心對象,否則這兩個核心對象無法密度可達。這些核心對象的?-鄰域里所有的樣本的集合組成的一個DBSCAN聚類簇。

          那么怎么才能找到這樣的簇樣本集合呢?DBSCAN使用的方法很簡單,它任意選擇一個沒有類別的核心對象作為種子,然后找到所有這個核心對象能夠密度可達的樣本集合,即為一個聚類簇。接著繼續選擇另一個沒有類別的核心對象去尋找密度可達的樣本集合,這樣就得到另一個聚類簇。一直運行到所有核心對象都有類別為止。

         
      自己理解:

      給定一個半徑長度r和一個最小點的數目m,然后以某個點為圓心,r為半徑,如果在該圓內的點的數目大于m值,則把該點標記為中心點,如果數目小于m值,則被標記為噪聲點。重復該步驟,如果一個噪聲點存在于某個中心點的圓內,則標記該點為邊緣點。直到所有點都被標記了,然后連接在一個圓內中心點以及每個中心點的邊緣點組成一個簇。

      算法實現流程:

      sklearn實現:

      DBSCAN算法是確定性的,當以相同的順序給出相同的數據時,總是生成相同的簇。但是,當以不同順序提供數據時,結果可能不同。

      class sklearn.cluster.DBSCAN(eps=0.5, min_samples=5, metric=’euclidean’, metric_params=None, algorithm=’auto’, leaf_size=30, p=None, n_jobs=1)eps:兩個樣本之間的最大距離,以便將它們視為在同一鄰域中。 min_samples:對于要被視為核心點的點,鄰域中的樣本數(或總權重)。這包括點本身。 metric:最近鄰距離度量參數。可以使用的距離度量較多,一般來說DBSCAN使用默認的歐式距離 algorithm:最近鄰搜索算法參數(暴力實現,kd數,球樹實現)
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15

      時間復雜度:

      (1)DBSCAN的基本時間復雜度是 O(N*找出Eps領域中的點所需要的時間), N是點的個數。最壞情況下時間復雜度是O(N2)

      (2)在低維空間數據中,有一些數據結構如KD樹,使得可以有效的檢索特定點給定距離內的所有點,時間復雜度可以降低到O(NlogN)

      空間復雜度:低維和高維數據中,其空間都是O(N),對于每個點它只需要維持少量數據,即簇標號和每個點的標識(核心點或邊界點或噪音點)

      DBSCAN小結

          和傳統的K-Means算法相比,DBSCAN最大的不同就是不需要輸入類別數k,當然它最大的優勢是可以發現任意形狀的聚類簇,而不是像K-Means,一般僅僅使用于凸的樣本集聚類。同時它在聚類的同時還可以找出異常點,這點和BIRCH算法類似。

          那么我們什么時候需要用DBSCAN來聚類呢?一般來說,如果數據集是稠密的,并且數據集不是凸的,那么用DBSCAN會比K-Means聚類效果好很多。如果數據集不是稠密的,則不推薦用DBSCAN來聚類。

          下面對DBSCAN算法的優缺點做一個總結。

      • 優點:

          1) 可以對任意形狀的稠密數據集進行聚類,相對的,K-Means之類的聚類算法一般只適用于凸數據集。

          2) 可以在聚類的同時發現異常點,對數據集中的異常點不敏感。

          3) 聚類結果沒有偏倚,相對的,K-Means之類的聚類算法初始值對聚類結果有很大影響。

    • 缺點:

    •     1)如果樣本集的密度不均勻、聚類間距差相差很大時,聚類質量較差,這時用DBSCAN聚類一般不適合。

          2) 如果樣本集較大時,聚類收斂時間較長,此時可以對搜索最近鄰時建立的KD樹或者球樹進行規模限制來改進。

          3) 調參相對于傳統的K-Means之類的聚類算法稍復雜,主要需要對距離閾值?,鄰域樣本數閾值MinPts聯合調參,不同的參數組合對最后的聚類效果有較大影響。

      (1).Mean-Shift

      Mean shift 算法是基于核密度估計的爬山算法
      (Meanshift算法實際是一個自適應的梯度上升搜索峰值的算法)

      自己理解:

      對于樣本點,給定一個半徑r,首先隨機選擇一個樣本,計算以這個點為圓心,落在r為半徑的圓內的樣本點,然后計算這些樣本點到圓心的向量和,該向量和為一個均值偏移,圓心加上這個向量和更新為新的圓心,即圓朝著這個均值方向進行移動。重復該步驟,直到圓心不在移動,標記為一類。如果新類和已有類的中心距離小于半徑,則合并。重復操作,直到每個點都被標記,最后把該點歸為被某個簇標記次數最多的類。

      假設在一個多維空間中有很多數據點需要進行聚類,Mean Shift的過程如下:

      1、在未被標記的數據點中隨機選擇一個點作為中心center;

      2、找出離center距離在bandwidth之內的所有點,記做集合M,認為這些點屬于簇c。同時,把這些求內點屬于這個類的概率加1,這個參數將用于最后步驟的分類

      3、以center為中心點,計算從center開始到集合M中每個元素的向量,將這些向量相加,得到向量shift。

      4、center = center+shift。即center沿著shift的方向移動,移動距離是||shift||。

      5、重復步驟2、3、4,直到shift的大小很小(就是迭代到收斂),記住此時的center。注意,這個迭代過程中遇到的點都應該歸類到簇c。

      6、如果收斂時當前簇c的center與其它已經存在的簇c2中心的距離小于閾值,那么把c2和c合并。否則,把c作為新的聚類,增加1類。

      6、重復1、2、3、4、5直到所有的點都被標記訪問。

      7、分類:根據每個類,對每個點的訪問頻率,取訪問頻率最大的那個類,作為當前點集的所屬類。

      簡單的說,mean shift就是沿著密度上升的方向尋找同屬一個簇的數據點。

      加入核函數的漂移向量

      核函數的作用,就是把一個高維空間映射到一個低維空間,使之線性可分。
      給向量加上了一個權重?

      Mean-Shift小結

      meanshift方法適合概率密度函數有極值且在某一局部區域內唯一,即選擇的特征數據點能夠較為明顯的判定目標,亦即顯著特征點。meanshift的基本形式不適合等概率特征點,即特征點是均勻分布的情況。

      • 優點:
        1.不用事先確定分類的個數

      2.計算較為簡便,對數據中的異常點不敏感。

      3.適用于追蹤或者圖像分割

    • 缺點:
      1.受初始值影響較大

    • 2.算法收斂的速度和程度,很大程度上和選取的窗口有關

      sklearn實現:

      class sklearn.cluster.MeanShift(bandwidth=None, seeds=None, bin_seeding=False, min_bin_freq=1, cluster_all=True, n_jobs=1)[source]
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7

      3.層次聚類

      層次聚類試圖在不同的層次上對數據集記性劃分,從而形成樹形的聚類結構。–西瓜書

      (1).AGNES

      是一種自底向上聚合策略的層次聚類算法。他先將數據集中的每個樣本看做是一個廚師聚類簇,然后在算法運行的每一步中找出距離最近的兩個聚類簇進行合并。該過程不斷重復,直至達到預設的聚類簇個數。

      如何計算簇之間的距離。實際上每個簇是一個樣本集合,因此采用關于聚合的某種距離即可。

      單鏈接算法:(最小距離)兩個簇中距離最近的樣本的距離

      全鏈接算法:(最大距離)兩個簇中距離最遠的樣本的距離

      均鏈接算法:(平均距離)兩個簇中每兩個樣本之間的距離相加求平均的距離

      算法流程:

      • 優點:
        1,距離和規則的相似度容易定義,限制少;
        2,不需要預先制定聚類數;
        3,可以發現類的層次關系;
        4,可以聚類成其它形狀

      • 缺點:
        1,計算復雜度太高;
        2,奇異值也能產生很大影響;
        3,算法很可能聚類成鏈狀

      (2).BIRCH

      BIRCH算法比較適合于數據量大,類別數K也比較多的情況。它運行速度很快,只需要單遍掃描數據集就能進行聚類。BIRCH算法是個樹形結構,這顆樹的每一個節點是由若干個聚類特征(Clustering Feature,簡稱CF)組成。一個聚類特征CF是這樣定義的:每一個CF是一個三元組,可以用(N,LS,SS)表示。其中N代表了這個CF中擁有的樣本點的數量,這個好理解;LS代表了這個CF中擁有的樣本點各特征維度的和向量,SS代表了這個CF中擁有的樣本點各特征維度的平方和。
      CF有一個很好的性質,就是滿足線性關系,也就是CF1+CF2=(N1+N2,LS1+LS2,SS1+SS2)。如果把這個性質放在CF Tree上,也就是說,在CF Tree中,對于每個父節點中的CF節點,它的(N,LS,SS)三元組的值等于這個CF節點所指向的所有子節點的三元組之和。

      對于CF Tree,我們一般有幾個重要參數,第一個參數是每個內部節點的最大CF數B,第二個參數是每個葉子節點的最大CF數L,第三個參數是針對葉子節點中某個CF中的樣本點來說的,它是葉節點每個CF的最大樣本半徑閾值T,也就是說,在這個CF中的所有樣本點一定要在半徑小于T的一個超球體內。

      聚類特征樹CF Tree的生成

      自己的理解:

      先將第一個點加入進去,成為樹的一個節點,再把第二個點加進去,如果第二個點在以第一個點為球心的求體內,則加入,然后依舊加入點,如果所有點都在一個球體內,則作為一個節點,如果不在,則新建立一個節點,放入新點。如果該節點內的樣本超過了設定的閾值,則對該節點進行分裂,把該求體內距離最遠的兩個點分開分別作為新的節點,然后計算剩下的點到哪個節點的距離近就分到那邊的節點里去。如果在分裂的時候發現父節點的子節點個數也達到了設定的閾值,則按照上面的分裂步驟,先把該層的節點進行分裂。然后再進行下一步的構建。

      總結下CF Tree的插入:

          1. 從根節點向下尋找和新樣本距離最近的葉子節點和葉子節點里最近的CF節點

          2. 如果新樣本加入后,這個CF節點對應的超球體半徑仍然滿足小于閾值T,則更新路徑上所有的CF三元組,插入結束。否則轉入3.

          3. 如果當前葉子節點的CF節點個數小于閾值L,則創建一個新的CF節點,放入新樣本,將新的CF節點放入這個葉子節點,更新路徑上所有的CF三元組,插入結束。否則轉入4。

          4.將當前葉子節點劃分為兩個新葉子節點,選擇舊葉子節點中所有CF元組里超球體距離最遠的兩個CF元組,分布作為兩個新葉子節點的第一個CF節點。將其他元組和新樣本元組按照距離遠近原則放入對應的葉子節點。依次向上檢查父節點是否也要分裂,如果需要按和葉子節點分裂方式相同。
          

      將所有的訓練集樣本建立了CF Tree,一個基本的BIRCH算法就完成了,對應的輸出就是若干個CF節點,每個節點里的樣本點就是一個聚類的簇。也就是說BIRCH算法的主要過程,就是建立CF Tree的過程。
      真實的BIRCH算法除了建立CF Tree來聚類,其實還有一些可選的算法步驟的,現在我們就來看看 BIRCH算法的流程。

      1) 將所有的樣本依次讀入,在內存中建立一顆CF Tree, 建立的方法參考上一節。

      2)(可選)將第一步建立的CF Tree進行篩選,去除一些異常CF節點,這些節點一般里面的樣本點很少。對于一些超球體距離非常近的元組進行合并

      3)(可選)利用其它的一些聚類算法比如K-Means對所有的CF元組進行聚類,得到一顆比較好的CF Tree.這一步的主要目的是消除由于樣本讀入順序導致的不合理的樹結構,以及一些由于節點CF個數限制導致的樹結構分裂。

      4)(可選)利用第三步生成的CF Tree的所有CF節點的質心,作為初始質心點,對所有的樣本點按距離遠近進行聚類。這樣進一步減少了由于CF Tree的一些限制導致的聚類不合理的情況。

      BIRCH算法小結

      BIRCH算法可以不用輸入類別數K值,這點和K-Means,Mini Batch K-Means不同。如果不輸入K值,則最后的CF元組的組數即為最終的K,否則會按照輸入的K值對CF元組按距離大小進行合并。

          一般來說,BIRCH算法適用于樣本量較大的情況,這點和Mini Batch K-Means類似,但是BIRCH適用于類別數比較大的情況,而Mini Batch K-Means一般用于類別數適中或者較少的時候。BIRCH除了聚類還可以額外做一些異常點檢測和數據初步按類別規約的預處理。但是如果數據特征的維度非常大,比如大于20,則BIRCH不太適合,此時Mini Batch K-Means的表現較好。

          對于調參,BIRCH要比K-Means,Mini Batch K-Means復雜,因為它需要對CF Tree的幾個關鍵的參數進行調參,這幾個參數對CF Tree的最終形式影響很大。

          最后總結下BIRCH算法的優缺點:

      • 優點有:

          1) 節約內存,所有的樣本都在磁盤上,CF Tree僅僅存了CF節點和對應的指針。

          2) 聚類速度快,只需要一遍掃描訓練集就可以建立CF Tree,CF Tree的增刪改都很快。

          3) 可以識別噪音點,還可以對數據集進行初步分類的預處理

          4)如果需要減少數據實例的數量,或者如果想要將大量子群集作為預處理步驟或其他方式,則Birch比MiniBatchKMeans更有用。

    • 缺點有:

    •     1) 由于CF Tree對每個節點的CF個數有限制,導致聚類的結果可能和真實的類別分布不同.

          2) 對高維特征的數據聚類效果不好。此時可以選擇Mini Batch K-Means.根據經驗,如果 n_features大于20,通常使用MiniBatchKMeans會更好。

          3) 如果數據集的分布簇不是類似于超球體,或者說不是凸的,則聚類效果不好。

      sklearn的使用

      class sklearn.cluster.Birch(threshold=0.5, branching_factor=50, n_clusters=3, compute_labels=True, copy=True)1) threshold:即葉節點每個CF的最大樣本半徑閾值T,它決定了每個CF里所有樣本形成的超球體的半徑閾值。一般來說threshold越小,則CF Tree的建立階段的規模會越大,即BIRCH算法第一階段所花的時間和內存會越多。但是選擇多大以達到聚類效果則需要通過調參決定。默認值是0.5.如果樣本的方差較大,則一般需要增大這個默認值。2) branching_factor:即CF Tree內部節點的最大CF數B,以及葉子節點的最大CF數L。這里scikit-learn對這兩個參數進行了統一取值。也就是說,branching_factor決定了CF Tree里所有節點的最大CF數。默認是50。如果樣本量非常大,比如大于10萬,則一般需要增大這個默認值。選擇多大的branching_factor以達到聚類效果則需要通過和threshold一起調參決定3)n_clusters:即類別數K,在BIRCH算法是可選的,如果類別數非常多,我們也沒有先驗知識,則一般輸入None,此時BIRCH算法第4階段不會運行。但是如果我們有類別的先驗知識,則推薦輸入這個可選的類別值。默認是3,即最終聚為3類。4)compute_labels:布爾值,表示是否標示類別輸出,默認是True。一般使用默認值挺好,這樣可以看到聚類效果。
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17

      4.譜聚類

      譜聚類(spectral clustering)是廣泛使用的聚類算法,比起傳統的K-Means算法,譜聚類對數據分布的適應性更強,聚類效果也很優秀,同時聚類的計算量也小很多。它的主要思想是把所有的數據看做空間中的點,這些點之間可以用邊連接起來。距離較遠的兩個點之間的邊權重值較低,而距離較近的兩個點之間的邊權重值較高,通過對所有數據點組成的圖進行切圖,讓切圖后不同的子圖間邊權重和盡可能的低,而子圖內的邊權重和盡可能的高,從而達到聚類的目的。

      5.圖團體檢測

      2.性能度量

      比較好的聚類結果是,“簇類相似度高”且“簇間相似度低”。

      聚類的性能度量大致分為兩類,一類是將簇類結果與某個“參考模型”進行比較,稱為“外部指標”,另一類是直接參考聚類結果而不利用任何參考模型,稱為“內部指標”。

      1)外部指標

      “外部指標”通常有Jaccard系數(Jaccard Coefficient,簡稱JC)、FM系數(Fowlkes and Mallows Index,簡稱FMI)、Rand指數(Rand Index,簡稱RI)。

      • JC:
        JC=aa+b+cJC=aa+b+c

      DBI的值越小越好,DI的值越大越好

      3.常用的距離計算

      4.各聚類方法的比較

      參考的博客和資料:

      1.scikit-learn:cluster

      2.劉建平Pinard-DBSCAN,BIRCH,譜聚類

      3.常見的六大聚類算法

      3.聚類算法深度詳解

      4.Mean Shift聚類算法

      5.機器學習中常用的距離公式

      6.機器學習 –周志華

    總結

    以上是生活随笔為你收集整理的【聚类算法】常见聚类算法总结的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。