Apa itu cross-validation?
Cross-validation adalah cara memperkirakan performa model pada data baru dengan melatih dan mengujinya beberapa kali pada pembagian yang berbeda dari dataset yang sama. Pada k-fold cross-validation, data dipotong menjadi k bagian yang sama besar. Setiap bagian menjadi validation set satu kali sementara k − 1 bagian lainnya melatih model, lalu k skor itu dirata-ratakan. Hasilnya lebih stabil daripada estimasi dari satu train/test split mana pun.
Cross-validation adalah cara standar untuk membandingkan model dan menyetel hyperparameter ketika datanya terbatas, dari memilih kekuatan regularization pada logistic regression sampai menentukan kedalaman gradient-boosted tree. Alat seperti GridSearchCV di scikit-learn menjalankannya otomatis untuk setiap kandidat pengaturan. Studi medis dan ilmiah dengan beberapa ratus sampel banyak mengandalkannya, karena tidak sanggup menyisihkan validation set tetap yang besar.
Ide utama
- Satu train/test split memberi estimasi yang tidak stabil dan bergantung pada titik mana yang masuk ke test set.
- Pada k-fold cross-validation, setiap titik divalidasi tepat satu kali dan ikut melatih model k − 1 kali.
- Skor akhir adalah rata-rata antar-fold, dilaporkan bersama sebarannya.
- Stratified fold menjaga proporsi kelas tetap stabil, dan group fold menjaga baris yang berkaitan tetap bersama.
- Leave-one-out nyaris tanpa bias, tetapi mahal dan variance-nya tinggi.
- k = 5 atau k = 10 adalah kompromi yang biasa antara bias, variance, dan biaya komputasi.
Pertanyaan umum
Apakah cross-validation mencegah overfitting?
Tidak. Cross-validation mengukur overfitting, bukan mencegahnya: model yang menghafal training fold-nya akan mendapat skor buruk pada fold yang dipisahkan, dan rata-ratanya akan memperlihatkan itu. Memilih di antara banyak model berdasarkan skor cross-validation juga bisa menyebabkan overfitting ke fold-nya. Karena itu test set akhir atau nested cross-validation tetap dibutuhkan.
Model mana yang di-deploy setelah k-fold cross-validation?
Biasanya bukan salah satu dari k model itu. Cross-validation dipakai untuk memilih pengaturan, lalu satu model akhir dilatih pada semua data training yang tersedia dengan pengaturan tersebut. Skor cross-validation adalah estimasi performa model akhir itu.
Bagaimana cross-validation untuk time series?
Fold acak akan membuat model belajar dari masa depan untuk memprediksi masa lalu. Cross-validation untuk time series memakai window yang melebar atau bergeser: lakukan training pada data sampai waktu t, validasi pada blok berikutnya, lalu majukan t dan ulangi. scikit-learn menyediakannya sebagai TimeSeriesSplit.
Di mana preprocessing dilakukan dalam cross-validation?
Di dalam tiap fold. Scaling, imputation, dan feature selection harus di-fit hanya pada bagian training dari fold itu, lalu diterapkan ke bagian validation-nya. Kalau di-fit pada seluruh dataset lebih dulu, informasi dari baris validation ikut bocor dan skornya naik secara semu.
Penjelasan terkait
- Training, Validation, dan Test Set · Membagi data untuk mengukur generalization dan menghindari overfitting
- Bias-Variance Tradeoff · Kenapa model mengalami underfitting atau overfitting, lewat dekomposisi dasarnya
- Hyperparameter · Pengaturan yang kamu pilih sebelum training dimulai
- Class Imbalance & Resampling · SMOTE, class weight, dan metrik di luar akurasi
- Evaluasi Model dan Metrik · Precision, recall, F1, kurva ROC, dan metrik regresi
- Overfitting dan Underfitting · Bias-variance tradeoff dan generalisasi
Referensi
- Kohavi (1995), "A Study of Cross-Validation and Bootstrap for Accuracy Estimation and Model Selection", IJCAI
- Bengio & Grandvalet (2004), "No Unbiased Estimator of the Variance of K-Fold Cross-Validation", JMLR
- Cawley & Talbot (2010), "On Over-fitting in Model Selection and Subsequent Selection Bias in Performance Evaluation", JMLR
- James, Witten, Hastie & Tibshirani, "An Introduction to Statistical Learning", ch. 5
Terakhir diperbarui