聚類的四種演算法

2021-08-20 15:27:53 字數 4240 閱讀 3613

最近看了一篇**,涉及到資料探勘的聚類演算法,這裡總結一下

一、聚類演算法的簡介

聚類演算法是一種典型的無監督學習演算法,主要用於將相似的樣本自動歸到乙個類別中。聚類演算法與分類演算法最大的區別是:聚類演算法是無監督的學習演算法,而分類演算法屬於監督的學習演算法。在聚類演算法中根據樣本之間的相似性,將樣本劃分到不同的類別中,對於不同的相似度計算方法,會得到不同的聚類結果,常用的相似度計算方法有歐式距離法。

1、k-means演算法的概述

基本k-means

演算法的思想很簡單,事先確定常數

k,常數

k意味著最終的聚類類別數,首先隨機選定初始點為質心,並通過計算每乙個樣本與質心之間的相似度(

這裡為歐式距離),將樣本點歸到最相似的類中,接著,重新計算每個類的質心(即為類中心),重複這樣的過程,知道質心不再改變,最終就確定了每個樣本所屬的類別以及每個類的質心。由於每次都要計算所有的樣本與每乙個質心之間的相似度,故在大規模的資料集上,k-means

演算法的收斂速度比較慢。

1.1、

k-means

演算法的流程

l 初始化常數

k,隨機選取初始點為質心

l 重複計算一下過程,直到質心不再改變

l 計算樣本與每個質心之間的相似度,將樣本歸類到最相似的類中

l 重新計算質心

l 輸出最終的質心以及每個類

2. dbscan演算法

2.1基本概念(1

)eps

鄰域:給定物件半徑

eps內的鄰域稱為該物件的

eps鄰域;(

2)核心點(

core point

):如果物件的

eps鄰域至少包含最小數目

minpts

的物件,則稱該物件為核心物件;(

3)邊界點(

edge point

):邊界點不是核心點,但落在某個核心點的鄰域內;(

4)噪音點(

outlier point

):既不是核心點,也不是邊界點的任何點;(

5)直接密度可達

(directly density-reachable)

:給定乙個物件集合

d,如果p在

q的eps鄰域內,而

q是乙個核心物件,則稱物件

p從物件

q出發時是直接密度可達的;(

6)密度可達

(density-reachable)

:如果存在乙個物件鏈

p1,

…,pi,.., pn

,滿足p1 = p 

和pn = q,pi

是從pi+1

關於eps

和minpts

直接密度可達的,則物件

p是從物件q關於

eps和

minpts

密度可達的;(

7)密度相連

(density-connected)

:如果存在物件o∈

d,使物件p和

q都是從o關於

eps和

minpts

密度可達的,那麼物件p到

q是關於

eps和

minpts

密度相連的。(8

)類(cluster):

設非空集合

,若滿足:從(

a)到(

b)和密度相連。則稱構成乙個類簇圖1

紅色為核心點,黃色為邊界點,藍色為噪音點,

minpts = 4

,eps

是圖中圓的半徑大小

有關「直接密度可達」和「密度可達」定義實例如圖2所示

[5]:

其中,eps

用乙個相應的半徑表示,設

minpts=3

,請分析

q,m,p,s,o,r這5

個樣本點之間的關係。

圖2  

「直接密度可達」和「密度可達」概念示意描述。根據前文基本概念的描述知道:由於有標記的各點­m、

p、o和

r的eps近鄰均包含

3個以上的點,因此它們都是核物件;

m­是從

p「直接密度可達」;而

q則是從

­m「直接密度可達」;基於上述結果,q是從

p「密度可達」;但p從

q無法「密度可達」

(非對稱

)。類似地,s和

r從o是「密度可達」的;o、

r和s均是「密度相連」(對稱)的。

通過檢查資料集中每點的

eps鄰域來搜尋簇,如果點p的

eps鄰域包含的點多於

minpts

個,則建立乙個以

p為核心物件的簇;(2

)然後,

dbscan

迭代地聚集從這些核心物件直接密度可達的物件,這個過程可能涉及一些密度可達簇的合併;(3

)當沒有新的點新增到任何簇時,該過程結束。

