Semua model machine learning belajar, tetapi tidak semua belajar dari bahan yang sama. Ada model yang belajar dari contoh berlabel, ada yang harus menemukan struktur sendiri tanpa label, dan ada yang belajar lewat coba-coba sambil menerima nilai balik dari lingkungannya. Perbedaan bahan belajar inilah yang membagi machine learning menjadi tiga paradigma besar: supervised learning, unsupervised learning, dan reinforcement learning. Pada chapter ini kita akan membedah ciri tiap paradigma, membandingkannya dalam satu tabel, lalu menjalankan satu program yang mengerjakan data yang sama dengan dua paradigma sekaligus.

Supervised Learning: Belajar dari Contoh Berlabel #

Supervised learning adalah paradigma yang paling matang dan paling sering dipakai di industri. Bahan belajarnya adalah pasangan fitur dan label: setiap contoh data disertai jawaban benar yang disiapkan manusia atau sistem lain. Tugas model adalah menemukan pemetaan dari fitur ke label, sehingga ketika contoh baru tanpa label datang, model dapat memperkirakan jawabannya. Contoh bahan belajar yang sudah kita lihat di chapter pertama: transaksi berlabel aman atau perlu tinjauan.

Paradigma ini terbagi dua keluarga besar sesuai jenis labelnya. Regresi memprediksi nilai kontinu — harga rumah, permintaan produk bulan depan, durasi perjalanan. Klasifikasi memprediksi kategori — email spam atau bukan, lesi pada citra medis tergolong benign atau malignant, pelanggan churn atau bertahan. Algoritme contoh untuk keduanya: regresi linier dan gradient boosting untuk regresi; regresi logistik, k-nearest neighbors (KNN), decision tree, dan SVM untuk klasifikasi.

Unsupervised Learning: Menemukan Struktur Tanpa Label #

Unsupervised learning bekerja pada data tanpa label sama sekali. Tidak ada jawaban benar yang bisa ditiru, sehingga tujuannya bergeser dari memprediksi menjadi menemukan struktur tersembunyi. Dua tugas utamanya: clustering (pengelompokan) yang membagi data menjadi kelompok-kelompok yang mirip, dan dimensionality reduction (reduksi dimensi) yang memampatkan banyak fitur menjadi sedikit dimensi tanpa kehilangan terlalu banyak informasi.

Segmentasi pelanggan adalah contoh klasik clustering: pasar tidak memberi label “segmen A” atau “segmen B”, tetapi pola belanja pelanggan membentuk gugus yang bisa ditemukan algoritme seperti KMeans dan DBSCAN. Reduksi dimensi dengan PCA dipakai untuk memvisualisasikan data berdimensi tinggi dalam dua dimensi, atau menyiapkan fitur ringkas sebelum tahap pelatihan. Karena tidak ada label pembanding, menilai hasil unsupervised learning memang lebih sulit — kita akan bahas caranya pada section Unsupervised Learning.

Reinforcement Learning: Belajar dari Imbalan #

Reinforcement learning berbeda pola dari kedua paradigma sebelumnya: tidak ada dataset statis, melainkan interaksi berkelanjutan antara agen dan lingkungan. Agen mengamati keadaan (state) lingkungan, memilih aksi (action), lalu lingkungan membalas dengan nilai balik (reward) dan keadaan baru. Tujuan agen adalah menemukan kebijakan (policy) — strategi memilih aksi — yang memaksimalkan total reward jangka panjang.

Pola belajar ini cocok untuk masalah keputusan berurutan: program bermain catur dan Go, kendali robot, penyusunan rute kendaraan, hingga optimasi penempatan iklan. Perlu dicatat bahwa scikit-learn tidak menyediakan implementasi reinforcement learning; paradigma ini kita bahas secara konseptual di Course ini dan identifikasi masalahnya saja, karena fondasi matematisnya (teori keputusan Markov) berada di luar cakupan materi.

Satu Data, Dua Paradigma #

Cara paling cepat merasakan beda paradigma adalah menjalankan keduanya pada data yang sama. Kita siapkan data delapan pelanggan toko dengan dua fitur: pengeluaran bulanan dan jumlah kunjungan. Paradigma supervised diberi fitur plus label pembeli ritel atau pembeli grosir, lalu diminta memprediksi dua pelanggan baru. Paradigma unsupervised hanya menerima fitur — label sengaja disembunyikan — lalu diminta menemukan kelompoknya sendiri lewat KMeans.

python
# Dua paradigma pada data pelanggan yang sama:
# supervised learning memakai label, unsupervised learning tidak.

import numpy as np
from sklearn.cluster import KMeans
from sklearn.neighbors import KNeighborsClassifier

# Data delapan pelanggan toko fiktif.
# Fitur: [pengeluaran bulanan (juta rupiah), jumlah kunjungan per bulan]
X = np.array([
    [0.8, 4], [1.0, 5], [0.7, 3], [0.9, 6],
    [5.2, 20], [6.0, 22], [5.5, 18], [6.3, 25],
])

# Label hanya dipakai paradigma supervised: 0 = pembeli ritel, 1 = pembeli grosir.
y = np.array([0, 0, 0, 0, 1, 1, 1, 1])

# Dua pelanggan baru yang ingin diperkirakan statusnya.
pelanggan_baru = np.array([[1.1, 7], [5.8, 21]])

# --- Supervised learning: model belajar dari fitur DAN label ---
model_supervised = KNeighborsClassifier(n_neighbors=3)
model_supervised.fit(X, y)
prediksi = model_supervised.predict(pelanggan_baru)

