Selama ini kita menulis program sebagai daftar aturan eksplisit: jika harga total melebihi Rp100.000, berikan diskon 10 persen. Pendekatan tersebut bekerja selama aturannya bisa kita tulis. Masalah muncul ketika aturannya sendiri tidak kita ketahui, misalnya aturan yang membedakan email spam dari email biasa. Machine learning membalik pola tersebut: alih-alih kita menulis aturan, kita memberikan contoh-contoh berlabel kepada algoritma dan membiarkan algoritma menemukan polanya. Pada chapter ini kita memetakan konsep dasar machine learning sebelum menulis kode yang serius di chapter-chapter berikutnya.
Aturan Eksplisit vs Belajar dari Data #
Cara paling jujur memahami machine learning adalah membandingkan dua pendekatan pada masalah yang sama. Dataset bawaan scikit-learn load_iris() berisi 150 bunga iris dengan empat pengukuran (panjang dan lebar kelopak serta daun kelopak) dan tiga spesies sebagai label. Kita akan memakai satu fitur sederhana, yaitu panjang kelopak, untuk aturan manual buatan tangan, lalu melatih model k-Nearest Neighbors (k-NN) sebagai pembanding:
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
iris = load_iris()
X, y = iris.data, iris.target
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.3, random_state=42, stratify=y
)
# Pendekatan 1: aturan manual yang ditulis manusia
def aturan_manual(fitur):
panjang_kelopak = fitur[2]
if panjang_kelopak < 2.5:
return 0
if panjang_kelopak < 4.8:
return 1
return 2
benar = sum(aturan_manual(x) == label for x, label in zip(X_test, y_test))
print(f"Akurasi aturan manual: {benar / len(y_test):.2%}")
# Pendekatan 2: model yang belajar dari data
model = KNeighborsClassifier(n_neighbors=5)
model.fit(X_train, y_train)
print(f"Akurasi k-NN : {model.score(X_test, y_test):.2%}")Output yang Dihasilkan:
Akurasi aturan manual: 95.56%
Akurasi k-NN : 97.78%Mari kita telaah bagian-bagian penting kode di atas:
- Baris 8-10 (
train_test_split(...)): fungsitrain_test_split()memisahkan 105 baris data untuk latih dan 45 baris untuk uji. Argumenrandom_state=42membuat pembagian ini dapat direproduksi;stratify=ymenjaga proporsi ketiga spesies tetap seimbang di kedua bagian. - Baris 13-20 (
def aturan_manual(...)): kita menulis ambang batas (2.5 dan 4.8 cm) berdasarkan intuisi. Aturan ini hanya memakai satu dari empat fitur yang tersedia. - Baris 26 (
model.fit(X_train, y_train)): methodfit()adalah proses belajar. Model k-NN tidak membaca aturan apa pun dari kita; model hanya menyimpan data latih untuk nanti dibandingkan dengan data baru. - Baris 27 (
model.score(X_test, y_test)): methodscore()memprediksi seluruh data uji lalu menghitung akurasi tanpa kita menulis satu pun kondisiif.
Kedua akurasi memang berdekatan pada dataset kecil ini. Bedanya, aturan manual butuh analisis manusia setiap kali masalah berganti, sedangkan model menyesuaikan diri hanya dengan data baru. Ketika jumlah fitur mencapai ratusan, pendekatan manual praktis tidak mungkin dilakukan.
Tiga Keluarga Besar Machine Learning #
Machine learning bukan satu teknik tunggal. Berdasarkan jenis umpan balik yang diterima algoritma, dunia ML terbagi menjadi tiga keluarga besar:
| Paradigma | Data yang dibutuhkan | Yang dipelajari | Contoh nyata |
|---|---|---|---|
| Supervised learning | Data berlabel (fitur + jawaban benar) | Memetakan fitur ke label | Deteksi email spam, prediksi harga rumah |
| Unsupervised learning | Data tanpa label | Struktur tersembunyi dalam data | Segmentasi pelanggan, deteksi anomali |
| Reinforcement learning | Interaksi dengan lingkungan + reward | Kebijakan aksi yang memaksimalkan reward | Robot belajar berjalan, agen game |
Pada supervised learning, model belajar dari contoh yang sudah memiliki jawaban, seperti soal latihan beserta kunci jawabannya. Pada unsupervised learning, model tidak memiliki kunci jawaban sama sekali dan hanya mencari pengelompokan atau pola alami. Reinforcement learning berada di luar cakupan section ini karena pendekatannya sangat berbeda: agen mencoba aksi, menerima reward atau penalti, lalu memperbaiki kebijakannya secara bertahap.
Fitur, Label, dan Dua Jenis Prediksi #
Dua istilah wajib sebelum lanjut. Fitur adalah kolom-kolom input yang menjadi bahan pertimbangan model; pada dataset iris, fiturnya adalah empat angka pengukuran. Label adalah nilai yang ingin diprediksi; pada dataset iris, labelnya adalah spesies bunga. Konvensi penulisan memakai X besar untuk fitur (karena berbentuk matriks dua dimensi) dan y kecil untuk label (karena berbentuk vektor satu dimensi).
Supervised learning sendiri terbagi dua rasa berdasarkan bentuk output-nya:
| Aspek | Classification | Regression |
|---|---|---|
| Bentuk prediksi | Kategori atau kelas | Angka kontinu |
| Contoh target | spam / bukan spam, spesies bunga | harga rumah, suhu besok |
| Metrik evaluasi umum | accuracy, precision, recall | MAE, RMSE |
| Contoh algoritma | k-NN, decision tree, logistic regression | linear regression, random forest regressor |
Cara cepat membedakannya: jika menukar nilai prediksi dengan prediksi lain terasa tidak masuk akal (memprediksi “setosa” padahal jawabannya 4.7), kita berada di ranah classification; jika prediksinya berupa angka yang bisa “hampir benar”, itu regression.
Alur Kerja Machine Learning dan Bahaya Overfitting #
Satu siklus kerja machine learning yang sehat berbentuk lingkaran berikut:
Titik paling kritis pada diagram tersebut adalah evaluasi di data uji. Data uji berperan seperti ujian akhir yang soalnya belum pernah dilihat model; jika model mencontek dari data latih, skornya tampak tinggi padahal kemampuan generalisasi rendah. Gejala inilah yang disebut overfitting. Kebalikannya, underfitting terjadi ketika model terlalu sederhana sehingga tidak mampu menangkap pola sama sekali, baik di data latih maupun data uji. Sketsa berikut menggambarkan hubungan ketiganya dengan kompleksitas model:
skor
^
| ______________ akurasi data latih (terus naik)
| ____/ .
| ____/ . . . . akurasi data uji (puncak lalu turun)
| ____/ .____ .
| ____/ .____ .___.
| ____/ ._____| .___|
+---------+-----------------+----------------> kompleksitas model
underfitting overfittingModel terbaik berada di sekitar puncak kurva data uji, bukan di ujung kanan. Chapter Supervised Learning mendemonstrasikan gap train-test ini dengan angka nyata, dan chapter Training dan Evaluation membedah metrik untuk mendeteksinya secara sistematis.
Kapan Tidak Perlu Machine Learning #
Machine learning bukan solusi default untuk semua masalah. Sebelum melatih model, pertimbangkan situasi berikut:
- Aturannya deterministik dan sudah diketahui. Menghitung pajak, diskon bertingkat, atau validasi form cukup memakai
if-else; model justru menambah ketidakpastian tanpa manfaat. - Explainability adalah syarat. Penolakan kredit atau diagnosis medis kadang wajib bisa dijelaskan aturan persisnya; rule-based system lebih aman daripada model black box.
- Data terlalu sedikit. Model yang dilatih pada puluhan baris data umumnya kalah dari aturan sederhana yang ditulis manusia.
- Biaya kesalahan sangat tinggi dan datanya tidak stabil. Jika dunia berubah cepat, model bisa basi dan membutuhkan infrastruktur pembaruan yang mahal.
Prinsip yang kita pegang di seluruh section ini: mulai dari baseline sederhana, buktikan bahwa pendekatan berbasis data memang mengungguli aturan manual, baru tingkatkan kompleksitasnya secara bertahap.