Pembelajaran Terawasi

Pembelajaran dari pasangan fitur dan label, perbedaan regresi dengan klasifikasi, serta contoh masalahnya.

Daftar isi

Topik ini membahas pembelajaran terawasi (supervised learning), keluarga metode machine learning yang paling sering digunakan pada masalah data tabular. Pembahasan mencakup makna label dan pasangan fitur-label, perbedaan regresi dengan klasifikasi, beserta contoh masalah untuk masing-masing keluarga. Satu skrip Python yang menggunakan dataset bawaan scikit-learn menghadirkan kedua jenis pembelajaran pada data nyata, lengkap dengan pembacaan keluarannya.

Makna pembelajaran terawasi#

Pembelajaran terawasi adalah cara melatih model dari contoh yang sudah memiliki jawaban. Setiap contoh dalam dataset terdiri atas pasangan fitur (feature) dan label. Fitur adalah kolom-kolom masukan yang menjelaskan situasi, sedangkan label adalah satu kolom jawaban yang ingin diprediksi. Selama pelatihan (training), model membuat prediksi untuk setiap contoh, prediksi tersebut dibandingkan dengan label sebenarnya, dan selisihnya digunakan untuk memperbaiki model. Kehadiran label inilah yang disebut pengawas, karena proses belajar selalu diukur terhadap jawaban yang diketahui.

Bentuk paling sederhana dari dataset terawasi adalah tabel. Satu baris mewakili satu contoh, kolom masukan menyimpan fitur, dan satu kolom tersimpan sebagai label. Pada masalah prediksi nilai ujian dari durasi belajar, durasi berperan sebagai fitur, sedangkan nilai ujian berperan sebagai label. Model hanya dapat menangkap pola yang tersimpan dalam pasangan fitur dan label itu, sehingga kualitas data menentukan batas kualitas model.

Data terawasi dibagi sebelum pelatihan dimulai. Sebagian besar data menjadi data latih (train set), yaitu bagian yang dilihat model ketika belajar. Sisanya ditahan sebagai data uji (test set) untuk mengukur kinerja pada contoh yang belum pernah dilihat. Pemisahan ini membuat angka evaluasi mencerminkan kemampuan model pada data baru, bukan sekadar daya hafalannya. Pada topik ini, pembagian yang digunakan adalah 75 persen data latih dan 25 persen data uji.

Regresi dan klasifikasi#

Jenis label menentukan keluarga metode yang dipilih. Regresi (regression) digunakan ketika label berupa angka numerik kontinu. Contohnya nilai ujian yang diprediksi dari durasi belajar atau suhu esok hari yang diprediksi dari catatan sensor. Klasifikasi (classification) digunakan ketika label berupa kategori dengan pilihan terbatas. Contohnya status kelulusan yang bernilai lulus atau tidak lulus, serta spesies bunga iris yang bernilai setosa, versicolor, atau virginica.

Model regresi linear yang digunakan pada contoh kode menuliskan hubungan fitur dan target sebagai persamaan garis lurus.

y^=w0+w1x1+w2x2+⋯+wpxp \hat{y} = w_0 + w_1 x_1 + w_2 x_2 + \cdots + w_p x_p

Nilai x1x_1 sampai xpx_p adalah fitur dari satu contoh, sedangkan w0w_0 sampai wpw_p adalah bobot yang dipelajari dari data latih. Simbol y^\hat{y} menyatakan prediksi model untuk membedakannya dari nilai target sebenarnya. Model klasifikasi bekerja berbeda, karena umumnya menghasilkan skor atau probabilitas untuk setiap kelas, lalu kelas dengan skor tertinggi dipilih sebagai prediksi.

AspekRegresiKlasifikasi
Bentuk targetAngka numerik kontinuKategori terbatas
Contoh masalahNilai ujian dari durasi belajar, progres penyakit dari hasil laboratoriumStatus kelulusan, spesies bunga dari ukuran bunga
Keluaran modelBilangan riil, misalnya 137.9491Salah satu kelas, misalnya versicolor
Contoh metrikMAE, RMSEAkurasi, presisi, recall, F1

Pemilihan keluarga metode selalu dimulai dari target yang tersedia. Dataset yang sama dapat menghasilkan dua masalah yang berbeda. Nilai ujian dapat diprediksi sebagai angka, sedangkan kelulusan yang diturunkan dari nilai ujian tersebut berubah menjadi kategori. Metrik pengukurannya juga mengikuti jenis target. Kesalahan regresi diukur dengan selisih angka, misalnya melalui MAE (mean absolute error) atau RMSE (root mean squared error), sedangkan ketepatan klasifikasi diukur dengan akurasi, presisi, recall, dan F1.

Contoh kode regresi dan klasifikasi#

Skrip berikut memuat satu eksperimen regresi dan satu eksperimen klasifikasi dalam satu berkas. Eksperimen regresi menggunakan dataset diabetes bawaan scikit-learn dengan LinearRegression, sedangkan eksperimen klasifikasi menggunakan dataset iris dengan LogisticRegression. Kedua eksperimen memisahkan data latih dan data uji dengan test_size=0.25 dan random_state=42, sehingga hasilnya dapat direproduksi. Skrip dijalankan dari folder topik dengan perintah python3 -B demo-terawasi.py.

