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:

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

text
Akurasi aturan manual: 95.56%
Akurasi k-NN        : 97.78%

Mari kita telaah bagian-bagian penting kode di atas:

  1. Baris 8-10 (train_test_split(...)): fungsi train_test_split() memisahkan 105 baris data untuk latih dan 45 baris untuk uji. Argumen random_state=42 membuat pembagian ini dapat direproduksi; stratify=y menjaga proporsi ketiga spesies tetap seimbang di kedua bagian.
  2. 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.
  3. Baris 26 (model.fit(X_train, y_train)): method fit() adalah proses belajar. Model k-NN tidak membaca aturan apa pun dari kita; model hanya menyimpan data latih untuk nanti dibandingkan dengan data baru.
  4. Baris 27 (model.score(X_test, y_test)): method score() memprediksi seluruh data uji lalu menghitung akurasi tanpa kita menulis satu pun kondisi if.

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:

ParadigmaData yang dibutuhkanYang dipelajariContoh nyata
Supervised learningData berlabel (fitur + jawaban benar)Memetakan fitur ke labelDeteksi email spam, prediksi harga rumah
Unsupervised learningData tanpa labelStruktur tersembunyi dalam dataSegmentasi pelanggan, deteksi anomali
Reinforcement learningInteraksi dengan lingkungan + rewardKebijakan aksi yang memaksimalkan rewardRobot 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:

AspekClassificationRegression
Bentuk prediksiKategori atau kelasAngka kontinu
Contoh targetspam / bukan spam, spesies bungaharga rumah, suhu besok
Metrik evaluasi umumaccuracy, precision, recallMAE, RMSE
Contoh algoritmak-NN, decision tree, logistic regressionlinear 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:

text
skor
  ^
  |                          ______________  akurasi data latih (terus naik)
  |                     ____/  .
  |                ____/            . . . .  akurasi data uji (puncak lalu turun)
  |           ____/        .____    .
  |      ____/         .____    .___.
  | ____/        ._____|     .___|
  +---------+-----------------+----------------> kompleksitas model
        underfitting       overfitting

Model 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.