Ketika membangun model CART (khususnya pohon klasifikasi) menggunakan rpart (dalam R), seringkali menarik untuk mengetahui apa pentingnya berbagai variabel yang diperkenalkan pada model.
Dengan demikian, pertanyaan saya adalah: Apa ukuran umum yang ada untuk menentukan peringkat / mengukur variabel kepentingan variabel yang berpartisipasi dalam model CART? Dan bagaimana ini bisa dihitung menggunakan R (misalnya, ketika menggunakan paket rpart)
Misalnya, berikut adalah beberapa kode dummy, dibuat sehingga Anda dapat menunjukkan solusi Anda di atasnya. Contoh ini terstruktur sehingga jelas bahwa variabel x1 dan x2 adalah "penting" sementara (dalam beberapa hal) x1 lebih penting daripada x2 (karena x1 harus diterapkan pada lebih banyak kasus, sehingga membuat lebih banyak pengaruh pada struktur data, lalu x2).
set.seed(31431)
n <- 400
x1 <- rnorm(n)
x2 <- rnorm(n)
x3 <- rnorm(n)
x4 <- rnorm(n)
x5 <- rnorm(n)
X <- data.frame(x1,x2,x3,x4,x5)
y <- sample(letters[1:4], n, T)
y <- ifelse(X[,2] < -1 , "b", y)
y <- ifelse(X[,1] < 0 , "a", y)
require(rpart)
fit <- rpart(y~., X)
plot(fit); text(fit)
info.gain.rpart(fit) # your function - telling us on each variable how important it is
(referensi selalu diterima)
sumber
Jawaban:
Variabel kepentingan umumnya dapat dihitung berdasarkan pengurangan yang sesuai dari akurasi prediktif ketika prediktor bunga dihapus (dengan teknik permutasi, seperti di Hutan Acak) atau beberapa ukuran penurunan pengotor simpul, tetapi lihat (1) untuk ikhtisar dari metode yang tersedia. Alternatif yang jelas untuk CART adalah RF tentu saja ( randomForest , tetapi lihat juga pihak ). Dengan RF, indeks pentingnya Gini didefinisikan sebagai penurunan rata-rata Gini dalam ketidakmurnian simpul di semua pohon di hutan (ini mengikuti fakta bahwa indeks pengotor Gini untuk simpul induk yang diberikan lebih besar dari nilai pengukuran untuk dua nya. simpul anak, lihat misalnya (2)).
Saya tahu bahwa Carolin Strobl dan coll. telah berkontribusi banyak simulasi dan studi eksperimental pada variabel penting (kondisional) dalam RF dan CARTs (misalnya, (3-4), tetapi ada banyak yang lain, atau tesisnya, Masalah Statistik dalam Pembelajaran Mesin - Menuju Pemilihan Split yang Andal dan Ukuran Pentingnya Variabel ).
Setahu saya, paket caret (5) hanya mempertimbangkan fungsi kerugian untuk kasus regresi (yaitu, mean squared error). Mungkin itu akan ditambahkan dalam waktu dekat (toh, contoh dengan kasus klasifikasi oleh k-NN tersedia di bantuan online untuk
dotPlot
).Namun, Noel M O'Boyle tampaknya memiliki beberapa kode R untuk kepentingan Variable di CART .
Referensi
sumber
importance()
di randomForest melakukan variabel penting individu dengan penurunan rata-rata dalam akurasi dan rata-rata penurunan gini.Fungsi berikut (dari paket Caret) dapat digunakan untuk mengevaluasi tingkat kepentingan variabel dalam rpart tree. Saya mengoreksi bug dalam fungsi Caret saat ini hanya simpul root di pohon.
}
Kode r berikut akan menghasilkan skor penting untuk pohon pas "pas"
sumber
Saya pikir chl telah menjawab bagian pertama:
Sehubungan dengan bagian kedua dari pertanyaan Anda:
Anda dapat menemukan pentingnya variabel menggunakan rpart dengan menggunakan ringkasan (fit). Ini menghasilkan variabel penting antara beberapa hal lainnya. Anda dapat membaca lebih lanjut tentang hal ini di sini: https://cran.r-project.org/web/packages/rpart/rpart.pdf . Lihat halaman 25.
sumber
names(result)
menunjukkanvariable.importance
result$variable.importance
haruskah membantu?sumber