1. 程式人生 > >淺談聚類&層次聚類

淺談聚類&層次聚類

淺談聚類

引言

         聚類分析的目標就是在相似的基礎上收集資料來分類。即聚類是我們在面對於大量資料時,所常採用的一種資料處理方式。通過,使用聚類方法有助於將原有資料進行劃分,初步將其分為不同部分,提升對於資料的巨集觀認識,為深入理解資料打下基礎。

         聚類演算法在工業界有著巨大的應用,如在<數學之美>一書中,即舉Google將其應用於新聞分類的例子。近年,尤其隨著機器學習的火熱,聚類演算法在學術界與工業界均得到了極大的重視。如2015年初,Science即發表一kmeans聚類改進演算法。

         從統計學的觀點看,聚類分析是通過資料建模簡化資料的一種方法。

         從機器學習的角度講,簇相當於隱藏模式。聚類是搜尋簇的無監督學習過程。

聚類與分類(判別)

         單從名字中來看,聚類與分類差別不大。但不論放之於統計或機器學習中其差別巨大。用一句常語"物以類聚,人以群分",則是對於聚類分析與分類的最直觀簡明的詮釋。

         從理論上而言,在機器學習中,聚類與分類最大的區別在於是否有監督的學習,即是否存在訓練集,即分類(判別)方法具有訓練集,通過訓練集訓練模型進而得到分類模型,再利用這個模型將所有的輸入對映為相應的輸出,對輸出進行簡單的判斷從而實現分類的目的,也就具有了對未知資料進行分類的能力。而聚類則常不具有訓練集,也即是說事先沒有任何訓練樣本,而需要直接對資料進行建模。

         在統計學中,聚類分析。根據研究物件特徵對研究物件進行分類的一種多元分析技術, 把性質相近的個體歸為一類, 使得同一類中的個體都具有高度的同質性, 不同類之間的個體具有高度的異質性。而分類(判別) 是一種進行統計判別和分組的技術手段。根據一定量案例的一個分組變數和相應的其他多元變數的已知資訊, 確定分組與其他多元變數之間的數量關係, 建立判別函式, 然後便可以利用這一數量關係對其他未知分組型別所屬的案例進行判別分組。

         也即是隨聚類與分類名稱類似,但實際其為完全不同的兩個概念,所處理的資料也是截然不同的。

主要聚類思想與方法

         談起聚類,首先,在此我們假設一個簡單的情景即假設我們需要將某一體育課程學生進行聚類,那麼我們將如何完成對於所選學生的劃分呢?在此,為簡單過程,我們在此假設學生僅具有兩種屬性即年齡與體重。下面本文將結合各主要聚類思想與演算法基於R語言給大家詳細介紹:

1 層次聚類

        

         層次聚類是我們在聚類過程中常用的一種方法,其主要思想是:

         即將聚類樣本中的個體間關係遠近使用距離來進行代替,將距離相近的樣本放之於一類,重複此過程即可完成聚類。一般採取的聚類過程為自下而上,上圖即為一層次聚類過程圖,所謂自下而上,也即是一開始樣本比如在y軸0層時,都是各自的個體,隨著聚類的進行,樣本逐漸聚合知道最後形成一類。(另一種為自頂而下,大家可以百度一下)。

         在具體計算中為了尋找距離最近/遠和均值,都需要對所有的距離計算個遍,需要用到雙重迴圈,且每次迭代都只能合併兩個子類,這是非常慢的,但此方法一般滿足日常使用,R中自帶的層次聚類函式hclust即此種方法。

         在此,我們提到了距離,那麼這裡的距離指的是什麼呢?在此我們引入統計學中計算樣本相似性的各種距離:

1.1相似度計算

1.11距離概念

         歐幾里得距離(EuclideanDistance)

  歐氏距離是最常見的距離度量,衡量的是多維空間中各個點之間的絕對距離。公式如下:

  因為計算是基於各維度特徵的絕對數值,所以歐氏度量需要保證各維度指標在相同的刻度級別,比如對身高(cm)和體重(kg)兩個單位不同的指標使用歐式距離可能使結果失效。

明可夫斯基距離(Minkowski Distance)

  明氏距離是歐氏距離的推廣,是對多個距離度量公式的概括性的表述。公式如下:

  這裡的p值是一個變數,當p=2的時候就得到了上面的歐氏距離。

曼哈頓距離(Manhattan Distance)

  曼哈頓距離來源於城市區塊距離,是將多個維度上的距離進行求和後的結果,即當上面的明氏距離中p=1時得到的距離度量公式,如下:

