Topik ini membahas siklus alur kerja proyek machine learning, dari pemahaman masalah hingga deployment, yaitu penyajian model kepada pengguna. Pembahasan menguraikan lima tahap siklus, alasan hasil evaluasi sering mengembalikan pekerjaan ke tahap data, dan satu skrip end-to-end yang menyatukan tahap-tahap inti pada dataset nyata. Setelah topik ini selesai dibaca, kerangka besar yang menyatukan setiap teknik pada jalur ini sudah tersedia.
Lima tahap siklus#
Proyek machine learning berjalan sebagai siklus lima tahap, bukan garis lurus dari data ke aplikasi. Setiap tahap menghasilkan keluaran yang menjadi masukan tahap berikutnya, dan tahap evaluasi menjadi tempat keputusan besar diambil. Kelima tahapnya diuraikan sebagai berikut.
- Pahami masalah beserta ukuran keberhasilannya. Tentukan keputusan yang ingin dibantu dan angka yang menyatakan berhasil, karena model tanpa ukuran keberhasilan tidak dapat dievaluasi dengan adil.
- Kumpulkan dan siapkan data. Kumpulkan contoh yang mewakili situasi nyata, lalu bersihkan nilai yang hilang, periksa duplikat, dan bentuk fitur yang relevan.
- Pilih dan latih model. Mulai dari model sederhana sebagai baseline, yaitu pembanding minimum yang harus dikalahkan, lalu naikkan kerumitan hanya bila evaluasi menunjukkan manfaatnya.
- Evaluasi dengan jujur. Ukur kinerja pada data yang tidak pernah digunakan saat pelatihan, kemudian bandingkan dengan ukuran keberhasilan yang ditetapkan pada tahap pertama.
- Lakukan deployment dan pemantauan. Sajikan model kepada pengguna, pantau kinerjanya, dan catati drift, yaitu perubahan distribusi data seiring waktu yang perlahan menurunkan kualitas prediksi model.
Urutan tahap ini mengikuti logika sebab-akibat. Masalah yang belum jelas menghasilkan ukuran keberhasilan yang tidak jelas pula, sedangkan data yang buruk membuat tahap pemodelan bekerja sia-sia. Karena setiap tahap bergantung pada tahap sebelumnya, kegagalan yang terlihat pada satu tahap sering berakar pada tahap yang lebih awal. Kerangka ini juga memudahkan komunikasi lintas peran, karena setiap pihak yang terlibat membahas tahap yang sama dengan nama yang sama.
Sifat siklus yang berulang#
Hasil evaluasi bukan akhir pekerjaan, melainkan informasi yang menentukan langkah balik. Akurasi yang rendah pada data uji biasanya mengirim pekerjaan kembali ke tahap data, misalnya untuk menambah contoh, memperbaiki fitur, atau membersihkan label yang keliru. Bila datanya sudah wajar tetapi modelnya masih gagal, iterasi berikutnya mengarah ke tahap model, misalnya mengganti keluarga model atau mengatur hyperparameter. Hyperparameter adalah pengaturan yang ditetapkan sebelum pelatihan dimulai. Hanya model yang lolos evaluasi berlanjut ke deployment, dan pemantauan pada tahap tersebut dapat membuka siklus baru ketika perilaku data berubah.
Diagram berikut memetakan lima tahap tersebut beserta tiga jalur yang membuatnya menjadi siklus, yaitu dua jalur iterasi dari evaluasi dan satu jalur pemantauan dari deployment kembali ke masalah.
Panah kembali pada diagram menegaskan satu hal, yaitu proyek machine learning tidak pernah benar-benar selesai. Model yang sudah disajikan tetap dipantau, dan temuan pemantauan menjadi masalah baru yang masuk ke tahap pertama. Siklus ini berulang selama model masih digunakan untuk keputusan nyata.
Contoh kode end-to-end#
Skrip berikut menjalankan versi mini dari siklus tersebut pada dataset kanker payudara bawaan scikit-learn. Pada tahap data, skrip mencetak bentuk fitur dan target. Tahap model memisahkan data latih dan data uji lalu melatih LogisticRegression, sedangkan tahap evaluasi menghitung akurasi pada data uji. Argumen stratify menjaga proporsi kelas tetap sama di kedua bagian hasil pemisahan, sedangkan random_state membuat pemisahan itu dapat direproduksi. Skrip dijalankan dari folder topik dengan perintah python3 -B demo-alur-kerja.py.
"""Siklus alur kerja machine learning dalam satu skrip mini end-to-end."""
from sklearn.datasets import load_breast_cancer
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
# tahap data: dataset kanker payudara bawaan scikit-learn
data = load_breast_cancer()
print(f"bentuk fitur : {data.data.shape}")
print(f"bentuk target: {data.target.shape}")
print(f"kelas target : {data.target_names.tolist()}")
# tahap model: pemisahan data latih dan data uji, lalu pelatihan
X_latih, X_uji, y_latih, y_uji = train_test_split(
data.data, data.target, test_size=0.25, random_state=42, stratify=data.target
)
model = LogisticRegression(max_iter=5000)
model.fit(X_latih, y_latih)
# tahap evaluasi: akurasi pada data uji yang tidak pernah dilihat model
akurasi = model.score(X_uji, y_uji)
print(f"akurasi data uji: {akurasi:.4f}")bentuk fitur : (569, 30)
bentuk target: (569,)
kelas target : ['malignant', 'benign']
akurasi data uji: 0.9580Dataset memuat 569 contoh dengan 30 fitur numerik, dan targetnya berisi dua kelas bernama malignant serta benign. Akurasi data uji tercatat 0.9580, yang berarti enam dari 143 contoh data uji diklasifikasikan keliru. Satu angka akurasi ini sudah cukup untuk mengambil keputusan iterasi, misalnya mencoba model lain, menelaah contoh yang keliru, atau menambah fitur.
Kejujuran evaluasi menjadi poros seluruh siklus pada kode di atas. Akurasi dihitung hanya pada data uji yang tidak digunakan saat pelatihan, karena model yang dinilai dari data latihnya sendiri menyembunyikan kesalahannya. Selain itu, argumen max_iter dinaikkan menjadi 5000. Fitur pada dataset ini memiliki rentang nilai yang berjauhan, sehingga pencarian solusi membutuhkan lebih banyak langkah daripada batas bawaan.
Ringkasan#
- Siklus proyek machine learning terdiri atas lima tahap, yaitu pemahaman masalah, penyiapan data, pemodelan, evaluasi, dan deployment.
- Evaluasi pada data uji yang jujur menentukan langkah balik siklus, baik ke tahap data maupun ke tahap model.
- Skrip end-to-end pada dataset breast cancer menunjukkan pemisahan data dengan
stratify, pelatihanLogisticRegression, dan akurasi data uji 0.9580.
Referensi#
- Machine Learning Crash Course — Google Developers — Ringkasan siklus proyek machine learning beserta istilah intinya dari Google.
- sklearn.datasets.load_breast_cancer — scikit-learn — Deskripsi dataset kanker payudara yang digunakan pada contoh kode.
- sklearn.model_selection.train_test_split — scikit-learn
— Dokumentasi pemisahan data latih dan data uji, termasuk argumen
stratifydanrandom_state. - Cross-validation: evaluating estimator performance — scikit-learn — Prinsip evaluasi yang jujur pada data yang tidak digunakan saat pelatihan.