1. 程式人生 > >無監督學習-聚類系列之常見模型

無監督學習-聚類系列之常見模型

聚類是一個大的家族,常見的分類有6種,而各種聚類又有許多變型,這裡總結下常見聚類及其原理。在此只是為了方便自己記憶而寫的總結,當中有借鑑一些前輩的筆記,感激前輩。 1、劃分聚類: k—means演算法步驟: (1)提前假設k個簇,對於實際問題會有一些啟發式的選取方法,大多數是隨機選取。但由於初值會影響結果所以往往多次選擇初值並去結果最好的那一次。 (2)將每個資料點歸類到離它最近的哪個中心點所帶表的簇。這裡注意距離的度量也即相似度,一般高維稠密用歐氏距離,但如果是高維稀疏一般用餘弦距離。 (3)分別對每個簇中的資料點求平均值即為計算出cluster新中心點。若中心點不變或者小於某個可接受範圍則停止,否則繼續重複第(2)步一直迭代。

k-means損失函式為:所有樣本離所在簇中心的距離,認為每個簇 內部越緊密,聚類效果越好。

*****k均值的優缺點及相應的改進: 優點:1,簡單,易於理解和實現;2,時間複雜度低 缺點: 1)kmeans要手工輸入類數目,對初始值的設定很敏感;所以有了k-means++、intelligentk-means、genetick-means; 2)k-means對噪聲和離群值非常敏感,所以有了k-medoids和k-medians; 3)k-means只用於numerical型別資料,不適用於categorical型別資料,所以k-modes; 4)k-means不能解決非凸(non-convex)資料,所以有了kernelk-means。 5)k-means主要發現圓形或者球形簇,不能識別非球形的簇。

k-means++演算法步驟: (1)從輸入的資料點集合中隨機選擇一個點作為第一個聚類中心; (2)計算資料集中每一個點到與其最近聚類中心(指已選出的聚類中心)的距離D(xi); (3)選擇一個新資料點作為聚類中心,原則:D(xi)較大的點,被選為聚類中心概率較大。原理如下,先從已有的聚類中心中隨機挑選一個點作為種子點,對每個資料點都計算其與最近的一個種子點的距離D(xi)並儲存在一個數組裡面,然後對這些距離求和得到Sum(D(x1)…D(xi)),接著再用0-1之間的隨機值r乘以Sum得到一個值temp,即temp = r*Sum,再執行temp -= D(x1,x2…xi)直到temp<=0,則當前的D(xi)即為新的聚類中心。 (4)重複(2),(3)直到k個聚類中心被選出來。 (5)從這k個初始聚類中心開始執行標準k-means演算法。 *****k-means++的優缺點: 優點: (1)解決了k-means對初始值敏感的問題 缺點: (1)下一個中心點的選擇依賴於已存在的中心點。改進:k-means||演算法。

2、層次聚類(分為凝聚和分裂兩種): **自底向上(凝聚)層次聚類演算法步驟: (1)把每個樣本都歸為一類,計算每兩個類之間的距離或相似度。 (2)尋找最近的兩個類把他們歸為一類,此步驟導致類的總數少了一類。 (3)重新計算新類與所有類之間的距離或相似度。 (4)重複步驟2,3直到最後合併成一個類。

**自頂向下(分裂)層次聚類演算法步驟: (1)所有總的樣本歸為一類,然後計算每個類之間的距離或者相似度。 (2)尋找距離最遠的兩個樣本點把他們歸為一類,此步驟導致類的總數增加一類。 (3)重新計算新類與各樣本點之間的距離或相似度。 (4)重複步驟2,3直到最後每個樣本為一個類。 注意: 第三步判斷兩個類間的距離或者相似度有三種, SingleLinkage:又叫做 nearest-neighbor ,就是取兩個類中距離最近的兩個樣本的距離作為這兩個集合的距離。 CompleteLinkage:這個則完全是 Single Linkage 的反面極端,取兩個集合中距離最遠的兩個點的距離作為兩個集合的距離。 Average-linkage:這種方法就是把兩個集合中的點兩兩的距離全部放在一起求一個平均值,相對也能得到合適一點的結果。 一般選擇第三種作為相似度度量。

優點:1,距離和規則的相似度容易定義,限制少;2,不需要預先制定聚類數;3,可以發現類的層次關係;4,可以聚類成其它形狀 缺點:1,計算複雜度太高;2,奇異值也能產生很大影響;3,演算法很可能聚類成鏈狀

3、DBSCAN密度聚類: 在以上聚類中無法解決不規則的形狀聚類,於是產生了密度聚類,同時該方法對噪聲資料處理以及集中區域的效果較好.

