Capaian Pembelajaran
Setelah minggu ini kamu bisa:
- Membedakan pembelajaran terarah (supervised) dan tak terarah (unsupervised).
- Menjalankan K-Means secara manual dan menghitung SSE.
- Menjelaskan K-Medoids/PAM dan kapan lebih baik dari K-Means.
- Melakukan agglomerative clustering dengan single, complete, dan average linkage; membaca dendrogram.
- Menentukan jumlah klaster dengan Elbow Method dan Silhouette Score.
- Menginterpretasi profil klaster untuk segmentasi pasar.
1. Apa itu Clustering?
Clustering = mengelompokkan objek sehingga objek dalam satu klaster mirip (jarak kecil, high intra-cluster similarity) dan objek antar klaster berbeda (low inter-cluster similarity) — tanpa label.
| Supervised (M6–M8) | Unsupervised (M10–M11) |
|---|---|
| Ada label target (churn ya/tidak) | Tidak ada label |
| Tujuan: memprediksi | Tujuan: menemukan struktur |
| Evaluasi: akurasi, F1 | Evaluasi: SSE, silhouette, interpretasi bisnis |
Kategori metode
| Kategori | Ide | Contoh | Minggu |
|---|---|---|---|
| Partisi | Bagi data menjadi k kelompok, optimasi fungsi objektif | K-Means, K-Medoids (PAM) | 10 |
| Hierarkis | Bangun pohon klaster (gabung/pecah bertahap) | Agglomerative, DIANA | 10 |
| Densitas | Klaster = daerah padat | DBSCAN, OPTICS | 11 |
| Grid / model | Ruang dibagi grid / model statistik | STING, Gaussian Mixture | — |
⚠️ Clustering berbasis jarak → normalisasi fitur dulu (z-score/min-max), sama seperti KNN.
2. K-Means
Algoritma (Lloyd)
1. Pilih k centroid awal (acak / k-means++).
2. ASSIGN : tiap titik masuk ke klaster dengan centroid terdekat (Euclidean).
3. UPDATE : centroid baru = rata-rata titik anggota klaster.
4. Ulangi 2–3 sampai penugasan tidak berubah (konvergen) / iterasi maksimum.
Fungsi objektif yang diminimalkan — SSE (Sum of Squared Errors, disebut juga inertia / WCSS):
SSE = Σ_{j=1..k} Σ_{x ∈ C_j} ‖x − μ_j‖²
Contoh manual
Data 7 titik: A(1,1), B(1.5,2), C(3,4), D(5,7), E(3.5,5), F(4.5,5), G(3.5,4.5). k = 2, centroid awal μ1 = A(1,1), μ2 = C(3,4).
Iterasi 1 — assign (jarak kuadrat):
| Titik | ke μ1 (1,1) | ke μ2 (3,4) | Klaster |
|---|---|---|---|
| A | 0 | 13 | 1 |
| B | 1.25 | 6.25 | 1 |
| C | 13 | 0 | 2 |
| D | 52 | 13 | 2 |
| E | 22.25 | 1.25 | 2 |
| F | 28.25 | 3.25 | 2 |
| G | 18.5 | 0.5 | 2 |
Update: μ1 = mean(A, B) = (1.25, 1.5); μ2 = mean(C, D, E, F, G) = (3.9, 5.1).
Iterasi 2 — assign dengan centroid baru: penugasan tidak berubah → konvergen.
SSE akhir = 0.3125 + 0.3125 + 2.02 + 4.82 + 0.17 + 0.37 + 0.52 = 8.525.
Sifat penting K-Means
| Kelebihan | Kekurangan |
|---|---|
Sederhana, cepat O(n·k·t) |
Harus menentukan k |
| Skalabel (ada versi Spark MLlib, M14) | Sensitif inisialisasi → bisa terjebak optimum lokal |
| Hasil mudah diinterpretasi (centroid) | Sensitif outlier (rata-rata tertarik nilai ekstrem) |
| Hanya cocok untuk klaster sferis & ukuran mirip | |
| Hanya untuk atribut numerik (rata-rata) |
Solusi umum: k-means++ (centroid awal saling berjauhan) dan menjalankan beberapa kali (n_init) lalu pilih SSE terkecil.
3. K-Medoids & PAM
Medoid = titik data nyata yang paling sentral dalam klaster (total jarak ke anggota lain minimum). Karena memakai titik nyata dan jarak (bukan rata-rata kuadrat), K-Medoids lebih tahan outlier dan bisa memakai sembarang ukuran jarak (Manhattan, Hamming untuk kategorikal).
Biaya (cost): Σ_j Σ_{x ∈ C_j} d(x, m_j)
PAM (Partitioning Around Medoids)
1. Pilih k medoid awal.
2. Assign setiap titik ke medoid terdekat.
3. Untuk setiap pasangan (medoid m, non-medoid o):
hitung perubahan biaya jika m ditukar dengan o (SWAP).
4. Lakukan swap yang paling menurunkan biaya; ulangi sampai tidak ada perbaikan.
PAM akurat tetapi mahal O(k(n−k)²) per iterasi. Varian lebih cepat: CLARA (PAM pada sampel), CLARANS, atau iterasi bergantian (alternate / Voronoi iteration) seperti K-Means: assign → di tiap klaster pilih titik dengan total jarak minimum sebagai medoid baru → ulangi. Versi bergantian inilah yang kita implementasikan di exercise.py.
Contoh: klaster berisi nilai 1D {2, 3, 4, 100}. Mean = 27.25 (tertarik outlier) sedangkan medoid = 3 (atau 4) — jauh lebih representatif.
4. Agglomerative Hierarchical Clustering
Pendekatan bottom-up:
1. Setiap titik = 1 klaster (n klaster).
2. Hitung jarak antar semua pasangan klaster.
3. Gabungkan 2 klaster terdekat.
4. Perbarui jarak; ulangi sampai tersisa 1 klaster (atau k klaster).
Hasilnya divisualisasikan sebagai dendrogram; memotong dendrogram pada ketinggian tertentu menghasilkan k klaster. (Kebalikannya, divisive/DIANA, bersifat top-down.)
Linkage — jarak antar klaster
| Linkage | Rumus d(A, B) |
Karakter |
|---|---|---|
| Single | min d(a, b) |
Bisa menemukan bentuk memanjang, tapi rawan chaining |
| Complete | max d(a, b) |
Klaster kompak, sensitif outlier |
| Average | rata-rata semua d(a, b) |
Kompromi |
| Ward | kenaikan SSE terkecil saat digabung | Mirip K-Means, klaster seimbang |
Contoh: A = {(1,1), (1.5,2)}, B = {(3,4), (3.5,4.5)}.
| Pasangan | Jarak |
|---|---|
| (1,1)–(3,4) | √13 = 3.606 |
| (1,1)–(3.5,4.5) | √18.5 = 4.301 |
| (1.5,2)–(3,4) | √6.25 = 2.500 |
| (1.5,2)–(3.5,4.5) | √10.25 = 3.202 |
Single = 2.500, Complete = 4.301, Average = (3.606 + 4.301 + 2.5 + 3.202)/4 = 3.402.
| Kelebihan | Kekurangan |
|---|---|
| Tidak perlu menentukan k di awal | Mahal: O(n²) memori, O(n²log n)–O(n³) waktu |
| Dendrogram informatif (struktur bertingkat) | Penggabungan tidak bisa dibatalkan (greedy) |
5. Menentukan Jumlah Klaster
5.1 Elbow Method
Plot SSE vs k. SSE selalu turun saat k naik (k = n → SSE = 0). Cari "siku" (elbow) — titik setelah penurunan SSE melandai.
5.2 Silhouette Score
Untuk tiap titik i:
a(i) = rata-rata jarak i ke anggota klaster sendiri (kekompakan)
b(i) = rata-rata jarak i ke anggota klaster TERDEKAT lainnya (keterpisahan)
s(i) = (b(i) − a(i)) / max(a(i), b(i)) ∈ [−1, 1]
| s(i) | Arti |
|---|---|
| ≈ 1 | Sangat cocok dengan klasternya |
| ≈ 0 | Di perbatasan dua klaster |
| < 0 | Kemungkinan salah klaster |
Silhouette Score = rata-rata s(i) seluruh titik. Pilih k dengan nilai tertinggi.
Contoh: a(i) = 2, b(i) = 5 → s = (5 − 2)/5 = 0.6.
5.3 Evaluasi lain
- Eksternal (jika label asli ada, hanya untuk latihan): Adjusted Rand Index (ARI), purity.
- Bisnis: apakah segmen bisa dijelaskan dan ditindaklanjuti?
6. Studi Kasus: Segmentasi Pelanggan RFM
RFM = Recency (hari sejak belanja terakhir), Frequency (jumlah transaksi), Monetary (nilai belanja).
Alur: hitung RFM → normalisasi (z-score; monetary sering di-log dulu) → K-Means dengan k dari elbow/silhouette → profil rata-rata tiap klaster → beri nama & strategi:
| Profil klaster | Nama segmen | Strategi |
|---|---|---|
| R kecil, F tinggi, M tinggi | Champions | Program VIP, early access |
| R kecil, F sedang, M sangat tinggi | Big spenders | Upsell produk premium |
| R sedang, F sedang, M sedang | Potential loyalists | Program poin |
| R besar, F rendah, M rendah | Hibernating / at risk | Kampanye win-back |
Ringkasan
- K-Means meminimalkan SSE dengan iterasi assign–update; sensitif inisialisasi, outlier, dan bentuk klaster.
- K-Medoids/PAM memakai titik nyata sebagai pusat → lebih robust.
- Agglomerative menggabungkan klaster terdekat; linkage menentukan definisi "terdekat"; hasil berupa dendrogram.
- Pilih k dengan Elbow (SSE) dan Silhouette; validasi dengan makna bisnis.
- Selalu normalisasi fitur sebelum clustering berbasis jarak.
Bacaan
- Han, Kamber & Pei — Bab 10 Cluster Analysis: Basic Concepts and Methods (10.2 partisi, 10.3 hierarkis, 10.6 evaluasi).
- Dokumentasi scikit-learn: Clustering (
KMeans,AgglomerativeClustering,silhouette_score).
Tugas Minggu Ini
- Kerjakan
lab.ipynbsampai selesai. - Kerjakan kuis (di web, atau baca
quiz.json). - Isi
exercise.py, lalu cek:python check.py 10