Dalam Random Forest, masing-masing pohon ditanam secara paralel pada sampel pendamping data yang unik. Karena setiap sampel boostrap diharapkan mengandung sekitar 63% dari pengamatan unik, ini menyisakan sekitar 37% dari pengamatan, yang dapat digunakan untuk menguji pohon.
Sekarang, tampaknya dalam Stochastic Gradient Boosting, ada juga perkiraan serupa dengan yang ada di RF:
Jika fraksi bag. diatur ke lebih besar dari 0 (0,5 direkomendasikan), gbm menghitung perkiraan out-of-bag dari peningkatan kinerja prediktif. Ini mengevaluasi pengurangan penyimpangan pada pengamatan yang tidak digunakan dalam memilih pohon regresi berikutnya.
Sumber: Ridgeway (2007) , bagian 3.3 (halaman 8).
Saya mengalami kesulitan memahami cara kerjanya / valid. Katakanlah saya menambahkan pohon dalam urutan. Saya menumbuhkan pohon ini pada subsampel acak dari kumpulan data asli. Saya bisa menguji pohon tunggal ini pada pengamatan yang tidak digunakan untuk menumbuhkannya. Sepakat. TETAPI , karena Boosting berurutan, saya agak menggunakan seluruh urutan pohon yang dibangun sejauh ini untuk memberikan prediksi bagi pengamatan yang ditinggalkan itu. Dan, ada kemungkinan besar bahwa banyak pohon sebelumnya telah melihat pengamatan ini. Jadi model ini tidak benar-benar diuji pada setiap putaran pada pengamatan yang tidak terlihat seperti dengan RF, bukan?
Jadi, mengapa ini disebut estimasi kesalahan "out-of-bag"? Bagi saya, sepertinya tidak "keluar" dari tas apa pun karena pengamatan sudah terlihat?
Jawaban:
Menjawab hanya sebagian (dan menambahkan pertanyaan baru ke pertanyaan Anda).
Implementasi gbm di R http://www.rdocumentation.org/packages/gbm/functions/gbm memiliki dua parameter untuk menyesuaikan beberapa out-of-bagness.
a)
train.fraction
akan menentukan proporsi data yang digunakan untuk melatih semua pohon dan dengan demikian 1-train.fraction
akan menjadi data OOB (out-of-bag) yang sebenarnya.b)
bag.fraction
akan menentukan proporsi data pelatihan yang akan digunakan dalam pembuatan pohon berikutnya dalam meningkatkan. Dengan demikian mungkin ada beberapa data yang tidak pernah digunakan untuk pembuatan pohon apa pun dan mereka dapat benar-benar digunakan sebagai data OOB (tetapi tidak mungkin, lihat pertanyaan di bawah)Yang membawa saya ke pertanyaan. Analisis Anda terhadap 37% data sebagai OOB hanya berlaku untuk SATU pohon. Tetapi kemungkinan akan ada data yang tidak digunakan di pohon APAPUN jauh lebih kecil - (harus di OOB untuk semua pohon - pemahaman saya adalah bahwa setiap pohon melakukan bootstrap sendiri). Jadi dalam RandomForest, sangat tidak mungkin ada OOB untuk menguji hutan. Namun implementasi randomForest di R (berdasarkan kode asli Breiman) banyak berbicara tentang OOB (misalnya data hasil dan lihat http://www.rdocumentation.org/packages/randomForest/functions/randomForest ) n t r e e0.37ntrees ntree
err.rate
confusion
Saya tidak tahu bagaimana menjawabnya (dan saya berterima kasih (+1) untuk mengajukan pertanyaan dan membuat saya sadar bahwa saya tidak memahami aspek acak Hutan). Solusi yang mungkin adalah bahwa hanya ada satu bootstrap - dan semua pohon dibangun darinya - tetapi sejauh yang saya tahu, bukan itu masalahnya.
sumber
train.fraction
parameter (yang hanya merupakan fitur dari fungsi gbm tetapi tidak ada dalam algoritma asli) tetapi benar-benar dari kenyataan bahwa hanya subsampel dari data digunakan untuk melatih setiap pohon secara berurutan, meninggalkan pengamatan (yang dapat digunakan untuk pengujian). Yang kembali ke pertanyaan awal saya. Bagaimana pengamatan ini dapat digunakan untuk pengujian karena mungkin telah terlihat berkali-kali oleh banyak pohon sebelumnya dalam urutan?Saya percaya mereka melakukan estimasi tas pada setiap langkah. Karena hasil dari semua langkah ditambahkan (dengan koefisien), kesalahan OOB juga dapat ditambahkan dengan koefisien yang sama.
sumber