《西瓜書》筆記09:聚類
1.聚類任務
無監督學習:訓練樣本的標記資訊是未知的。目標是通過對無標記樣本的學習揭示資料內在性質,為進一步數學分析提供基礎。
此類學習任務中研究最多,應用廣泛的是聚類。
聚類:試圖將資料集中的樣本劃分為若干個通常互不相交的子集。每個子集稱為一個簇(cluster)。
每個簇可能對應於一些潛在概念。這些概念對於聚類演算法而言事先未知。聚類過程僅能自動形成簇結構。簇所對應的概念語義需有使用者把握。
聚類可作為一個單獨過程,也可作為分類等其他任務的先驅。比如商戶定義使用者型別不太容易,可先聚類根據結果將每個簇定義一個類,再基於這些類訓練分類模型,用於判別新使用者。
2.效能度量
聚類效能:評估聚類好壞。
直觀的:簇內相似度高,簇間相似度低。
大致分為兩類:
- 與某個參考模型比較,如該領域專家給出的劃分結果。
- 不利用外部指標而直接考察聚類結果
對資料集D,假定聚類給出的簇為
- 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聚類
最小化平方誤差:
下標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分別稱為單鏈接,全連結,均連結演算法。
聚類的新演算法出現最多,最快。其不存在客觀標準。