机器学习笔记(九)聚类
9.聚類
有必要回顧下前文所涉及的機器學習主流分類,有監督學習中根據預測結果離散和連續屬性分為分類和回歸兩大類,常見的算法有:線性模型、決策樹、神經網絡、支持向量機、貝葉斯分類器以及集成學習。
本文開始說無監督學習(unsupervised learning),訓練樣本的標記信息是未知的,目標是通過對無標記訓練樣本的學習來揭示數據的內在性質及規律,為進一步的數據分析提供基礎。聚類(clustering)是無監督學習任務中研究最多、應用最廣泛的算法。
9.1聚類任務
聚類將數據集中的樣本劃分為若干個通常是不相交的子集,每個子集稱為一個簇(cluster),每個簇對應一個潛在概念或類別。當然這些類別在執行聚類算法之前是未知的,聚類過程是自動形成簇結構,簇所對應的概念語義由使用者命名。
形式化地說,假定樣本集D={x1,x2,…,xm}包含m個無標記樣本,每個樣本xi={xi1; xi2;…;xin}是一個n維特征向量(屬性),則聚類算法將樣本集D劃分為k個不相交的簇{Cl|l=1,2,…,k},其中Cl∩l≠l’Cl’=?且D=Ul=1…kCl。相應地,用Rj∈{1,2,…,k}表示樣本xj的簇標記(cluster label),即xj∈CRj。聚類的結果可用包含m個元素的簇標記向量R=(R1;R2;…;Rm)表示。
聚類既能作為一個單獨過程,用于尋找數據內在的分布結構,也可作為分類等其他學習任務的前驅過程。如在一些商業應用中需對新用戶的類型進行判別,但定義用戶類型對商家來說可能不太容易,此時可先對用戶進行聚類,根據聚類結果將每個簇定義為一個類,然后再基于這些類訓練分類模型,用于判別新用戶的類型。
基于不同的學習策略,可設計出多種類型的聚類算法。眾多算法的評估,就先要談兩個基本問題,性能度量和距離計算。
9.2性能度量
聚類性能度量也稱聚類有效性指標(validity index)。與監督學習中的性能度量作用相似。對聚類結果,要通過某種性能度量來評估其好壞。如明確最終要使用的性能度量,可直接將其作為聚類過程的優化目標,從而更好地得到符合要求的聚類結果,即事后度量也可作為事中追求的目標。
聚類將樣本集D劃分為若干互不相交的子集,即樣本簇。怎么樣的聚類結果比較好呢?物以類聚,即同一簇的樣本盡可能彼此相似,不同簇的樣本盡可能不同。簡單來說,就是簇內相似度(intra-cluster similarity)高且簇間相似度(inter-clustersimilarity)低。
聚類性能度量大致有兩類,一類是將聚類結果與某個參考模型(reference model)進行比較,稱為外部指標(externel index);另一類是直接考察聚類結果而不利用任何參考模型,稱為內部指標(internal index)。
對數據集D={x1,x2,…,xm},假定通過聚類給出的簇劃分C={C1,C2,…,Ck},參考模型給出的簇劃分為CR={CR1,CR2,…,CRk}。相應地,令F和FR表示與C和CR對應的簇標記向量。將樣本兩兩配對考慮,定義:
a=|SS|,SS={(xi,xj)|Fi=Fj,FRi=FRj,i<j}
b=|SD|,SD={(xi,xj)|Fi=Fj,FRi≠FRj,i<j}
c=|DS|,SD={(xi,xj)|Fi≠Fj,FRi=FRj,i<j}
d=|DD|,SD={(xi,xj)|Fi≠Fj,FRi≠FRj,i<j}
其中集合SS包含了在C中隸屬于相同簇且在CR中也隸屬于相同簇的樣本對,集合SD 包含了在C隸屬于相同簇但在CR中隸屬于不同簇的樣本對,……由于每個樣本對( xi,xj)(i<j)僅能出現在一個集合中,因此有a+b+c+d=m(m-1)/2成立。基于上述形式化,可定義如下常用的聚類性能度量外部指標:
?
9.3距離計算
上文定義的性能度量指標,有non 個很重要的數學關系,就是樣本間的距離dist,實際上抽象出來,任何物體的相似度都是通過距離來判斷,至于怎么定義距離就不同而論。函數dist()是一個距離度量(distance measure),滿足如下基本性質:
1)非負性:dist(xi,xj)≥0;
2)同一性:dist(xi,xj)=0當且僅當xi=xj;
3)對稱性:dist(xi,xj)=dist(xj,xi);
4)直遞性:dist(xi,xj)≤dist(xi,xk)+ dist(xk,xj);
給定樣本x i={x i1;x i2;…; x in}與x j={x j1;x j2;…; x jn},最常用的是閔可夫斯基距離(Minkowskidistance):
屬性通常劃分為連續屬性(continuous attribute)和離散屬性(categoricalattribute),連續屬性在定義域上有無窮多個可能的取值;后者在定義域上是有限個取值。連續屬性亦稱數值屬性(numerical attribute);離散屬性也稱為列名屬性(nominalattribute)。在討論距離計算時,屬性上是否定義了序的關系很重要。如定義域為{1,2,3}的離散屬性與連續屬性的性質更接近,能直接在屬性值上計算距離,這樣的屬性稱為有序屬性(ordinal attribute);而定義域為{飛機,火車,輪船}這樣的離散屬性則不能直接在屬性上計算距離,稱為無序屬性(non-ordinalattribute)。顯然閔可夫斯基距離用于有序屬性,那么無序屬性怎么計算距離呢?實際上,有序屬性和無序屬性在數據挖掘上更多屬性。離散屬性的有序化很重要,對于機器學習來說,刻畫和訓練都基于向量,無序無數自然不行。
通常基于有種形式的距離定義相似度度量(similarity measure),距離越大,相似度越小。然而,用于相似度度量的距離未必一定要滿足距離度量的所有基本性質,尤其是直遞性。不滿足直遞性的距離稱為非度量距離(non-metric distance),文中以人馬為例來說明。本文所說的距離公式都是事先定義好的,在現實任務中,應該結合數據樣本和聚類潛在結果來確定合適的距離計算公式,可通過距離度量學習(distance metric learning)來實現。
有了性能度量和距離計算,下文來說明典型的聚類算法。
9.4原型聚類
原型聚類,也稱基于原型的聚類(prototype-based clustering),該類算法假設聚類結構能夠通過一組原型刻畫,在現實聚類任務中較為常用。一般情形下,算法先對原型進行初始化,然后對原型進行迭代更新求解。采用不同的原型表示、不同的求解方式,將產生不同的算法。
文中的西瓜集例子配合起來可以更好理解算法過程。算法核心是對當前簇劃分及均值向量迭代更新。
2)學習向量量化
與k均值算法類似,學習向量量化(learning vector quantization,簡稱LVQ)也是試圖找到一組原型向量來刻畫聚類結構,但與一般聚類算法不同的是,LVG假設數據樣本帶有類別標記,學習過程利用樣本的這些監督信息來輔助聚類。
給定樣本集D={(x 1,y 1),(x 2,y 2),…,(x m,y m)};每個樣本x j是由n個屬性描述的特征向量(x j1; x j1;…; x jn),y j∈Y是樣本x j的類別標記。LVQ的目標是學得一組n維原型向量{p 1,p 2,…,p q},每個原型向量代表一個聚類簇,簇標記t i∈Y。LVQ算法過程如下:
算法在對原型向量進行迭代優化,每一輪迭代中,算法隨機選取一個有標記訓練樣本,找出與其距離最近的原型向量,并根據兩者的判別標記是否一致來對原型向量進行相應的更新。若算法的停止條件已滿足(如已達到最大迭代輪數,或原型向量更新很小甚至不再更新),則將當前原型向量作為最終結果返回。
上面這兩個類似的算法,Kmean和LVG主要還是看樣本,如果帶有標記,LVG是可以采用的。文中的例子可以配合理解。
3)高斯混合聚類
與K均值、LVQ用原型向量來刻畫聚類結構不同,高斯混合(Mixture-of-Gaussian)聚類采用概率模型來表達聚類原型。
對于高斯混合聚類,要理解概率密度和高斯分布才能更好理解基于概率模型的原型聚類。
9.5密度聚類
密度聚類,也稱為基于密度的聚類(density-based clustering),該類算法假設聚類結構能通過樣本分布的緊密程度確定。一般情形下,密度聚類算法從樣本密度的角度來考察樣本之間的可連接性,并基于可連接樣本不斷擴展聚類簇以獲得最終的聚類結果。
算法先給給定的領域參數( )找出所有核心對象,接著以任一核心對象為出發點,找出由其密度可達的樣本生成聚類簇,直到所有核心對象均被訪問過為止。文中西瓜集例子可以輔助理解,最好是能就文中的西瓜集例子子集編程實現,實在時間有限,這些算法只能留待實際使用中再代碼實現。
9.6層次聚類
層次聚類(hierarchicalclustering)試圖在不同層次對數據集進行劃分,從而形成樹形的聚類結構。數據的劃分可采用自底向上的聚合策略,也可采用自頂向下的分拆策略。
AGNES(AGglomera-tiveNEString)是一種采用自底向上聚類策略的層次聚類算法。它先將數據集中的每個樣本看做一個初始聚類簇,然后在算法運行的每一步中找出距離最近的兩個聚類簇進行合并,該過程不斷重復,直至達到預設的聚類簇個數。這里的關鍵是如何計算聚類簇之間的距離。每個簇是一個樣本集合,因此采用關于集合的某種距離即可。給定聚類簇Ci和Cj,可通過下面的公式來計算距離:
算法先對僅含一個樣本的初始聚類簇和相應的距離矩陣進行初始化,接著不斷合并距離最近的聚類簇,并對合并得到的聚類簇的距離矩陣進行更新,不斷重復,直到達到預設的聚類簇數。
現在我們來總結聚類這一章節的脈絡,首先聚類是無監督學習算法,和前文的監督學習算法不同在于樣本不帶標記,聚類有自己的性能度量評估指標,分外部指標和內部指標,核心就是距離計算,也就是后續算法關鍵;其次,就聚類算法做了三大分類,分別是原型聚類、密度聚類、層次聚類,三類算法的概要理解就在于原型、密度、層次;其中原型聚類又由基于均值的KMeans、基于原型的LVG、基于概率的高斯混合聚類。說到聚類,不得不說其經典應用場景異常檢測(anormaly detection),其常借助聚類或距離計算進行,如將遠離所有簇中心的樣本作為異常點,或將密度極低處的樣本作為異常點,最近有研究提出基于隔離性(isolation)可快速檢測出異常點。
總結
以上是生活随笔為你收集整理的机器学习笔记(九)聚类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【正一专栏】欧冠四强猜想—不是冤家不聚首
- 下一篇: 机器学习知识点(十八)密度聚类DBSCA