Xgboost: Apakah perlu untuk menyingkirkan fitur yang tidak berguna dalam tugas klasifikasi di xgboost?

Dibuat pada 14 Mar 2017  ·  3Komentar  ·  Sumber: dmlc/xgboost

Saya memiliki 650+ fitur dan saya menggunakan xgboost untuk memberi peringkat pada pentingnya fitur-fitur ini. Fungsinya adalah get_score() yang mengembalikan kemunculan fitur saat membangun pohon.

Saat saya cek hasilnya, ada hampir 150 fitur yang nilainya di bawah 20. Beberapa di antaranya nol. Saya menyingkirkan fitur-fitur ini dan melihat apakah model akan memiliki kinerja yang lebih baik. Tapi hasilnya hampir sama dengan yang sebelumnya. Jadi apakah fitur-fitur yang tidak penting ini perlu disingkirkan?

Dalam hasil percobaan, urutan baru pentingnya fitur tidak seperti urutan sebelumnya. Beberapa yang tidak terlalu penting menjadi penting. Maksud saya urutan kepentingan fitur tidak stabil. Mengapa tidak stabil?

Komentar yang paling membantu

Di sebagian besar algoritme pembelajaran mesin, penting untuk melakukan pemilihan fitur untuk menghindari pemasangan yang berlebihan.

Dalam boosting, dan terutama di xgboost, pelatihan dibuat agar Anda dapat menggeneralisasi sebanyak mungkin (pembelajar yang lemah, pendekatan taylor, pembelajaran stokastik,...) cocok jika Anda benar-benar menginginkannya :) -> jumlah iterasi tinggi, kecepatan belajar tinggi, tidak ada pembelajaran stokastik ...). Untuk menjawab pertanyaan Anda, menyingkirkan fitur yang tidak relevan mungkin penting pada satu titik. Katakanlah Anda memiliki outlier, Anda mungkin mulai menggunakan fitur yang tidak relevan untuk mengklasifikasikan outlier selama proses pembelajaran dan ini tidak baik.

Untuk pertanyaan kedua Anda, tidak hanya ada satu cara untuk menggabungkan pelajar yang lemah untuk mencapai hasil yang baik. namun, untuk mendapatkan kombinasi yang berbeda (dan fitur penting yang berbeda) Anda harus menggunakan beberapa keacakan selama proses pelatihan Anda seperti subsampel, max_features... Kemungkinan lain adalah Anda memiliki fitur yang berlebihan. Anda harus memeriksa korelasi di antara mereka.

Singkatnya, jika Anda tahu suatu fitur tidak berguna: hapus. Jika Anda tidak tahu maka biarkan mereka selalu baik untuk menghapus fitur yang tidak relevan karena akan memperlambat pelatihan model Anda.

Semua 3 komentar

Di sebagian besar algoritme pembelajaran mesin, penting untuk melakukan pemilihan fitur untuk menghindari pemasangan yang berlebihan.

Dalam boosting, dan terutama di xgboost, pelatihan dibuat agar Anda dapat menggeneralisasi sebanyak mungkin (pembelajar yang lemah, pendekatan taylor, pembelajaran stokastik,...) cocok jika Anda benar-benar menginginkannya :) -> jumlah iterasi tinggi, kecepatan belajar tinggi, tidak ada pembelajaran stokastik ...). Untuk menjawab pertanyaan Anda, menyingkirkan fitur yang tidak relevan mungkin penting pada satu titik. Katakanlah Anda memiliki outlier, Anda mungkin mulai menggunakan fitur yang tidak relevan untuk mengklasifikasikan outlier selama proses pembelajaran dan ini tidak baik.

Untuk pertanyaan kedua Anda, tidak hanya ada satu cara untuk menggabungkan pelajar yang lemah untuk mencapai hasil yang baik. namun, untuk mendapatkan kombinasi yang berbeda (dan fitur penting yang berbeda) Anda harus menggunakan beberapa keacakan selama proses pelatihan Anda seperti subsampel, max_features... Kemungkinan lain adalah Anda memiliki fitur yang berlebihan. Anda harus memeriksa korelasi di antara mereka.

Singkatnya, jika Anda tahu suatu fitur tidak berguna: hapus. Jika Anda tidak tahu maka biarkan mereka selalu baik untuk menghapus fitur yang tidak relevan karena akan memperlambat pelatihan model Anda.

Terima kasih. Saya menghapus hampir 150 fitur yang tidak penting. Tapi auc dari eksperimen baru tidak berubah. Jadi saya belum menemukan manfaat dari menghapusnya.

Manfaatnya, jika tidak meningkatkan ukuran kinerja, adalah waktu pelatihan. Pohon keputusan menggunakan pendekatan serakah untuk menemukan pemisahan terbaik, sehingga lebih banyak fitur = lebih banyak pemisahan untuk dicoba.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat