Apakah ada cara untuk menjelaskan prediksi dari model hutan acak?

11

Katakanlah saya punya model klasifikasi prediksi berdasarkan hutan acak (menggunakan paket randomForest di R). Saya ingin mengaturnya agar pengguna akhir dapat menentukan item untuk menghasilkan prediksi, dan itu akan menampilkan kemungkinan klasifikasi. Sejauh ini, tidak masalah.

Tetapi akan berguna / keren untuk dapat menampilkan sesuatu seperti grafik kepentingan variabel, tetapi untuk item tertentu yang diprediksi, bukan untuk set pelatihan. Sesuatu seperti:

Item X diperkirakan Anjing (Kemungkinan 73%)
Karena:
Kaki = 4
Nafas =
Bulu buruk =
Makanan pendek = jahat

Anda mengerti maksudnya. Apakah ada cara standar, atau setidaknya dapat dibenarkan, untuk mengekstraksi informasi ini dari hutan acak yang terlatih? Jika demikian, apakah ada yang punya kode yang akan melakukan ini untuk paket randomForest?

Harlan
sumber
Beberapa kerumitan ... Anda bisa membayangkan menghitung berapa kali variabel Kaki adalah bagian dari jalur keputusan. Tetapi apakah Anda hanya akan melakukannya untuk pohon yang memperkirakan jawaban mayoritas, atau semuanya? Atau bedanya?
Harlan
Dan mengubah semua mprediktor satu per satu dan mencari untuk melihat bagaimana prediksi hutan berbeda tampaknya agak mahal. Pasti ada cara yang lebih baik.
Harlan
Pikiran pertama saya adalah bertanya-tanya bagaimana apa yang ingin Anda lakukan berbeda dari variabel pentingnya data pelatihan? Apakah Anda ingin mengatakan bahwa mengingat nilai-nilai lain sebagaimana adanya, apa sensitivitas prediksi pada kaki = 4 versus kaki = 2 atau kaki = 0? Sudahkah Anda melihat fungsi plot sebagian dalam paket randomforest?
B_Miner
Variabel kepentingan biasanya didefinisikan bersyarat pada seluruh rangkaian pelatihan (atau populasi yang diasumsikan, atau sesuatu). Tapi yang saya inginkan adalah kepentingan variabel untuk satu item yang diprediksi. Bayangkan sebuah kasus di mana hutan terdiri dari pohon keputusan yang sangat miring. Test Instance 1 dapat dijelaskan oleh 1 atau sangat sedikit node keputusan, sedangkan Test Instance 2 dapat dijelaskan oleh satu set node keputusan yang jauh lebih besar. Saya ingin versi interpretasi manusia yang sangat sederhana dari itu, seperti seperangkat keputusan, peringkat 5 besar yang dapat saya berikan. Untuk satu pohon keputusan, saya baru saja membacanya.
Harlan

Jawaban:

3

Gagasan pertama adalah meniru strategi knock-out dari kepentingan variabel dan hanya menguji bagaimana mencampur setiap atribut akan menurunkan kepercayaan hutan pada klasifikasi objek (pada OOB dan dengan beberapa pengulangan jelas). Ini membutuhkan beberapa pengkodean, tetapi tentu dapat dicapai.

Namun, saya merasa itu hanya ide yang buruk - hasilnya mungkin akan berubah-ubah seperti neraka (tanpa menstabilkan dampak rata-rata terhadap objek), berisik (untuk objek yang tidak terlalu percaya diri, atribut omong kosong bisa berdampak besar) dan sulit untuk interpretasikan (dua atau lebih atribut aturan kerja sama mungkin akan menghasilkan dampak acak dari masing-masing atribut yang berkontribusi).

Untuk tidak meninggalkan Anda dengan jawaban negatif, saya lebih suka mencoba melihat matriks kedekatan dan kemungkinan arketipe yang mungkin terungkap - ini tampaknya jauh lebih stabil dan mudah.


sumber
Aturan kooperatif / poin prediktor berkorelasi adalah kritik yang sangat baik. Untuk membuat ini bekerja, mungkin perlu untuk melatih RF pada beberapa jenis variabel pra-pengurangan, atau memasukkan semacam strategi hukuman untuk menyebabkan RF untuk fokus pada subset prediktor.
Harlan
0

Saya akan mencoba dengan kerangka kapur .

Ini bekerja dengan banyak model (termasuk hutan acak). Ini dapat digunakan untuk interpretasi lokal (yaitu, menjelaskan prediksi tunggal) atau untuk interpretasi global (yaitu, menjelaskan seluruh model).

Mengutip dari asbtract

Dalam karya ini, kami mengusulkan LIME, sebuah teknik penjelasan baru yang menjelaskan prediksi setiap classifier dengan cara yang dapat ditafsirkan dan setia, dengan mempelajari model yang dapat ditafsirkan secara lokal di sekitar prediksi. Kami juga mengusulkan metode untuk menjelaskan model dengan menghadirkan prediksi individu yang representatif dan penjelasannya dengan cara yang tidak berlebihan, membingkai tugas sebagai masalah optimisasi submodular.

Ini memiliki paket baik untuk R dan python , dan banyak contoh jika Anda google itu.

PolBM
sumber