最近看了一篇**,涉及到資料探勘的聚類演算法,這裡總結一下
一、聚類演算法的簡介
聚類演算法是一種典型的無監督學習演算法,主要用於將相似的樣本自動歸到乙個類別中。聚類演算法與分類演算法最大的區別是:聚類演算法是無監督的學習演算法,而分類演算法屬於監督的學習演算法。在聚類演算法中根據樣本之間的相似性,將樣本劃分到不同的類別中,對於不同的相似度計算方法,會得到不同的聚類結果,常用的相似度計算方法有歐式距離法。
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...