優點:(

1)聚類速度快且能夠有效處理雜訊點和發現任意形狀的空間聚類;(2

)與k-means

比較起來,不需要輸入要劃分的聚類個數;(3

)聚類簇的形狀沒有偏倚;(4

)可以在需要時輸入過濾雜訊的引數。

缺點:(

1)當資料量增大時,要求較大的記憶體支援

i/o消耗也很大;(2

)當空間聚類的密度不均勻、聚類間距差相差很大時,聚類質量較差,因為這種情況下引數

minpts

和eps

選取困難。(3

)演算法聚類效果依賴與距離公式選取,實際應用中常用歐式距離,對於高維資料,存在「維數災難」。

輸入:包含

n個物件的資料庫,半徑

,最少數目

minpts

輸出:所有生成的簇,達到密度要求

(1)  repeat

(2) 

從資料庫中抽取乙個未處理的點

(3)  if抽取的點是核心點

then

找出所有從該點密度可達的物件,形成乙個簇

(4)  else抽出的點是邊緣點,跳出本次迴圈,尋找下一點

(5)until

所有的點都被處理

階段1:birch掃瞄資料庫,建立乙個初始存放於記憶體的cf樹,它可以被看作資料的多層壓縮,試圖保留資料內的聚類結構。隨著物件的插入,cf樹被動態的構造,不要求所有的資料讀入記憶體,而可在外層上逐個讀入資料項。因此,birtch方法對增量或動態聚類也非常有效

階段2:birch採用某個聚類演算法對cf樹的葉節點進行聚類,在這個階段可以執行任何聚類演算法。

cf tree的結構類似於一棵b-樹,它有兩個引數:內部節點平衡因子b,葉節點平衡因子l,簇半徑閾值t。樹中每個節點最多包含b個孩子節點,記為(cfi,childi),1<=i<=b,cfi是這個節點中的第i個聚類特徵,childi指向節點的第i個孩子節點,對應於這個節點的第i個聚類特徵。

一棵cf樹是乙個資料集的壓縮表示,葉子節點的每乙個輸入都代表乙個簇c,簇c中包含若干個資料點,並且原始資料集中越密集的區域,簇c中包含的資料點越多,越稀疏的區域,簇c中包含的資料點越少,簇c的半徑小於等於t。隨著資料點的加入,cf樹被動態的構建,插入過程有點類似於b-樹。

4  meanshift演算法

4.1 meanshift演算法基本思想

均值漂移的基本概念:沿著密度上公升方向尋找聚簇點

設想在乙個有n個樣本點的特徵空間

1.初始確定乙個中心點center,計算在設定的半徑為d的圓形空間內所有的點(xi)與中心點center的向量

2.計算整個圓形空間內所有向量的平均值,得到乙個偏移均值

3.將中心點center移動到偏移均值位置

4.重複移動,直到滿足一定條件結束

聚類演算法(四) 基於密度峰值的聚類演算法

主要思想是尋找被低密度區與分離的高密度區域,基於的假設為 1 類簇中心點的密度大於周圍鄰居點的密度 2 類簇中心點與更高密度點之間的距離相對較大 因此有兩個需要計算的量 區域性密度pi和高區域性密度點距離 與高密度點之間的距離 i pi理解 其中dc表示截斷距離,這個公式的意義就是找到與第i個資料點...

四種排序演算法PHP實現類

四種排序演算法的php實現 1 插入排序 insertion sort 的基本思想是 每次將乙個待排序的記錄,按其關鍵字大小插入到前面已經排好序的子檔案中的適當位置,直到全部記錄插入完成為止。2 選擇排序 selection sort 的基本思想是 每一趟從待排序的記錄中選出關鍵字最小的記錄,順序放...

Sort List(四種演算法)

sort a linked list in o nlog n time using constant space complexity.演算法一 快速排序。因為鍊錶是單向,所以有很多細節要注意,比如quick sort p,r 排序的區間其實是 p next,r next 因為單向鍊錶不能回頭。de...