Saya mencoba memahami bagaimana memahami sepenuhnya proses pengambilan keputusan dari model klasifikasi pohon keputusan yang dibangun dengan sklearn. 2 aspek utama yang saya lihat adalah representasi graphviz dari pohon dan daftar fitur penting. Yang tidak saya mengerti adalah bagaimana pentingnya fitur ditentukan dalam konteks pohon. Sebagai contoh, berikut adalah daftar penting fitur saya:
Peringkat fitur: 1. FeatureA (0.300237)
FeatureB (0.166800)
FeatureC (0,092472)
FeatureD (0,075009)
FeatureE (0,068310)
FiturF (0,067118)
FiturG (0,066510)
FiturH (0,043502)
FeatureI (0,040281)
FiturJ (0,039006)
FiturK (0,032618)
FiturL (0,008136)
FeatureM (0,000000)
Namun, ketika saya melihat bagian atas pohon, tampilannya seperti ini:
Bahkan, beberapa fitur yang berperingkat "paling penting" tidak muncul sampai jauh di bawah pohon, dan bagian atas pohon adalah FeatureJ yang merupakan salah satu fitur peringkat terendah. Asumsi naif saya adalah bahwa fitur yang paling penting akan diberi peringkat di dekat bagian atas pohon untuk memiliki dampak terbesar. Jika itu salah, lalu apa yang membuat fitur "penting"?
sumber
Jawaban:
Tidak perlu bahwa semakin penting suatu fitur maka semakin tinggi simpulnya pada pohon keputusan.
Ini hanya karena kriteria yang berbeda (misalnya Pengotoran Gini, Penghasilan Entropy-Informasi, MSE dll) dapat digunakan pada masing-masing dari dua kasus ini (pemisahan vs kepentingan).
Misalnya,
SkLearn
Anda dapat memilih untuk melakukan pemisahan node pada pohon keputusan sesuai dengan kriteria Entropy-Information Gain (lihatcriterion
&'entropy'
diSkLearn
) sementara pentingnya fitur diberikan oleh Gini Pentingnya yang merupakan penurunan rata-rata dari Gini Pengotor untuk variabel tertentu di semua pohon di hutan acak (lihatfeature_importances_
diSkLearn
dan di sini ).Jika saya benar, pada
SkLearn
saat yang sama berlaku bahkan jika Anda memilih untuk melakukan pemisahan node pada pohon keputusan berdasarkan kriteria Gini Impurity sementara pentingnya fitur diberikan oleh Gini Pentingnya karena Gini Pengotor dan Pentingnya Gini tidak identik (lihat juga ini dan ini di Stackoverflow tentang Pentingnya Gini).sumber
Dalam scikit-belajar fitur pentingnya adalah penurunan ketidakmurnian simpul. Kuncinya adalah mengukur tingkat kepentingan hanya pada level node. Kemudian, semua simpul ditimbang dengan berapa banyak sampel yang mencapai simpul itu.
Jadi, jika hanya beberapa sampel berakhir di simpul kiri setelah pemisahan pertama, ini mungkin tidak berarti bahwa J adalah fitur yang paling penting karena kenaikan pada simpul kiri mungkin hanya mempengaruhi sangat sedikit sampel. Jika Anda juga mencetak jumlah sampel di setiap node, Anda mungkin mendapatkan gambaran yang lebih baik tentang apa yang sedang terjadi.
sumber
Hanya karena sebuah simpul lebih rendah pada pohon tidak selalu berarti bahwa itu kurang penting. Pentingnya fitur dalam sci-kitlearn dihitung dengan seberapa murni sebuah node memisahkan kelas (Gini index). Anda akan melihat bahkan di pohon yang Anda pangkas bahwa A terbagi tiga kali dibandingkan dengan kali J dan skor entropi (ukuran kemurnian yang sama seperti Gini) agak lebih tinggi di simpul A daripada J.
Namun, jika Anda hanya bisa memilih satu simpul, Anda akan memilih J karena itu akan menghasilkan prediksi terbaik. Tetapi jika Anda memiliki pilihan untuk memiliki banyak node membuat beberapa keputusan berbeda A akan menjadi pilihan terbaik.
sumber
Variabel kepentingan diukur dengan penurunan akurasi model ketika variabel dihapus. Pohon keputusan baru yang dibuat dengan model baru tanpa variabel bisa terlihat sangat berbeda dengan pohon asli. Keputusan pemisahan dalam diagram Anda dilakukan sambil mempertimbangkan semua variabel dalam model.
Variabel apa yang dipecah pada root (dan node lainnya) diukur dengan pengotor. Kemurnian yang baik (mis: segala sesuatu di cabang kiri memiliki nilai target yang sama) bukan jaminan untuk akurasi yang baik. Data Anda mungkin miring, cabang kanan Anda memiliki lebih banyak respons daripada cabang kiri Anda. Oleh karena itu, tidak ada gunanya mengklasifikasikan dengan benar cabang kiri, kita juga perlu mempertimbangkan cabang yang tepat juga. Oleh karena itu, variabel pemisahan mungkin atau mungkin bukan variabel penting untuk akurasi model keseluruhan.
Variabel kepentingan adalah ukuran yang lebih baik untuk pemilihan variabel.
sumber