本篇文章是介紹群集分析的第二篇文章,前一篇文章請參考《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 家族)不同,可以任意形狀分群(基於距離的分群演算法大多以類似圓形或凸形的形狀分群)。 不須事先指定分群的數目。 能分辨雜訊點。