針對聚類K-means算法中不能對特定形狀的樣本進行分類,提出了一種新的聚類算法(DBSCAN)。
DBSCAN 是一種著名的密度聚類算法更耻,它基于一組“鄰域”參數(shù)來刻畫樣本分布的緊密程度。
7.1 基本概念
DBSCAN:Density-Based Spatial Clustering of Applications with Noise
核心對象:若某個點的密度達到算法設(shè)定的閾值則其為核心點。即r領(lǐng)域內(nèi)點的數(shù)量不小于minPts誉己。
距離閾值:設(shè)定的半徑r
直接密度可達:若某點p在點q的r領(lǐng)域內(nèi),且q是核心點袱蜡,則p-q直接密度可達镜沽。
密度可達:若有一個點的序列q0、q1、...、qk结澄,對任何qi-(qi-1)是直接密度可達的。稱從q0-qk密度可達岸夯。
密度相連:若從某核心點p出發(fā)麻献,點q和點k都是密度可達的。則稱q和點k是密度相連的猜扮。
邊界點:屬于某一個類的非核心點勉吻,不能發(fā)展下線了。
噪聲點:不屬于任何一個類簇的點旅赢,從任何一個核心點出發(fā)都是密度不可達的齿桃。
7.2 算法思想
這個算法很有意思,總結(jié)8個字就是:畫圈找點,發(fā)展下線
設(shè)定參數(shù)D:輸入數(shù)據(jù)集;參數(shù):指定半徑缚忧;MinPts:密度閾值
1. 標記所有對象為unvisited
2. Do
3. 隨機選擇一個 unvited 對象 p;
4. 標記 p 為visited香到;
5. if p 的 e-(半徑范圍內(nèi)) 領(lǐng)域內(nèi)至少有 MinPts 個對象
創(chuàng)建一個新簇 C,并把p添加到C;
令 N 為 p 的 e- 領(lǐng)域中的對象集合
for N 中每個點 p
if p 是 unvisited
標記 p 為visited
if p 的e-領(lǐng)域至少有 MinPts 個對象悠就,把這些對象添加到N千绪;
如果 p 還不是任何簇的成員,把 p 添加到 C理卑;
End for翘紊;
輸出 C;
Else 標記 p 為噪聲藐唠;
Unitl 沒有標記為unvisited 的對象。
參數(shù)選擇:
半徑e:給定數(shù)據(jù)集P={p(i);i=0,1,...,n},計算點P(i)到集合D的子集S中所有點之間的距離鹉究,距離按照從小到大的順序排序宇立, d(k)就被稱為k-距離。
MunPts: k-距離中k的值自赔,一般取的小一些妈嘹,多次嘗試
7.3 優(yōu)劣勢
優(yōu)勢:
- 不需要指定簇個數(shù)
- 可以發(fā)現(xiàn)任意形狀的簇
- 擅長找到離群點
- 兩個參數(shù)就夠了
劣勢:
- 高維數(shù)據(jù)有些困難(可以做降維)
- 參數(shù)難以選擇(參數(shù)對結(jié)果的影響非常大)
- Sklearn中效率很慢(數(shù)據(jù)削減策略)