Gagasan untuk menghasilkan persamaan prediksi untuk Hutan Acak

8

Saya telah membaca tulisan-tulisan berikut yang menjawab pertanyaan yang akan saya tanyakan:

Gunakan model Hutan Acak untuk membuat prediksi dari data sensor

Pohon keputusan untuk prediksi keluaran

Inilah yang telah saya lakukan sejauh ini: Saya membandingkan Regresi Logistik dengan Random Forests dan RF mengungguli Logistic. Sekarang peneliti medis yang bekerja dengan saya ingin mengubah hasil RF saya menjadi alat diagnostik medis. Sebagai contoh:

Jika Anda seorang pria Asia berusia antara 25 dan 35 tahun, memiliki Vitamin D di bawah xx dan Tekanan Darah di atas xx, Anda memiliki peluang 76% untuk terkena penyakit xxx.

Namun, RF tidak cocok untuk persamaan matematika sederhana (lihat tautan di atas). Jadi inilah pertanyaan saya: ide apa yang Anda miliki untuk menggunakan RF untuk mengembangkan alat diagnostik (tanpa harus mengekspor ratusan pohon).

Inilah beberapa ide saya:

  1. Gunakan RF untuk pemilihan variabel, kemudian gunakan Logistik (menggunakan semua interaksi yang mungkin) untuk membuat persamaan diagnostik.
  2. Entah bagaimana agregat hutan RF menjadi satu "mega-tree," yang entah bagaimana rata-rata membelah node di pohon.
  3. Mirip dengan # 2 dan # 1, gunakan RF untuk memilih variabel (misalkan total variabel m), lalu buat ratusan pohon klasifikasi, yang semuanya menggunakan setiap variabel m, lalu pilih satu pohon terbaik.

Ada ide lain? Juga, melakukan # 1 itu mudah, tetapi ada ide tentang bagaimana mengimplementasikan # 2 dan # 3?

dfife
sumber
Buat persamaan prediksi untuk setiap pohon (itu akan menjadi titik split sederhana), dan kemudian rata-rata prediksi dari setiap persamaan? Anda akan mendapatkan satu persamaan monster, tetapi itu akan sepenuhnya mewakili hutan.
Zach
Ide bagus @Zach. Tapi sayangnya saya berusaha menghindari "monster" apa pun.
dfife
1
Maukah Anda menyatakan kembali mengapa hutan acak menimbulkan masalah implementasi untuk Anda? Mereka tidak terlalu intensif kecuali Anda memiliki ribuan fitur. Anda dapat memangkasnya, tetapi tidak mungkin Anda akan memiliki bentuk analitik yang dapat dicerna.
Jessica Collins
@ Jacob - Masalahnya adalah bahwa RF memiliki banyak pohon keputusan. Saya ingin melaporkan formula tunggal (<panjang beberapa baris jika mungkin) yang memprediksi hampir seakurat RF. Karena saya menerbitkan karya saya kepada khalayak kecanggihan statistik sederhana, saya pikir mengekspor halaman demi halaman pohon akan sangat membatasi kemungkinan temuan saya diimplementasikan dalam pengaturan klinis.
dfife
Saya telah menulis sebuah fungsi untuk menghasilkan kode SQL untuk model hutan acak, lihat: gist.github.com/shanebutler
Shane

Jawaban:

6

Berikut ini beberapa pemikiran:

  1. Semua model kotak hitam mungkin diperiksa dengan cara tertentu. Anda dapat menghitung kepentingan variabel untuk setiap fitur misalnya atau Anda juga dapat merencanakan respons yang diprediksi dan yang sebenarnya untuk setiap fitur ( tautan );
  2. Anda mungkin berpikir tentang beberapa pemangkasan dari ansambel. Tidak semua pohon di hutan diperlukan dan Anda mungkin hanya menggunakan sedikit. Kertas: [Cari Hutan Acak Terkecil, Zhang]. Jika tidak, Google "pemangkasan ensemble", dan lihat "Metode Ensemble: Yayasan dan Algoritma" Bab 6 ;
  3. Anda dapat membangun model tunggal dengan pemilihan fitur seperti yang Anda katakan. Kalau tidak, Anda juga dapat mencoba menggunakan metode Domingos di [Pengambilan pengetahuan dari contoh melalui beberapa model] yang terdiri dari membangun dataset baru dengan prediksi kotak hitam dan membangun pohon keputusan di atasnya.
  4. Seperti disebutkan dalam ini jawaban Stack Exchange, model pohon mungkin tampak ditafsirkan tetapi rentan terhadap perubahan tinggi hanya karena gangguan kecil dari data pelatihan. Jadi, lebih baik menggunakan model kotak hitam. Tujuan akhir dari pengguna akhir adalah untuk memahami mengapa catatan baru diklasifikasikan sebagai kelas tertentu. Anda mungkin berpikir tentang beberapa fitur penting hanya untuk catatan tertentu.

