Setiap proyek machine learning dimulai dari keputusan yang belum melibatkan model sama sekali, yaitu menetapkan masalah yang diselesaikan dan data yang dipakai. Topik ini membahas pemilihan masalah pada satu proyek utuh yang dikerjakan sepanjang modul ini, mulai dari kriteria kelayakan masalah, penetapan kelas positif beserta metrik keberhasilannya, hingga pemeriksaan fakta dasar dataset. Praktiknya menggunakan dataset breast cancer bawaan scikit-learn sebagai dataset tunggal untuk seluruh tahapan proyek, dan kelayakannya diperiksa dengan skrip pilih-masalah.py.
Kriteria masalah yang layak#
Masalah yang layak dikerjakan dengan machine learning memenuhi beberapa syarat yang dapat diperiksa sebelum kode model ditulis. Target harus terukur dan tersedia pada data, karena pembelajaran terawasi tidak dapat berjalan tanpa label. Pola yang dicari harus berulang, yaitu hubungan fitur dengan target yang tetap relevan pada data masa depan dan bukan kebetulan pada satu potongan data. Konsekuensi prediksi juga perlu nyata, karena prediksi yang tidak mengubah keputusan apa pun tidak menghasilkan nilai meskipun skornya tinggi.
Dua syarat terakhir menyangkut data dan pengukuran. Jumlah baris harus memadai agar model dapat memisahkan pola dari derau, dan metrik keberhasilan harus terdefinisi sejak awal agar setiap keputusan berikutnya memiliki pembanding yang sama. Kriteria ini menjadi daftar periksa yang diterapkan pada tiga kandidat masalah berikut.
| Kandidat masalah | Target terukur | Konsekuensi nyata | Data memadai |
|---|---|---|---|
| Klasifikasi jinak atau ganas, dataset breast cancer | Ada, label hasil diagnosis | Ada, kekeliruan berdampak pada tindakan medis | 569 baris, 30 fitur |
| Regresi progresi penyakit, dataset diabetes | Ada, ukuran progresi klinis | Ada, tetapi keputusan tindak lanjutnya samar | 442 baris, 10 fitur |
Klasifikasi sintetis make_classification | Ada, label buatan generator | Tidak ada, polanya diketahui pembuatnya | Sebesar yang diinginkan |
Perbandingan pada tabel menetapkan klasifikasi jinak atau ganas pada dataset breast cancer sebagai masalah proyek ini. Dataset tersebut menyediakan label hasil diagnosis yang nyata, konsekuensi yang mudah dinyatakan dalam bahasa keputusan, dan ukuran yang cukup bagi model tabular. Keputusan yang menyertainya dinyatakan eksplisit, yaitu dataset yang sama dipakai pada seluruh tahapan proyek di modul ini sehingga hasil antartahap dapat dibandingkan secara langsung.
Kelas positif dan metrik keberhasilan#
Masalah klasifikasi jinak atau ganas diterjemahkan menjadi definisi formal sebelum pemodelan dimulai. Pada label bawaan dataset ini, angka 0 berarti ganas (malignant) dan angka 1 berarti jinak (benign), sehingga urutannya berlawanan dengan kebiasaan medis yang menempatkan kanker sebagai kelas positif. Proyek ini menetapkan kelas positif sebagai kelas ganas dengan label 0, dan seluruh metrik per kelas dihitung terhadap kelas tersebut.
Konsekuensi kedua jenis kekeliruan tidak setara. Prediksi jinak pada kasus yang sebenarnya ganas berpotensi menunda penanganan, sedangkan prediksi ganas pada kasus yang sebenarnya jinak hanya menambah pemeriksaan lanjutan. Karena itu keberhasilan proyek diukur dengan recall kelas ganas, yaitu porsi kasus ganas yang berhasil dikenali, serta F1 kelas ganas sebagai rata-rata harmonik yang memperhitungkan presisi sekaligus. Akurasi keseluruhan tidak dipakai sebagai ukuran utama karena kelas jinak lebih banyak, sehingga model yang selalu menebak jinak sudah mencetak akurasi 62.7 persen tanpa kemampuan mengenali kasus ganas.
Pemeriksaan kelayakan dengan skrip#
Kriteria pada daftar periksa diperiksa dengan fakta dataset, bukan dengan asumsi. Skrip berikut memuat dataset sebagai DataFrame agar nama fiturnya terbaca, lalu menghitung jumlah baris, jumlah dan kelompok fitur, komposisi kelas, serta kelengkapan data. Skrip dijalankan dengan python pilih-masalah.py dari folder proyek, dan keluarannya dapat dicatat apa adanya ke dalam catatan proyek. Argumen as_frame=True membuat fitur dikembalikan sebagai DataFrame pandas, bukan array NumPy, sehingga setiap angka pada keluaran langsung membawa nama fiturnya. Komposisi kelas yang terbaca di sini juga menjadi acuan bagi pemisahan berstrata pada tahap berikutnya.
"""Pemeriksaan kelayakan masalah: fakta dasar dataset kanker payudara."""
from sklearn.datasets import load_breast_cancer
# dataset dimuat sebagai DataFrame agar nama fiturnya terbaca
data = load_breast_cancer(as_frame=True)
X, y = data.data, data.target
nama_fitur = list(X.columns)
print(f"Jumlah baris : {X.shape[0]}")
print(f"Jumlah fitur : {X.shape[1]} (semuanya numerik)")
# tiga kelompok pengukuran pada inti tumor yang sama
kelompok = {
"mean": [f for f in nama_fitur if f.startswith("mean")],
"error": [f for f in nama_fitur if f.endswith("error")],
"worst": [f for f in nama_fitur if f.startswith("worst")],
}
for nama, daftar in kelompok.items():
print(f"Kelompok {nama:<6}: {len(daftar)} fitur, contoh: {daftar[0]}")
# target biner: pada label bawaan, 0 = ganas dan 1 = jinak
print(f"Nama kelas : {[str(n) for n in data.target_names]}")
jumlah = y.value_counts().sort_index()
print(f"Kelas ganas : {jumlah[0]} baris ({jumlah[0] / len(y) * 100:.1f} persen)")
print(f"Kelas jinak : {jumlah[1]} baris ({jumlah[1] / len(y) * 100:.1f} persen)")
# kesiapan data sebelum pemodelan dimulai
print(f"Nilai hilang : {int(X.isna().sum().sum())}")
print(f"Baris duplikat: {int(X.duplicated().sum())}")Jumlah baris : 569
Jumlah fitur : 30 (semuanya numerik)
Kelompok mean : 10 fitur, contoh: mean radius
Kelompok error : 10 fitur, contoh: radius error
Kelompok worst : 10 fitur, contoh: worst radius
Nama kelas : ['malignant', 'benign']
Kelas ganas : 212 baris (37.3 persen)
Kelas jinak : 357 baris (62.7 persen)
Nilai hilang : 0
Baris duplikat: 0Dataset terdiri atas 569 baris dengan 30 fitur numerik yang terbagi rata ke dalam tiga kelompok pengukuran pada inti tumor yang sama, yaitu rata-rata (mean), standard error, dan nilai terburuk (worst). Komposisi kelasnya 212 ganas berbanding 357 jinak, sehingga ketidakseimbangannya ringan dan masih ditangani dengan metrik per kelas yang ditetapkan sebelumnya. Tidak ada nilai hilang dan tidak ada baris duplikat, sehingga pembersihan data yang berat dapat dilewati. Seluruh butir pada daftar periksa terpenuhi, dan proyek dapat dilanjutkan ke pemahaman datanya.
Kesalahan umum#
- Menetapkan masalah sebelum memeriksa ketersediaan label. Pembelajaran terawasi berhenti di tengah jalan bila target ternyata tidak terekam pada data. Fakta dataset diperiksa terlebih dahulu, sebagaimana dilakukan skrip pada bagian sebelumnya.
- Memakai akurasi sebagai satu-satunya ukuran pada kelas yang tak seimbang. Model kelas terbanyak pada dataset ini mencetak akurasi 62.7 persen sambil melewatkan seluruh kasus ganas. Ukuran utama difokuskan pada kelas yang konsekuensinya paling mahal.
- Mengganti dataset di tengah proyek. Hasil antartahap menjadi tidak dapat dibandingkan karena perbedaan skor bisa berasal dari perbedaan data dan bukan dari keputusan pemodelan. Dataset dan definisi masalahnya dipatok sejak tahap ini.
- Menunda penetapan metrik keberhasilan hingga hasil model keluar. Tanpa pembanding yang dipatok sejak awal, setiap skor mudah dinyatakan berhasil karena tidak ada target yang harus dilampaui. Metrik beserta kelas positifnya ditetapkan bersama definisi masalah.
- Menilai kelayakan hanya dari jumlah baris. Dataset dengan ribuan baris tetap tidak layak apabila labelnya tidak terekam atau kelas positifnya hanya segelintir baris. Komposisi kelas dan kelengkapan data diperiksa bersama jumlah barisnya.
Ringkasan#
- Masalah yang layak memiliki target terukur, pola berulang, konsekuensi nyata, data yang memadai, dan metrik keberhasilan yang terdefinisi sejak awal.
- Proyek pada modul ini menetapkan klasifikasi jinak atau ganas pada dataset breast cancer, dan dataset yang sama dipakai pada seluruh tahapannya.
- Kelas positif ditetapkan sebagai ganas dengan label 0, dan keberhasilannya diukur dengan recall serta F1 kelas tersebut.
- Dataset berisi 569 baris dan 30 fitur numerik tanpa nilai hilang, dengan komposisi 212 ganas berbanding 357 jinak.
Referensi#
- sklearn.datasets.load_breast_cancer — scikit-learn — Dokumentasi dataset breast cancer beserta arti label 0 dan 1 pada targetnya.
- Toy datasets — scikit-learn — Daftar dataset bawaan scikit-learn yang menjadi sumber ketiga kandidat masalah pada tabel perbandingan.
- Breast Cancer Wisconsin (Diagnostic) Data Set — UCI Machine Learning Repository — Sumber asli data digitisasi citra yang dipakai sepanjang proyek ini.