層次聚類與非層次聚類
介紹
聚類是機器學習中一種重要的技術,用於根據資料點內在的模式和相似性將相似的資料點分組在一起。兩種常用的聚類方法是層次聚類和非層次聚類。層次聚類透過動態地合併或分割聚類來建立聚類的層次結構,基於它們之間的接近程度或差異。這將生成一個樹狀結構,稱為樹狀圖,它提供了對聚類之間不同層次關係的見解。另一方面,非層次聚類直接將資料點分配到聚類中,而無需考慮層次結構。理解這些聚類方法的差異和特性對於選擇適合特定聚類任務的演算法至關重要。
什麼是層次聚類?
層次聚類是一種靈活的聚類方法,它建立聚類的層次結構。它可以使用兩種主要策略來執行:
凝聚式層次聚類從將每個資料點視為單個聚類開始,並不斷合併相似的聚類,直到所有資料點都屬於一個聚類。在每一步中,演算法識別兩個最相似的聚類並將它們合併成一個更大的聚類。這個過程一直持續到形成一個單一的聚類,或者達到預定義的聚類數量。
分裂式層次聚類則相反,它從將所有資料點都放在一個聚類中開始,然後遞迴地將聚類分割成更小的聚類,基於差異。它首先將所有資料點視為一個單一聚類,並將其分成兩個聚類。然後,演算法繼續將每個生成的聚類分割成更小的聚類,直到滿足停止條件。
層次聚類的一個主要優點是它能夠提供聚類結果的層次表示。這種層次結構可以使用樹狀圖來視覺化,樹狀圖顯示了聚類之間的關係。樹狀圖有助於理解聚類之間的過程和聯絡,從而能夠對資料進行更深入的解釋。層次聚類還提供靈活性,可以透過在樹狀圖上設定一個截止點來確定聚類的數量。
什麼是非層次聚類?
非層次聚類,也稱為劃分聚類,指的是直接將資料點分配到聚類中,而無需考慮層次結構。它包括一些著名的演算法,例如 K 均值、DBSCAN 和高斯混合模型 (GMM)。非層次聚類演算法通常需要聚類數量作為輸入引數,並最佳化聚類標準來將資料點分配到聚類中。
非層次聚類的一個重要優勢是它的計算效率。與層次聚類不同,非層次聚類演算法不需要計算所有資料點之間的成對相似度或差異性。相反,它們專注於最佳化聚類標準,例如最小化聚類內距離或最大化聚類間距離。
這種特性使得非層次聚類特別適合大型資料集。此外,非層次聚類演算法對聚類數量的控制更多,因為需要指定所需的聚類數量。這允許獲得有針對性和預定義的聚類結果,這在許多應用程式中非常有用,在這些應用程式中,所需的聚類數量是預先知道的。
層次聚類與非層次聚類
以下表格突出了它們的差異
差異依據 |
層次聚類 |
非層次聚類 |
|---|---|---|
結構 |
透過不斷合併基於相似性的相似聚類來建立聚類的層次結構,形成一個稱為樹狀圖的樹狀結構。 |
直接將資料點分配到聚類中,而無需考慮層次結構或關係。 |
靈活性 |
它提供了靈活性,可以透過在樹狀圖上設定截止點來確定聚類的數量,允許探索不同的聚類層次結構。 |
它需要將聚類數量作為輸入引數,提供控制並預定義預期的聚類數量。 |
聚類可解釋性 |
它透過樹狀圖提供視覺化表示,從而可以瞭解聚類的層次關係和結構。 |
它更側重於最佳化聚類標準,例如最小化聚類內距離或最大化聚類間距離,而不是提供層次解釋。 |
用例 |
適用於探索層次關係和理解資料中的層次結構,尤其是在不知道所需聚類數量的情況下。 |
適用於需要預定義聚類數量的情況,這使其非常適合大型資料集和可解釋性不那麼重要的場景。 |
結論
總之,層次聚類和非層次聚類是將相似資料點分組在一起的兩種不同方法。層次聚類建立聚類的層次結構,提供確定聚類數量的靈活性,並透過樹狀圖提供視覺化表示。非層次聚類直接將資料點分配到聚類中,計算效率高,並且需要聚類數量作為輸入引數。選擇層次聚類還是非層次聚類取決於資料的性質、所需的聚類可解釋性、計算限制以及關於聚類數量的先驗知識。瞭解這些聚類方法之間的差異使資料科學家能夠為其特定的聚類任務選擇最合適的演算法。
資料結構
網路
關係資料庫管理系統(RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP