Random Forest: bagaimana jika saya tahu variabel itu penting

12

Pemahaman saya adalah picks hutan random acak mtry variabel untuk membangun setiap pohon keputusan. Jadi jika mtry = ncol / 3 maka masing-masing variabel akan digunakan rata-rata di 1/3 dari pohon. Dan 2/3 pohon tidak akan menggunakannya.

Tetapi bagaimana jika saya tahu bahwa satu variabel mungkin sangat penting, apakah lebih baik secara manual meningkatkan kemungkinan bahwa variabel ini diambil di setiap pohon? Apakah layak dengan paket randomForest di R?

Benoit_Plante
sumber

Jawaban:

6

Perhatikan mtry ituadalah jumlah variabel yang diambil secara acak sebagai kandidat pada setiap pemisahan. Dan dari kandidat ini yang terbaik dipilih untuk melakukan pemisahan. Dengan demikian proporsi yang Anda sebutkan tidak puas sepenuhnya. Variabel yang lebih penting muncul lebih sering, dan kurang penting - lebih jarang. Jadi jika variabel benar-benar sangat penting, maka ada kemungkinan besar bahwa itu akan diambil di pohon dan Anda tidak perlu koreksi manual. Tetapi kadang-kadang (jarang) ada kebutuhan untuk memaksa kehadiran beberapa variabel (terlepas dari kemungkinan pentingnya) dalam regresi. Sejauh yang saya tahu paket R hutan acak tidak mendukung kemungkinan seperti itu. Tetapi jika variabel ini tidak memiliki hubungan timbal balik dengan yang lain, Anda dapat membuat regresi biasa dengan variabel ini sebagai istilah tunggal dan kemudian menjalankan regresi hutan acak pada residu dari regresi biasa ini. Jika Anda masih ingin memperbaiki kemungkinan memilih variabel yang ditentukan sebelumnya, maka modifikasi kode sumber dengan kompilasi berikutnya adalah pilihan Anda.

O_Devinyak
sumber
2
Jika Anda membutuhkan n pohon untuk mendapatkan perkiraan yang layak untuk fungsi target Anda, tetapi Anda mencari variabel penting, maka Anda dapat mengatur sesuatu seperti 5 * n atau 10 * n pohon di hutan. Mereka akan bertemu lebih banyak, bukan pada "kesalahan pas" tetapi pada perubahan dalam variabel penting.
EngrStudent
5

Sejak Juni 2015, algoritma RF baru yang menjanjikan pada R-CRAN yang disebut 'ranger' memiliki fitur ini. Diubah dengan, split.select.weights : "Vektor numerik dengan bobot antara 0 dan 1, mewakili probabilitas untuk memilih variabel yang akan dipisahkan."

Soren Havelund Welling
sumber