Saya perhatikan ketika membangun model regresi hutan acak, setidaknya dalam R
, nilai prediksi tidak pernah melebihi nilai maksimum dari variabel target yang terlihat dalam data pelatihan. Sebagai contoh, lihat kode di bawah ini. Saya sedang membangun model regresi untuk memprediksi mpg
berdasarkan mtcars
data. Saya membuat OLS dan model hutan acak, dan menggunakannya untuk memprediksi mpg
mobil hipotetis yang seharusnya memiliki penghematan bahan bakar yang sangat baik. OLS memprediksi mpg
hutan tinggi , seperti yang diharapkan, tetapi hutan acak tidak. Saya perhatikan ini dalam model yang lebih kompleks juga. Kenapa ini?
> library(datasets)
> library(randomForest)
>
> data(mtcars)
> max(mtcars$mpg)
[1] 33.9
>
> set.seed(2)
> fit1 <- lm(mpg~., data=mtcars) #OLS fit
> fit2 <- randomForest(mpg~., data=mtcars) #random forest fit
>
> #Hypothetical car that should have very high mpg
> hypCar <- data.frame(cyl=4, disp=50, hp=40, drat=5.5, wt=1, qsec=24, vs=1, am=1, gear=4, carb=1)
>
> predict(fit1, hypCar) #OLS predicts higher mpg than max(mtcars$mpg)
1
37.2441
> predict(fit2, hypCar) #RF does not predict higher mpg than max(mtcars$mpg)
1
30.78899
r
random-forest
Gaurav Bansal
sumber
sumber
Jawaban:
Seperti yang telah disebutkan di jawaban sebelumnya, hutan acak untuk pohon regresi / regresi tidak menghasilkan prediksi yang diharapkan untuk titik data di luar ruang lingkup rentang data pelatihan karena mereka tidak dapat memperkirakan (well). Pohon regresi terdiri dari hierarki node, di mana setiap node menentukan tes yang akan dilakukan pada nilai atribut dan setiap node daun (terminal) menentukan aturan untuk menghitung output yang diprediksi. Dalam kasus Anda, pengamatan pengamatan mengalir melalui pohon ke simpul daun yang menyatakan, misalnya, "jika x> 335, maka y = 15", yang kemudian dirata-ratakan oleh hutan acak.
Berikut ini adalah skrip R yang memvisualisasikan situasi dengan hutan acak dan regresi linier. Dalam kasus hutan acak, prediksi konstan untuk menguji titik data yang baik di bawah nilai x data pelatihan terendah atau di atas nilai x data pelatihan tertinggi.
sumber
Tidak ada cara untuk Hutan Acak untuk memperkirakan seperti yang dilakukan OLS. Alasannya sederhana: prediksi dari Hutan Acak dilakukan melalui rata-rata hasil yang diperoleh di beberapa pohon. Pohon-pohon itu sendiri mengeluarkan nilai rata-rata sampel di setiap simpul terminal, yaitu daun. Tidak mungkin hasilnya berada di luar rentang data pelatihan, karena rata-rata selalu berada di dalam kisaran konstituennya.
Dengan kata lain, rata-rata tidak mungkin menjadi lebih besar (atau lebih rendah) daripada setiap sampel, dan regresi Random Forests didasarkan pada rata-rata.
sumber
Pohon Keputusan / Forrest Acak tidak dapat mengekstrapolasi di luar data pelatihan. Dan meskipun OLS dapat melakukan ini, prediksi seperti itu harus dilihat dengan hati-hati; karena pola yang teridentifikasi mungkin tidak berlanjut di luar kisaran yang diamati.
sumber