聚類演算法有哪些?又是如何分類?

想要了解聚類演算法並對其進行區別與比較的話,最好能把聚類的具體演算法放到整個聚類分析的語境中理解。

聚類分析是一個較為嚴密的資料分析過程。從聚類物件資料來源開始到得到聚類結果的知識存檔,共有四個主要研究內容

聚類分析過程:

聚類演算法有哪些?又是如何分類?

1984年,Aldenderfer等人提出了聚類分析的四大功能: 一是資料分類的進一步擴充套件; 二是對實體歸類的概念性探索; 三是透過資料探索而生成假說; 四是一種基於實際資料集歸類假說的測試方式。

在很多情況下,樣本資料集並沒有分類,即每一個數據樣本都沒有分類標籤。一般而言,聚類指將沒有分類標籤的資料集,分為若干個簇的過程,是一種無監督的分類方法。實際上,很難對聚類下一個明確的定義。

2001 年,Everitt 等人甚至指出提出聚類的正式定義不僅困難而且也沒有必要,因為聚類分析本身是一種建立在主觀判斷基礎上的相對行之有效的方法。Hansen 也已經作了數學上的闡述,給定一個數據樣本集:

這裡,Xj表示一個向量,稱為樣本點或者樣本; Xjd表示一個變數,通常稱為屬性、特徵、變數或維等。

劃分聚類將資料集分為 K 個簇,需滿足:

聚類演算法有哪些?又是如何分類?

而層次聚類是將資料集構建成一種樹狀的結構,即:

聚類演算法有哪些?又是如何分類?

由於聚類分析屬於一個交叉研究領域,融合了多個學科的方法和技術,故可以從多種角度、多個層次來分析現有的聚類分析演算法。

Agarwal 關於資料聚類的經典長文從統計模式識別的視角總結了 1999 年之前的經典模式聚類方法;Qian Zhou從聚類標準、聚類表示及演算法框架角度分析了多個流行的聚類演算法;Grabmeier 和 Rudolph從資料探勘的角度(如相似度和距離度量的嚴格區分、應用到聚類中的相 關最佳化標準等)分析了一些聚類方法,還討論了 IBM 公司的智慧挖掘器(Intelligent Miner)中聚類演算法的使用演示等等。

傳統的聚類演算法大致可以分為劃分聚類方法、層次聚類方法、密度聚類方法、網格聚類方法、模型聚類方法等。近年來,量子聚類方法、譜聚類方法、粒度聚類方法、機率圖聚類方法、同步聚類方法等也流行起來。

聚類演算法的研究已經開展了幾十年,迄今為止,已公開發表了近千種聚類演算法,但沒有一種聚類演算法敢聲稱是通用的、普適的。

聚類演算法的分類

聚類演算法一般可以用基於劃分、基於層次、基於密度、基於網格、基於模型、基於圖等方式來進行分類。

基於劃分的聚類演算法

基於劃分的聚類演算法透過構造一個迭代過程 來最佳化目標函式,當最佳化到目標函式的最小值或極小值時,可以得到資料集的一些不相交的子集,通常認為此時得到的每個子集就是一個聚類。多數基於劃分的聚類演算法都是非常高效的,但需要事先給定一個在聚類分析前難以確定下來的聚類數目。k-means演算法和 FCM(Fuzzy C Means)演算法是該型別中最著名的兩個演算法。

聚類演算法有哪些?又是如何分類?

k-means演算法

基於層次聚類演算法

層次聚類方法使用一個距離矩陣作為輸入,經過聚類後得到一個反映該資料集分佈狀況的聚類層次結構圖,其時間複雜度至少為 T=O(n2logn)。

層次聚類演算法通常分為兩種:

第一種是凝聚的層次聚類演算法,它首先把每個資料點看作是一個聚類,然後以一種自底向上的方式透過不斷地選擇最近鄰居聚類對的合併操作,最終可以構造出一 棵代表著該資料集聚類結構的層次樹。

第二種是分裂的層次聚類演算法,它首先把所有的資料點看作是一個聚類,然後以一種以自頂向下的方式通 過不斷地選擇最鬆散簇進行分裂操作,最終可以 構造出一棵代表著該資料集聚類結構的層次樹。

基於密度的聚類演算法

