一 什麼是基於密度的聚類算法
由於層次聚類算法和劃分式聚類算往往只能發現凸形的聚類簇。爲了彌補這一缺陷,發現各種任意形狀的聚類簇,開發出基於密度的聚類算法。這類算法認爲,在整個樣本空間點中,各目標類簇是由一羣的稠密樣本點組成的,而這些稠密樣本點被低密度區域(噪聲)分割,而算法的目的就是要過濾低密度區域,發現稠密樣本點。
二 DBSCAN(Density-based Spatial Clustering of Applications with Noise)
是一種基於高密度聯通區域的聚類算法,它將類簇定義爲高密度相連點的最大集合。它本身對噪聲不敏感,並且能發現任意形狀的類簇。
DBSCAN中的的幾個定義:
Ε領域:給定對象半徑爲Ε內的區域稱爲該對象的Ε領域
核心對象:如果給定對象Ε領域內的樣本點數大於等於MinPts,則稱該對象爲核心對象。
直接密度可達:對於樣本集合D,如果樣本點q在p的Ε領域內,並且p爲核心對象,那麼對象q從對象p直接密度可達。
密度可達:對於樣本集合D,給定一串樣本點p1,p2….pn,p= p1,q= pn,假如對象pi從pi-1直接密度可達,那麼對象q從對象p密度可達。
密度相連:對於樣本集合D中的任意一點O,如果存在對象p到對象o密度可達,並且對象q到對象o密度可達,那麼對象q到對象p密度相連。
可以發現,密度可達是直接密度可達的傳遞閉包,並且這種關係是非對稱的。密度相連是對稱關係。DBSCAN目的是找到密度相連對象的最大集合。
Eg: 假設半徑Ε=3,MinPts=3,點p的E領域中有點{m,p,p1,p2,o}, 點m的E領域中有點{m,q,p,m1,m2},點q的E領域中有點{q,m},點o的E領域中有點{o,p,s},點s的E領域中有點{o,s,s1}.
那麼核心對象有p,m,o,s(q不是核心對象,因爲它對應的E領域中點數量等於2,小於MinPts=3);
點m從點p直接密度可達,因爲m在p的E領域內,並且p爲核心對象;
點q從點p密度可達,因爲點q從點m直接密度可達,並且點m從點p直接密度可達;
點q到點s密度相連,因爲點q從點p密度可達,並且s從點p密度可達。
算法:DBSCAN
輸入:E — 半徑
MinPts — 給定點在E領域內成爲核心對象的最小領域點數
D — 集合
輸出:目標類簇集合
方法:repeat
1) 判斷輸入點是否爲核心對象
2) 找出核心對象的E領域中的所有直接密度可達點
util 所有輸入點都判斷完畢
repeat
針對所有核心對象的E領域所有直接密度可達點找到最大密度相連對象集合,
中間涉及到一些密度可達對象的合併。
Util 所有核心對象的E領域都遍歷完畢
算法:DBSCAN 輸入:E — 半徑 MinPts — 給定點在E領域內成爲核心對象的最小領域點數 D — 集合 輸出:目標類簇集合 方法:repeat 1) 判斷輸入點是否爲核心對象 2) 找出核心對象的E領域中的所有直接密度可達點 util 所有輸入點都判斷完畢 repeat 針對所有核心對象的E領域所有直接密度可達點找到最大密度相連對象集合, 中間涉及到一些密度可達對象的合併。 Util 所有核心對象的E領域都遍歷完畢 |
轉自:http://www.360doc.com/content/11/0608/14/7000788_122449612.shtml