Jika saya menjalankan randomForest
model, saya kemudian dapat membuat prediksi berdasarkan model. Apakah ada cara untuk mendapatkan interval prediksi dari masing-masing prediksi sehingga saya tahu seberapa "yakin" model dari jawabannya. Jika ini mungkin, apakah hanya didasarkan pada variabilitas variabel dependen untuk seluruh model atau akankah ada interval yang lebih luas dan sempit tergantung pada pohon keputusan tertentu yang diikuti untuk prediksi tertentu?
r
confidence-interval
random-forest
Dean MacGregor
sumber
sumber
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?Jawaban:
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:
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:
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):
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:
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.
sumber
Saya menyadari ini adalah posting lama tetapi saya telah menjalankan beberapa simulasi tentang ini dan berpikir saya akan membagikan temuan saya.
@GregSnow membuat posting yang sangat rinci tentang ini, tetapi saya percaya ketika menghitung interval menggunakan prediksi dari pohon individu dia sedang melihat yang hanya interval prediksi 70%. Kita perlu melihat untuk mendapatkan interval prediksi 95%.[ μ + 1,96 ∗ σ , μ - 1,96 ∗ σ ][μ+σ,μ−σ] [μ+1.96∗σ,μ−1.96∗σ]
Membuat perubahan ini ke kode @GregSnow, kami mendapatkan hasil berikut
Sekarang, membandingkan ini dengan interval yang dihasilkan dengan menambahkan deviasi normal ke prediksi dengan deviasi standar seperti yang disarankan oleh MSE seperti @GregSnow.
Interval dari kedua pendekatan ini sekarang terlihat sangat dekat. Merencanakan interval prediksi untuk tiga pendekatan terhadap distribusi kesalahan dalam kasus ini terlihat seperti di bawah ini
Sekarang, mari kita jalankan kembali simulasi tetapi kali ini meningkatkan varian istilah kesalahan. Jika perhitungan interval prediksi kami baik, kami harus berakhir dengan interval yang lebih luas daripada yang kami dapatkan di atas.
Sekarang, ini memperjelas bahwa penghitungan interval prediksi dengan pendekatan kedua jauh lebih akurat dan menghasilkan hasil yang cukup dekat dengan interval prediksi dari regresi linier.
Mengambil asumsi normalitas, ada cara lain yang lebih mudah untuk menghitung interval prediksi dari hutan acak. Dari masing-masing pohon kami memiliki nilai prediksi ( ) dan juga kesalahan kuadrat rata-rata ( ). Jadi prediksi dari masing-masing pohon dapat dianggap sebagai . Dengan menggunakan properti distribusi normal prediksi kami dari hutan acak akan memiliki distribusi . Menerapkan ini pada contoh yang kita diskusikan di atas, kita mendapatkan hasil di bawah ini M S E i N ( μ i , R M S E i ) N ( ∑ μ i / n , ∑ R M S E i / n )μi MSEi N(μi,RMSEi) N(∑μi/n,∑RMSEi/n)
Penghitungan ini sangat baik dengan interval model linier dan juga pendekatan yang disarankan @GregSnow. Tetapi perhatikan bahwa asumsi mendasar dalam semua metode yang kami diskusikan adalah bahwa kesalahan mengikuti distribusi Normal.
sumber
Jika Anda menggunakan R, Anda dapat dengan mudah menghasilkan interval prediksi untuk prediksi regresi hutan acak: Cukup gunakan paket
quantregForest
(tersedia di CRAN ) dan baca makalah oleh N. Meinshausen tentang bagaimana kuantil kondisional dapat disimpulkan dengan hutan regresi kuantil dan bagaimana mereka dapat digunakan untuk membangun interval prediksi. Sangat informatif bahkan jika Anda tidak bekerja dengan R!sumber
Ini mudah diselesaikan dengan randomForest.
Pertama biarkan saya berurusan dengan tugas regresi (dengan asumsi hutan Anda memiliki 1.000 pohon). Dalam
predict
fungsi ini, Anda memiliki opsi untuk mengembalikan hasil dari setiap pohon. Ini berarti bahwa Anda akan menerima output 1000 kolom. Kita dapat mengambil rata-rata 1000 kolom untuk setiap baris - ini adalah output RF reguler yang akan dihasilkan dengan cara apa pun. Sekarang untuk mendapatkan interval prediksi katakanlah +/- 2 std. penyimpangan yang perlu Anda lakukan adalah, untuk setiap baris, dari 1000 nilai, hitung +/- 2 std. penyimpangan dan membuat ini batas atas dan bawah Anda pada prediksi Anda.Kedua, dalam kasus klasifikasi, ingatlah bahwa setiap pohon menghasilkan 1 atau 0 (secara default) dan jumlah dari semua 1000 pohon yang dibagi dengan 1000 memberikan kemungkinan kelas (dalam kasus klasifikasi biner). Untuk menempatkan interval prediksi pada probabilitas, Anda perlu memodifikasi min. opsi nodesize (lihat dokumentasi RandomForest untuk nama persis opsi itu) setelah Anda menetapkan nilai >> 1 maka pohon individu akan menampilkan angka antara 1 dan 0. Sekarang, dari sini Anda dapat mengulangi proses yang sama seperti yang dijelaskan di atas untuk tugas regresi.
Saya harap itu masuk akal.
sumber
Saya sudah mencoba beberapa opsi (ini semua WIP):
Saya benar-benar membuat variabel dependen masalah klasifikasi dengan hasil sebagai rentang, bukan nilai tunggal. Hasil yang saya dapatkan buruk, dibandingkan dengan menggunakan nilai polos. Saya menyerah dengan pendekatan ini.
Saya kemudian mengonversinya menjadi beberapa masalah klasifikasi, yang masing-masing merupakan batas bawah untuk kisaran (hasil model adalah apakah akan melintasi batas bawah atau tidak) dan kemudian menjalankan semua model (~ 20), dan kemudian menggabungkan hasilnya untuk mendapatkan jawaban akhir sebagai rentang. Ini berfungsi lebih baik dari 1 di atas tetapi tidak sebagus yang saya butuhkan. Saya masih bekerja untuk meningkatkan pendekatan ini.
Saya menggunakan perkiraan OOB dan tinggalkan satu untuk memutuskan seberapa baik / buruk model saya.
sumber
Masalah membangun interval prediksi untuk prediksi hutan acak telah dibahas dalam makalah berikut:
Zhang, Haozhe, Joshua Zimmerman, Dan Nettleton, dan Daniel J. Nordman. "Interval Prediksi Hutan Acak." The American Statistician, 2019.
Paket R "rfinterval" adalah implementasinya yang tersedia di CRAN.
Instalasi
Untuk menginstal rfinterval paket R :
Pemakaian
Mulai cepat:
Contoh data:
sumber