Apakah ada rumus atau aturan untuk menentukan sampSize yang benar untuk randomForest?


13

Saya bermain dengan randomForest dan menemukan bahwa secara umum meningkatkan sampSize mengarah ke kinerja yang lebih baik. Apakah ada aturan / formula / etc yang menyarankan apa yang seharusnya sampSize optimal atau apakah itu hal coba-coba? Saya kira cara lain untuk mengungkapkannya; apa risiko saya dari sampSize yang terlalu kecil atau terlalu besar (overfitting?)


Pertanyaan ini merujuk pada implementasi R hutan acak dalam randomForestpaket. Fungsi ini randomForestmemiliki parameter sampSizeyang dijelaskan dalam dokumentasi sebagai

Ukuran sampel untuk menggambar. Untuk klasifikasi, jika sampsize adalah vektor dari panjang jumlah strata, maka pengambilan sampel dikelompokkan berdasarkan strata, dan elemen-elemen sampsize menunjukkan angka yang akan diambil dari strata.

Jawaban:


21

Secara umum, ukuran sampel untuk hutan acak bertindak sebagai kontrol pada "tingkat keacakan" yang terlibat, dan dengan demikian sebagai cara menyesuaikan tradeoff varians-bias. Meningkatkan ukuran sampel menghasilkan hutan "kurang acak", dan juga cenderung overfit. Berkurangnya ukuran sampel meningkatkan variasi pada masing-masing pohon di dalam hutan, mencegah overfitting, tetapi biasanya dengan mengorbankan kinerja model. Efek samping yang bermanfaat adalah ukuran sampel yang lebih rendah mengurangi waktu yang dibutuhkan untuk melatih model.

Aturan praktis yang biasa untuk ukuran sampel terbaik adalah "sampel bootstrap", sampel dengan ukuran yang sama dengan dataset asli, tetapi dipilih dengan penggantian, sehingga beberapa baris tidak dipilih, dan yang lain dipilih lebih dari satu kali. Ini biasanya memberikan kinerja mendekati optimal, dan merupakan standar dalam implementasi R standar. Namun, Anda mungkin menemukan dalam aplikasi dunia nyata bahwa menyesuaikan ukuran sampel dapat menyebabkan peningkatan kinerja. Jika ragu, pilih ukuran sampel yang sesuai (dan parameter model lainnya) menggunakan validasi silang.


2

Saya menjalankan 4.500 hutan acak semalam dengan beberapa pengaturan parameter acak:

Masalah regresi di Ysignal = x1^2+sin(x2*pi) + x3 * x4 + x5 mana ada xsampel independen dari distribusi normal, sd = 1, rata-rata = 1

Ytotal = Ysignal + Yerror

dimana Yerror = rnorm(n.observations,sd=sd(Ysignal))*noise.factor

theoretical.explainable.variance"TEV" = var(Ysignal= / var(Ytotal)

randomForest.performance = explained.variance(OOB cross-validation) / TEV

dataset diambil dari masalah regresi dan menambahkan noise n.obsadalah angka acak antara 1000 dan 5000 n.extra.dummy.variablesantara 1 dan 20

ntree selalu 1000

sample_replacement selalu true

mtryadalah 5 hingga 25, dibatasi n.obs noise.factorantara 0 dan 9

samplesize.ratio angka acak antara 10% dan 100%, ukuran rasio setiap bootstrap

semua model dilatih seperti rfo = randomForest(x=X, y=Ytotal, <more args>)

itu randomForest.performance, kemampuannya untuk menjelaskan fraksi tertinggi dari TEVkenaikan secara umum ketika samplesizemenurunkan ketika TEVkurang dari 50% dan menurun ketika TEVlebih tinggi dari 50%.

Jadi, jika randomForest-modelfitlaporan Anda mis. 15% menjelaskan varian oleh OOB-CV, dan ini merupakan model yang tepat untuk Anda, maka Anda mungkin dapat mengubah kinerja sedikit lebih tinggi dengan menurunkan sampsizeke sepertiga dari jumlah pengamatan, yang diberikan ntree > 1000.

Semangat : Untuk data yang sangat bising, lebih baik mende-korelasikan pohon daripada mengurangi bias dengan menumbuhkan pohon berukuran maksimal.


1

Agar hutan acak dapat bekerja dengan baik dalam data baru seperti yang mereka lakukan dalam data pelatihan, ukuran sampel yang diperlukan sangat besar, seringkali 200 kali lipat jumlah fitur kandidat . Lihat di sini .


2
Dr. Harrell, saya pikir OP bertanya tentang ukuran pengambilan sampel ulang yang digunakan untuk membangun masing-masing pohon, daripada ukuran total kumpulan data.
Sycorax berkata Reinstate Monica
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.