一、算法圖解
DBSCAN:Dense-Based Spatial Clustering of Applications with Noise(基於密度的&帶噪點的空間聚類應用方法)
舉個栗子:
- 此處潛在設定條件:Min_smaples(或者叫MinPoints / Minpts)= 4;
- 核心點:紅點,因爲以紅點爲圓心,“Eps/鄰域”爲半徑的範圍內,樣本點個數至少有4個(即 Min_samples);
- 邊界點:黃點,因爲它雖然在圓的範圍裏,但以它爲圓心“Eps/鄰域”爲半徑的範圍內,不滿足Min_samples至少爲4的要求;
- Noise(噪點):藍點,即沒有在圓範圍的點;
二、sklearn官方文檔鏈接
sklearn.cluster.dbscan(
X, # 一個feature數組,shape爲(n_samples, n_featrues),或者是 當`metric='precomputed'`的樣本間距離數組;
eps=0.5, # 見上邊例子
min_samples=5, # 見上邊例子
metrics='minkowski', # 計算2點距離的方法
metric_params=None,
algorithm='auto', #可選參數爲['auto', 'ball_tree', 'kd_tree', 'brute']
leaf_size=30, # 可選的參數,BallTree或者cKDTree用的。
p=2, # 用來計算2點之間距離的Minsowski矩陣的冪
sample_weight=None,
n_jobs=None # 並行運算的數目The number of parallel jobs to run for neighbors search;
)
三、優缺點
- 優點
- 與KMeans相比,不需要事先設定cluster數;
- 與KMeans相比,可以發現任意形狀的cluster;
- 同時,DBSCAN能夠識別出噪點;
- DBSCAN對於數據庫中樣本的順序不敏感,即pattern的輸入順序對結果的影響不大。但是,對處於cluster邊界的樣本,可能會根據那個cluster優先被探測到而歸屬有所擺動;
- 缺點
- 當數據量增大時,要求較大的內存支持,I/O消耗也很大;
- DBSCAN不能很好的反映高維數據,算法聚類效果依賴於距離公式的選取(實際應用中常用歐式距離);
- 如果樣本呢的密度不均勻、cluster的間距又很大的時候,聚類質量不好(參見 劉建平Pinard的博客 )
- DBSCAN不能很好反映數據集已變化的密度;