Out of Bag Error membuat CV tidak perlu di Random Forests?

15

Saya cukup baru di hutan acak. Di masa lalu, saya selalu membandingkan akurasi fit vs tes terhadap fit vs kereta untuk mendeteksi overfitting apapun. Tapi saya baru baca di sini bahwa:

"Di hutan acak, tidak perlu untuk validasi silang atau set tes terpisah untuk mendapatkan estimasi yang tidak bias dari kesalahan set tes. Diperkirakan secara internal, selama menjalankan ..."

Paragraf kecil di atas dapat ditemukan di bawah Bagian estimasi kesalahan out-of-bag (oob) . Konsep Out of Bag Error ini benar-benar baru bagi saya dan yang sedikit membingungkan adalah bagaimana kesalahan OOB dalam model saya adalah 35% (atau akurasi 65%), namun, jika saya menerapkan validasi silang ke data saya (hanya penahanan sederhana metode) dan membandingkan kedua tes fit vs terhadap fit vs train saya mendapatkan akurasi 65% dan akurasi 96% masing-masing. Dalam pengalaman saya, ini dianggap overfitting tetapi OOB memiliki kesalahan 35% seperti kesalahan fit vs test saya . Apakah saya overfitting? Haruskah saya menggunakan validasi silang untuk memeriksa overfitting di hutan acak?

Singkatnya, saya tidak yakin apakah saya harus mempercayai OOB untuk mendapatkan kesalahan yang tidak bias dari kesalahan set tes ketika fit vs train saya menunjukkan bahwa saya overfitting!

jgozal
sumber
OOB dapat digunakan untuk menentukan parameter hiper. Selain itu, bagi saya, untuk memperkirakan kinerja suatu model, seseorang harus menggunakan validasi silang.
Metariat
@Matemattica ketika Anda berbicara tentang hyper-parameter apa sebenarnya yang Anda bicarakan? Maaf atas kurangnya pengetahuan saya dalam topik ini
jgozal
jumlah pohon dan fitur yang dipilih secara acak di setiap iteraction
Metariat
Saya tahu ini pertanyaan yang sangat berbeda, tetapi bagaimana Anda menentukan jumlah pohon dan sampel fitur di setiap iterasi dari kesalahan?
jgozal
1
Mungkin ini bisa membantu: stats.stackexchange.com/a/112052/78313 Secara umum saya belum pernah melihat perbedaan RF seperti itu!
Metariat

Jawaban:

21
  • kesalahan pelatihan (seperti pada predict(model, data=train)) biasanya tidak berguna. Kecuali Anda melakukan pemangkasan pohon (non-standar), itu tidak bisa jauh di atas 0 dengan desain algoritma . Hutan acak menggunakan agregasi bootstrap dari pohon keputusan, yang dikenal sangat buruk. Ini seperti kesalahan pelatihan untuk pengelompokan 1 tetangga terdekat.

  • 1e

    Jadi kesalahan out-of-bag tidak persis sama (pohon kurang untuk agregasi, lebih banyak salinan kasus pelatihan) sebagai kesalahan validasi silang, tetapi untuk tujuan praktis itu cukup dekat.

  • Apa yang masuk akal untuk dilihat untuk mendeteksi overfitting adalah membandingkan kesalahan out-of-bag dengan validasi eksternal. Namun, kecuali Anda tahu tentang pengelompokan dalam data Anda, kesalahan validasi silang "sederhana" akan rentan terhadap bias optimis yang sama dengan kesalahan out-of-bag: pemisahan dilakukan sesuai dengan prinsip yang sangat mirip.
    Anda harus membandingkan validasi out-of-bag atau cross dengan kesalahan untuk percobaan uji yang dirancang dengan baik untuk mendeteksi ini.

Cbeleites mendukung Monica
sumber
11

Kesalahan out-of-bag berguna, dan dapat menggantikan protokol estimasi kinerja lainnya (seperti cross-validation), tetapi harus digunakan dengan hati-hati.

Seperti validasi silang, estimasi kinerja menggunakan sampel out-of-bag dihitung menggunakan data yang tidak digunakan untuk pembelajaran. Jika data telah diproses dengan cara yang mentransfer informasi lintas sampel, estimasi akan (mungkin) menjadi bias. Contoh sederhana yang muncul di pikiran adalah melakukan pemilihan fitur atau hilangnya nilai yang hilang. Dalam kedua kasus (dan terutama untuk pemilihan fitur) data ditransformasikan menggunakan informasi dari seluruh set data, membiaskan estimasi.

George
sumber