Model machine learning yang paling canggih pun tidak bisa melampaui kualitas dataset yang melatihnya — prinsip garbage in, garbage out berlaku tanpa kecuali. Karena itu sebelum bicara model, kita perlu memahami bahan bakunya secara mendalam: bagaimana bentuk sebuah dataset berlabel, dari mana label itu berasal, dan apa akibatnya bila labelnya keliru. Pada chapter ini kita bedah anatomi dataset, memetakan tiga sumber label beserta risikonya, lalu membuktikan dengan kode bagaimana satu baris label yang salah sudah cukup menggeser gambaran data.
Anatomi Dataset Berlabel #
Dataset berlabel berbentuk tabel: setiap baris adalah satu sampel (sample) — satu email, satu pelanggan, satu rumah — dan setiap kolom adalah satu variabel. Kolom terbagi dua peran: fitur (X) yang mendeskripsikan sampel, dan label atau target (y) yang menjadi jawaban yang ingin diprediksi.
| Istilah | Wujud dalam tabel | Peran |
|---|---|---|
| Sampel | Satu baris | Satu contoh yang dipelajari model |
Fitur (X) | Kolom-kolom deskriptif (frekuensi belanja, luas rumah) | Masukan yang dipakai untuk memprediksi |
Label / target (y) | Satu kolom jawaban (churn, harga) | Keluaran yang dipelajari; hanya dipakai saat melatih model |
Bentuk inilah yang diminta scikit-learn: X berupa tabel dua dimensi berukuran (jumlah sampel, jumlah fitur), dan y berupa kolom satu dimensi sepanjang jumlah sampel. Dataset contoh resmi seperti iris dan wine yang dibundel scikit-learn juga mengikuti bentuk yang sama, sehingga latihan kita langsung kompatibel dengan dokumentasi resminya.
Dari Mana Label Berasal #
Label jarang turun dari langit. Tiga sumber paling umum:
| Sumber | Cara diperoleh | Contoh | Risiko utama |
|---|---|---|---|
| Historis | Hasil peristiwa masa lalu yang sudah tercatat | Member yang terbukti berhenti → churn = 1 | Pola masa lalu bisa usang saat kebiasaan berubah |
| Manual (anotasi) | Penilaian manusia satu per satu | Petugas menandai email spam, dokter menandai hasil rontgen | Mahal, lambat, dan dua anotator bisa berbeda pendapat |
| Observasi / sensor | Pengukuran langsung | Timbangan digital, sensor suhu, harga pasar aktual | Kesalahan alat dan gangguan pencatatan |
Sumber label menentukan anggaran proyek sekaligus batas kualitas. Label historis gratis tetapi hanya tersedia untuk masa lalu; label manual bisa dirancang sesuai kebutuhan tetapi mahal dan subjektif; label sensor objektif tetapi sesekali salah catat. Proyek nyata sering memadukannya — misalnya label churn historis diperkaya sampel anotasi manual untuk memeriksa konsistensinya.
Kualitas Label dan Label Berisik #
Label berisik (noisy label) adalah label yang tidak menggambarkan kebenaran: siswa yang rajin tercatat tidak lulus karena salah pindah data, email sah ditandai spam karena tombol tergeser, atau anotator menilai berbeda pada kasus yang sama-sama meragukan. Dua label yang bertentangan untuk fitur yang nyaris identik adalah bentuk paling khasnya — dan tidak bisa dihindari sepenuhnya pada data nyata.
Dampaknya lurus ke depan: model belajar dari label, jadi label yang keliru diajarkan sebagai kebenaran. Beberapa baris salah pada ribuan data biasanya tertolerasi; error yang terkonsentrasi pada satu kelompok (misalnya satu petugas anotasi yang berbeda standar) jauh lebih merusak karena membentuk pola palsu yang diyakini model. Praktik yang sehat: periksa distribusi label, samakan panduan anotasi, dan sediakan sampel untuk diaudit ulang secara berkala.
Demo: Satu Label Keliru, Gambaran Ikut Bergeser #
Kita buktikan dampaknya dengan data nilai ujian 12 siswa: jam_belajar dan nilai sebagai fitur, lulus sebagai label. Pertama kita baca anatomi datanya, lalu bandingkan ringkasan per kelompok pada label bersih versus label yang satu barisnya keliru.
import pandas as pd
siswa = pd.DataFrame({
"nama": ["Budi", "Siti", "Dewi", "Rani", "Agus", "Maya",
"Joko", "Lina", "Tono", "Sari", "Yoga", "Ayu"],
"jam_belajar": [2, 7, 1, 6, 3, 8, 2, 5, 4, 6, 1, 7],
"nilai": [58, 85, 45, 82, 65, 90, 55, 78, 70, 80, 48, 88],
"lulus": ["tidak", "lulus", "tidak", "lulus", "tidak", "lulus",
"tidak", "lulus", "lulus", "lulus", "tidak", "lulus"],
})
fitur = ["jam_belajar", "nilai"]
X = siswa[fitur]
y = siswa["lulus"]
print("Bentuk X:", X.shape, "| Bentuk y:", y.shape)
print("Label unik:", sorted(y.unique()))
print()
print("Rerata fitur per label (label bersih):")
print(siswa.groupby("lulus")[fitur].mean().round(1))
berisik = siswa.copy()
berisik.loc[berisik["nama"] == "Dewi", "lulus"] = "lulus"
print()
print("Rerata fitur per label (satu label keliru: Dewi):")
print(berisik.groupby("lulus")[fitur].mean().round(1))Output yang Dihasilkan:
Bentuk X: (12, 2) | Bentuk y: (12,)
Label unik: ['lulus', 'tidak']
Rerata fitur per label (label bersih):
jam_belajar nilai
lulus
lulus 6.1 81.9
tidak 1.8 54.2
Rerata fitur per label (satu label keliru: Dewi):
jam_belajar nilai
lulus
lulus 5.5 77.2
tidak 2.0 56.5Mari kita telaah baris-baris kode di atas:
siswaberbentuk tabel berlabel utuh: 12 baris sampel, dua kolom fitur, satu kolom label. Baris Dewi (jam_belajar = 1,nilai = 45) semestinya tidak lulus — nilainya paling rendah sekelas.Xdanymemisahkan peran kolom:Xberbentuk(12, 2),yberbentuk(12,)— persis format yang diminta scikit-learn.groupby("lulus")[fitur].mean()merangkum profil tiap kelompok label: dengan label bersih, kelompok lulus rata-rata belajar 6,1 jam dengan nilai 81,9; kelompok tidak lulus 1,8 jam dengan nilai 54,2 — dua kelompok terpisah jelas.berisikmeniru kesalahan input: satu-satunya perubahan adalah label Dewi daritidakmenjadilulus— skenario salah pindah data yang ringan sekalipun.
Akibatnya terbaca langsung: rata-rata nilai kelompok lulus merosot dari 81,9 ke 77,2, dan rata-rata jam belajarnya dari 6,1 ke 5,5 — hanya karena satu baris dari dua belas (8%) berpindah kelompok. Kelompok tidak lulus ikut bergeser naik dari 54,2 ke 56,5. Model yang dilatih pada label seperti ini akan mempelajari gambaran yang salah: “siswa bernilai 45-an bisa lulus”. Pada data ribuan baris satu kesalahan tertolerasi, tetapi persentase kesalahan yang sama pada data besar berarti ratusan baris menyesatkan.
Rangkuman #
- Dataset berlabel bertumpu pada tiga istilah: sampel (baris), fitur
X(kolom deskriptif dua dimensi), dan labely(kolom jawaban satu dimensi). - Label berasal dari tiga sumber utama — historis, anotasi manual, observasi/sensor — masing-masing dengan pola biaya dan risiko berbeda.
- Label berisik mengajarkan kekeliruan sebagai kebenaran; dampaknya paling serius bila kesalahan terkonsentrasi pada satu kelompok.
- Demo 12 siswa memperlihatkan satu label keliru (8% data) menggeser rata-rata kelompok hingga hampir lima poin nilai.
- Memeriksa distribusi dan sampel label sebelum melatih model adalah langkah murah dengan dampak besar.
Anatomi X dan y sudah kita pegang; tata cara memisahkannya dari tabel — lengkap dengan jebakan bentuk data yang sering menjumpai pemula — kita bahas khusus pada chapter Fitur dan Target
.