Supervised dan unsupervised learning adalah dua paradigma yang akan menemani hampir seluruh karier data scientist — dan keduanya paling sering tertukar saat baru bertemu. Perbedaannya sesungguhnya ramping: satu memakai label, satu tidak; tetapi konsekuensinya luas, dari pertanyaan yang bisa dijawab sampai cara menilai hasil. Pada chapter ini kita adu keduanya berdampingan, bedah dua wajah supervised (klasifikasi dan regresi), lalu jalankan clustering KMeans pada titik dua dimensi supaya unsupervised tidak berhenti di tataran teori.
Perbedaan Inti: Ada atau Tidaknya Label #
| Aspek | Supervised learning | Unsupervised learning |
|---|---|---|
| Data latih | Fitur + label (X dan y) | Fitur saja (X saja) |
| Pertanyaan | “Label apa untuk data baru?” | “Struktur apa yang tersembunyi?” |
| Keluaran | Prediksi kelas atau angka | Kelompok, pola, anomali |
| Penilaian | Bisa dibandingkan dengan label yang benar (akurasi, MAE) | Menuntut penilaian domain, tidak ada kunci jawaban |
| Contoh | Deteksi spam, prediksi churn, taksiran harga | Segmentasi pelanggan, deteksi anomali transaksi |
Satu baris label mengubah segalanya. Dengan label, model punya kunci jawaban untuk mengecek dirinya sendiri dan kita punya angka objektif untuk menilainya. Tanpa label, model tetap bisa bekerja, tetapi hasil akhirnya harus ditafsirkan manusia: kelompok yang ditemukan bermakna atau hanya kebetulan statistik, keputusan ada di tangan kita.
Klasifikasi dan Regresi: Dua Wajah Supervised #
Supervised learning terbelah dua menurut jenis labelnya:
| Aspek | Klasifikasi | Regresi |
|---|---|---|
| Label | Kategori diskret (spam/bukan, churn/setia, pria/wanita) | Angka kontinu (harga, jumlah gelas, suhu) |
| Pertanyaan kunci | “Masuk kelompok mana?” | “Angkanya berapa?” |
| Contoh kasus | Email ini spam? Member ini berhenti? | Berapa harga rumah ini? Berapa penjualan besok? |
| Metrik awal yang umum | Akurasi, confusion matrix | MAE, RMSE |
| Contoh model | LogisticRegression, KNeighborsClassifier | LinearRegression |
Keduanya memakai alur yang persis sama — siapkan X dan y, latih dengan fit, prediksi dengan predict — sehingga berpindah dari klasifikasi ke regresi biasanya hanya berganti model dan metrik. Yang tidak berubah adalah disiplin memisahkan data latih dan data uji, tema chapter Pemisahan Dataset
.
Clustering: Membagi Tanpa Diberi Nama #
Clustering adalah contoh unsupervised yang paling mudah divisualisasikan. Algoritmanya menerima sekumpulan titik dan membaginya menjadi kelompok berdasarkan kedekatan — tanpa pernah diberi tahu nama kelompok apa pun. Algoritma yang kita pakai di sini, KMeans, bekerja dalam tiga langkah sederhana: (1) tetapkan sementara posisi k buah pusat kelompok (centroid), (2) masukkan setiap titik ke pusat terdekat, (3) geser setiap pusat ke rata-rata anggotanya, lalu ulangi langkah kedua sampai pembagian berhenti berubah.
Konsekuensi praktisnya ada dua. Pertama, jumlah kelompok k harus kita pilih sendiri — data tak berlabel tidak memberi tahu berapa kelompok yang “benar”. Kedua, penilaian hasil kembali ke manusia: KMeans selalu mengembalikan k kelompok apa pun nilainya, bermakna atau tidak.
Demo Mini: KMeans pada Titik Dua Dimensi #
Toko Kopi Kita ingin membuka tiga titik jemput pesanan (pickup point) dan memakai data koordinat rumah 12 pelanggan setianya. Kita tidak punya label wilayah siapa pun — hanya titik x (km ke arah timur) dan y (km ke arah utara). KMeans kita minta menemukan tiga kelompok alami:
import numpy as np
import pandas as pd
from sklearn.cluster import KMeans
pelanggan = pd.DataFrame({
"pelanggan": ["Budi", "Siti", "Dewi", "Rani", "Agus", "Maya",
"Joko", "Lina", "Tono", "Sari", "Yoga", "Ayu"],
"x": [1.2, 1.5, 1.1, 1.8, 8.2, 8.8, 8.5, 9.0, 5.0, 5.4, 4.8, 5.2],
"y": [2.0, 1.6, 2.4, 1.9, 8.1, 8.6, 7.9, 8.4, 4.9, 5.3, 4.7, 5.1],
})
titik = pelanggan[["x", "y"]].to_numpy()
model = KMeans(n_clusters=3, n_init=10, random_state=42)
pelanggan["klaster"] = model.fit_predict(titik)
print(pelanggan.sort_values(["klaster", "pelanggan"]).to_string(index=False))
print()
print("Pusat klaster (kandidat titik jemput):")
for i, (x, y) in enumerate(model.cluster_centers_):
print("Klaster %d: x = %.2f km, y = %.2f km" % (i, x, y))
print("Inersia (total jarak kuadrat ke pusat): %.2f" % model.inertia_)Output yang Dihasilkan:
pelanggan x y klaster
Agus 8.2 8.1 0
Joko 8.5 7.9 0
Lina 9.0 8.4 0
Maya 8.8 8.6 0
Budi 1.2 2.0 1
Dewi 1.1 2.4 1
Rani 1.8 1.9 1
Siti 1.5 1.6 1
Ayu 5.2 5.1 2
Sari 5.4 5.3 2
Tono 5.0 4.9 2
Yoga 4.8 4.7 2
Pusat klaster (kandidat titik jemput):
Klaster 0: x = 8.62 km, y = 8.25 km
Klaster 1: x = 1.40 km, y = 1.97 km
Klaster 2: x = 5.10 km, y = 5.00 km
Inersia (total jarak kuadrat ke pusat): 1.69Mari kita telaah baris-baris kode di atas:
pelangganmenyimpan 12 titik koordinat — hanya dua kolom, karena KMeans membaca kedekatan lewat jarak antar angka. Kolom nama dipisahkan dan tidak ikut dihitung.titik = pelanggan[["x", "y"]].to_numpy()mengubah data frame menjadi array NumPy dua dimensi berbentuk(12, 2)— format yang diminta scikit-learn untuk fitur.KMeans(n_clusters=3, n_init=10, random_state=42):n_clustersadalah pilihankkita;n_init=10meminta algoritma mencoba 10 kali penempatan pusat awal dan menyimpan hasil terbaik;random_state=42membekukan sisi acaknya supaya keluaran kita dapat direproduksi persis.fit_predict(titik)menjalankan pelatihan sekaligus mengembalikan nomor klaster tiap titik — padanan darifit()lalupredict()pada model supervised.
Keluarannya rapi: dua belas pelanggan terbagi menjadi tiga kelompok beranggota empat, dengan pusat di sekitar (1.40, 1.97), (5.10, 5.00), dan (8.62, 8.25) — itulah kandidat lokasi titik jemput. inersia mengukur total jarak kuadrat seluruh titik ke pusatnya (makin kecil makin rapat); nilainya berguna untuk membandingkan beberapa pilihan k, meski keputusan akhir tetap kembali pada konteks bisnis. Perhatikan pula: tidak ada satu baris pun yang menghitung akurasi — memang tidak bisa, karena tidak ada label untuk dijadikan pembanding.
Memilih Paradigma untuk Masalah Kita #
Pilihan paradigma mengikuti bentuk masalah dan bahan yang tersedia. Bila yang dibutuhkan adalah prediksi untuk data baru (email masuk, member baru, rumah baru) dan label historis ada, supervised adalah jalurnya. Bila yang dibutuhkan pemahaman struktur — siapa saja segmen pelanggan kita, transaksi mana yang menyimpang — unsupervised layak dicoba, apalagi sebagai penjelajahan awal sebelum ada anggaran pelabelan. Keduanya juga sering berurutan: hasil clustering ditinjau dan diberi nama, lalu menjadi label untuk melatih model supervised.
Rangkuman #
- Supervised dan unsupervised dibedakan oleh satu hal struktural — label — yang mengubah pertanyaan, keluaran, dan cara penilaian.
- Supervised terbelah menjadi klasifikasi (label kategori) dan regresi (label angka); keduanya memakai alur fit-predict yang sama.
- KMeans membagi titik ke dalam
kkelompok lewat pusat kelompok yang digeser bertahap; jumlahkdipilih kita, hasil dinilai manusia, dan skala fitur berpengaruh besar. - Pada demo 12 titik, KMeans menemukan tiga kelompok alami beserta pusatnya tanpa pernah menerima satu label pun.
- Paradigma dipilih menurut kebutuhan: prediksi untuk data baru menuntut supervised; memahami struktur menempuh unsupervised.
Bagi supervised learning, keberadaan label adalah syarat mutlak — dan kualitas label menentukan langit-langit kualitas model. Dari mana label berasal, bagaimana bentuknya, dan apa yang terjadi bila labelnya keliru menjadi pokok bahasan chapter Dataset dan Label .