python demo-terawasi.py
"""Contoh pembelajaran terawasi: regresi dan klasifikasi dalam satu skrip."""

from sklearn.datasets import load_diabetes, load_iris
from sklearn.linear_model import LinearRegression, LogisticRegression
from sklearn.model_selection import train_test_split

# --- regresi: target berupa angka numerik (progres penyakit) ---
diabetes = load_diabetes()
X_latih, X_uji, y_latih, y_uji = train_test_split(
    diabetes.data, diabetes.target, test_size=0.25, random_state=42
)
model_regresi = LinearRegression()
model_regresi.fit(X_latih, y_latih)
prediksi = model_regresi.predict(X_uji[:1])
print(f"Regresi     : prediksi = {prediksi[0]:.4f}, nilai sebenarnya = {y_uji[0]:.4f}")

# --- klasifikasi: target berupa kategori (spesies bunga) ---
iris = load_iris()
X_latih, X_uji, y_latih, y_uji = train_test_split(
    iris.data, iris.target, test_size=0.25, random_state=42
)
model_klasifikasi = LogisticRegression(max_iter=1000)
model_klasifikasi.fit(X_latih, y_latih)
prediksi_bunga = model_klasifikasi.predict(X_uji[:4])
label_sebenarnya = y_uji[:4]
for i in range(len(prediksi_bunga)):
    p = iris.target_names[prediksi_bunga[i]]
    a = iris.target_names[label_sebenarnya[i]]
    print(f"Klasifikasi : baris {i + 1}, prediksi = {p}, label sebenarnya = {a}")
akurasi = model_klasifikasi.score(X_uji, y_uji)
print(f"Akurasi data uji = {akurasi:.4f}")
text Keluaran
Regresi     : prediksi = 137.9491, nilai sebenarnya = 219.0000
Klasifikasi : baris 1, prediksi = versicolor, label sebenarnya = versicolor
Klasifikasi : baris 2, prediksi = setosa, label sebenarnya = setosa
Klasifikasi : baris 3, prediksi = virginica, label sebenarnya = virginica
Klasifikasi : baris 4, prediksi = versicolor, label sebenarnya = versicolor
Akurasi data uji = 1.0000

Bagian regresi mencetak satu prediksi beserta nilai sebenarnya. Prediksinya bernilai 137.9491, sedangkan nilai sebenarnya 219.0000. Selisih keduanya sekitar 81 unit. Angka itu menunjukkan bahwa satu prediksi tunggal tidak layak dijadikan bukti kualitas model, karena kesalahan pada satu contoh bisa besar meskipun rata-rata kesalahan model wajar. Bagian klasifikasi mencetak empat prediksi yang semuanya tepat, dan akurasi data uji tercatat 1.0000.

Akurasi 1.0000 perlu dibaca dengan hati-hati. Dataset iris kecil, seimbang, dan kelasnya mudah dipisahkan, sehingga model sederhana pun dapat mengklasifikasikan seluruh data uji dengan tepat. Angka semacam ini jarang terjadi pada data nyata dan tidak boleh dijadikan ekspektasi bawaan, karena data lapangan biasanya lebih berisik dan lebih tumpang-tindih.

Kesalahan umum#

Kesalahan pertama adalah memilih keluarga metode tanpa memeriksa bentuk target. Target kategori yang dipaksa ke regresi menghasilkan angka tanpa makna kelas, sedangkan target numerik yang dipaksa ke klasifikasi memerlukan pemotongan yang tidak perlu. Perbaikannya sederhana, yaitu menentukan regresi atau klasifikasi dari jenis kolom label sebelum menulis kode.

Kesalahan kedua adalah meninggalkan pembagian acak tanpa seed, sehingga hasil eksekusi berubah-ubah di setiap percobaan dan sulit dilaporkan. Fungsi train_test_split menerima argumen random_state yang bekerja sebagai seed, yaitu benih bilangan acak yang membuat pembagian selalu sama. Tetapkan random_state pada setiap langkah yang mengandung keacakan, baik saat memisahkan data maupun saat melatih model yang memiliki unsur acak.

Kesalahan ketiga adalah mengabaikan persiapan minimal pada data. Meskipun dataset bawaan scikit-learn sudah siap pakai, dataset pekerjaan nyata biasanya memiliki fitur dengan skala yang berjauhan dan label yang tidak lengkap. Periksa bentuk dataset terlebih dahulu, lalu tangani nilai yang hilang sebelum pelatihan, karena sebagian besar model tidak menerima nilai kosong.

Ringkasan#

  • Pembelajaran terawasi melatih model dari pasangan fitur dan label, lalu memperbaiki prediksi dengan membandingkannya terhadap jawaban sebenarnya.
  • Regresi memprediksi target numerik kontinu dan diukur dengan metrik seperti MAE dan RMSE, sedangkan klasifikasi memprediksi kategori dan diukur dengan akurasi, presisi, recall, dan F1.
  • Pemisahan data uji sejak awal membuat evaluasi tetap jujur, sedangkan random_state menjaga pembagian yang sama dapat direproduksi.

Referensi#