Kmeans、DBSCAN、層次聚類等三種聚類算法筆記


一、Kmeans模型

聚類算法,該算法利用距離遠近的思想將目標數據聚爲指定的k個簇,簇內樣本越相似,表明聚類效果越好。

算法對應python的sklearn的子模塊cluster中的Kmeans類

1 算法思想及步驟

該聚類算法的思路非常通俗易懂,就是不斷地計算各樣本點與簇中心之間的距離,直到收斂爲止,其具體的步驟如下:

  • (1)從數據中隨機挑選k個樣本點作爲原始的簇中心。
  • (2)計算剩餘樣本與簇中心的距離,並把各樣本標記爲離k個簇中心最近的類別。
  • (3)重新計算各簇中樣本點的均值,並以均值作爲新的k個簇中心。
  • (4)不斷重複(2)和(3),直到簇中心的變化趨於穩定,形成最終的k個簇。

Kmeans聚類算法構造的目標函數:該目標函數的思想是,所有簇內樣本的離差平方和之和達到最小,而簇間樣本的離差平方和儘可能大。

2 最佳k值的確定方法

  • 簇內離差平方和拐點法
  • 輪廓係數法
  • 間隔統計量法

2.1 拐點法

該方法思想比較簡單,指通過在不同k值下計算簇內的離差平方和,然後通過可視化技術找到“拐點”對應的k值。通過可視化方法,重點關注的是斜率的變化.

2.2 輪廓係數法

該方法綜合考慮了簇的密集性與分散性兩個信息,如果數據集被分割爲理想的k個簇,那麼對應的簇內樣本會很密集,而簇間樣本會很分散。輪廓係數的計算公式可以表示爲:
S(i)=b(i)a(i)max(a(i),b(i))S(i)=\frac{b(i)-a(i)}{max(a(i),b(i))}
其中,a(i)體現了簇內的密集性,代表樣本i與同簇內其他樣本點距離的平均值;b(i)反映了簇間的分散性,它的計算過程是,樣本i與其他非同簇樣本點距離的平均值,然後從平均值中挑選出最小值。
有關輪廓係數的計算,可以直接調用sklearn子模塊metrics中的函數,即silhouette_score函數.

2.3 間隔統計量法

算法優缺點:

  • 該方法可以適用於任何聚類算法。
  • 對大數據集而言,其k值的確定會比較慢。

3 Kmeans算法的缺點

  • 需要用戶指定該算法的聚類個數。
  • 如果原始數據集存在量綱上的差異,就必須對其進行標準化的預處理
  • 算法對異常點非常敏感
  • 該算法** 不適合發現非球形**的簇

二、DBSCAN算法

DBSCAN(Density-Based Special Clustering of Applications with Noise),基於密度的聚類算法,解決針對KMeans算法的兩個缺點(一是聚類效果容易受到異常樣本點的影響;二是無法準確地將非球形樣本進行合理的聚類)。通常可以使用該算法實現異常點的檢測
算法優點

  • 密度聚類算法可以發現任何形狀的樣本簇
  • 該算法具有很強的抗噪聲能力

算法缺點

  • 需要用戶設定合理的半徑ε
  • 設定對應領域內最少的樣本數量MinPts

算法對應python的sklearn的子模塊cluster中的DBSCAN類

三、層次聚類算法

層次聚類算法,該算法比較適合小樣本的聚類,它是通過計算各個簇內樣本點之間的相似度,進而構建一棵有層次的嵌套聚類樹。
算法優點: 可以通過人爲設定聚類個數實現樣本點的聚合
算法缺點: 該算法仍然不適合非球形樣本的聚類;不太適合大樣本的聚類

算法對應python的sklearn的子模塊cluster中的AgglomerativeClustering類

1 層次聚類需要回答的兩個問題

  • 一個是樣本點之間通過什麼指標衡量它們之間的相似性
    答:通過樣本點之間的歐氏距離或曼哈頓距離來衡量它們的相似性
  • 另一個是如何衡量簇與簇之間的距離
    答:在sklearn模塊中,爲層次聚類所涉及的簇間距離提供了三種度量方法,分別是:最小距離法、最大距離法和平均距離法

1.1 最小距離法

最小距離法是指以所有簇間樣本點距離的最小值作爲簇間距離的度量。
該方法非常容易受到極端值的影響。

1.2 最大距離法

最大距離法是指以所有簇間樣本點距離的最大值作爲簇間距離的度量。
該方法也容易受到極端值的影響。

1.3 平均距離法

平均距離法指以所有簇間樣本點距離的平均值作爲簇間距離的度量。

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