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