🌲 Hierarchical Clustering & DBSCAN

Dua alternatif k-means: penggabungan bertingkat (dendrogram) dan clustering berbasis densitas (deteksi outlier).

šŸŽ¬ Animasi: DBSCAN: Klaster Padat + Deteksi Noise

Titik = inti jika punya ≄ minPts tetangga dalam radius ε. Klaster tumbuh dari daerah padat; titik terisolasi = noise (dicoret).

šŸ“Œ 1. Hierarchical (Agglomerative) Clustering

Ide: mulai tiap titik = cluster sendiri, lalu GABUNGKAN yang terdekat, berulang sampai tersisa k cluster. ā— ā— ā— ā—ā— ā— ā— → gabung 2 terdekat \ / \ / ā— ā— | | ā—ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā— → gabung antar-cluster | ā— LINKAGE = cara mengukur jarak antar-cluster: • Single : jarak titik TERDEKAT antar cluster (rawan "chain effect") • Complete : jarak titik TERJAUH (cluster cenderung kompak) • Average : jarak rata-rata semua pasangan (paling umum) Kelebihan: tidak perlu menentukan k di awal — dendrogram (pohon penggabungan) menunjukkan struktur pada SEMUA level; bisa dipotong di mana saja. Kekurangan: O(n³) — lambat untuk data besar; keputusan gabung tidak bisa dibatalkan.

šŸ“Œ 2. DBSCAN: Clustering Berbasis Densitas

DBSCAN (Density-Based Spatial Clustering of Applications with Noise) Parameter: eps (radius) dan min_samples (kerapatan minimum) • CORE POINT : ada ≄ min_samples titik dalam radius eps • BORDER POINT : bukan core, tapi berada dalam radius eps titik core • NOISE : sisanya → OUTLIER! Cluster = titik core + semua border yang "terjangkau" dari core. Kelebihan: • Jumlah cluster TIDAK perlu ditentukan (muncul sendiri) • Bisa menemukan cluster BENTUK APA PUN (bulan, cincin, spiral) • BONUS: secara alami menandai OUTLIER (k-means tidak bisa!) Kekurangan: sensitif terhadap eps; kinerja turun di densitas tidak seragam.

šŸ“Œ 3. Contoh: Agglomerative Clustering

Output:

Perhatikan gap di akhir history: penggabungan antar-cluster terjadi pada jarak jauh lebih besar daripada penggabungan dalam-cluster. Gap itulah yang menunjukkan "jumlah cluster alami".

šŸ“Œ 4. Contoh: DBSCAN + Deteksi Outlier

Output:
šŸ’” Memilih eps: plot jarak ke tetangga ke-k untuk semua titik (k-distance plot); eps berada di "lembah" sebelum kurva melonjak.

🧠 Latihan

  1. Ganti average linkage dengan complete linkage (max jarak pasangan). Apa bedanya hasil di data blobs?
  2. Di DBSCAN, apa yang terjadi jika eps terlalu kecil (0.1)? Terlalu besar (1.0)?
  3. Buat data make_circles() + noise, lalu bandingkan: k-means k=2 vs DBSCAN. Siapa yang menemukan 2 cincin dengan benar?
  4. Jelaskan kenapa hierarchical clustering tidak cocok untuk 1 juta titik, tapi DBSCAN bisa (kompleksitas & sifat algoritma).