文本聚類算法分析

1. 傳統的文本聚類算法

  傳統的文本聚類算法分爲以下幾種

1.1 分割方法(partitioning methods)

1.1.1 K-MEANS算法

工作原理:

首先從n個數據對象任意選擇 k 個對象作爲初始聚類中心;而對於所剩下其它對象,則根據它們與這些聚類中心的相似度(距離),分別將它們分配給與其最相似的(聚類中心所代表的)聚類;然後再計算每個所獲新聚類的聚類中心(該聚類中所有對象的均值);不斷重複這一過程直到標準測度函數開始收斂爲止。一般都採用均方差作爲標準測度函數. k個聚類具有以下特點:各聚類本身儘可能的緊湊,而各聚類之間儘可能的分開。 

   具體過程:

  (1)選取k個對象作爲初始的聚類種子;

  (2)根據聚類種子的值,將每個對象重新賦給最相似的簇;

  (3)重新計算每個簇中對象的平均值,用此平均值作爲新的聚類種子;

  (4)重複執行(2)、(3)步,直到各個簇不再發生變化。

1.1.2  K-MEDOIDS算法:

    與K-MEANS算法不同的是在衡量收斂標準,K-MEDOIDS算法用聚類對象到中心點的距離和值而不是平局值。

     K-MEDOIDS算法對小數據集合非常有效,減少了噪聲的干擾,比K-MEANS算法更有健壯性,但執行代價比較高,且對於大的數據集沒有良好的伸縮性。

1.1.3  CLARANS算法: 

   基礎是K-MEDOIDS思想。給定含有N個數據對象的數據集X,發現 k 箇中心點的過程被看作是搜索圖G的過程。G的每一個定點表示一組k箇中心點集合,圖創建後從定點逐個搜索整個圖,並且計算每個定點所對應的聚類結果的平局距離,求出全局最優的聚類結果。爲避免計算量過大,此算法用隨機重啓局部搜索計算對圖進行搜索。所以算法設置參數,限制局部搜索的重啓次數 nunlocal 和限制當前搜索定點的最大搜索鄰居數 maxneighbor 對算法的影響很大。

   算法多用於大規模的數據處理。

我的問題在於,不是很明瞭這些算法中的距離對於文本文件來說要怎麼去計算。

1.2. 層次方法(hierarchical methods)

1.2.1  BIRCH算法:

(1)掃描數據庫,建立動態的一棵存放在內存的CF Tree。如果內存不夠,則增大閾值,在原樹基礎上構造一棵較小的樹。 

(2)對葉節點進一步利用一個全局性的聚類算法,改進聚類質量。

1.2.2.  CURE算法:

基本原理:

針對大型數據庫的高效的聚類算法。基於劃分的傳統的聚類算法得到的是球狀的,相等大小的聚類,對異常數據比較脆弱。CURE採用了用多個點代表一個簇的方法,可以較好的處理以上問題。並且在處理大數據量的時候採用了隨機取樣,分區的方法,來提高其效率,使得其可以高效的處理大量數據。

    算法實現:

     CURE的算法在開始時,每個點都是一個簇,然後將距離最近的簇結合,一直到簇的個數爲要求的K。它是一種分裂的層次聚類。算法分爲以下6步: 

1)從源數據對象中抽取一個隨機樣本S。 

2)將樣本S分割爲一組劃分。 

3)對劃分局部的聚類。 

4)通過隨機取樣提出孤立點。如果一個簇增長得太慢,就去掉它。 

5)對局部的簇進行聚類。 

6)用相應的簇標籤標記數據。

1.3. 基於密度的方法(density-based methods)

  算法的基本思想:

基於密度的方法與其它方法的一個根本區別是:它不是基於各種各樣的距離的,而是基於密度的。這樣就能克服基於距離的算法只能發現“類圓形”的聚類的缺點。這個方法的指導思想就是,只要一個區域中的點的密度大過某個閥值,就把它加到與之相近的聚類中去。

代表有.DBSCAN算法:OPTICS算法:.DENCLUE算法等; 

1.4. 基於網格的方法(grid-based methods)

這種方法首先將數據空間劃分成爲有限個單元(cell)的網格結構,所有的處理都是以單個的單元爲對象的。這麼處理的一個突出的優點就是處理速度很快,通常這是與目標數據庫中記錄的個數無關的,它只與把數據空間分爲多少個單元有關。

代表算法有:

1.4.1  CLIQUE算法:

CLIQUE算法採用了基於網格和密度的方法。首先對每個屬性進行等分,整個數據空間就被分成一個超長方體集合,對每個單元進行數據點計數,大於某個閾值的單元稱這稠密單元,然後對稠密單元進行連接就構成類。不同於其它方法,它可以自動地識別嵌入在數據子空間中的類。

 好處是能夠在高維空間中,它能夠有效地進行聚類,並且能夠發現嵌套在高維空間中的聚類。

1.4.2  WAVE-CLUSTER算法:

工作原理: 

WaveCluster算法中把多維空間數據看作是多維信號,首先將數據空間網格化,然後用小波變換技術(Wavelet transform)把信號從空間域轉換到頻率域。在小波變換中,用一個合適的內核函數進行旋轉,產生一個變形後的空間,使數據中的簇易於區分。然後在變換後的空間中通過尋找密集區域對應起來。

WaveCluster算法通過把d維數據對象看作是d維信號,信號的高頻部分對應特徵空間中對象分佈有急劇變化的區域,也就是類簇邊界;而低頻中高振幅部分則對應於對象分佈比較集中的區域,也就是簇的內部。通過信號處理中的小波變換技術把信號分解成不同的頻率段,找出d維信號的高頻部分和低頻部分,也就找出了簇。其中的噪聲可以自動地被消除。

算法的步驟:

步驟1) 對特徵空間進行量化,把每個維度分成m段,這樣,整個空間分成單元,然後把對象分機到相應的單元;

步驟2) 對量化後的特徵空間進行離散小波變換;

步驟3) 在變化後的特徵空間的子波段中找出相連的部分,就是簇;

步驟4) 爲每個簇所包含的單元分配相應的標籤;

步驟5) 建立查找表,用於把變換後特徵空間中的單元映射到原特徵空間中的單元;

步驟6) 把每個單元的標籤分配給該單元內的所有對象。

WaveCluster算法不受噪聲影響,對輸入順序不敏感,不需要事先知道簇的數目,並且能夠快速處理大型數據集,能夠發現任意複雜形狀的聚類。

WaveCluster算法是一種基於網格和基於密度的算法。它符合好的聚類算法的許多要求:它能有效地處理大數據集,發現任意形狀的簇,成功地處理離羣點,對輸入的順序不敏感,不需要指定求諸如結果的數目和領域半徑等輸入參數。

這個方面的算法完全是搬照過來的,我最近在看,只是明瞭基礎意思,對實際的運行原理不清楚。

總結,這些都是一些傳統的聚類算法,但都包含了現在的思想,是其它算法的基礎。目前的這些算法在網上可以找到源代碼,但是它的發展並沒有得到完全,而且由於用處和用法的不同,每種算法有不同的缺陷,所應用的領域也大有不同。大部分的人都是從中應用其思想根據自己的需求進行改進

發佈了33 篇原創文章 · 獲贊 154 · 訪問量 58萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章