Apakah pemodelan dengan Random Forests memerlukan validasi silang?

23

Sejauh yang saya lihat, pendapat cenderung berbeda tentang ini. Praktik terbaik tentu akan menentukan menggunakan validasi silang (terutama jika membandingkan RF dengan algoritma lain pada dataset yang sama). Di sisi lain, sumber asli menyatakan bahwa fakta kesalahan OOB dihitung selama pelatihan model cukup dari indikator kinerja set tes. Bahkan Trevor Hastie, dalam pembicaraan yang relatif baru mengatakan bahwa "Hutan Acak memberikan validasi silang gratis". Secara intuitif, ini masuk akal bagi saya, jika melatih dan mencoba meningkatkan model berbasis RF pada satu dataset.

Dapatkah seseorang tolong berikan argumen untuk dan melawan perlunya validasi silang dengan hutan acak?

neuron
sumber
Pertanyaan yang secara eksplisit mencari pendapat umumnya tidak disarankan di situs penukaran tumpukan, datasetcience.stackexchange.com/help/dont-ask , mungkin Anda dapat menguraikan kembali pertanyaan tersebut untuk meminta contoh dalam mendukung pengalaman pengguna? Atau mencari dasar teoretis untuk satu posisi atau yang lain.
image_doctor
2
Random Forests lebih kecil kemungkinannya untuk menyesuaikan algoritma ML lainnya, tetapi validasi silang (atau bentuk evaluasi penunda alternatif) masih harus direkomendasikan.
David
Saya pikir Anda sholud mengajukan pertanyaan itu pada ahli statistik SO: stats.stackexchange.com
Marcin Kosiński
Saya ingin @David kedua ... dengan satu atau lain cara, Anda akan melakukan validasi silang.
Bisakah Anda memberikan referensi untuk pernyataan yang diklaim oleh Trevor Hastie?
tipanverella

Jawaban:

7

Secara default, random forest mengambil 2/3 data untuk pelatihan dan sisanya untuk pengujian regresi dan hampir 70% data untuk pelatihan dan sisanya untuk pengujian selama klasifikasi. Dengan prinsip karena mengacak pemilihan variabel selama setiap pohon split itu tidak rentan terhadap pakaian tidak seperti model lain.Namun jika Anda ingin menggunakan CV menggunakan nfolds di sklearn Anda masih dapat menggunakan konsep hold out set seperti oob_score (out of bag) = True yang menunjukkan kinerja model dengan atau tanpa menggunakan CV. Jadi singkatnya menggunakan oob_score = Benar dengan atau tanpa nfolds sendiri dapat mengetahui apakah menggunakan CV baik untuk data Anda. Umumnya jika target Anda mengikuti distribusi tertentu dan Anda tidak memiliki banyak data observasi dengan Anda maka menggunakan CV tidak akan memberikan banyak perbaikan.

0xF
sumber
5

Satu perbedaan utama adalah bahwa validasi silang memastikan semua sampel akan muncul dalam pelatihan dan set tes, sehingga 100% data Anda digunakan di beberapa titik untuk pelatihan dan untuk pengujian.

Bergantung pada ukuran dataset Anda, bootstrap, pengambilan sampel dengan penggantian, yang terjadi di hutan acak tidak akan menjamin perpecahan yang dilihat pohon akan berisi semua instance. Jika Anda memiliki cukup pohon di hutan Anda, perkiraan OOB harus secara asimptotik bertemu ke nilai estimasi OOB terbaik.

Keakuratan kedua metode pada tingkat tertentu tergantung pada data sehingga mungkin lebih bijaksana untuk membandingkan kedua metode pada data tertentu yang Anda miliki di depan Anda dan melihat apakah estimasi CV dan RF OOB memberikan nilai yang sama.

Jika tidak, maka ada baiknya mengeksplorasi estimasi lebih lanjut dari tingkat kesalahan sebenarnya, mungkin dengan katup K yang jauh lebih tinggi di CV.

image_doctor
sumber
3

Saya melakukan beberapa tes pada kumpulan data 50k baris, menggunakan sklearn.RandomForestRegressor.

Saya mendapatkan skor yang sangat berbeda - Saya menggunakan gini yang dinormalisasi untuk metrik - tergantung pada apakah saya menggunakan rf.oob_prediction_(0,2927) atau CV KFold (0,3258 untuk 7 lipatan dan 0,3236 untuk 3 lipatan).

Dengan itu, muncul poin Anda tentang "terutama jika membandingkan RF dengan algoritma lain pada dataset yang sama" adalah pertimbangan kuat untuk menggunakan CV manual daripada mengandalkan prediksi OOB.

inversi
sumber