DBSCAN 介紹

講者:ㄇㄒ

日期:2021/03/14

Outline

  • 基本介紹
  • 簡易實作

基本介紹

What is DBSCAN?

  • 屬非監督式學習中的分群方式
  • Density-based spatial clustering of applications with noise
  • 基於密度的分群方式
  • 將特徵相近且密度高的樣本劃分為一群

補充:分類 VS 分群

分類 分群
演算法 K-近鄰演算法 (KNN)、支持向量機 (SVM) … Kmeans、DBSCAN
所屬機器學習方式 監督式學習 非監督式學習
資料標籤 有標籤 無標籤
標準答案 有正確答案
透過機器學習能分辨及預測
沒有給答案
機器需自行尋找規則與不同之處

兩大參數

  • 距離:半徑 (ε)
  • 最少點數:minPts

流程

  • 任意選取一個樣本當作中心點,以設定好的半徑畫圓
    • 若圓內樣本數大於等於最少點數,則此樣本為一核心點
    • 反之則為非核心點
  • 重複前步驟直到所有樣本皆當過中心點
  • 將有連結性(雙向)的樣本點劃分為一群,其他局外點可檢視是否單可達,劃分為不同群體。

DBSCAN 優缺點

  • 優點
    • 不受極端質影響
    • 不須事先選擇樣本群數,模型中會自動決定
  • 缺點
    • 若維度過高,則須非常大量的樣本才能達到比較好的預測效果
    • 若資料密度差異大,效果會較差

簡易實作

打開 google colab

引入套件

import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn.cluster import DBSCAN

載入資料集

iris = datasets.load_iris()
x = iris.data
x = x[:,2:4]

建立模型

clustering = DBSCAN().fit(x)

顯示分群結果

clustering.labels_

-1為噪點 (Noisy samples)

結果圖像化

plt.scatter(x[:,0],x[:,1],c=clustering.labels_)

原始答案

y = iris.target
plt.scatter(x[:,0],x[:,1],c=y)

Reference

感謝聆聽_(:3 ⌒゙)_

DBSCAN 介紹

By sandy-tsai

DBSCAN 介紹

  • 89