切比雪夫距離(Chebyshev Distance)

  切比雪夫距離起源於國際象棋中國王的走法,我們知道國際象棋國王每次只能往周圍的8格中走一步,那麼如果要從棋盤中A格(x1, y1)走到B格(x2, y2)最少需要走幾步?擴充套件到多維空間,其實切比雪夫距離就是當p趨向於無窮大時的明氏距離:

  其實上面的曼哈頓距離、歐氏距離和切比雪夫距離都是明可夫斯基距離在特殊條件下的應用。

1.12相似度度量

  相似度度量(Similarity),即計算個體間的相似程度,與距離度量相反,相似度度量的值越小,說明個體間相似度越小,差異越大。

向量空間餘弦相似度(Cosine Similarity)

  餘弦相似度用向量空間中兩個向量夾角的餘弦值作為衡量兩個個體間差異的大小。相比距離度量,餘弦相似度更加註重兩個向量在方向上的差異,而非距離或長度上。公式如下:

皮爾森相關係數(Pearson Correlation Coefficient)

  即相關分析中的相關係數r,分別對X和Y基於自身總體標準化後計算空間向量的餘弦夾角。公式如下:

也即為

        

1.2聚類過程

         假設有N個待聚類的樣本,對於層次聚類來說,基本步驟就是:

       1、(初始化)把每個樣本歸為一類,計算每兩個類之間的距離,也就是樣本與樣本之間的相似度;

       2、按一定規則選取符合距離要求的類別,完成類間合併;

       3、重新計算新生成的這個類與各個舊類之間的相似度;

       4、重複2和3直到所有樣本點都歸為一類,結束。

         在這裡如果細心會發現在步驟二過程中出現了按一定規則選取這一細節,在此我們簡單介紹一下聚類過程中常用的選取規則。

Single 方法:

         選取兩類中,距離最短的節點x與y,然後以此距離作為此兩類的距離。然後將具有最短距離的類別相合並。

Complete方法:

         選取兩類中,距離最長的節點x與y,然後以此距離作為此兩類的距離。然後將具有最短距離的類別相合並。


Average 方法:

         選取兩類與中,所有節點的平均距離,然後以此距離作為此兩類的距離。然後將具有最短距離的類別相合並。

Centorid方法:

         選取兩類的類中中心點(即重心),計算兩類中心的差的平方,以此作為距離。

Ward最小方差法:

         此方法並類時總是使得並類導致的類內離差平方和增量最小。即首先,n個樣本各程一類,每次類合併則總離差平方和就要增加,選擇使離差平方和增加最小的兩類進行合併。

         在R中,此方法被分為兩種分別為Ward與Ward.D2兩種方法,此兩種的差別在於Ward.D2方法在類更新前將離差進行了平方。

一般我們在應用中,選擇的主要方式為ward與Average方法

選擇好,適合的方法後,那麼我們接下來就可以開始完成聚類了。

以本文前面的例子為基礎,在此我們進行聚類

首先,我們求取資料的距離矩陣

我們在R中使用的函式為dist(),其預設採用的距離為歐氏距離

dist(x,method = "euclidean", diag = FALSE, upper = FALSE, p = 2)

在此x代表所要計算距離的資料,method代表計算距離所要使用的方法,diag代表是否為包含對角線元素,upper代表是否為上三角矩陣,p則代表Minkowski距離中的p取值大小。

 

得到了距離矩陣後,為了便於理解我們使用最簡單的single方法完成聚類過程,即按類間最小距離完成聚類。
在此我們使用的函式為hclust()
其預設引數為:
hclust(d, method = "complete", members = NULL)
其中d代表所要提供的距離矩陣,method代表所要使用的聚類手段,更詳細的介紹可在R中?hclust檢視幫助。

rect.hclust(plot,k=3)同時,可使用此函式在圖中獲取所需要類。其中plot代表聚類結果,k=n代表需要的類別。


通過距離矩陣,我們知道最小的距離首先為3到6的3.162287,也即是我們在上圖中HEIGHT所對應2得到的第一類。然後僅次於其距離最小的為4到8的4.123106。依照此原理,逐步合併點,直至將其合併為一類則完成聚類過程。
分析。

參考文獻:
鄧海燕. 聚類分析與判別分析的區別[J]. 武漢學刊, 2006, (1).
Rodriguez A, Laio A. Clustering by fast search and find of density peaks[J]. Science, 2014, 344(6191):1492-1496.
數學之美  吳軍

資料探勘:概念與技術(英文版·第3版) (英語) 韓家煒 (作者), 坎伯(Kamber.M.) (作者), 裴健 (作者)

圖靈程式設計叢書:R語言實戰 卡巴科弗 (RobertI.Kabacoff) (作者), 高濤 (譯者) 
部落格:http://blog.csdn.net/jwh_bupt/article/details/7685809
部落格:http://www.cnblogs.com/emanlee/archive/2012/02/28/2371273.html
部落格:http://blog.csdn.net/yillc/article/details/6746509