4.1.1
Validasi silang
Ringkasan
- Validasi silang membagi data ke dalam beberapa fold agar performa model dapat diestimasi dengan lebih stabil.
- Bandingkan dengan satu kali hold-out dan lihat bagaimana jumlah fold memengaruhi hasil.
- Pelajari tips praktis tentang desain fold, biaya komputasi, serta cara melaporkan skor.
Validasi silang memecah data sampel, melatih model pada sebagian data, menguji pada sisanya, dan menilai validitas keseluruhan analisis. — Cross-validation (Wikipedia)
1. Gambaran umum #
- Data dibagi menjadi beberapa “fold” dan secara bergantian satu fold digunakan sebagai validasi.
- Satu kali
train_test_splitdapat menghasilkan variansi tinggi; validasi silang merata-ratakan performa di semua fold. - Variasi yang umum adalah k-fold dan stratified k-fold (menjaga proporsi kelas di setiap fold).
2. Contoh dasar di Python 3.13 #
Dengan Python 3.13 dan scikit-learn terpasang:
| |
Contoh berikut membandingkan hold-out tunggal dengan validasi silang 5-fold pada dataset sintetik yang tidak seimbang.
| |
Contoh keluaran:
Hold-out ROC-AUC: 0.528
ROC-AUC (5 fold): 0.844
Akurasi (5 fold): 0.858
Hold-out tunggal menghasilkan ROC-AUC mendekati nilai acak, sedangkan validasi silang memberikan estimasi yang jauh lebih stabil.
3. Tips desain #
- Menentukan jumlah fold
Lima atau sepuluh fold adalah standar. Untuk data sangat sedikit,LeaveOneOutbisa dipertimbangkan, tetapi biayanya tinggi. - Stratifikasi
Jika kelas tidak seimbang, gunakanStratifiedKFoldatau parameterstratifyagar proporsi label terjaga di tiap fold. - Metrik ganda
scoringmenerima tuple untuk menghitung beberapa metrik sekaligus. Menggabungkan ROC-AUC dan Akurasi memperlihatkan trade-off. - Integrasi dengan penelusuran hiperparameter
GridSearchCVdanRandomizedSearchCVmenjalankan validasi silang internal, membantu menghindari overfitting saat tuning.
4. Daftar periksa praktis #
- Strategi split sudah tepat?
Untuk data time series gunakanTimeSeriesSplitalih-alih fold acak. - Metrik penting sudah dihitung?
Masukkan metrik yang jadi dasar keputusan bisnis ke parameterscoring. - Biaya komputasi sudah diperkirakan?
Validasi silang melatih model sebanyak k kali; rencanakan waktu dan sumber daya. - Eksperimen mudah direproduksi?
Simpan versi Python, seed, dan konfigurasi split di notebook atau skrip.
Ringkasan #
- Validasi silang mengurangi variansi estimasi dan membantu memahami kemampuan generalisasi model.
cross_validatedari scikit-learn memudahkan penghitungan banyak metrik sekaligus.- Rancang fold, metrik, serta anggaran komputasi secara sadar, lalu integrasikan proses ini ke alur produksi.