分群演算法

讓我們迅速瞭解一些叢集演算法類型,以及何時應選擇各類型。

選擇分群演算法時,應考量演算法是否會擴充至資料集。機器學習中的資料集可能會有數百萬個範例,但並非所有叢集演算法都能有效率地調度資源。許多叢集演算法的運作方式,都是透過計算所有範例之間的相似性。這表示執行階段會以範例數量的正方形增加 \(n\),以 \(O(n^2)\) 複雜度標記法表示。 \(O(n^2)\) 當範例數量超過數百萬時,演算法就不適用。本課程著重於 k-means 演算法,其複雜度為 \(O(n)\),表示演算法會以線性方式進行擴充。 \(n\)

分群類型

分群法有兩種。如需完整清單,請參閱分群演算法的全方位問卷調查 (Xu, D. 和 Tian, Y. Ann. 資料。科幻 (2015) 2: 165每個方法最適合特定資料分佈。以下為針對四個常見方法的簡短討論,著重使用 k-means 為基礎的質心叢集。

以 Centroid 為基礎的分群法

以 Centroid 為基礎的分群將資料整理成非階層式叢集,而非下方定義的階層式分群法。k-means 是最廣泛使用的質心分群演算法。以 Centroid 為基礎的演算法具有效率,但對於初始條件和離群值來說較為敏感。本課程著重於 k-means,因為這是有效、高效且簡單的叢集演算法。

使用以 centroid 為基礎的叢集分組的範例。這些線條代表叢集之間的框線。
圖 1:以 centroid 為基礎的叢集範例。

密度密度分群法

密度密度分群法將密度較高的區域連結至叢集。只要允許您可以連結密度極大的區域,這便可允許任意形狀的分佈情況。這些演算法難以不同密度和高維度的資料。此外,依據這些演算法設計,系統不會將離群值指派給叢集。

使用以密度為基礎的分群法分成兩個叢集的範例。叢集無法以線性方式分隔。
圖 2:以密度為基礎的叢集範例。

分佈式分群

這項分群法假設資料由分佈式組成,例如 Gaussian 發布。在圖 3 中,分佈式演算法會將資料分成三個高斯分佈圖。隨著分佈點的距離增加,存取點的分佈可能性會減少。手環/錶帶顯示的機率降低。如果不知道資料分佈類型,請使用其他演算法。

使用分佈式分群法的叢集範例。每個叢集中的範例密度為一個陰影,代表叢集如何對應至分佈情形。
圖 3:分佈式叢集範例。

階層式分群法

階層式叢集會建立叢集樹狀結構。階層式叢集並不是在令人驚喜的情況下,適合用於分類資料,例如分類。如需範例,請參閱 Oksana Lukjancenko、Trudy Wassenaar 和 Dave Ussery 的 61 個序列大腦基因基因。此外,另一個好處是,可在正確的層級切割樹狀圖,以選擇任意數量的叢集。

採用階層式樹狀結構的動物。
圖 4:階層式堆疊叢集動物示例。