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 #

AspekSupervised learningUnsupervised learning
Data latihFitur + label (X dan y)Fitur saja (X saja)
Pertanyaan“Label apa untuk data baru?”“Struktur apa yang tersembunyi?”
KeluaranPrediksi kelas atau angkaKelompok, pola, anomali
PenilaianBisa dibandingkan dengan label yang benar (akurasi, MAE)Menuntut penilaian domain, tidak ada kunci jawaban
ContohDeteksi spam, prediksi churn, taksiran hargaSegmentasi 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:

AspekKlasifikasiRegresi
LabelKategori diskret (spam/bukan, churn/setia, pria/wanita)Angka kontinu (harga, jumlah gelas, suhu)
Pertanyaan kunci“Masuk kelompok mana?”“Angkanya berapa?”
Contoh kasusEmail ini spam? Member ini berhenti?Berapa harga rumah ini? Berapa penjualan besok?
Metrik awal yang umumAkurasi, confusion matrixMAE, RMSE
Contoh modelLogisticRegression, KNeighborsClassifierLinearRegression

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:

python
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:

text
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.69

Mari kita telaah baris-baris kode di atas:

  1. pelanggan menyimpan 12 titik koordinat — hanya dua kolom, karena KMeans membaca kedekatan lewat jarak antar angka. Kolom nama dipisahkan dan tidak ikut dihitung.
  2. titik = pelanggan[["x", "y"]].to_numpy() mengubah data frame menjadi array NumPy dua dimensi berbentuk (12, 2) — format yang diminta scikit-learn untuk fitur.
  3. KMeans(n_clusters=3, n_init=10, random_state=42): n_clusters adalah pilihan k kita; n_init=10 meminta algoritma mencoba 10 kali penempatan pusat awal dan menyimpan hasil terbaik; random_state=42 membekukan sisi acaknya supaya keluaran kita dapat direproduksi persis.
  4. fit_predict(titik) menjalankan pelatihan sekaligus mengembalikan nomor klaster tiap titik — padanan dari fit() lalu predict() 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 k kelompok lewat pusat kelompok yang digeser bertahap; jumlah k dipilih 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 .

Referensi #

  1. scikit-learn — FAQ