聚類算法十分容易上手,但是選擇恰當的聚類算法并不是一件容易的事。
數據聚類是搭建一個正確數據模型的重要步驟。數據分析應當根據數據的共同點整理信息。然而主要問題是,什么通用性參數可以給出最佳結果,以及什么才能稱為“最佳”。
本文適用于菜鳥數據科學家或想提升聚類算法能力的專家。下文包括最廣泛使用的聚類算法及其概況。根據每種方法的特殊性,本文針對其應用提出了建議。
四種基本算法以及如何選擇
聚類模型可以分為四種常見的算法類別。盡管零零散散的聚類算法不少于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也有一些缺點。如果數據集由可變密度簇組成,則該方法的結果較差;如果對象的位置太近,并且無法輕易估算出ε參數,那么這也不是一個很好的選擇。
總而言之,我們并不能說選擇了錯誤的算法,只能說其中有些算法會更適合特定的數據集結構。為了采用最佳的(看起來更恰當的)算法,你需要全面了解它們的優缺點。
例如,如果某些算法不符合數據集規范,則可以從一開始就將其排除在外。為避免繁瑣的工作,你可以花一些時間來記住這些信息,而無需反復試驗并從自己的錯誤中學習。
-
聚類算法
+關注
關注
2文章
118瀏覽量
12141 -
機器學習
+關注
關注
66文章
8423瀏覽量
132750
發布評論請先 登錄
相關推薦
評論