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算法是一種基於網格和基於密度的算法。它符合好的聚類算法的許多要求:它能有效地處理大數據集,發現任意形狀的簇,成功地處理離羣點,對輸入的順序不敏感,不需要指定求諸如結果的數目和領域半徑等輸入參數。
這個方面的算法完全是搬照過來的,我最近在看,只是明瞭基礎意思,對實際的運行原理不清楚。
總結,這些都是一些傳統的聚類算法,但都包含了現在的思想,是其它算法的基礎。目前的這些算法在網上可以找到源代碼,但是它的發展並沒有得到完全,而且由於用處和用法的不同,每種算法有不同的缺陷,所應用的領域也大有不同。大部分的人都是從中應用其思想根據自己的需求進行改進