Pilihan fitur dengan Hutan Acak

16

Saya memiliki dataset dengan sebagian besar variabel keuangan (120 fitur, 4k contoh) yang sebagian besar sangat berkorelasi dan sangat bising (indikator teknis, misalnya) jadi saya ingin memilih sekitar maks 20-30 untuk digunakan nanti dengan pelatihan model (klasifikasi biner - bertambah berkurang).

Saya sedang berpikir tentang menggunakan hutan acak untuk peringkat fitur. Apakah ide yang baik untuk menggunakannya secara rekursif? Sebagai contoh, katakanlah di babak pertama saya menjatuhkan 20% terburuk, kedua juga dan seterusnya sampai saya mendapatkan jumlah fitur yang diinginkan. Haruskah saya menggunakan validasi silang dengan RF? (Ini intuitif bagi saya untuk tidak menggunakan CV karena sudah cukup banyak yang dilakukan RF.)

Juga jika saya menggunakan hutan acak haruskah saya menggunakannya sebagai pengklasifikasi untuk biner atau regresi untuk kenaikan / penurunan aktual untuk mendapatkan fitur penting?

Omong-omong, model yang ingin saya coba setelah pemilihan fitur adalah: SVM, jaring saraf, regresi tertimbang secara lokal, dan hutan acak. Saya terutama bekerja di Python.

Lmao
sumber
2
ingin terhubung ke bertukar wawasan. Saya sedang mengerjakan sesuatu yang serupa
user670186
apakah ada alasan mengapa tidak ada yang menyarankan untuk hanya menggunakan built-inatribut RandomForestClassifier dalam sklearnnama feature_importances_....? Anda akan melihatnya di tautan.
Candic3
Waspadalah karena multicollinearitydapat mendistorsi kepentingan fitur dan pemilihan fitur. check it out here
Candic3
Waspadalah terhadap algoritma default: parrt.cs.usfca.edu/doc/rf-importance/index.html
Tim

Jawaban:

12

Untuk pemilihan fitur, kita memerlukan fungsi penilaian serta metode pencarian untuk mengoptimalkan fungsi penilaian.

Anda dapat menggunakan RF sebagai metode peringkat fitur jika Anda menentukan beberapa skor kepentingan yang relevan. RF akan memilih fitur berdasarkan acak dengan metode penggantian dan mengelompokkan setiap subset dalam subruang terpisah (disebut subruang acak). Satu fungsi penilaian yang penting dapat didasarkan pada penetapan akurasi setiap pohon untuk setiap fitur dalam subruang acak tersebut. Kemudian, Anda melakukan ini untuk setiap pohon yang terpisah. Karena, sumber menghasilkan subruang acak, Anda dapat menetapkan ambang batas untuk menghitung skor pentingnya.

Ringkasan:

Langkah1 : Jika fitur X2 muncul di 25% dari pohon, maka, berikan skor. Jika tidak, jangan pertimbangkan untuk memeringkat fitur karena kami tidak memiliki informasi yang cukup tentang kinerjanya

Step2 : Sekarang, tetapkan skor kinerja setiap pohon di mana X2 muncul ke X2 dan rata-rata skor. Sebagai contoh: perf (Tree1) = 0.85 perf (Tree2) = 0.70 perf (Tree3) = 0.30

Kemudian, pentingnya fitur X2 = (0,85 + 0,70 + 0,30) / 3 = 0,6167

Anda dapat mempertimbangkan pengaturan yang lebih maju dengan memasukkan kedalaman split fitur atau nilai perolehan informasi dalam pohon keputusan. Ada banyak cara untuk merancang fungsi penilaian berdasarkan pohon keputusan dan RF.

Mengenai metode pencarian , metode rekursif Anda tampaknya masuk akal sebagai cara untuk memilih yang berperingkat teratas.

Akhirnya, Anda dapat menggunakan RF sebagai classifier atau model regresi dalam memilih fitur Anda karena keduanya akan memberi Anda skor kinerja. Skor tersebut bersifat indikatif karena didasarkan pada sampel OOB yang tidak tersedia dan Anda tidak dapat mempertimbangkan validasi silang dalam pengaturan yang lebih sederhana.

soufanom
sumber
Terima kasih atas masukannya. Memang ingin menunjukkan itu (0.85+0.70+0.30)/3 = 0.6167.
Hendy
5
Jika Anda bekerja dengan python, Anda dapat langsung menggunakan variabel penting yang dihitung dalam sklearn saat memanggil hutan acak.
Gores
5

Saya memiliki dataset dengan sebagian besar variabel keuangan (120 fitur, 4k contoh) yang sebagian besar sangat berkorelasi dan sangat bising (indikator teknis, misalnya) jadi saya ingin memilih sekitar maks 20-30 untuk digunakan nanti dengan pelatihan model (klasifikasi biner - bertambah berkurang).

Contoh 4k benar-benar tidak cukup untuk memperkirakan sesuatu yang sangat canggih - Anda perlu menggunakan model yang paling sederhana (regresi linier / logistik, linear svm) dan sejumlah kecil variabel

Mengingat bahwa data Anda berisik dan berkorelasi, PCA mungkin merupakan taruhan terbaik Anda [ini secara efektif mengidentifikasi rata-rata sinyal umum atas masing-masing indikator]

Regulator L2 (untuk model linier) juga akan membantu meratakan kebisingan [misalnya jika Anda memiliki salinan berisik dari sinyal yang sama, regularisasi L2 akan mendorong bobot sama - rata-rata n variabel]

seanv507
sumber