Chapter Jenis Pembelajaran Machine Learning telah memperkenalkan peta besar paradigma machine learning; sekarang kita membedah dua paradigma yang paling sering dipakai di industri sampai ke mekanisme dalamnya. Pertanyaannya bukan lagi “apa itu supervised learning”, melainkan: apa yang persisnya berbeda pada data yang masuk, pada sinyal yang dipakai algoritme untuk belajar, dan pada cara kita menilai hasilnya? Perbedaan tersebut akan kita lihat langsung dengan menjalankan dua algoritme — KNeighborsClassifier dan KMeans — di atas data yang sama persis, satu dengan label dan satu tanpa label.
Supervision Berarti Ada Kunci Jawaban #
Kata supervised sering diterjemahkan “terbimbing”, tetapi analog yang lebih tepat adalah ujian berpemandu: pembelajar mengerjakan soal, lalu guru langsung memberi tahu jawaban yang benar. Dalam terminologi data, peran guru itu dipegang oleh label y. Selama training, setiap kali model menghasilkan prediksi untuk satu sampel, label sampel tersebut menjadi pembanding — selisih keduanya dihitung oleh fungsi loss, dan parameter model digeser untuk memperkecil selisih itu. Inilah yang disebut sinyal supervisi: umpan balik langsung yang menyatakan “prediksimu salah sejauh ini, koreksilah”.
Konsekuensinya menentukan seluruh bentuk pekerjaan supervised. Karena ada jawaban benar untuk setiap sampel latih, kita bisa mengukur ketepatan model secara objektif — akurasi, presisi, MSE — dan bisa membandingkan dua model secara adil pada data uji yang sama. Model klasifikasi dan regresi yang kita bangun sepanjang Course ini hampir semuanya bekerja pada paradigma ini.
Supervised sendiri terbagi dua cabang tergantung tipe labelnya, dan pembagian ini menentukan algoritme, loss, serta metrik evaluasi yang relevan.
| Aspek | Regresi | Klasifikasi |
|---|---|---|
| Tipe label | Angka kontinu | Kategori diskret |
| Contoh target | Harga rumah (Rp850.000.000) | Spesies bunga (setosa/versicolor/virginica) |
| Contoh masalah | Perkiraan permintaan, prediksi suhu | Deteksi spam, diagnosis medis, credit scoring |
| Loss yang lazim | MSE, MAE | cross-entropy, hinge loss |
| Metrik evaluasi | MSE, RMSE, MAE, R² | Akurasi, presisi, recall, F1 |
| Contoh algoritme | LinearRegression, KNN regresi | LogisticRegression, KNN klasifikasi, decision tree |
Pembeda praktisnya sederhana: tanyakan apakah nilai target yang wajar di antara dua nilai yang sudah ada. Antara rumah Rp850 juta dan Rp860 juta ada harga-harga yang sah, sehingga itu regresi; antara kelas setosa dan versicolor tidak ada “setengah spesies”, sehingga itu klasifikasi.
Unsupervised: Mencari Struktur Tanpa Kunci Jawaban #
Sekarang buang kolom label. Yang tersisa hanyalah X — sekumpulan sampel dengan fitur-fiturnya, tanpa jawaban benar satu pun. Tidak ada guru, tidak ada sinyal kesalahan; algoritme hanya bisa bekerja dengan struktur internal data itu sendiri. Paradigma unsupervised mencari pola yang muncul dari geometri data: titik-titik yang saling berdekatan, arah variasi terbesar, atau wilayah yang padat.
Tiga keluarga masalah utamanya:
- Clustering — mengelompokkan sampel yang mirip: segmentasi pelanggan, pengelompokan dokumen (
KMeans, DBSCAN, hierarchical clustering). - Estimasi densitas — memodelkan seberapa padat probability di tiap wilayah ruang fitur, dipakai untuk deteksi anomali (Gaussian Mixture, KDE).
- Reduksi dimensi — meringkas banyak fitur menjadi sedikit komponen yang menyimpan sebagian besar informasi (PCA, t-SNE).
Konsekuensi paling penting untuk pekerjaan sehari-hari: tidak ada jawaban benar untuk dicocokkan. Hasil clustering tidak bisa dihitung akurasinya, karena akurasi menuntut label. Evaluasi unsupervised memakai ukuran internal (misalnya silhouette yang menilai seberapa rapat klaster dan seberapa terpisah antar klaster) ditambah penilaian domain oleh manusia — apakah segmentasi pelanggan ini masuk akal bagi tim pemasaran, misalnya.
Data yang Sama, Dua Jalur yang Berbeda #
Mari kita buktikan bedanya secara eksperimental. File berikut membuat 30 titik dalam dua gugus terpisah, lalu menjalankan KNeighborsClassifier yang membaca label dan KMeans yang sama sekali tidak membacanya. Karena dataset sintetis menyimpan y secara diam-diam, kita bisa menyelinap memeriksa apakah klaster yang ditemukan KMeans sejajar dengan kelas sebenarnya — pemeriksaan yang di data nyata tanpa label mustahil dilakukan.
# Data yang sama dipakai dua paradigma berbeda:
# KNeighborsClassifier belajar DENGAN label (supervised),
# KMeans mengelompokkan TANPA label (unsupervised).
import numpy as np
from sklearn.cluster import KMeans
from sklearn.datasets import make_blobs
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
# 30 titik dalam 2 gugus terpisah; random_state=42 -> data selalu sama.
X, y = make_blobs(
n_samples=30,
centers=[(-4.0, -4.0), (4.0, 4.0)],
cluster_std=1.5,
random_state=42,
)
# --- Paradigma 1: supervised, label dipakai sebagai sinyal guru ---
X_latih, X_uji, y_latih, y_uji = train_test_split(
X, y, test_size=8, random_state=42, stratify=y
)
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(X_latih, y_latih) # label ikut dibaca di sini
akurasi = knn.score(X_uji, y_uji) # label uji jadi pembanding jawaban
# --- Paradigma 2: unsupervised, label TIDAK pernah dibaca ---
kmeans = KMeans(n_clusters=2, n_init=10, random_state=42)
klaster = kmeans.fit_predict(X) # hanya X, tanpa y
# Nama klaster 0/1 dari KMeans tidak bermakna; bandingkan dua kemungkinan
# penamaan dan ambil yang lebih cocok dengan kelas sebenarnya.
cocok_langsung = int(np.sum(klaster == y))
cocok_terbalik = int(np.sum(klaster == 1 - y))
kecocokan = max(cocok_langsung, cocok_terbalik)
print("=== SUPERVISED: KNeighborsClassifier ===")
print(f"belajar dari {X_latih.shape[0]} sampel berlabel, diuji pada {X_uji.shape[0]} sampel")
print(f"akurasi terhadap label uji: {akurasi:.3f}")
print()
print("=== UNSUPERVISED: KMeans ===")
print(f"mengelompokkan {X.shape[0]} sampel tanpa membaca label sama sekali")
print(f"kecocokan klaster dengan kelas sebenarnya: {kecocokan}/{len(y)}")
print("(pembanding ini hanya ada karena dataset sintetis menyimpan y;")
print(" pada data nyata yang tak berlabel, tidak ada jawaban untuk dicocokkan)")
print()
print("Perbandingan ringkas:")
print(f" sinyal belajar : label kelas vs struktur geometris data")
print(f" hasil : prediksi + akurasi {akurasi:.3f} vs penomoran klaster tanpa nama")Output yang Dihasilkan:
=== SUPERVISED: KNeighborsClassifier ===
belajar dari 22 sampel berlabel, diuji pada 8 sampel
akurasi terhadap label uji: 1.000
=== UNSUPERVISED: KMeans ===
mengelompokkan 30 sampel tanpa membaca label sama sekali
kecocokan klaster dengan kelas sebenarnya: 30/30
(pembanding ini hanya ada karena dataset sintetis menyimpan y;
pada data nyata yang tak berlabel, tidak ada jawaban untuk dicocokkan)
Perbandingan ringkas:
sinyal belajar : label kelas vs struktur geometris data
hasil : prediksi + akurasi 1.000 vs penomoran klaster tanpa namaBedah kode baris demi baris:
- Baris 11–17 (
make_blobs(...)): membuat 30 titik di sekitar dua pusat(-4, -4)dan(4, 4)dengan sebarancluster_std=1.5. Denganrandom_state=42, data ini identik di setiap eksekusi. Nilaiy(gugus asal tiap titik) tetap dibuat, tetapi hanya KNN yang akan membacanya. - Baris 20–22 (
train_test_split): supervised mampu memisahkan data uji berlabel karena label tersedia — 22 sampel untuk belajar, 8 sampel untuk menguji. - Baris 23–25 (
knn.fitdanknn.score): dua momen kunci paradigma supervised. Saatfit(X_latih, y_latih), label ikut dibaca sebagai sinyal guru; saatscore(X_uji, y_uji), label uji menjadi kunci jawaban untuk menghitung akurasi. - Baris 28–29 (
kmeans.fit_predict(X)): perhatikan argumennya — hanyaX, tanpaysama sekali. KMeans membaca letak titik-titiknya, menghitung pusat gugus, lalu menomori keanggotaan tiap titik. - Baris 31–35 (
cocok_langsung/cocok_terbalik): nomor klaster 0/1 hasil KMeans tidak bermakna — KMeans bisa saja menamai gugus kiri sebagai klaster 1. Karena itu dua kemungkinan penamaan dihitung dan yang lebih tinggi diambil. Langkah ini hanya mungkin karena kita diam-diam masih menyimpany. - Baris 37–49: mencetak ringkasan kedua paradigma untuk dibandingkan berdampingan.
Hasilnya instruktif. KNN mencapai akurasi 1.000 pada 8 sampel uji — ia tahu nama kelas karena label mengajarinya. KMeans menemukan dua kelompok yang 30/30 sejajar dengan kelas sebenarnya — tetapi perlu diingat, angka kecocokan itu bisa dihitung semata karena dataset sintetis kita menyimpan y; pada data pelanggan nyata yang tidak berlabel, pemeriksaan seperti ini tidak ada, dan penamaan klaster harus ditafsirkan manusia.
Penentu Utama Pilihan: Ketersediaan Label #
Paradigma bukan pilihan selera, melainkan konsekuensi dari data yang ada. Label itu mahal: memeriksa ribuan transaksi untuk menandai mana yang mencurigakan memakan waktu analis; mendiagnosis citra medis meminta dokter spesialis. Semakin mahal labelnya, semakin jauh kita terdorong ke wilayah unsupervised.
| Kondisi data | Paradigma yang tersedia | Sikap yang lazim |
|---|---|---|
| Label lengkap dan terpercaya | Supervised penuh | Latih model prediksi, evaluasi dengan akurasi/metrik lainnya |
| Label hanya untuk sebagian data | Semi-supervised | Latih pada yang berlabel, manfaatkan sisanya untuk struktur |
| Tidak ada label sama sekali | Unsupervised | Clustering/reduksi dimensi, evaluasi internal + penilaian domain |
| Label tersedia untuk contoh yang bisa dipilih | Active learning | Model menandai sampel paling bernilai untuk dilabeli manusia |
Struktur penyelidikannya sudah jelas, istilahnya sudah lengkap, dan mekanisme belajarnya sudah dipahami. Saatnya merangkai semuanya menjadi model machine learning pertama yang utuh — dari memuat data sampai mengukur akurasi — dalam Chapter Model Pertama dengan scikit-learn.
Referensi Resmi #
- Supervised learning — scikit-learn User Guide — bab resmi seluruh estimator supervised di scikit-learn.
- Unsupervised learning — scikit-learn User Guide — bab resmi clustering, reduksi dimensi, dan estimasi densitas.
- Clustering — scikit-learn User Guide — penjelasan mendalam KMeans beserta asumsi dan keterbatasannya.
- sklearn.cluster.KMeans — API Reference
— dokumentasi estimator
KMeansyang dipakai pada contoh kode.