まとめ
- Validasi silang bertingkat memisahkan pencarian hiperparameter dari evaluasi eksternal sehingga bias optimistis dapat dihindari.
- Bangun loop luar/dalam di scikit-learn dan lihat bagaimana kebocoran informasi dicegah.
- Ketahui kapan biaya ekstra layak dikeluarkan dan cara menyampaikan hasilnya.
1. Cara kerja #
- Loop luar — bagi dataset menggunakan
K_outer; setiap fold menjadi set uji yang tidak disentuh. - Loop dalam — jalankan validasi silang
K_innerpada data sisanya untuk menala hiperparameter (grid search, random search, optimisasi Bayesian, dll.). - Evaluasi — latih ulang dengan hiperparameter terbaik dan nilai pada fold luar yang ditahan tadi.
Ulangi prosedur ini sebanyak K_outer kali dan gabungkan skor luar (rata-rata ± standar deviasi atau interval kepercayaan).
2. Implementasi di Python #
from sklearn.model_selection import GridSearchCV, cross_val_score, KFold
from sklearn.ensemble import RandomForestClassifier
param_grid = {
"n_estimators": [100, 200],
"max_depth": [None, 10, 20],
}
inner_cv = KFold(n_splits=3, shuffle=True, random_state=0)
outer_cv = KFold(n_splits=5, shuffle=True, random_state=1)
grid = GridSearchCV(
RandomForestClassifier(random_state=0),
param_grid=param_grid,
cv=inner_cv,
scoring="roc_auc",
n_jobs=-1,
)
scores = cross_val_score(grid, X, y, cv=outer_cv, scoring="roc_auc", n_jobs=-1)
print("Nested CV ROC-AUC:", scores.mean(), "+/-", scores.std())
Memberikan objek pencarian (GridSearchCV, RandomizedSearchCV, dll.) ke cross_val_score sudah cukup untuk menjalankan validasi silang bertingkat.
3. Keunggulan #
- Mencegah kebocoran antara tuning dan evaluasi: menghindari bias optimistis ketika data yang sama dipakai untuk keduanya.
- Perbandingan model yang adil: tiap kandidat mendapat tuning sendiri, tetapi dievaluasi pada fold luar yang sama.
- Estimasi ketidakpastian: skor dari loop luar membentuk distribusi yang bisa dipakai menghitung variansi dan interval kepercayaan.
4. Hal yang perlu diperhatikan #
- Biaya komputasi tinggi — biaya latihan sebanding dengan
K_outer × K_inner; model berat bisa jadi tidak praktis. - Hati-hati dengan grid besar — ruang pencarian yang luas melipatgandakan waktu; pertimbangkan random search atau optimisasi Bayesian.
- Dataset sangat kecil — jika data terlalu sedikit, nested CV bisa menyisakan data latih yang minim; sesuaikan nilai
Katau gunakan CV berulang dengan hati-hati.
5. Tips praktis #
- Sangat berguna untuk dataset kecil: kebocoran lebih berbahaya ketika data minim, sehingga nested CV memberi nilai tambah.
- Fokus pada kandidat terbaik: jalankan nested CV hanya untuk model yang benar-benar menjanjikan agar waktu tetap terkendali.
- Laporkan konfigurasi: dokumentasikan jumlah fold, strategi pencarian, dan seed acak untuk menunjukkan kontrol risiko.
Ringkasan #
- Validasi silang bertingkat memberikan estimasi generalisasi yang tidak bias sambil tetap melakukan penalaan hiperparameter.
- Kombinasikan
GridSearchCV(atau metode lain) dengancross_val_score; siapkan kapasitas komputasinya. - Gunakan untuk evaluasi akhir model-model penting agar metrik yang dilaporkan mencerminkan performa dunia nyata.