Bermain-main dengan Boston Housing Dataset dan RandomForestRegressor
(parameter w / default) di scikit-belajar, saya melihat sesuatu yang aneh: skor validasi silang menurun ketika saya meningkatkan jumlah lipatan di atas 10. Strategi validasi silang saya adalah sebagai berikut:
cv_met = ShuffleSplit(n_splits=k, test_size=1/k)
scores = cross_val_score(est, X, y, cv=cv_met)
... di mana num_cvs
bervariasi. Saya mengatur test_size
untuk 1/num_cvs
mencerminkan perilaku kereta / uji split ukuran k-fold CV. Pada dasarnya, saya menginginkan sesuatu seperti CV k-fold, tetapi saya juga membutuhkan keacakan (karenanya ShuffleSplit).
Percobaan ini diulang beberapa kali, dan skor rata-rata dan standar deviasi kemudian diplot.
(Perhatikan bahwa ukuran k
ditunjukkan oleh luas lingkaran; standar deviasi ada pada sumbu Y.)
Secara konsisten, peningkatan k
(dari 2 menjadi 44) akan menghasilkan peningkatan skor singkat, diikuti dengan penurunan yang stabil seiring k
peningkatan lebih lanjut (melampaui ~ 10 kali lipat)! Jika ada, saya akan mengharapkan lebih banyak data pelatihan untuk mengarah pada peningkatan skor kecil!
Memperbarui
Mengubah kriteria penilaian berarti kesalahan mutlak menghasilkan perilaku yang saya harapkan: skor meningkat dengan peningkatan jumlah lipatan dalam K-fold CV, daripada mendekati 0 (seperti dengan default, ' r2 '). Pertanyaannya tetap mengapa metrik penilaian standar menghasilkan kinerja yang buruk di kedua metrik rata-rata dan STD untuk peningkatan jumlah lipatan.
Jawaban:
skor r ^ 2 tidak terdefinisi ketika diterapkan pada sampel tunggal (mis. CV cuti-keluar-keluar).
r ^ 2 tidak baik untuk evaluasi set tes kecil: ketika itu digunakan untuk mengevaluasi set tes yang cukup-kecil, skor bisa jauh ke negatif meskipun prediksi yang baik.
Diberikan sampel tunggal, prediksi yang baik untuk domain tertentu mungkin tampak mengerikan:
Tambah ukuran set tes (menjaga akurasi prediksi tetap sama), dan tiba-tiba skor r ^ 2 tampak hampir sempurna:
Diambil ke ekstrim lain, jika ukuran tes adalah 2 sampel, dan kami kebetulan mengevaluasi 2 sampel yang berdekatan satu sama lain secara kebetulan, ini akan memiliki dampak besar pada skor r ^ 2, bahkan jika prediksi cukup baik :
sumber