Menafsirkan Pohon Keputusan dalam konteks kepentingan fitur

9

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)

  1. FeatureB (0.166800)

  2. FeatureC (0,092472)

  3. FeatureD (0,075009)

  4. FeatureE (0,068310)

  5. FiturF (0,067118)

  6. FiturG (0,066510)

  7. FiturH (0,043502)

  8. FeatureI (0,040281)

  9. FiturJ (0,039006)

  10. FiturK (0,032618)

  11. FiturL (0,008136)

  12. FeatureM (0,000000)

Namun, ketika saya melihat bagian atas pohon, tampilannya seperti ini:Cuplikan Pohon

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"?

Tim Lindsey
sumber
1
berapa banyak sampel yang ditugaskan ke kiri dan kanan dari simpul pertama?
oW_

Jawaban:

4

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, SkLearnAnda dapat memilih untuk melakukan pemisahan node pada pohon keputusan sesuai dengan kriteria Entropy-Information Gain (lihat criterion& 'entropy'di SkLearn) sementara pentingnya fitur diberikan oleh Gini Pentingnya yang merupakan penurunan rata-rata dari Gini Pengotor untuk variabel tertentu di semua pohon di hutan acak (lihat feature_importances_di SkLearndan di sini ).

Jika saya benar, pada SkLearnsaat 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).

Orang buangan
sumber
Sudah @oW_ telah memberikan jawaban yang agak benar untuk pertanyaan asli tapi saya pikir itu baik untuk menulisnya dengan cara yang lebih ringkas dan jernih bagi pembaca.
Diasingkan
3

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.

oW_
sumber
2

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.

J_Heads
sumber
Jadi dalam istilah awam, dengan asumsi hanya ada 2 klasifikasi yang mungkin (sebut saja 0 dan 1), fitur di dasar pohon akan menjadi salah satu yang terbaik membagi sampel ke dalam 2 kelompok (yaitu pekerjaan pemisahan terbaik angka 1 pada satu sisi pohon dan angka 0 ke sisi lainnya). Apakah itu akurat? Saya masih belum sepenuhnya jelas tentang pentingnya peringkat fitur jika itu bukan yang terbaik untuk memisahkan 0s dan 1s dalam konteks ini
Tim Lindsey
-2

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.

Halo Dunia
sumber
2
Saya tidak berpikir itu bagaimana ini diimplementasikan dalam scikit-belajar. Di sana, fitur penting diukur sebagai "gini pentingnya", yaitu penurunan total dalam ketidakmurnian simpul yang ditimbang dengan proporsi sampel yang mencapai simpul itu.
oW_
"Pentingnya fitur dihitung sebagai pengurangan total (yang dinormalisasi) dari kriteria yang dibawa oleh fitur itu. Ia juga dikenal sebagai kepentingan Gini." - scikit-learn.org/stable/modules/generated/…
Afflatus