跳到主要內容

發表文章

目前顯示的是 12月, 2019的文章

ML|群集分析 Clustering 其二

本篇文章是介紹群集分析的第二篇文章,前一篇文章請參考《ML | 群集分析 Clustering 其一》。本文的重點在於簡介這些分群演算法的主要差異,並補充其 R 或者 Python 實作的範例,但不會提及這些分群演算法的數學方程式推導。 1. 群集分析的主要功能 2. 「階層式分群」與「切割式分群」 3. k-means演算法及其變體 4. k-means之外的切割式分群演算法 5. 「剛性分群」與「柔性分群」 6. 如何決定最佳分群數? 4. k-means之外的切割式分群演算法 為了避免自己的眼光太狹隘只認是熱門款,所以除了 k-means 家族之外的分群演算法也多少來瞭解一下。 # Spectral Clustering 有時候,我們所欲分析的資料,可能不見得都能像使用 K-means 家族的分群演算法時那樣,資料能夠以群的中心呈現數個不同的「圓 」。有時候,手頭上的資料可能呈現特殊形狀的分佈,這時候,基於圖論(Graph Theory)的「譜分群」(Spectral Clustering)就非常管用! 以下方四張圖為例,右上角的圖是使用 K-means 演算法而產生的分群結果,右下角是使用 Spectral Clustering 而產生的分群結果,發現其奧妙之處了嗎? # DBSCAN & OPTICS Clustering DBSCAN(Density-based spatial clustering of applications with noise)與OPTICS(Ordering points to identify the clustering structure)是除了 K-means 家族之外,另外兩項較知名的分群演算法。 DBSCAN 主要的概念是:所有屬於同一群的資料樣本,在給定的範圍當中必須包含一定數量的樣本數。也就是說,在給定的範圍內,屬同一類的集合必須超過一定的密集程度,因此,DBSCAN 是一種基於密度的分群方法,而範圍的形狀會根據測量距離的方式決定。其優缺點整理如下: 優點: 此算法與基於距離的分群演算法(例如:K-means 家族)不同,可以任意形狀分群(基於距離的分群演算法大多以類似圓形或凸形的形狀分群)。 不須事先指定分群的數目。 能分辨雜訊點。

ML|群集分析 Clustering 其一

本篇文章是要記錄在機器學習當中常見的「群集分析」(Clustering,又稱「分群」、「聚類」分析)方法。機器學習演算法當中概略分為兩大類:「監督式學習」和「非監督式學習」。非監督式學習即是指資料沒有標籤(unlabeled data)或沒有標準答案,無法透過所謂的目標變數(response variable)來做分類之訓練,群集分析又是非監督式學習的代表。 針對群集分析的文章將會依序提到以下內容,並且會拆成上下兩篇文章分別介紹。本篇文章會先介紹前三項,後三項則收錄於第二篇文章。本文的重點在於簡介這些分群演算法的主要差異,並補充其 R 或者 Python 實作的範例,但不會提及這些分群演算法的數學方程式推導。 Photo credit :  Datanovia 1. 群集分析的主要功能 2. 「階層式分群」與「切割式分群」 3. k-means 演算法及其變體 4. k-means之外的切割式分群演算法 5. 「剛性分群」與「柔性分群」 6. 如何決定最佳分群數? 1. 群集分析的主要功能 資料精簡、降低雜訊、降低計算量 推論假設的產生或驗證 2. 「階層式分群」與「切割式分群」 # 階層式分群 Hierarchical Clustering 階層式分群透過一種階層架構的方式,將資料層層反覆地進行分裂或聚合,以產生最後的樹狀結構圖(又稱作 dendrogram),再選取最佳的群聚數,故並不需要預設分群數目。其常見的方法有兩種: 聚合式階層分群法(Bottom-up, Agglomerative) : 如果採用聚合的方式,階層式分群法可由樹狀結構的底部開始,將資料或群聚逐次合併。 分裂式階層分群法(Top-down, divisible) : 如果採用分裂的方式,則由樹狀結構的頂端開始,將群聚逐次分裂。 優點 概念簡單,可用樹狀結構來表現整個計算過程。 只需要資料點兩兩之間的距離,就可以建構分群結果,而不需要資料樣本的實際座標。 無論是數值或者類別的資料皆適用。 缺點 :通常只適用於少量資料,很難處理大量資料。 # 切割式分群 Partitional Clustering 相對於階層式分群,切割式分群將所有資料都視為「同一層」,因此不會有分層的樹狀結構。其透過