作者:Josh Thompson 翻譯:張睿毅 校對:王雨桐
本文將介紹四種基本的聚類算法—層次聚類、基於質心的聚類、最大期望算法和基於密度的聚類算法,並討論不同算法的優缺點。聚類算法十分容易上手,但是選擇恰當的聚類算法並不是一件容易的事。數據聚類是搭建一個正確數據模型的重要步驟。數據分析應當根據數據的共同點整理信息。然而主要問題是,什麼通用性參數可以給出最佳結果,以及什麼才能稱為「最佳」。本文適用於菜鳥數據科學家或想提升聚類算法能力的專家。下文包括最廣泛使用的聚類算法及其概況。根據每種方法的特殊性,本文針對其應用提出了建議。聚類模型可以分為四種常見的算法類別。儘管零零散散的聚類算法不少於100種,但是其中大部分的流行程度以及應用領域相對有限。基於整個數據集對象間距離計算的聚類方法,稱為基於連通性的聚類(connectivity-based)或層次聚類。根據算法的「方向」,它可以組合或反過來分解信息——聚集和分解的名稱正是源於這種方向的區別。最流行和合理的類型是聚集型,你可以從輸入所有數據開始,然後將這些數據點組合成越來越大的簇,直到達到極限。層次聚類的一個典型案例是植物的分類。數據集的「樹」從具體物種開始,以一些植物王國結束,每個植物王國都由更小的簇組成(門、類、階等)。層次聚類算法將返回樹狀圖數據,該樹狀圖展示了信息的結構,而不是集群上的具體分類。這樣的特點既有好處,也有一些問題:算法會變得很複雜,且不適用於幾乎沒有層次的數據集。這種算法的性能也較差:由於存在大量的迭代,因此整個處理過程浪費了很多不必要的時間。最重要的是,這種分層算法並不能得到精確的結構。同時,從預設的類別一直分解到所有的數據點,類別的個數不會對最終結果產生實質性影響,也不會影響預設的距離度量,該距離度量粗略測量和近似估計得到的。根據我的經驗,由於簡單易操作,基於質心的聚類(Centroid-based)是最常出現的模型。 該模型旨在將數據集的每個對象劃分為特定的類別。 簇數(k)是隨機選擇的,這可能是該方法的最大問題。 由於與k最近鄰居(kNN)相似,該k均值算法在機器學習中特別受歡迎。(附連結:https://www.kaggle.com/chavesfm/tuning-parameters-for-k-nearest-neighbors-iris)計算過程包括多個步驟。首先,輸入數據集的目標類別數。聚類的中心應當儘可能分散,這有助於提高結果的準確性。其次,該算法找到數據集的每個對象與每個聚類中心之間的距離。最小坐標距離(若使用圖形表示)確定了將對象移動到哪個群集。之後,將根據類別中所有點的坐標平均值重新計算聚類的中心。重複算法的上一步,但是計算中要使用簇的新中心點。除非達到某些條件,否則此類迭代將繼續。例如,當簇的中心距上次迭代沒有移動或移動不明顯時,聚類將結束。儘管數學和代碼都很簡單,但k均值仍有一些缺點,因此我們無法在所有情景中使用它。缺點包括:因為優先級設置在集群的中心,而不是邊界,所以每個集群的邊界容易被疏忽。
無法創建數據集結構,其對象可以按等量的方式分類到多個群集中。
需要猜測最佳類別數(k),或者需要進行初步計算以指定此量規。
相比之下,期望最大化算法可以避免那些複雜情況,同時提供更高的準確性。簡而言之,它計算每個數據集點與我們指定的所有聚類的關聯概率。用於該聚類模型的主要工具是高斯混合模型(GMM)–假設數據集的點服從高斯分布。(連結:https://www.encyclopedia.com/science-and-technology/mathematics/mathematics/normal-distribution#3)k-means算法可以算是EM原理的簡化版本。它們都需要手動輸入簇數,這是此類方法要面對的主要問題。除此之外,計算原理(對於GMM或k均值)很簡單:簇的近似範圍是在每次新迭代中逐漸更新的。與基於質心的模型不同,EM算法允許對兩個或多個聚類的點進行分類-它僅展示每個事件的可能性,你可以使用該事件進行進一步的分析。更重要的是,每個聚類的邊界組成了不同度量的橢球體。這與k均值聚類不同,k均值聚類方法用圓形表示。但是,該算法對於不服從高斯分布的數據集根本不起作用。這也是該方法的主要缺點:它更適用於理論問題,而不是實際的測量或觀察。最後,基於數據密度的聚類成為數據科學家心中的最愛。(連結:http://www.mastersindatascience.org/careers/data-scientist/)這個名字已經包括了模型的要點——將數據集劃分為聚類,計數器會輸入ε參數,即「鄰居」距離。因此,如果目標點位於半徑為ε的圓(球)內,則它屬於該集群。具有噪聲的基於密度的聚類方法(DBSCAN)將逐步檢查每個對象,將其狀態更改為「已查看」,將其劃分到具體的類別或噪聲中,直到最終處理整個數據集。用DBSCAN確定的簇可以具有任意形狀,因此非常精確。此外,該算法無需人為地設定簇數 —— 算法可以自動決定。儘管如此,DBSCAN也有一些缺點。如果數據集由可變密度簇組成,則該方法的結果較差;如果對象的位置太近,並且無法輕易估算出ε參數,那麼這也不是一個很好的選擇。總而言之,我們並不能說選擇了錯誤的算法,只能說其中有些算法會更適合特定的數據集結構。為了採用最佳的(看起來更恰當的)算法,你需要全面了解它們的優缺點。例如,如果某些算法不符合數據集規範,則可以從一開始就將其排除在外。為避免繁瑣的工作,你可以花一些時間來記住這些信息,而無需反覆試驗並從自己的錯誤中學習。我們希望本文能幫助你在初始階段選擇最好的算法。繼續這了不起的工作吧!原文標題:
Choosing the Right Clustering Algorithm for your Dataset
原文連結:
https://www.kdnuggets.com/2019/10/right-clustering-algorithm.html
譯者簡介:張睿毅,北京郵電大學大二物聯網在讀。我是一個愛自由的人。在郵電大學讀第一年書我就四處跑去蹭課,折騰整一年驚覺,與其在當下焦慮,不如在前輩中沉澱。本文轉自: 數據派THU ;獲授權;
END
合作請加QQ:365242293
數據分析(ID : ecshujufenxi )網際網路科技與數據圈自己的微信,也是WeMedia自媒體聯盟成員之一,WeMedia聯盟覆蓋5000萬人群。