print("Supervised learning (KNN, memakai label):")
for fitur, label in zip(pelanggan_baru, prediksi):
    jenis = "pembeli grosir" if label == 1 else "pembeli ritel"
    print(f"  pengeluaran {fitur[0]:.1f} juta, {fitur[1]:.0f} kunjungan -> {jenis}")

# --- Unsupervised learning: model hanya melihat fitur, label disembunyikan ---
model_unsupervised = KMeans(n_clusters=2, n_init=10, random_state=42)
klaster = model_unsupervised.fit_predict(X)

print("\nUnsupervised learning (KMeans, tanpa label):")
for k in sorted(np.unique(klaster)):
    anggota = X[klaster == k]
    print(f"  Klaster {k}: {len(anggota)} pelanggan, "
          f"pengeluaran rata-rata {anggota[:, 0].mean():.2f} juta, "
          f"kunjungan rata-rata {anggota[:, 1].mean():.1f}")

# Sejauh mana kelompok buatan KMeans cocok dengan label yang tak pernah dilihat?
cocok_langsung = int((klaster == y).sum())
cocok_tertukar = int((klaster != y).sum())
print(f"\nKecocokan terbaik klaster vs label asli: "
      f"{max(cocok_langsung, cocok_tertukar)}/{len(y)} pelanggan")

Output yang Dihasilkan:

text
Supervised learning (KNN, memakai label):
  pengeluaran 1.1 juta, 7 kunjungan -> pembeli ritel
  pengeluaran 5.8 juta, 21 kunjungan -> pembeli grosir

Unsupervised learning (KMeans, tanpa label):
  Klaster 0: 4 pelanggan, pengeluaran rata-rata 0.85 juta, kunjungan rata-rata 4.5
  Klaster 1: 4 pelanggan, pengeluaran rata-rata 5.75 juta, kunjungan rata-rata 21.2

Kecocokan terbaik klaster vs label asli: 8/8 pelanggan

Mari kita bedah bagian-bagian pentingnya:

  1. Baris 10–16 (X dan y): X menyimpan fitur delapan pelanggan; y menyimpan labelnya. Variabel y hanya dipakai blok supervised — blok unsupervised tidak pernah membaca nilai y saat melatih model.
  2. Baris 22–24 (KNeighborsClassifier ... fit ... predict): model supervised mempelajari hubungan fitur-label, lalu mengklasifikasikan dua pelanggan baru. Pelanggan dengan pengeluaran 1,1 juta dan 7 kunjungan menyerupai kelompok ritel; pelanggan dengan pengeluaran 5,8 juta dan 21 kunjungan menyerupai kelompok grosir.
  3. Baris 32–33 (KMeans(n_clusters=2, ...).fit_predict(X)): model unsupervised menerima X saja. Parameter n_init=10 menjalankan prosedur sepuluh kali dari titik awal berbeda dan random_state=42 mengunci pilihan acaknya sehingga hasil selalu sama setiap eksekusi.
  4. Baris 36–40 (for k in ...): untuk tiap klaster, program menghitung jumlah anggota dan rata-rata fiturnya. Ternyata KMeans memisahkan pelanggan menjadi kelompok belanja kecil (pengeluaran rata-rata 0,85 juta) dan kelompok belanja besar (5,75 juta) tanpa pernah melihat label.
  5. Baris 43–46 (cocok_langsung ... cocok_tertukar): pengukuran penutup. Karena penomoran klaster bersifat sewenang-wenang — klaster 0 bisa saja berarti kelompok grosir — program mengambil kecocokan terbaik dari dua kemungkinan penomoran. Hasil 8/8 menunjukkan partisi buatan KMeans persis sama dengan partisi label asli.

Kesimpulan dari demonstrasi ini penting untuk dipegang: label yang disiapkan manusia dan struktur yang ditemukan mesin saling melengkapi. Ketika label mahal dibuat, unsupervised learning memberi gambaran awal; ketika label tersedia, supervised learning memberi prediksi yang langsung terukur.

Semi-Supervised dan Self-Supervised #

Dua varian tengah sering muncul di praktik modern. Semi-supervised learning memadukan sedikit data berlabel dengan banyak data tanpa label: model mempelajari struktur dari data besar, lalu informasi tersebut membantu generalisasi pada bagian berlabel. Pendekatan ini lazim ketika pelabelan menuntut keahlian langka, misalnya penandaan citra medis oleh radiolog.

Self-supervised learning berjalan lebih jauh lagi: label dibuat otomatis dari data itu sendiri. Contohnya menyembunyikan sebagian kata lalu meminta model menebaknya, atau meminta model memperkirakan kata berikutnya dalam kalimat. Tidak ada tenaga pelabel manusia, tetapi tugas latihannya tetap berbentuk supervised. Inilah mekanisme di balik pelatihan awal model bahasa besar yang kita singgung pada chapter sejarah — seluruh korpus teks menjadi bahan ujian.

Perbandingan Tiga Paradigma #

ParadigmaBahan belajarTargetContoh masalahAlgoritme contoh
SupervisedFitur + labelPrediksi label atau nilaiPrediksi harga properti, penyaring spamRegresi linier, KNN, random forest
UnsupervisedFitur sajaStruktur tersembunyiSegmentasi pelanggan, visualisasi fiturKMeans, DBSCAN, PCA
ReinforcementInteraksi agen–lingkunganKebijakan aksiKendali robot, optimasi ruteQ-learning, policy gradient

Pemahaman paradigma menjadi jauh lebih bermakna ketika dipasangkan dengan masalah nyata. Domain mana yang memakai paradigma mana, data seperti apa yang masuk, dan keluaran seperti apa yang diharapkan — semua itu akan kita petakan pada chapter Aplikasi Machine Learning di Dunia Nyata.

Referensi Resmi #