Bias ketergantungan-distribusi-respons dalam regresi hutan acak


9

Saya menggunakan paket randomForest di R (R versi 2.13.1, randomForest versi 4.6-2) untuk regresi dan melihat bias yang signifikan dalam hasil saya: kesalahan prediksi tergantung pada nilai variabel respon. Nilai tinggi di bawah prediksi dan nilai rendah di atas prediksi. Pada awalnya saya menduga ini adalah konsekuensi dari data saya, tetapi contoh sederhana berikut menunjukkan bahwa ini melekat pada algoritma hutan acak:

n = 1000; 
x1 = rnorm(n, mean = 0, sd = 1)
response = x1
predictors = data.frame(x1=x1) 
rf = randomForest(x=predictors, y=response)
error = response-predict(rf, predictors)
plot(x1, error)

Saya menduga bias tergantung pada distribusi respon, misalnya, jika x1didistribusikan secara seragam, tidak ada bias; jika x1didistribusikan secara eksponensial, biasnya sepihak. Pada dasarnya, nilai-nilai respons di ekor distribusi normal adalah outlier. Tidak mengherankan bahwa model akan mengalami kesulitan memprediksi outlier. Dalam kasus randomForest, nilai respons dengan magnitudo ekstrem dari ekor distribusi lebih kecil kemungkinannya berakhir di daun terminal dan efeknya akan terhapus dalam rata-rata ensembel.

Perhatikan bahwa saya mencoba menangkap efek ini dalam contoh sebelumnya, "RandomForest in R linear regression tails mtry". Ini adalah contoh yang buruk. Jika bias dalam contoh di atas benar-benar melekat pada algoritma, maka bias koreksi dapat dirumuskan mengingat distribusi respons yang coba diprediksi, sehingga menghasilkan prediksi yang lebih akurat.

Apakah metode berbasis pohon, seperti hutan acak, tunduk pada bias distribusi respons? Jika demikian, apakah ini sebelumnya diketahui oleh komunitas statistik dan bagaimana biasanya dikoreksi (misalnya model kedua yang menggunakan residu dari model bias sebagai input)?

Koreksi dari bias yang bergantung pada respons sulit karena, pada dasarnya, responsnya tidak diketahui. Sayangnya, perkiraan / respons yang diprediksi tidak sering berbagi hubungan yang sama dengan bias.


Saya telah merenungkan pertanyaan yang sama ini selama hampir 12 bulan. Lihat stats.stackexchange.com/questions/21530/… dan kaggle.com/forums/t/1106/random-forests-newbie-question . Saya setuju bahwa masalahnya adalah outlier tidak diwakili dengan baik oleh rata-rata yang digunakan sebagai prediksi pada setiap node. Penyesuaian prediksi atau model-in-node tampak seperti pendekatan yang masuk akal, tetapi tidak yakin apa pendekatan standarnya.
redcalx

Jawaban:


4

Ini sempurna seperti yang Anda duga - fakta bahwa node daun mengandung cara pada beberapa set objek membuat model pohon regresi memperketat distribusi respons dan membuat ekstrapolasi tidak mungkin. Ensemble tentu saja tidak membantu dengan itu dan malah memperburuk situasi.

Solusi naif (dan berbahaya karena overfitting) adalah membungkus model dalam semacam regresi klasik yang akan mengubah skala respons terhadap distribusi yang diinginkan.

Solusi yang lebih baik adalah salah satu model tree model-in-leaf, seperti misalnya MOB dalam paket partai. Idenya di sini adalah bahwa partisi ruang fitur harus diakhiri ketika masalahnya disederhanakan bukan ke nilai sederhana (seperti pada pohon biasa) tetapi ke hubungan sederhana (katakanlah linear) antara respons dan beberapa prediktor. Relasi seperti itu sekarang dapat diselesaikan dengan memasang beberapa model sederhana yang tidak akan mengganggu distribusi atau memangkas nilai-nilai ekstrem dan akan dapat melakukan ekstrapolasi.


Mengapa membatalkan distribusi distribusi menyebabkan overfitting? Hubungan pemesanan antara dua output hutan akan mempertahankan urutan yang sama setelah mendorongnya melalui polinomial fit untuk mengubah skala, jadi pengambilan keputusan dari model tidak akan terpengaruh jika Anda mendasarkan keputusan Anda pada kuantil output.
Jase

R2

3

Saya memiliki masalah yang sama persis dengan RF Bersyarat diakses melalui paket rattle. Saya mengirim email kepada Graham Williams (penulis rattle) tentang hal itu, yang dengan ramah meneruskan pertanyaan saya kepada para penulis hutan, yang merespons dan menyarankan bermain dengan dua parameter yang tampaknya tidak dirujuk di mana pun dalam dokumentasi CRF, tetapi yang tampaknya tetap menjawab masalahnya, yaitu minplit = 2 dan minbucket = 1.


minsplit, Saya kira maksud Anda
smci

2

Anda harus memperkirakan nilai optimal mtry dan sampsize dengan meminimalkan "kesalahan validasi silang" sampel di atas kisi-kisi parameter mtry, sampsize yang berbeda, untuk setiap variabel respons yang sesuai untuk serangkaian fitur tetap dan kemudian membuat kesimpulan- dalam hal hasil. Anda dapat membuat kombinasi parameter kisi menggunakan Expand.grid.


2
Ini adalah saran yang bagus untuk membangun model, secara umum parameter yang dioptimalkan akan menghasilkan prediksi yang lebih akurat. Namun, dalam hal ini bias ada terlepas dari penyetelan, sejauh yang saya tahu. Hanya ada satu prediktor sehingga mtry harus 1. Setiap ukuran sampel kurang dari n hanya berfungsi untuk memperbesar bias, dan meng-nodalkan memiliki sedikit efek.
rumbleB
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.