Saya memiliki data yang tidak seimbang kelas & saya ingin menyetel hyperparameter dari tress yang ditingkatkan menggunakan xgboost.
Pertanyaan
- Apakah ada yang setara dengan gridsearchcv atau randomsearchcv untuk xgboost?
- Jika tidak, apa pendekatan yang disarankan untuk menyesuaikan parameter xgboost?
machine-learning
cross-validation
xgboost
boosting
GeorgeOfTheRF
sumber
sumber
xgboost(max.depth)
atauxgb.train(max_depth)
? Apakah xgboost tidak konsisten menggunakan dot vs garis bawah untuk parameter di tempat yang berbeda? Atau apakah mereka bertobat?Jawaban:
Karena antarmuka ke
xgboost
dalamcaret
baru-baru ini berubah, berikut ini adalah skrip yang memberikan langkah-langkah penggunaan komentar sepenuhnyacaret
untuk menyetelxgboost
parameter-hyper.Untuk ini, saya akan menggunakan data pelatihan dari kompetisi Kaggle "Give Me Some Credit" .
1. Pas
xgboost
modelDi bagian ini, kami:
xgboost
model dengan hiperparameter acakxgb.cv
)Berikut ini beberapa kode untuk melakukannya.
Di sini adalah seperti apa pengujian versus pelatihan AUC:
2. Pencarian menggunakan Hyperparameter
train
Untuk pencarian hyperparameter, kami melakukan langkah-langkah berikut:
data.frame
dengan kombinasi parameter unik yang kami inginkan untuk model yang terlatih.Berikut adalah beberapa kode yang menunjukkan cara melakukan ini.
Terakhir, Anda dapat membuat bubbleplot untuk AUC atas variasi
eta
danmax_depth
:sumber
xgboost
parameter sekarang ada, khususnya dukungan untukgamma
baru. Berikut adalah daftar lengkap parameter yang didukung.scale_pose_weight
untuk klasifikasi yang tidak seimbang. Bisakah Anda memberikan detail bagaimana caranya? Terima kasih!scale_pos_weight
sekarang didokumentasikan dalam dokumentasi parameter .scale_pos_weight
bukan parameter penyetelan tanda sisipan, tetapi Anda dapat membandingkannya secara manual. Dalam kasus saya, menggunakan bobot kebetulan memiliki sedikit efek (klasifikasi biner,> 20% positif)Paket caret telah memasukkan xgboost.
Output sampel
Satu kekurangan yang saya lihat adalah bahwa parameter xgboost lainnya seperti subsample dll tidak didukung oleh caret saat ini.
Sunting
Gamma, colsample_bytree, min_child_weight dan subsample dll sekarang (Juni 2017) dapat disetel langsung menggunakan Caret. Cukup tambahkan mereka di bagian grid dari kode di atas untuk membuatnya berfungsi. Terima kasih usεr11852 karena telah menyorotnya di komentar.
sumber
caret
sekarang (Februari-2017) mendukung parameter tambahan untukgamma
,colsample_bytree
,min_child_weight
dansubsample
. (Jadi secara efektif Anda dapat menyetel hampir semua hal - diberikan waktu)Saya tahu ini adalah pertanyaan lama, tetapi saya menggunakan metode yang berbeda dari yang di atas. Saya menggunakan fungsi BayesianOptimization dari paket Bayesian Optimization untuk menemukan parameter optimal. Untuk melakukan ini, pertama-tama Anda membuat lipatan validasi silang, lalu buat fungsi
xgb.cv.bayes
yang memiliki parameter parameter peningkatan boosting yang ingin Anda ubah. Dalam contoh ini saya menyetelmax.depth, min_child_weight, subsample, colsample_bytree, gamma
. Anda kemudian memanggilxgb.cv
fungsi itu dengan parameter hiper diatur ke dalam parameter inputxgb.cv.bayes
. Kemudian Anda meneleponBayesianOptimization
denganxgb.cv.bayes
dan kisaran yang diinginkan dari parameter hiper penambah.init_points
adalah jumlah model awal dengan parameter hiper yang diambil secara acak dari rentang yang ditentukan, dann_iter
adalah jumlah putaran model setelah poin awal. Fungsi ini mengeluarkan semua parameter penguat dan tes AUC.sumber
Ini adalah pertanyaan yang lebih lama tetapi saya pikir saya akan membagikan bagaimana saya menyetel parameter xgboost. Saya awalnya berpikir saya akan menggunakan tanda sisipan untuk ini, tetapi baru-baru ini menemukan masalah menangani semua parameter serta nilai-nilai yang hilang. Saya juga mempertimbangkan untuk menulis loop berulang melalui kombinasi parameter yang berbeda tetapi ingin itu berjalan secara paralel dan akan membutuhkan terlalu banyak waktu. Menggunakan gridSearch dari paket NMOF memberikan yang terbaik dari kedua dunia (semua parameter serta pemrosesan paralel). Berikut adalah contoh kode untuk klasifikasi biner (berfungsi di windows dan linux):
sumber