Apakah pemilihan fitur Boruta (dalam R) memperhitungkan korelasi antar variabel?


8

Saya sedikit pemula dalam R dan pemilihan fitur, dan telah mencoba paket Boruta untuk memilih (mengurangi) jumlah variabel saya (n = 40). Saya berpikir bahwa metode ini juga memperhitungkan kemungkinan korelasi antar variabel, namun, dua (dari 20 variabel yang dipilih) sangat berkorelasi, dan dua lainnya sepenuhnya berkorelasi. Apakah ini normal? Bukankah seharusnya metode Boruta mengklasifikasikan salah satu dari keduanya sebagai tidak penting?

Jawaban:


10

..., dua (dari 20 variabel yang dipilih) sangat berkorelasi, dan dua lainnya sepenuhnya berkorelasi. Apakah ini normal? Bukankah seharusnya metode Boruta mengklasifikasikan salah satu dari keduanya sebagai tidak penting?

Ya itu normal. Boruta cenderung menemukan semua fitur yang relevan dengan variabel respons . Secara ketat, variabel prediktor dikatakan relevan dengan jika dan tidak independen secara kondisional diberikan beberapa variabel prediktor lain (atau tidak diberi apa-apa, yang hanya berarti bahwa dan tidak independen).yxiyxiyxiy

Pertimbangkan contoh sederhana ini:

set.seed(666)
n <- 100
x1 <- rnorm(n)
x2 <- x1 + rnorm(n,sd=0.5)
x3 <- rnorm(n)
y <- x2 + rnorm(n) 

Anda melihat bahwa , maka relevan dengan , karena dan tidak independen. Anda juga melihat bahwa dan kemudian tidak terlepas dari . Satu-satunya variabel yang tidak relevan dengan adalah , karena:y=x2+noisex2yyx2x2=x1+noiseyx2yx3

  • y dan bersifat independenx3
  • y dan independen tergantung kondisi yang diberikanx3x1
  • y dan adalah kondisi yang diberikan independenx3(x1,x2)

Kemudian Boruta menemukan hasil yang diharapkan:

> library(Boruta)
> Boruta(data.frame(x1,x2,x3), y)
Boruta performed 30 iterations in 2.395286 secs.
 2 attributes confirmed important: x1, x2.
 1 attributes confirmed unimportant: x3.

Ada korelasi tinggi antara dan , tetapi Boruta tidak keberatan tentang itu:x1x2

> cor(x1,x2)
[1] 0.896883

7

Itu terletak pada sifat algoritma. Mari kita asumsikan bahwa kita memiliki dua fitur bermakna dan yang sangat berkorelasi.X1X2

Dari kertas http://arxiv.org/abs/1106.5112 (Pemilihan Semua Fitur yang Relevan menggunakan Hutan Acak, Miron B. Kursa, Witold R. Rudnicki) kita dapat mengambil deskripsi singkat dari algoritma boruta:

"Untuk mengatasi masalah ini, kami mengembangkan algoritma yang menyediakan kriteria untuk pemilihan atribut penting. Algoritma ini muncul dari semangat hutan acak - kami mengatasi masalah dengan menambahkan lebih banyak keacakan ke dalam sistem. Ide dasarnya sangat sederhana: kami membuat salinan acak dari sistem, menggabungkan salinan dengan yang asli dan membangun classifier untuk sistem yang diperluas ini. Untuk menilai pentingnya variabel dalam sistem asli kita membandingkannya dengan variabel acak. Hanya variabel yang memiliki kepentingan lebih tinggi daripada variabel acak dianggap penting. "

Pada dasarnya algoritma Boruta melatih hutan acak pada set fitur asli dan acak. Hutan acak ini selama pelatihan, karena setiap hutan acak, hanya melihat subset dari semua fitur di setiap node. Oleh karena itu kadang-kadang ia tidak akan memiliki pilihan antara dan ketika memilih variabel untuk node saat ini dan tidak dapat memilih salah satu dari dua variabel dan atas yang lain.X1X2X1X2

Ini adalah alasan mengapa Boruta tidak dapat mengklasifikasikan salah satu variabel dan sebagai tidak penting. Seseorang harus memodifikasi algoritma hutan acak yang mendasari untuk selalu melihat dan dengan variabel bayangan acak mereka dan di setiap node. Maka hutan acak sering dapat misalnya memilih variabel dan yang akan menghasilkan Boruta memilih variabel dan menolak . (Di sini ditolak karena memiliki kepentingan lebih tinggi daripada )X1X2X1X2X^1X^2X1X^2X1X2X2X^2X2


Bagaimana Anda membuat fitur acak dari fitur yang diberikan
Milan Amrut Joshi

Jika Anda terbiasa dengan Python / pandas.DataFrames, Anda dapat menemukan solusinya di sini: stackoverflow.com/questions/15772009/…
MaxBenChrist

3

Ya itu normal. Algoritma Boruta membuang atribut yang tidak memiliki nilai ke classifier, meninggalkan set atribut 'semua-relevan', yang mungkin termasuk yang berkorelasi. Bandingkan dengan set 'minimal-optimal' (yang seharusnya tidak mengandung berkorelasi).

Jadi mengapa, haruskah orang menggunakan metode ini untuk pemilihan fitur? Anda dapat menemukan kutipan ini dari makalah asli yang bermanfaat:

Menemukan semua atribut yang relevan, alih-alih hanya atribut yang tidak berlebihan, mungkin sangat berguna. Secara khusus, ini diperlukan ketika seseorang tertarik untuk memahami mekanisme yang terkait dengan subjek yang menarik, daripada hanya membangun model prediksi kotak hitam.

Misalnya, ketika berhadapan dengan hasil pengukuran ekspresi gen dalam konteks kanker, identifikasi semua gen yang terkait dengan kanker diperlukan untuk memahami proses secara menyeluruh, sedangkan satu set gen yang minimal-optimal mungkin lebih berguna sebagai penanda genetik.

Jadi, jika tujuan utama Anda adalah untuk memahami hubungan sebab akibat antara prediktor dan hasil, dengan mempertimbangkan hanya set variabel yang optimal yang dapat membuat Anda tersesat dan Anda perlu mempelajari semua set yang relevan.

Namun, jika apa yang Anda cari adalah model yang efisien agar sesuai, Anda lebih baik menggunakan set minimal-optimal.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.