聚類系列-概述

         本系列要講解一下本人這一段時間工作中 使用聚類來做的一些事情,第一次寫博客大家不喜勿噴,有錯誤請及時指出,本人一定改正。

         聚類,在百度百科中的介紹是將物理或抽象對象的集合分成由類似的對象組成的多個類的過程,其實在我們NLP領域所說的聚類跟這個如出一轍。聚類是一種無監督(unsupervised)的機器學習方法,何爲無監督,最簡單的理解就是不需要你標註訓練的語料,直接將你要做聚類的語料丟到計算機裏面,讓計算機幫你去選擇每個實體應該聚集到那個類下。說起來簡單,其實做起來其中包含了好多的步驟,包括語料的分詞、每一個實體的表示(一般是向量表示),實體之間的相似度的計算等等。。。。在NLP領域,實體所指的可以是一篇文章、一個句子,也可以是一個詞語或者單詞,但是所有的上述的這些實體在落實到你的輸入語料中時,都必須表示成數學模型,因爲計算機在機器學習的過程中用到的邏輯都是一個一個的數學公式,聚類中的最重要的相似度也是通過數學公式來計算的,在此我們不禁要感嘆數學之偉大了。

         NLP中的聚類就是在沒有任何的指導數據的情況下,將相似的實體聚集到一個類別中,將不相似的聚集到不同的類別中去。但是這裏相似或者不相似用什麼去衡量呢?又是怎麼計算出來的相似度呢?之前我們講過實體在落實到輸入語料中時,都必須表示成數學模型,所以我們選擇用數學中的概念來衡量相似性,有了這個前提我們就可以用數學公式去計算相似度了。打個比方,有A、B、C三個人,A是山東的,B是河北的,而C呢是雲南人,現在我們要求將這三個人分成兩個類別,我們可能將AB分到一塊,將C分類一塊。爲什麼呢?因爲AB兩個人的距離比較近,而且生活習性也都相近,但是C距離他們兩個比較遠,生活習性也有一些差距。其實在這個過程中我們不自覺的使用了數學上的距離來表示了三個實體之間的相似性,其實在NLP中也是這樣的一種思路去度量相似度。再舉一個在我們NLP中經常遇到的例子,假設有三個句子:

        句子A:我有一個蘋果。

      句子B:我有一個梨。

      句子C:我今天吃了一個蘋果。

然後對上邊的三個句子進行聚類,首先我們需要將上述的三個句子分詞,然後將它們表示數學模型,最後再來對上述句子聚類。分詞結果如下:

        句子A:我 有 一個 蘋果。

      句子B:我 有 一個 梨。

      句子C:我 今天 吃 了 一個 蘋果。

然後將上述句子表示成數學模型在NLP中一般使用的是向量空間模型,所以我們將上述句子表示成向量空間模型語料中一共有八個詞(去掉標點),我們將選擇八維的向量來表示每一個句子,每一維的特徵就是詞語,有表示1,沒有表示0。得到如下向量:

              我         有       一個       蘋果        梨         今天      吃         了

A            1            1           1           1             0             0         0          0

B           1            1           1            0             1             0         0         0

C           1            0           1           1             0            1         1           1

之後我們就是將相似度的句子聚到一個類裏,不相似的聚到不同的類中。在數學上一般距離小的我們就說相近,在這個地方我們同樣可以利用距離來表示兩個句子之間的相似度,當然這只是其中的一種度量,像餘弦夾角等等也是不錯的相似度的度量標準。

聚類的算法我們大致可以分爲以下幾類:

       基於劃分聚類算法(partition clustering):首先創建k個劃分,k爲要創建的劃分個數;然後利用一個循環定位技術通過將對象從一個劃分移到另一個劃分來幫助改善劃分質量。典型的劃分方法包括: k-means,k-medoids等。

     層次方法(hierarchical method) : 創建一個層次以分解給定的數據集。該方法可以分爲自上而下(分解)和自下而上(合併)兩種操作方式。爲彌補分解與合併的不足,層次合併經常要與其它聚類方法相結合,如循環定位。典型的這類方法包括:BIRCH(Balanced Iterative Reducing and Clustering using Hierarchies) 方法,CURE(Clustering Using REprisentatives) 方法等。

     基於密度方法:根據密度完成對象的聚類。它根據對象周圍的密度(如DBSCAN)不斷增長聚類。典型的基於密度方法包括:DBSCAN(Densit-based Spatial Clustering of Application with Noise)。

     基於網格方法:首先將對象空間劃分爲有限個單元以構成網格結構;然後利用網格結構完成聚類。例如STING(STatistical INformation Grid)
     基於模型方法:它假設每個聚類的模型並發現適合相應模型的數據,典型的基於模型方法如COBWEB。

      圖論聚類方法:圖論聚類方法解決的第一步是建立與問題相適應的圖,圖的節點對應於被分析數據的最小單元,圖的邊(或弧)對應於最小處理單元數據之間的相似性度量。因此,每一個最小處理單元數據之間都會有一個度量表達,這就確保了數據的局部特性比較易於處理。圖論聚類法是以樣本數據的局域連接特徵作爲聚類的主要信息源,因而其主要優點是易於處理局部數據的特性。典型的代表算法有AP(Affinity Propagation Clustering Algorithm)聚類算法。

     當然還有一些其他的比較的好的聚類方法,如譜聚類等等。我在後續的序列中會選擇一些比較常用的聚類算法進行專門的講解。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章