1) ϵ-鄰域:對於xj∈Dxj∈D,其ϵϵ-鄰域包含樣本集D中與xjxj的距離不大於ϵϵ的子樣本集,即Nϵ(xj)={xi∈D|distance(xi,xj)≤ϵ}Nϵ(xj)={xi∈D|distance(xi,xj)≤ϵ}, 這個子樣本集的個數記為|Nϵ(xj)||Nϵ(xj)| 2) 核心物件:對於任一樣本xj∈Dxj∈D,如果其ϵϵ-鄰域對應的Nϵ(xj)Nϵ(xj)至少包含MinPts個樣本,即如果|Nϵ(xj)|≥MinPts|Nϵ(xj)|≥MinPts,則xjxj是核心物件。  3)密度直達:如果xixi位於xjxj的ϵϵ-鄰域中,且xjxj是核心物件,則稱xixi由xjxj密度直達。注意反之不一定成立,即此時不能說xjxj由xixi密度直達, 除非且xixi也是核心物件。 4)密度可達:對於xixi和xjxj,如果存在樣本樣本序列p1,p2,…,pTp1,p2,…,pT,滿足p1=xi,pT=xjp1=xi,pT=xj, 且pt+1pt+1由ptpt密度直達,則稱xjxj由xixi密度可達。也就是說,密度可達滿足傳遞性。此時序列中的傳遞樣本p1,p2,…,pT−1p1,p2,…,pT−1均為核心物件,因為只有核心物件才能使其他樣本密度直達。注意密度可達也不滿足對稱性,這個可以由密度直達的不對稱性得出。 5)密度相連:對於xixi和xjxj,如果存在核心物件樣本xkxk,使xixi和xjxj均由xkxk密度可達,則稱xixi和xjxj密度相連。注意密度相連關係是滿足對稱性的。

DBSCAN演算法原理: 給定:樣本集D,領域引數(ϵ,MinPts),樣本距離度量方式 (1)通過選定的距離度量方式(一般為歐氏距離,P=2)找到每個樣本xi的ϵ-領域子樣本集合Nϵ(xi)。如果子樣本集樣本個數滿足|Nϵ(xi)|≥MinPts|Nϵ(xi)|≥MinPts,將樣本xi放入核心物件樣本集合Ω。(Ω=Ω∪{xj}) (2)在核心物件集合中任意選擇一個沒有類別的核心物件作為種子,找到所有這個核心物件能夠密度可達的樣本集合,作為一個聚類簇。接著繼續選擇另一個沒有類別的核心物件去尋找密度可達的樣本集合,得到另一個聚類簇,直到所有核心物件都有類別為止。

注意:一些不在核心物件周圍的異常樣本點一般標記為噪聲點。對應少量的樣本,尋找最近鄰可以直接去計算所有樣本的距離,如果樣本量較大,則一般採用KD樹或者球樹來快速的搜尋最近鄰。某些樣本可能到兩個核心物件的距離都小於ϵ,但是這兩個核心物件由於不是密度直達,又不屬於同一個聚類簇,DBSCAN採用先來後到,先進行聚類的類別簇會標記這個樣本為它的類別。

優點: (1)不需要提前輸入劃分的聚類個數k,聚類結果沒有偏倚。 (2)對異常點不敏感,同時可以發現異常點。 (3)相比k-means的一般用於凸資料集,DBSCAN可以對任意形狀的稠密資料集進行聚類。 缺點: (1)樣本集密度不均勻,聚類間距離差距大時DBSCAN不適用。 (2)樣本集較大,聚類收斂時間長。 (3)對距離閾值和領域樣本數閾值聯合調參較複雜。

4、基於模型聚類: 主要是基於概率模型和基於神經網路模型的聚類。概率模型主要指概率生成模型(generativeModel),缺點就是執行效率不高,特別是分佈數量很多並且資料量很少的時候。最典型、最常用的方法是高斯混合模型(GMM,GaussianMixtureModels)。

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

******如何評價聚類的效果?–輪廓係數: 計算過程: (1)計算樣本i到同簇其他樣本之間得到平均距離ai,ai越小說明該樣本越該分到給簇中,ai稱為樣本i的簇內不相似度.而簇Ck中的所有樣本ai的均值稱為簇Ck的簇不相似度. (2)計算樣本i到其他簇Cj所有樣本的平均距離bij,稱為樣本i與簇Cj的不相似度,定義為樣本i的簇間不相似度,bi=min{bi1,bi2…bik},bi越大越說明樣本i不屬於其他簇. (3)定義樣本i的輪廓係數如下: 在這裡插入圖片描述 si越接近1,說明樣本i聚類合理; si越接近-1,說明樣本i更應該分類到另外的簇; si接近0,說明樣本i在兩個簇的邊界上. (4)所有樣本si的均值為聚類結果的輪廓係數,依據以上判斷方法來判斷聚類是否合理,有效.