聚類是一種涉及資料點分組的機器學習技術。給定一組資料點,我們可以使用聚類演算法將每個資料點分類到特定的組。理論上,同一組中的資料點應具有相似的屬性和/或特徵,而不同組中的資料點應具有高度不同的屬性和/或特徵。聚類是一種無監督學習的方法,是許多領域中使用的常見統計資料分析技術。
在資料科學中,我們可以使用聚類分析,通過檢視應用聚類演算法時資料點歸類到哪些組,從資料中獲得一些有價值的見解。本文我們盤點從事資料科學需要掌握的5種聚類演算法及其優缺點。
k 均值聚類
k 均值可能是最知名的聚類演算法,很多入門資料科學和機器學習課程都會講到它。這種聚類演算法很容易理解,也很容易用**實現!下圖為 k 均值演算法的實現過程**:
k 均值聚類的優勢在於它非常快,因為我們所做的只是計算點和組中心之間的距離,計算量很少。因此它具有線性複雜度o(n)。
另一方面,k 均值也有幾個缺點。首先,你必須選擇有多少組/類。這一步可不是無關緊要,理想情況下,我們希望聚類演算法能夠為我們找出有多少組/類,因為它的價值是從資料中獲得一些見解。 k 均值也從隨機選擇的聚類中心開始,因此它可能在演算法的不同執行中產生不同的聚類結果。所以結果可能不具有可重複性且缺乏一致性。而其它聚類演算法的結果更為一致。
k-medians 是另一種與 k 均值相關的聚類演算法,除了使用均值重新計算組中心點,我們還使用該組的中值向量。這種方法對異常值不太敏感(因為使用中位數),但對於較大的資料集要慢得多,因為在計算中值向量時每次迭代都需要排序。
mean-shift 聚類
mean-shift 聚類是一種基於滑動視窗的演算法,也叫均值漂移演算法。它會找到資料點的密集區域。它是一種基於質心的演算法,意味著其目標是定位每個組/類的中心點,工作方式是將中心點的候選位置更新為滑動視窗內的點的平均值。然後在後期處理階段過濾這些候選視窗以消除近似重複,形成最後一組中心點及其對應的組。參看下面的**:
下面的**顯示了所有滑動視窗從端到端的整個過程。每個黑點表示滑動視窗的質心,每個灰點是資料點。
與 k 均值聚類相比,我們不需要選擇聚類數量,因為 mean-shift 能自動找到。這是乙個巨大的優勢。群集中心向最大密度點趨近也比較理想,因為這樣非常直觀易懂。其缺點就是視窗大小/半徑「r」的選擇非常重要,稍有不慎會極大地影響結果。
dbscan聚類
dbscan 是一種基於密度的聚類演算法,類似於 mean-shift 漂移,但具有幾個顯著的優點。參看下方這個**:
與其他聚類演算法相比,dbscan 具有一些很大的優勢。首先,它根本不需要預先設定好數量的群集。它還將異常值識別雜訊,這和 mean-shift 不一樣,後者即使資料點相差很大,也只是將它們歸入群集。另外,它能夠很好地找到任意大小和任意形狀的群集。
dbscan 的主要缺點是當群集具有不同的密度時,它的效能不如其它的聚類演算法。這是因為當密度變化時,用於識別鄰域點的距離閾值 ε 和 minpoints 的設定會在群集與群集之間發生變化。非常高維的資料也會出現這種缺點,因為距離閾值 ε 同樣非常難以估計。
使用高斯混合模型(gmm)的最大期望(em)聚類
k 均值的乙個主要缺點是它只簡單使用了群集中心的平均值。可以參考下圖了解為什麼這不是最好的方法。能很明顯地在左圖看到,有兩個不同半徑的圓形群集具有相同的平均值中心。 k 均值聚類無法處理這個問題,因為聚類的平均值非常接近。在群集不是圓形的情況下,k 均值也會失敗,這也是使用均值作為群集中心的結果。
高斯混合模型(gmm)比 k 均值更具靈活性。對於 gmm,我們假設資料點呈高斯分布。這種假設相比說它們是使用均值來迴圈的,限制性要小。這樣,我們有兩個引數來描述群集的形狀:平均值和標準偏差。以二維為例,這意味著聚類可以採用任何型別的橢圓形狀(因為我們在 x 和 y 方向都有標準偏差)。因此,每個高斯分布被分配給單個簇。
為了找到每個聚類的高斯引數(例如平均值和標準偏差),我們使用稱為最大期望(em)的優化演算法。下圖展現了高斯分布應用到群集的過程。然後我們可以繼續使用 gmm 進行最大期望的聚類過程。
使用 gmm 確實有兩個大優勢。首先,gmm 在群集協方差方面比 k 均值靈活的多。由於標準偏差引數,群集可以採用任何橢圓形狀,而不是侷限於圓形。k 均值實際上是 gmm 的乙個特例,其中每個群集的所有維度的協方差都接近 0。其次,由於 gmm 使用概率,所以每個資料點可以有多個聚類。因此,如果資料點位於兩個重疊的集群的中間,我們可以簡單地定義它的類,通過說它百分之 x 屬於類 1 和百分之 y 屬於類 2。也就是說 gmm 支援混合方式。
合成層次聚類
層次聚類演算法實際上分為兩類:自上而下或自下而上。自下而上演算法在開始時將每個資料點視為單個群集,然後連續地合併(或聚集)成對的群集,直到所有群集已合併到包含所有資料點的單個群集中。因此,自下而上的層次聚類稱為合成層次聚類,也叫 ahc。這種群集的層次結構表示為樹(或樹狀圖)。樹的根是收集所有樣本的唯一群集,葉子則是只有乙個樣本的群集。參看下圖。
層次聚類不需要我們指定群集的數量,我們甚至可以選擇多少數量的群集為最佳,因為我們是在構建樹。另外,該演算法對距離度量的選擇不敏感。層次聚類方法的乙個特別好的用例是當底層資料具有層次結構並且你想要恢復層次結構時,其他聚類演算法做不到。層次聚類的這些優點是以低效率為代價的,因為它具有 o(n³)的時間複雜度,與 k 均值和 gmm 的線性複雜性不同。
結語本文總結了從事資料科學需要熟悉的 5 種聚類演算法,即 k 均值聚類、mean-shift 聚類、dbscan 聚類、em 聚類與合成層次聚類。
聚類演算法 層次聚類演算法
層次聚類演算法 hierarchical clustering method 又稱為系統聚類法 分級聚類法。層次聚類演算法又分為兩種形式 凝聚層次聚類 首先將每個物件作為乙個簇,然後合併這些原子簇為越來越大的簇,直到某個終結條件被滿足。層次聚類 首先將所有物件置於乙個簇中,然後逐漸細分為越來越小的簇...
層次聚類演算法(一)
層次聚類 hierarchical clustering 試圖在不同層次上對資料集進行劃分,從而形成樹形的聚類結構,資料集的劃分可採用 自底向上 的聚合策略,也可以採用 自頂向下 的分拆策略。即層次聚類可以是凝聚的也可以是 的。凝聚的層次聚類方法使用自底向上的策略。即剛開始每個點都認為是乙個簇,然後...
層次聚類演算法(二)
上篇博文簡單的講述了層次聚類的基本概念,接下來就是具體的講述凝聚的聚類演算法agnes演算法與 的聚類演算法diana聚類演算法。agnes演算法 演算法描述 輸入 包含n個物件的資料庫,終止條件簇的數目k 輸出 k個簇 1 將每個物件當成乙個初始簇 2 repeat 3 根據兩個簇中最近的資料點找...