Ini sebagian merupakan respons terhadap @Sashikanth Dareddy (karena tidak akan cocok dengan komentar) dan sebagian lagi merupakan respons terhadap pos asli.
Ingat apa itu interval prediksi, itu adalah interval atau serangkaian nilai di mana kami memperkirakan bahwa pengamatan di masa depan akan terletak. Umumnya interval prediksi memiliki 2 bagian utama yang menentukan lebarnya, bagian yang mewakili ketidakpastian tentang prediksi rata-rata (atau parameter lain) ini adalah bagian interval kepercayaan, dan bagian yang mewakili variabilitas pengamatan individu di sekitar rata-rata itu. Interval kepercayaan cukup kuat karena Teorema Limit Sentral dan dalam kasus hutan acak, bootstrap juga membantu. Tetapi interval prediksi sepenuhnya tergantung pada asumsi tentang bagaimana data didistribusikan mengingat variabel prediktor, CLT dan bootstrap tidak berpengaruh pada bagian itu.
Interval prediksi harus lebih luas di mana interval kepercayaan yang sesuai juga akan lebih luas. Hal lain yang akan mempengaruhi lebar interval prediksi adalah asumsi tentang varians yang sama atau tidak, ini harus berasal dari pengetahuan peneliti, bukan model hutan acak.
Interval prediksi tidak masuk akal untuk hasil kategoris (Anda bisa melakukan set prediksi daripada interval, tetapi sebagian besar waktu itu mungkin tidak akan sangat informatif).
Kita bisa melihat beberapa masalah di sekitar interval prediksi dengan mensimulasikan data di mana kita tahu kebenaran sebenarnya. Pertimbangkan data berikut:
set.seed(1)
x1 <- rep(0:1, each=500)
x2 <- rep(0:1, each=250, length=1000)
y <- 10 + 5*x1 + 10*x2 - 3*x1*x2 + rnorm(1000)
Data khusus ini mengikuti asumsi untuk regresi linier dan cukup lurus ke depan untuk kesesuaian hutan acak. Kita tahu dari model "benar" bahwa ketika kedua prediktor adalah 0 yang berarti 10, kita juga tahu bahwa masing-masing titik mengikuti distribusi normal dengan standar deviasi 1. Ini berarti bahwa interval prediksi 95% berdasarkan pada pengetahuan sempurna untuk titik-titik ini adalah dari 8 hingga 12 (sebenarnya 8,04 hingga 11,96, tetapi pembulatan membuatnya lebih sederhana). Setiap perkiraan interval prediksi harus lebih lebar dari ini (tidak memiliki informasi yang sempurna menambah lebar untuk mengkompensasi) dan termasuk kisaran ini.
Mari kita lihat interval dari regresi:
fit1 <- lm(y ~ x1 * x2)
newdat <- expand.grid(x1=0:1, x2=0:1)
(pred.lm.ci <- predict(fit1, newdat, interval='confidence'))
# fit lwr upr
# 1 10.02217 9.893664 10.15067
# 2 14.90927 14.780765 15.03778
# 3 20.02312 19.894613 20.15162
# 4 21.99885 21.870343 22.12735
(pred.lm.pi <- predict(fit1, newdat, interval='prediction'))
# fit lwr upr
# 1 10.02217 7.98626 12.05808
# 2 14.90927 12.87336 16.94518
# 3 20.02312 17.98721 22.05903
# 4 21.99885 19.96294 24.03476
Kita dapat melihat ada beberapa ketidakpastian dalam estimasi rata-rata (interval kepercayaan) dan itu memberi kita interval prediksi yang lebih luas (tetapi termasuk) kisaran 8 hingga 12.
Sekarang mari kita lihat interval berdasarkan prediksi individu dari masing-masing pohon (kita harus berharap ini menjadi lebih luas karena hutan acak tidak mendapat manfaat dari asumsi (yang kita tahu benar untuk data ini) yang dilakukan oleh regresi linier):
library(randomForest)
fit2 <- randomForest(y ~ x1 + x2, ntree=1001)
pred.rf <- predict(fit2, newdat, predict.all=TRUE)
pred.rf.int <- apply(pred.rf$individual, 1, function(x) {
c(mean(x) + c(-1, 1) * sd(x),
quantile(x, c(0.025, 0.975)))
})
t(pred.rf.int)
# 2.5% 97.5%
# 1 9.785533 13.88629 9.920507 15.28662
# 2 13.017484 17.22297 12.330821 18.65796
# 3 16.764298 21.40525 14.749296 21.09071
# 4 19.494116 22.33632 18.245580 22.09904
Interval lebih lebar daripada interval prediksi regresi, tetapi mereka tidak mencakup seluruh rentang. Mereka memang memasukkan nilai-nilai sebenarnya dan karena itu mungkin sah sebagai interval kepercayaan, tetapi mereka hanya memprediksi di mana rata-rata (nilai prediksi) berada, tidak ada bagian tambahan untuk distribusi di sekitar rata-rata itu. Untuk kasus pertama di mana x1 dan x2 keduanya 0 interval tidak pergi di bawah 9,7, ini sangat berbeda dari interval prediksi yang sebenarnya turun ke 8. Jika kita menghasilkan titik data baru maka akan ada beberapa titik (lebih banyak lagi dari 5%) yang berada dalam interval benar dan regresi, tetapi jangan jatuh dalam interval hutan acak.
Untuk menghasilkan interval prediksi, Anda perlu membuat beberapa asumsi kuat tentang distribusi titik-titik individual di sekitar rata-rata yang diprediksi, maka Anda bisa mengambil prediksi dari masing-masing pohon (potongan interval kepercayaan bootstrap) kemudian menghasilkan nilai acak dari asumsi distribusi dengan pusat itu. Kuantil untuk potongan-potongan yang dihasilkan dapat membentuk interval prediksi (tapi saya masih akan mengujinya, Anda mungkin perlu mengulangi proses beberapa kali lebih banyak dan menggabungkannya).
Berikut adalah contoh melakukan ini dengan menambahkan penyimpangan normal (karena kami tahu data asli menggunakan normal) ke prediksi dengan standar deviasi berdasarkan pada perkiraan UMK dari pohon itu:
pred.rf.int2 <- sapply(1:4, function(i) {
tmp <- pred.rf$individual[i, ] + rnorm(1001, 0, sqrt(fit2$mse))
quantile(tmp, c(0.025, 0.975))
})
t(pred.rf.int2)
# 2.5% 97.5%
# [1,] 7.351609 17.31065
# [2,] 10.386273 20.23700
# [3,] 13.004428 23.55154
# [4,] 16.344504 24.35970
Interval ini berisi interval berdasarkan pengetahuan yang sempurna, jadi terlihat masuk akal. Tetapi, mereka akan sangat bergantung pada asumsi yang dibuat (asumsi tersebut valid di sini karena kami menggunakan pengetahuan tentang bagaimana data disimulasikan, mereka mungkin tidak valid dalam kasus data nyata). Saya masih akan mengulangi simulasi beberapa kali untuk data yang lebih mirip data asli Anda (tetapi disimulasikan sehingga Anda tahu kebenarannya) beberapa kali sebelum sepenuhnya mempercayai metode ini.
score
fungsi untuk mengevaluasi kinerja. Karena output didasarkan pada suara terbanyak dari pohon di hutan, dalam hal klasifikasi itu akan memberi Anda kemungkinan hasil ini benar, berdasarkan distribusi suara. Saya tidak yakin tentang regresi .... Pustaka mana yang Anda gunakan?