層次聚類演算法原理

一、層次聚類演算法原理與步驟

層次聚類演算法是一種基於距離的聚類方法,其原理基於樣本間的相似度或距離度量。層次聚類演算法將數據樣本集合視為簇,通過合併數據樣本集合不斷生成樹形結構,最終將所有數據樣本集合聚類至整個樹形結構只有一個根節點的情形。其主要步驟包括:

1、計算樣本間的距離/相似度矩陣。


def pairwise_distances(X, Y=None, metric='euclidean', **kwds):
    X, Y = check_pairwise_arrays(X, Y)
    if metric == "euclidean":
        distances = - 2 * safe_sparse_dot(X, Y.T, dense_output=True)
        distances += (X ** 2).sum(axis=1).reshape(-1, 1) + (Y ** 2).sum(axis=1)
        return np.maximum(distances, 0)
    ...

2、將每個樣本各自分到一個簇中。


def _initialize(X):
    n_samples = X.shape[0]
    clusters = np.arange(n_samples).reshape(-1, 1)
    sizes = np.ones(n_samples, dtype=np.int)
    return clusters, sizes, n_samples

3、迭代地根據距離/相似度矩陣合併最近的兩個簇。


def _single_linkage(D, n_clusters, connectivity=None, n_neighbors=None):
    if n_neighbors is not None:
        if connectivity is None:
            connectivity = kneighbors_graph(n_neighbors=n_neighbors, X=D, include_self=True)
        connectivity = 0.5 * (connectivity + connectivity.T)

    if sparse.issparse(D):
        return _single_linkage_sparse(D, n_clusters, connectivity)
    else:
        return _single_linkage_dense(D, n_clusters, connectivity)

4、重複步驟3直至所有數據樣本均聚類至整個樹形結構只有一個根節點的情形。

二、層次聚類演算法對鏈式效應的影響

層次聚類演算法的鏈式效應表示的是不同高度的簇在合併時可能造成錯誤累積,進而導致最終的聚類結果產生偏差。當樣本的真實類別結構為非二叉樹形結構時,鏈式效應可能會進一步加劇聚類結果的偏差,這是層次聚類演算法的局限之一。

舉例而言,現有5個樣本,它們真實的類別分別為{1,2},{3,4},以及{5},且這三個類別之間的距離均相等。若進行層次聚類,在不同高度的簇合併時可能會遵從不同的合併方式,導致最終聚類結果出現誤差。

三、層次聚類演算法原理及應用舉例

層次聚類演算法原理核心其實是基於距離的度量方式。聚類中的層次,由樹狀圖表現。層次聚類廣泛應用於生物學領域的基因表達數據分析,以及社會人文科學領域的數據分析,如客群分析、電商推薦系統等。

以客群分析為例,若想對用戶進行分群,首先需要構建相應的樣本特徵,比如用戶的年齡、地區、消費行為等。之後根據這些特徵計算樣本間的距離/相似度,通過層次聚類演算法將樣本分為不同的簇群。在此基礎上,根據每個簇群對應的用戶特徵或者其聚類結果進行相關的分析和應用。

四、層次聚類演算法概念

層次聚類演算法主要包含以下幾個概念:

1、樣本間的距離/相似度:用於量化樣本之間的差異,通常採用歐幾里得距離、曼哈頓距離等方式。

2、簇:每個簇由多個樣本組成,其特徵可以通過簇內的樣本特徵的均值或者其他任意的方式得到。

3、樹形結構:層次聚類演算法的聚類結果以樹狀圖的形式呈現,樹的每個節點都對應一個數據集合,樹的葉節點表示數據集合中的單個樣本。

五、層次聚類的三種方法

層次聚類演算法根據簇間的距離度量方法的不同,可以分為以下三種方法:

1、最小距離法(single-linkage):簇間距離定義為最近的兩個數據樣本之間的距離,可以有效地抑制鏈式效應,但同時也增加了噪音點的影響。

2、最大距離法(complete-linkage):簇間距離定義為當前兩個數據簇中距離最遠的兩個樣本之間的距離,可以抑制噪音點的影響,但容易因為馬爾科夫現象而偏向相同大小簇的合併。

3、組平均法(average-linkage):簇間距離定義為兩個簇中樣本間距離的平均值,中庸而平衡。

六、層次聚類方法優缺點

層次聚類演算法的優點主要在於:

1、不需要指定簇的數量,節省了決策過程中的主觀因素;

2、可視化效果好,更直觀地觀察聚類結果;

3、能夠處理非凸分布、大小差異較大的數據分布;

4、適合於大量數據的場景,預測效果較好。

但其缺點也顯而易見:

1、每步迭代計算量較大,效率較低;

2、受到初始聚類中心的影響較大,結果易受到大量噪音樣本的影響;

3、演算法的結果可能受到距離度量方式的影響。

