🧲 K-Means Clustering

Algoritma clustering paling populer: bagi data menjadi k kelompok tanpa label.

🎬 Animasi: K-Means: Iterasi Centroid

Tiap iterasi: titik memilih centroid terdekat (assign), lalu centroid pindah ke pusat kelompok (update). Ulangi sampai stabil.

πŸ“Œ 1. Konsep: Mengelompok Tanpa Jawaban

Clustering = menemukan kelompok alami dalam data tanpa label. Aplikasi: segmentasi pelanggan, grup dokumen, deteksi anomali, kompresi gambar.

Algoritma K-Means: 1. PILIH k centroid acak (biasanya titik data acak) 2. ASSIGN : setiap titik β†’ centroid terdekat 3. UPDATE : centroid baru = rata-rata titik anggota 4. Ulangi 2–3 sampai centroid berhenti bergerak Yang di-minimize: INERTIA = Ξ£ jarakΒ² tiap titik ke centroidnya (total "kekacauan" di dalam cluster) Karakter: β€’ Cepat (O(nΒ·kΒ·iter)) β€” bisa untuk jutaan titik β€’ k HARUS DITENTUKAN MANUAL (elbow method / silhouette) β€’ Sensitif inisialisasi β†’ K-Means++ (pilih centroid awal cerdas) β€’ Hanya menemukan cluster "bulat/konveks" (bukan bulan/cincin)

πŸ“Œ 2. Contoh: K-Means Langkah demi Langkah

Output:

ID cluster (0/1/2) bersifat arbitrary β€” bisa tertukar dengan label asli, tapi bentuk kelompoknya yang penting.

πŸ“Œ 3. Contoh: Elbow Method β€” Memilih k

Inertia turun seiring k bertambah, tapi setelah k "sebenarnya" penurunannya melambat β€” membentuk "siku" (elbow).

Output:
⚠️ Elbow method subjektif β€” kadang siku-nya tidak jelas. Di praktik: coba beberapa k, lalu nilai dengan silhouette score atau (jika ada label) Adjusted Rand Index.

🧠 Latihan

  1. Jalankan k-means dengan k=2 dan k=5 pada data yang sama. Apa yang terjadi pada bentuk cluster?
  2. Buat data make_moons() lalu k-means k=2. Kenapa hasilnya buruk? (Petunjuk: bentuk cluster k-means.)
  3. Implementasi sederhana silhouette score: untuk tiap titik, s = (b - a) / max(a, b) dengan a = jarak rata-rata ke cluster sendiri, b = jarak rata-rata ke cluster terdekat lain.
  4. Ubah inisialisasi centroid dari acak menjadi 3 titik yang saling berjauhan (K-Means++ sederhana). Apakah konvergensinya lebih stabil?