基於劃分的聚類演算法通常更適合於發現凸形聚類簇,但對於任意形狀的聚類簇,它就顯得有些力不從心了。基於密度的聚類演算法試圖透過稀疏區域來劃分高密度區域以發現明顯的聚類和孤立點,主要用於空間型資料的聚類。 DBSCAN(Density-Based Spatial Clustering of Applications with Noise)演算法就是一個最為著名的基於密度的聚類演算法。

聚類演算法有哪些?又是如何分類?

DBSCAN對引數設定的敏感表現

基於網格的聚類演算法

基於網格的聚類演算法是一種基於網格的具有多解析度的聚類方法。它首先將資料集的分佈空 間劃分為若干個規則網格(如超矩形單元)或靈活 的網格(如任意形狀的多面體),然後透過融合相 連的帶資料概要資訊的網格來獲得明顯的聚類。顯然,幾乎所有的基於網格的聚類演算法都屬於近似演算法,它們能處理海量資料。這類演算法的優點是處理時間與資料點的數目無關、與資料的輸入順序無關,可以處理任意型別的資料。其缺點是處理時間與每個維度上所劃分的單元數相關,一定程度上降低了聚類的質量和準確性。STING(STatistical INformation Grid)演算法和CLIQUE(CLustering In QUEst)是基於網格的聚類演算法的典型代表。

聚類演算法有哪些?又是如何分類?

CLIQUE演算法

基於模型的聚類演算法

基於模型的聚類演算法藉助於一些統計模型來獲得資料集的聚類分佈資訊。該方法假定資料集是由有限個機率分佈模型共同作用生成的。在這種方法中,多變數的高斯分佈混合模型應用最為廣泛。其中,Fish提出的 COBWEB、 Gennarim 提出的 CLASSI、 Cheeseman 和 Stutz提出的 AutoClass 是較為有名的幾個模型聚類方法。

在實際應用中,有時使用基於模型的聚類演算法或其他聚類演算法來獲取資料集的聚類中心點集,然後再用學習向量化方法來構造分類器。

基於圖的聚類演算法

採用圖聚類方法進行聚類分析時,首先是建立與具體問題相適應的圖。圖的結點代表被分析資料的基層單元,圖的邊代表基層單元資料之間的相似性度量(或相異性度量)。通常,每個基層單元資料之間都會有一個度量表達,這樣可以保持資料集的區域性分佈特性。圖聚類方法是以資料集的區域性連線特徵作為聚類的主要資訊源,因而易於處理區域性資料的特性。Karypis 提出的變色龍演算法也可看作是一種圖聚類演算法。

小資料聚類和大資料聚類

然而,在大資料時代背景下,隨著資料量的不斷增加及其資料形態的日益多樣化,聚類演算法的應用更加廣泛; 同時對演算法本身也提出了更高的要求。ZHANG Yonglai,ZHOU Yaojian依據有效資料量10位元組為閾值,將聚類演算法分為小資料聚類和大資料聚類兩大類。小資料聚類主要體現的是聚類的基本思想,而大資料聚類的思想主要體現在理念、體系結構與架構等幾個方面,至於底層聚類的具體實現演算法,其實與小資料聚類演算法並沒有本質上的差別。換言之,大資料聚類的具體實施演算法依然採用小資料聚類技術。

聚類演算法有哪些?又是如何分類?

21世紀是一個資訊化、資料化和知識化的時代,資訊科技正改變著人類社會的方方面面。隨著資料探勘的興起,聚類方法開始用於分析實際問題中經常出現的具有多種型別屬性和複雜分佈結構的資料集。現如今,聚類研究及其應用領域非常廣泛,已經應用到多個領域,如機器學習、模式識別、影象處理、資訊檢索、IP地址定位等。

聚類演算法有哪些?又是如何分類?

聚類演算法是伴隨著統計學、計算機學與人工智慧等領域的發展而逐步發展起來的科學,因此,當這些領域有比較快速的發展程序時,勢必會促進聚類演算法的快速發展與應用。比如機器學習領域的人工神經網路與支援向量機的發展就促生了基於神經網路的聚類方法與核聚類方法。目前,基於人工神經網路的深度學習( 如與職業九段棋手李世石、世界排名第一的世界圍棋冠軍柯潔對戰的AlphaGo ) 也必將推動聚類分析方法的進一步發展。