Apa itu DBSCAN?
DBSCAN (Density-Based Spatial Clustering of Applications with Noise) adalah algoritma clustering berbasis kepadatan. Kelebihannya: tidak perlu menentukan K di awal, dapat menemukan cluster berbentuk arbitrer, dan otomatis mendeteksi outlier (noise).
Parameter Utama DBSCAN
- eps (ε): Radius lingkungan dari suatu titik.
- min_samples: Jumlah minimum titik dalam radius eps untuk dianggap sebagai core point.
Jenis Titik dalam DBSCAN
- Core Point: Titik dengan minimal min_samples tetangga dalam radius eps.
- Border Point: Titik dalam radius eps dari core point, tapi tidak memenuhi min_samples.
- Noise Point (Outlier): Titik yang bukan core maupun border.
Implementasi Python
from sklearn.cluster import DBSCAN from sklearn.preprocessing import StandardScaler import matplotlib.pyplot as plt # Preprocessing scaler = StandardScaler() X_scaled = scaler.fit_transform(X) # DBSCAN dbscan = DBSCAN(eps=0.5, min_samples=5) clusters = dbscan.fit_predict(X_scaled) # Hitung jumlah cluster (exclude noise yang label-nya -1) n_clusters = len(set(clusters)) - (1 if -1 in clusters else 0) n_noise = list(clusters).count(-1) print(f"Jumlah cluster: {n_clusters}") print(f"Jumlah noise/outlier: {n_noise}") # Visualisasi plt.scatter(X_scaled[:, 0], X_scaled[:, 1], c=clusters, cmap='viridis') plt.title('DBSCAN Clustering') plt.show()
Tips Menentukan eps dan min_samples
Gunakan K-Distance Graph untuk menentukan eps optimal. Plot jarak ke tetangga terdekat ke-k (k=min_samples), lalu cari "elbow" pada grafik.
Kelebihan dan Kekurangan DBSCAN
Kelebihan:
- Tidak perlu menentukan K di awal.
- Dapat menemukan cluster berbentuk non-spherical.
- Robust terhadap outlier.
Kekurangan:
- Sensitif terhadap pemilihan eps dan min_samples.
- Kesulitan dengan cluster yang memiliki kepadatan berbeda.