1. 程式人生 > >《西瓜書》筆記09:聚類

《西瓜書》筆記09:聚類

1.聚類任務

無監督學習:訓練樣本的標記資訊是未知的。目標是通過對無標記樣本的學習揭示資料內在性質,為進一步數學分析提供基礎。

此類學習任務中研究最多,應用廣泛的是聚類。

聚類:試圖將資料集中的樣本劃分為若干個通常互不相交的子集。每個子集稱為一個(cluster)。

每個簇可能對應於一些潛在概念。這些概念對於聚類演算法而言事先未知。聚類過程僅能自動形成簇結構。簇所對應的概念語義需有使用者把握。

聚類可作為一個單獨過程,也可作為分類等其他任務的先驅。比如商戶定義使用者型別不太容易,可先聚類根據結果將每個簇定義一個類,再基於這些類訓練分類模型,用於判別新使用者。

2.效能度量

聚類效能:評估聚類好壞。

直觀的:簇內相似度高,簇間相似度低。

大致分為兩類:

  • 與某個參考模型比較,如該領域專家給出的劃分結果。
  • 不利用外部指標而直接考察聚類結果

對資料集D,假定聚類給出的簇為C1,C2,...,Ck。參考模型給出一個簇劃分C。將樣本兩兩配對,我們定義四個集合:

  • a:在C中同簇,C*中也同簇
  • b:在C中同簇,C*中不同簇
  • c:在C中不同簇,C*中同簇
  • d:在C中不同簇,C*也不同簇

匯出一些常用的聚類效能外部指標:

  • Jaccard係數:JC=aa+b+c
  • FM指數:待續

  • 上述效能度量結果在[0, 1]之間,值越大越好。

對於聚類結果的簇劃分,可有:

  • avg(C):簇C內樣本間的平均距離
  • diam(C):簇C內樣本間的最遠距離
  • dmin(Ci, Cj):兩個簇最近的樣本間的距離
  • dcen(Ci,Cj):兩個簇中心點間的距離

由上述推匯出常用的聚類效能內部指標:

  • DB指數:分子簇內平均距離,分母為簇中心間距離,其最大值。越小越好
  • Dunn指數:分子為簇間最近樣本距離,分母為簇間最遠樣本距離,其最小值。越大越好。

3.距離計算

兩個向量i和j,最常用的是閔可夫斯基距離,即(i-j)的Lp範數。

p = 1,曼哈頓距離
p = 2,歐氏距離

連續屬性,即數值屬性,可直接用距離計算。

離散屬性,即列名屬性,無序屬性,不能直接用閔可夫斯基距離計算。採用VDM(value difference metric),某屬性上取不同值時的所佔比例的差的Lp範數。

4.原型聚類

基於原型的聚類。假設聚類結構能通過一組原型刻畫,所謂原型,指的是樣本空間具有代表性的點。

通常,此類聚類演算法先對原型初始化,然後對原型進行迭代更新求解。採用不同的原型表示,不同的求解方式,產生不同的演算法。

4.1 k-means聚類

最小化平方誤差:

E=i=1kxCi||xx^||22

下標2表示L2範數,根號下的平方和。右上角2表示去掉根號,則是平方和。

E刻畫了簇內樣本間的圍繞簇均值向量的緊密程度,E值越小簇內樣本值相似度越高。

最小化E是個NP難問題。K均值演算法採用貪心策略,迭代優化來近似求解。

k-means演算法

輸入:樣本集D,聚類簇數k
輸出:簇劃分

過程:

(1)從D中選擇k個樣本作為初始均值向量

(2)while(當前均值向量不更新時)

(2-1)遍歷各樣本,計算樣本與k個均值向量的距離。距離最小的均值向量確定樣本的簇標記。將樣本劃分至對應簇。

(2-2)遍歷k個簇。計算每個簇新的均值向量。如果不等於之前的則更新,否則保持不變。

直至各均值向量不再更新。或者達到最大執行輪數,或者最小調整閾值內。

3.2 學習向量量化

LVQ假設資料樣本帶有類別標記。學習時利用樣本的這些監督資訊來輔助聚類。

3.4 高斯混合聚類

與k均值,LVQ用原型向量來刻畫聚類結構不同,高斯混合聚類採用概率模型來表達聚類原型。

常採用EM演算法進行迭代優化求解。

3.5 密度聚類

基於密度的聚類(density-based clustering)

假設聚類結構能通過樣本分佈的緊密程度(距離度量)確定。通常,密度聚類演算法從樣本密度的角度來考察樣本之間的可連線性,並基於可連線樣本不斷靠站聚類簇以獲得最終結果。

DBSCAN(Density-based spatial clusting of applications with noise)

其基於一組鄰域引數,刻畫樣本分佈的緊密程度。

這裡寫圖片描述

如上圖,虛線表示鄰域。令minpts=3,則x1是核心物件(鄰域至少包含Min個樣本),鄰域內的點為密度直達點(x2)。通過密度直達的非相鄰點(x3)為密度可達點。若兩個點之間存在一個點x1,分別可以密度可達這兩個點,則這兩點成為密度相連(x3,x4)。

DBSCAN將簇定義為:由密度可達關係匯出的最大的密度相連樣本集合。

即該簇內,任意兩點為密度相連。且能密度可達的點都包含進來了。

DBSCAN演算法:

輸入:樣本集D,鄰域引數(距離,Minpts)
輸出:簇劃分

過程:

(1)初始化核心物件集為空

(2)對樣本集物件遍歷。對每一個點,確定其領域內的點個數,若大於Min則加進核心物件。

(3)初始化簇數k=0,未訪問樣本集合D。

while(未訪問樣本集合為空)

隨機選擇一個核心物件為種子,找出由他可密度可達的所有樣本,這就構成了第一個聚類簇。然後將該聚類簇中的物件,從核心物件中去除。再從核心物件更新集中選擇種子生成下一個聚類簇。

不斷重複,直至核心物件集為空,while結束。

可以想象,當簇比較緊密時,則演算法傾向於將其作為一個簇,越緊密,好像密度越大,估計這就是名稱的來歷。簇若比較散,則除了鄰域,不會合並。

3.6 層次聚類

hierarchical clustering。不同層次上對資料集進行劃分,從而形成樹形的聚類結構。劃分可採用自底向上的聚合策略。也可採用自頂向下的分拆策略。

AGNES(AGglomerative NESting,成團的巢狀),自底向上聚合

先將每個樣本看做一個初始聚類簇,然後演算法執行的每一步中找出距離最近的兩個聚類簇進行合併,不斷重複,直至達到預設的聚類簇個數。

如何計算兩個聚類簇之間的距離?每個簇是樣本集合,採用關於集合的某種距離即可。

  • 最小距離:兩個簇的最近樣本的距離
  • 最大距離:兩個簇的最遠樣本的距離
  • 平均距離:兩個簇的是所有樣本互連後計算平均距離

這裡寫圖片描述

兩個簇的最小距離:紅線
兩個簇的最大距離:黑線
兩個簇的平均距離:兩邊全連線[4*4]後算平均(sum_dist/[4*4])

三種距離下,AGNES分別稱為單鏈接,全連結,均連結演算法。

這裡寫圖片描述

這裡寫圖片描述

聚類的新演算法出現最多,最快。其不存在客觀標準。