DBSCAN

"Density-Based Spatial Clustering of Applications with Noise"

1. Apa itu DBSCAN?

K-Means punya kelemahan fatal: Dia tidak bisa mendeteksi Noise (Sampah/Outlier) dan bentuk cluster yang aneh (misal: bulan sabit).

DBSCAN mengelompokkan data berdasarkan Kepadatan.

  • Jika titik-titik berkerumun rapat -> Jadi Cluster.
  • Jika titik sendirian jauh dari siapa-siapa -> Jadi Noise (Diabaikan).

2. Visualisasi: Core, Border, Noise

Core Border Noise

Parameter Kunci (Misal MinPts = 4):

  1. Core Point (Hijau): Punya $\ge$ 4 tetangga dalam radius lingkaran ($\epsilon$).
  2. Border Point (Kuning): Punya tetangga < 4, tapi dia bertetangga dengan Core Point (Nebeng).
  3. Noise Point (Merah): Sendirian, tetangga sedikit, dan jauh dari Core Point.

3. Mengapa DBSCAN Keren?

Kelebihan
  • Anti Noise: Outlier tidak akan merusak rata-rata cluster (beda dengan K-Means).
  • Bentuk Bebas: Bisa mendeteksi cluster bentuk cincin, ular, dll.
  • Otomatis: Tidak perlu tentukan jumlah cluster ($K$).
Kelemahan
  • Sensitif Parameter: Susah menentukan radius ($\epsilon$) dan MinPts yang pas.
  • Beda Kepadatan: Susah jika ada satu cluster sangat padat dan satu lagi sangat renggang.

4. Implementasi Python (Scikit-Learn)

from sklearn.cluster import DBSCAN
import numpy as np

# 1. Data Dummy
X = np.array([[1, 2], [2, 2], [2, 3],
              [8, 7], [8, 8], [25, 80]]) # Titik terakhir [25, 80] itu Noise (Jauh)

# 2. Model DBSCAN
# eps=3 (Radius maksimal 3 satuan)
# min_samples=2 (Minimal 2 teman untuk jadi Core)
db = DBSCAN(eps=3, min_samples=2).fit(X)

# 3. Hasil
print("Label:", db.labels_)
# Output: [ 0 0 0  1 1 -1 ]
#  0: Cluster ke-0 (Grup Pertama)
#  1: Cluster ke-1 (Grup Kedua)
# -1: NOISE / Outlier (Si [25,80])