Saya akan memilih 1. atau 2.

Simone
sumber
11

Saya harus berurusan dengan situasi yang sama menggunakan RF dalam pengaturan diagnostik, dengan para pemangku kepentingan yang terbiasa dengan algoritma yang bermuara pada persamaan tunggal yang dapat dibaca. Saya telah menemukan bahwa jika Anda mulai dengan menjelaskan pohon keputusan sederhana (di sini Anda dapat menggunakan persamaan), maka yang sangat rumit, dan kemudian menjelaskan kelemahan dari over-fitting, Anda mulai mendapatkan beberapa anggukan kepala. Setelah Anda menjelaskan bahwa banyak pohon kecil dapat mengurangi ketidakakuratan dengan ditumbuhkan secara berbeda ("acak"), dan bahwa mereka dapat dianggap sebagai suara ensemble atau rata-rata untuk menghindari pemasangan yang berlebihan tetapi masih diperhitungkan sebagai kasus tepi, Anda mendapatkan pemahaman. Berikut ini beberapa contoh slide yang saya gunakan dengan penerimaan yang baik:

Anda tidak dapat melarikan diri dari pohon di hutan, dan mereka yang memberikan algoritma begitu banyak daya prediksi dan ketahanan, sehingga jarang ada solusi yang lebih baik jika RF bekerja sangat baik untuk Anda. Yang akan membandingkan, seperti SVM (tergantung pada data Anda), akan sama rumitnya. Anda harus membuat mereka mengerti bahwa solusi yang baik akan menjadi semacam kotak hitam (untuk pengguna). Langkah terbaik Anda adalah membuat implementasi konsumsi yang tidak memerlukan upaya lebih dari yang dilakukan persamaan tunggal. Saya sudah sukses dengan membangun model RF di Python (via sklearn), dan membuat REST API server web sederhana yang memuat model itu ke dalam memori dan menerima variabel dalam POST untuk menampilkan prediksi. Anda juga dapat melakukan ini di Java atau R dengan sangat mudah, atau lewati API dan cukup buat biner / guci yang dapat dieksekusi yang menggunakan data sebagai argumen.

wwwslinger
sumber
Poin bagus! - Mengagregasi hasil RF ke dalam satu persamaan pasti akan kehilangan beberapa kelebihannya. Saya tidak memikirkan itu.
dfife
2
Kemungkinan besar, ya. Namun, menggunakan RF untuk menghitung tingkat kepentingan variabel untuk mengurangi dimensi, diikuti dengan metode yang lebih dikenal oleh audiens Anda, adalah kompromi yang umum. Penting untuk mengetahui bahwa variabel penting dalam RF umumnya dihitung berdasarkan kinerja dalam RF (angkat, kurangi kesalahan, dll.) Dan mungkin tidak semua memiliki bobot yang serupa dengan metode lain.
wwwslinger
2

Saya memiliki pengalaman menyebarkan hutan acak di lingkungan SQL Server via User Defined Function. Triknya adalah untuk mengubah IF-THEN ELSEaturan yang Anda dapatkan dari setiap pohon menjadi CASE-WHEN ENDatau Conditional Processingkonstruk lainnya (diakui saya telah menggunakan implementasi Bootstrap Forest JMP Pro - 500k baris kode SQL).

Sama sekali tidak ada alasan mengapa ini tidak dapat dicapai dengan menggunakan rattle Rpaket. Lihat randomForest2Rules& printRandomForestsfungsi dalam paket itu. Keduanya mengambil random forestobjek sebagai input dan mengunjungi setiap pohon di hutan dan mengeluarkan serangkaian IF-THEN ELSEaturan. Mengambil ini sebagai titik awal seharusnya tidak sulit mengubah logika ini ke dalam bahasa yang Anda inginkan secara otomatis, karena output dari fungsi yang disebutkan di atas adalah teks terstruktur.

Di atas, juga membuatnya penting untuk memutuskan no terkecil. pohon yang Anda butuhkan di hutan untuk membuat prediksi pada tingkat akurasi yang diinginkan (petunjuk: plot (rf.object) menunjukkan kepada Anda pada titik mana prediksi hutan tidak membaik meskipun menambahkan lebih banyak pohon.) untuk menjaga no. garis untuk mewakili hutan turun.


sumber