1. 程式人生 > >周志華《Machine Learning》學習筆記(11)--聚類

周志華《Machine Learning》學習筆記(11)--聚類

轉自:http://blog.csdn.net/u011826404/article/details/70991604

上篇主要介紹了一種機器學習的通用框架–整合學習方法,首先從準確性和差異性兩個重要概念引出整合學習“好而不同”的四字真言,接著介紹了現階段主流的三種整合學習方法:AdaBoost、Bagging及Random Forest,AdaBoost採用最小化指數損失函式迭代式更新樣本分佈權重和計算基學習器權重,Bagging通過自助取樣引入樣本擾動增加了基學習器之間的差異性,隨機森林則進一步引入了屬性擾動,最後簡單概述了整合模型中的三類結合策略:平均法、投票法及學習法,其中Stacking是學習法的典型代表。本篇將討論無監督學習中應用最為廣泛的學習演算法–聚類。

10、聚類演算法

聚類是一種經典的無監督學習方法,無監督學習的目標是通過對無標記訓練樣本的學習,發掘和揭示資料集本身潛在的結構與規律,即不依賴於訓練資料集的類標記資訊。聚類則是試圖將資料集的樣本劃分為若干個互不相交的類簇,從而每個簇對應一個潛在的類別。

聚類直觀上來說是將相似的樣本聚在一起,從而形成一個類簇(cluster)。那首先的問題是如何來度量相似性(similarity measure)呢?這便是距離度量,在生活中我們說差別小則相似,對應到多維樣本,每個樣本可以對應於高維空間中的一個數據點,若它們的距離相近,我們便可以稱它們相似。那接著如何來評價聚類結果的好壞呢?這便是效能度量,效能度量為評價聚類結果的好壞提供了一系列有效性指標。

10.1 距離度量

談及距離度量,最熟悉的莫過於歐式距離了,從年頭一直用到年尾的距離計算公式:即對應屬性之間相減的平方和再開根號。度量距離還有其它的很多經典方法,通常它們需要滿足一些基本性質:

這裡寫圖片描述

最常用的距離度量方法是“閔可夫斯基距離”(Minkowski distance)

這裡寫圖片描述

當p=1時,閔可夫斯基距離即曼哈頓距離(Manhattan distance)

這裡寫圖片描述

當p=2時,閔可夫斯基距離即歐氏距離(Euclidean distance)

這裡寫圖片描述

我們知道屬性分為兩種:連續屬性離散屬性(有限個取值)。對於連續值的屬性,一般都可以被學習器所用,有時會根據具體的情形作相應的預處理,例如:歸一化等;而對於離散值的屬性,需要作下面進一步的處理:

若屬性值之間存在序關係,則可以將其轉化為連續值,例如:身高屬性“高”“中等”“矮”,可轉化為{1, 0.5, 0}。 
若屬性值之間不存在序關係,則通常將其轉化為向量的形式,例如:性別屬性“男”“女”,可轉化為{(1,0),(0,1)}。

在進行距離度量時,易知連續屬性和存在序關係的離散屬性都可以直接參與計算,因為它們都可以反映一種程度,我們稱其為“有序屬性”;而對於不存在序關係的離散屬性,我們稱其為:“無序屬性”,顯然無序屬性再使用閔可夫斯基距離就行不通了。

對於無序屬性,我們一般採用VDM進行距離的計算,例如:對於離散屬性的兩個取值a和b,定義:

這裡寫圖片描述

於是,在計算兩個樣本之間的距離時,我們可以將閔可夫斯基距離和VDM混合在一起進行計算:

這裡寫圖片描述

若我們定義的距離計算方法是用來度量相似性,例如下面將要討論的聚類問題,即距離越小,相似性越大,反之距離越大,相似性越小。這時距離的度量方法並不一定需要滿足前面所說的四個基本性質,這樣的方法稱為:非度量距離(non-metric distance)

10.2 效能度量

由於聚類演算法不依賴於樣本的真實類標,就不能像監督學習的分類那般,通過計算分對分錯(即精確度或錯誤率)來評價學習器的好壞或作為學習過程中的優化目標。一般聚類有兩類效能度量指標:外部指標內部指標

10.2.1 外部指標

即將聚類結果與某個參考模型的結果進行比較,以參考模型的輸出作為標準,來評價聚類好壞。假設聚類給出的結果為λ,參考模型給出的結果是λ*,則我們將樣本進行兩兩配對,定義:

這裡寫圖片描述

顯然a和b代表著聚類結果好壞的正能量,b和c則表示參考結果和聚類結果相矛盾,基於這四個值可以匯出以下常用的外部評價指標:

這裡寫圖片描述

10.2.2 內部指標

內部指標即不依賴任何外部模型,直接對聚類的結果進行評估,聚類的目的是想將那些相似的樣本儘可能聚在一起,不相似的樣本儘可能分開,直觀來說:簇內高內聚緊緊抱團,簇間低耦合老死不相往來。定義:

這裡寫圖片描述

基於上面的四個距離,可以匯出下面這些常用的內部評價指標:

這裡寫圖片描述

10.3 原型聚類

原型聚類即“基於原型的聚類”(prototype-based clustering),原型表示模板的意思,就是通過參考一個模板向量或模板分佈的方式來完成聚類的過程,常見的K-Means便是基於簇中心來實現聚類,混合高斯聚類則是基於簇分佈來實現聚類。

