Apakah rekayasa fitur masih bermanfaat saat menggunakan XGBoost?

9

Saya sedang membaca materi yang terkait dengan XGBoost. Tampaknya metode ini tidak memerlukan penskalaan variabel karena didasarkan pada pohon dan yang satu ini dapat menangkap pola non-linearitas kompleks, interaksi. Dan itu dapat menangani variabel numerik dan kategoris dan juga tampaknya bahwa variabel redundan tidak terlalu mempengaruhi metode ini.

Biasanya, dalam pemodelan prediktif, Anda dapat melakukan beberapa pilihan di antara semua fitur yang Anda miliki dan Anda juga dapat membuat beberapa fitur baru dari serangkaian fitur yang Anda miliki. Jadi pilih subset fitur berarti Anda berpikir ada beberapa redundansi di set fitur Anda; membuat beberapa fitur baru dari set fitur saat ini berarti Anda melakukan beberapa transformasi fungsional pada fitur Anda saat ini. Kemudian, kedua poin ini harus dibahas dalam XGBoost. Lalu, apakah itu berarti bahwa untuk menggunakan XGBoost, Anda hanya perlu memilih parameter tunning itu dengan bijak? Apa nilai melakukan rekayasa fitur menggunakan XGBoost?

KevinKim
sumber
Jika Anda mencari peningkatan kecil dalam kinerja, lebih baik untuk memodelkan interaksi antara fitur secara eksplisit karena pohon tidak bagus dalam hal ini: stats.stackexchange.com/questions/147594/…
Anton Tarasenko

Jawaban:

12

Mari kita definisikan dulu Rekayasa Fitur:

  1. Pemilihan fitur
  2. Ekstraksi fitur
  3. Menambahkan fitur melalui keahlian domain

XGBoost melakukan (1) untuk Anda. XGBoost tidak melakukan (2) / (3) untuk Anda.

Jadi, Anda masih harus melakukan rekayasa fitur sendiri. Hanya model pembelajaran yang mendalam yang dapat menggantikan ekstraksi fitur untuk Anda.

FrancoSwiss
sumber
7
  1. Pemilihan fitur: XGBoost melakukan pemilihan fitur hingga level. Dalam pengalaman saya, saya selalu melakukan pemilihan fitur dengan putaran xgboost dengan parameter yang berbeda dari apa yang saya gunakan untuk model akhir. Saya biasanya menggunakan angka rendah untuk pengambilan sampel baris dan fitur, dan pohon yang tidak dalam dan hanya menyimpan fitur yang masuk ke model. Kemudian selaras dengan model lain. Ini mencegah overfitting untuk saya ketika jumlah fitur sangat tinggi.
  2. Pembuatan fitur: XGBoost (klasifikasi, booster = gbtree) menggunakan metode berbasis pohon. Ini berarti bahwa model akan mengalami kesulitan dalam memilih hubungan seperti ab , a / b dan + b untuk fitur a dan b . Saya biasanya menambahkan interaksi antara fitur dengan tangan atau memilih yang tepat dengan beberapa heuristik. Tergantung pada aplikasinya, ini benar-benar dapat meningkatkan kinerja.
Mortezaaa
sumber
2

Apa nilai melakukan rekayasa fitur menggunakan XGBoost?

Kinerja mungkin?

(Catatan kami tidak menggunakan XGBoost, tetapi gradient boost library lainnya - meskipun kinerja XGBoost mungkin juga tergantung pada dimensi data dalam beberapa cara.)

Kami memiliki dataset di mana setiap item terdiri dari 3 sinyal, masing-masing panjangnya 6.000 sampel - fitur 18k. Menggunakan fitur-fitur ini secara langsung membutuhkan waktu (hari), jadi kami melakukan beberapa rekayasa fitur manual untuk mengurangi jumlah fitur menjadi sekitar 200. Sekarang pelatihan (termasuk penyetelan parameter) adalah masalah beberapa jam.

Sebagai perbandingan: beberapa waktu yang lalu kami juga mulai melatih ConvNets dengan data yang sama dan seluruh fitur 18k (tanpa rekayasa fitur). Mereka mencapai akurasi yang sama dengan model peningkatan gradien setelah hanya sekitar 2 jam pelatihan.

stmax
sumber