基本概念:(Density-Based Spatial Clustering of Applications with Noise)
核心物件
:若某個點的密度達到演算法設定的閾值則其為核心點。(即 r 鄰域內點的數量不小於 minPts)
ε-鄰域的距離閾值
:設定的半徑r
直接密度可達:
若某點p在點q的 r 鄰域內,且q是核心點則p-q直接密度可達。
密度可達:
若有一個點的序列q0、q1、。。。qk,對任意qi-qi-1是直接密度可達的,則稱從q0到qk密度可達,這實際上是直接密度可達的“傳播”。就像傳銷一樣,發展下線。
密度相連
:若從某核心點p出發,點q和點k都是密度可達的,則稱點q和點k是密度相連的。
邊界點
:屬於某一個類的非核心點,不能發展下線了
噪聲點
:不屬於任何一個類簇的點,從任何一個核心點出發都是密度不可達的,也叫
離群點
。
工作流程
給定:
引數D:輸入資料集引數ε:指定半徑MinPts:密度閾值(比如5)
引數選擇:
半徑ε,可以根據K距離來設定:找突變點K距離:給定資料集P={p(i); i=0,1,。。。n},計算點P(i)到集合D的子集S中所有點之間的距離,距離按照從小到大的順序排序,d(k)就被稱為k-距離。MinPts::k-距離中k的值,一般取的小一些,多次嘗試
優勢:
不需要指定簇個數
可以發現任意形狀的簇
擅長找到離群點(檢測任務)
兩個引數就夠了
劣勢:
高維資料有些困難(可以做降維)
引數難以選擇(引數對結果的影響非常大)
Sklearn中效率很慢(資料削減策略)