10.3.1 K-Means

K-Means的思想十分簡單,首先隨機指定類中心,根據樣本與類中心的遠近劃分類簇,接著重新計算類中心,迭代直至收斂。但是其中迭代的過程並不是主觀地想象得出,事實上,若將樣本的類別看做為“隱變數”(latent variable),類中心看作樣本的分佈引數,這一過程正是通過EM演算法的兩步走策略而計算出,其根本的目的是為了最小化平方誤差函式E:

這裡寫圖片描述

K-Means的演算法流程如下所示:

這裡寫圖片描述

10.3.2 學習向量量化(LVQ)

LVQ也是基於原型的聚類演算法,與K-Means不同的是,LVQ使用樣本真實類標記輔助聚類,首先LVQ根據樣本的類標記,從各類中分別隨機選出一個樣本作為該類簇的原型,從而組成了一個原型特徵向量組,接著從樣本集中隨機挑選一個樣本,計算其與原型向量組中每個向量的距離,並選取距離最小的原型向量所在的類簇作為它的劃分結果,再與真實類標比較。

若劃分結果正確,則對應原型向量向這個樣本靠近一些 
若劃分結果不正確,則對應原型向量向這個樣本遠離一些

LVQ演算法的流程如下所示:

這裡寫圖片描述

10.3.3 高斯混合聚類

現在可以看出K-Means與LVQ都試圖以類中心作為原型指導聚類,高斯混合聚類則採用高斯分佈來描述原型。現假設每個類簇中的樣本都服從一個多維高斯分佈,那麼空間中的樣本可以看作由k個多維高斯分佈混合而成

對於多維高斯分佈,其概率密度函式如下所示:

這裡寫圖片描述

其中u表示均值向量,∑表示協方差矩陣,可以看出一個多維高斯分佈完全由這兩個引數所確定。接著定義高斯混合分佈為:

這裡寫圖片描述

α稱為混合係數,這樣空間中樣本的採集過程則可以抽象為:(1)先選擇一個類簇(高斯分佈),(2)再根據對應高斯分佈的密度函式進行取樣,這時候貝葉斯公式又能大展身手了:

這裡寫圖片描述

此時只需要選擇PM最大時的類簇並將該樣本劃分到其中,看到這裡很容易發現:這和那個傳說中的貝葉斯分類不是神似嗎,都是通過貝葉斯公式展開,然後計算類先驗概率和類條件概率。但遺憾的是:這裡沒有真實類標資訊,對於類條件概率,並不能像貝葉斯分類那樣通過最大似然法美好地計算出來,因為這裡的樣本可能屬於所有的類簇,這裡的似然函式變為:

這裡寫圖片描述

可以看出:簡單的最大似然法根本無法求出所有的引數,這樣PM也就沒法計算。這裡就要召喚出之前的EM大法,首先對高斯分佈的引數及混合係數進行隨機初始化,計算出各個PM(即γji,第i個樣本屬於j類),再最大化似然函式(即LL(D)分別對α、u和∑求偏導 ),對引數進行迭代更新

這裡寫圖片描述

高斯混合聚類的演算法流程如下圖所示:

這裡寫圖片描述

10.4 密度聚類

密度聚類則是基於密度的聚類,它從樣本分佈的角度來考察樣本之間的可連線性,並基於可連線性(密度可達)不斷拓展疆域(類簇)。其中最著名的便是DBSCAN演算法,首先定義以下概念:

這裡寫圖片描述 
這裡寫圖片描述

簡單來理解DBSCAN便是:找出一個核心物件所有密度可達的樣本集合形成簇。首先從資料集中任選一個核心物件A,找出所有A密度可達的樣本集合,將這些樣本形成一個密度相連的類簇,直到所有的核心物件都遍歷完。DBSCAN演算法的流程如下圖所示:

這裡寫圖片描述

10.5 層次聚類

層次聚類是一種基於樹形結構的聚類方法,常用的是自底向上的結合策略(AGNES演算法)。假設有N個待聚類的樣本,其基本步驟是:

1.初始化–>把每個樣本歸為一類,計算每兩個類之間的距離,也就是樣本與樣本之間的相似度; 
2.尋找各個類之間最近的兩個類,把他們歸為一類(這樣類的總數就少了一個); 
3.重新計算新生成的這個類與各個舊類之間的相似度; 
4.重複2和3直到所有樣本點都歸為一類,結束。

可以看出其中最關鍵的一步就是計算兩個類簇的相似度,這裡有多種度量方法:

* 單鏈接(single-linkage):取類間最小距離。

這裡寫圖片描述

* 全連結(complete-linkage):取類間最大距離

這裡寫圖片描述

* 均連結(average-linkage):取類間兩兩的平均距離

這裡寫圖片描述

很容易看出:單鏈接的包容性極強,稍微有點曖昧就當做是自己人了,全連結則是堅持到底,只要存在缺點就堅決不合並,均連線則是從全域性出發顧全大局。層次聚類法的演算法流程如下所示:

這裡寫圖片描述

在此聚類演算法就介紹完畢,分類/聚類都是機器學習中最常見的任務,我實驗室的大Boss也是靠著聚類起家,從此走上人生事業錢途…之巔峰,在書最後的閱讀材料還看見Boss的名字,所以這章也是必讀不可了…