七、SPSS層次聚類法

SPSS作為一種統計分析軟體,層次聚類演算法也被廣泛應用。其默認的層次聚類方法為最小距離法。

使用SPSS進行層次聚類需要進行以下步驟:

1、選擇相應的數據集;

2、指定變數會被包含在聚類分析中;

3、選擇層次聚類法方法和判斷聚類數量的準則;

4、對聚類結果進行覆蓋和分析。


IMPORT  FILE='/path/to/data' 
        /TYPE=CSV
        /ARRANGEMENT=DELIMITED
        /DELIMITERS="," 
        /FIRSTCASE=2 
        /DATATYPEMIN PERCENTAGE=95.0
        /VARIABLES=name1 name2 name3... 
        /USE=IF CURRENTVAR('name1')=-999.
        /CLEAR.

CLUSTER name1 name2 name3 
  /LINKAGE = SINGLE 
  /DISTANCE = EUCLIDEAN 
  /METHOD = HIERARCHICAL(4)
  /CRITERIA = CUT(number of clusters)   
   distance(distance cutoff)
   merge(times merged together)
   change in cluster similarity
    (increment in R square)
  /PRINT THRESHOLD 
  /COMPARE = NONE 
  /MISSING=LISTWISE.

八、層次聚類演算法有哪些

除了文中已經提到的最小距離法、最大距離法、組平均法,層次聚類演算法還有:

1、centroid粗略法:按照每個簇內的樣本的坐標向量平均值得到該數據簇的中心。

2、median cut法:將圖像轉化為樣本點存儲,按照樣本點在像素顏色空間的分布情況將空間分為幾個區域,在每個區域內分別進行層次聚類,使層次聚類與圖像質量的關聯更加顯著。

3、Ward方法:以凝聚中心法為基礎,升級計算方式,使用重心距離衡量兩個簇之間的相似度。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/190447.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-29 22:34
下一篇 2024-11-29 22:34

相關推薦

  • 蝴蝶優化演算法Python版

    蝴蝶優化演算法是一種基於仿生學的優化演算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化演算法Python版…

    編程 2025-04-29
  • Python實現爬樓梯演算法

    本文介紹使用Python實現爬樓梯演算法,該演算法用於計算一個人爬n級樓梯有多少種不同的方法。 有一樓梯,小明可以一次走一步、兩步或三步。請問小明爬上第 n 級樓梯有多少種不同的爬樓梯…

    編程 2025-04-29
  • AES加密解密演算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密演算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES演算法,並對實現過程進…

    編程 2025-04-29
  • Harris角點檢測演算法原理與實現

    本文將從多個方面對Harris角點檢測演算法進行詳細的闡述,包括演算法原理、實現步驟、代碼實現等。 一、Harris角點檢測演算法原理 Harris角點檢測演算法是一種經典的計算機視覺演算法…

    編程 2025-04-29
  • 數據結構與演算法基礎青島大學PPT解析

    本文將從多個方面對數據結構與演算法基礎青島大學PPT進行詳細的闡述,包括數據類型、集合類型、排序演算法、字元串匹配和動態規劃等內容。通過對這些內容的解析,讀者可以更好地了解數據結構與算…

    編程 2025-04-29
  • 瘦臉演算法 Python 原理與實現

    本文將從多個方面詳細闡述瘦臉演算法 Python 實現的原理和方法,包括該演算法的意義、流程、代碼實現、優化等內容。 一、演算法意義 隨著科技的發展,瘦臉演算法已經成為了人們修圖中不可缺少…

    編程 2025-04-29
  • 神經網路BP演算法原理

    本文將從多個方面對神經網路BP演算法原理進行詳細闡述,並給出完整的代碼示例。 一、BP演算法簡介 BP演算法是一種常用的神經網路訓練演算法,其全稱為反向傳播演算法。BP演算法的基本思想是通過正…

    編程 2025-04-29
  • 粒子群演算法Python的介紹和實現

    本文將介紹粒子群演算法的原理和Python實現方法,將從以下幾個方面進行詳細闡述。 一、粒子群演算法的原理 粒子群演算法(Particle Swarm Optimization, PSO…

    編程 2025-04-29
  • Python回歸演算法算例

    本文將從以下幾個方面對Python回歸演算法算例進行詳細闡述。 一、回歸演算法簡介 回歸演算法是數據分析中的一種重要方法,主要用於預測未來或進行趨勢分析,通過對歷史數據的學習和分析,建立…

    編程 2025-04-28
  • 象棋演算法思路探析

    本文將從多方面探討象棋演算法,包括搜索演算法、啟發式演算法、博弈樹演算法、神經網路演算法等。 一、搜索演算法 搜索演算法是一種常見的求解問題的方法。在象棋中,搜索演算法可以用來尋找最佳棋步。經典的…

    編程 2025-04-28

發表回復

登錄後才能評論