Saya tahu bagaimana menerapkan fungsi objektif linear dan peningkatan linear di XGBoost. Pertanyaan konkret saya adalah: ketika algoritme itu cocok dengan residual (atau gradien negatif) apakah ia menggunakan satu fitur pada setiap langkah (yaitu model univariat) atau semua fitur (model multivariat)?
Referensi apa pun untuk dokumentasi tentang peningkatan linear di XGBoost akan dihargai.
EDIT: Linear boosts dapat diimplementasikan dalam XGBoost dengan mengatur parameter 'booster' menjadi 'gblinear'. Lihat: http://www.ncbi.nlm.nih.gov/pmc/articles/PMC3885826/ untuk informasi berguna tentang peningkatan linear. Perhatikan bahwa saya tidak berbicara tentang fungsi objektif (yang bisa juga linier) tetapi tentang dorongannya sendiri.
Terima kasih!
regression
machine-learning
boosting
xgboost
Escachator
sumber
sumber
Jawaban:
Jawaban singkat untuk pertanyaan Anda:
Algoritme menggunakan satu fitur atau semua fitur tergantung pada pengaturan Anda. Dalam jawaban panjang saya yang tercantum di bawah ini, dalam contoh tunggakan keputusan dan pembelajar linier, mereka menggunakan semua fitur, tetapi jika Anda mau, Anda juga dapat memasukkan subset fitur. Kolom sampel (fitur) dipandang mengurangi varians model atau meningkatkan "kekokohan" model, terutama jika Anda memiliki sejumlah besar fitur.
Di
xgboost
, untuk pelajar dasar pohon, Anda dapat mengaturcolsample_bytree
fitur sampel agar sesuai di setiap iterasi. Untuk pembelajar dasar linier, tidak ada opsi seperti itu, jadi, harus sesuai semua fitur. Selain itu, tidak terlalu banyak orang menggunakan pembelajar linier dalam xgboost atau peningkatan gradien secara umum.Jawaban panjang untuk linear sebagai pelajar yang lemah untuk meningkatkan:
Dalam kebanyakan kasus, kita mungkin tidak menggunakan pembelajar linier sebagai pembelajar dasar. Alasannya sederhana: menambahkan beberapa model linier bersama masih akan menjadi model linier.
Dalam meningkatkan model kami adalah sejumlah pembelajar dasar:
di mana adalah jumlah iterasi dalam meningkatkan, adalah model untuk iterasi .M. bm mt h
Jika pembelajar dasar linier, misalnya, misalkan kita menjalankan iterasi, dan dan , maka2 b1= β0+ β1x b2= θ0+ θ1x
yang merupakan model linier sederhana! Dengan kata lain, model ensemble memiliki "kekuatan yang sama" dengan pelajar dasar!
Lebih penting lagi, jika kita menggunakan model linier sebagai pelajar dasar, kita bisa melakukannya satu langkah dengan menyelesaikan sistem linear alih-alih melakukan beberapa iterasi dalam meningkatkan.XTXβ= XTy
Oleh karena itu, orang ingin menggunakan model selain model linier sebagai pelajar dasar. Pohon adalah pilihan yang baik, karena menambahkan dua pohon tidak sama dengan satu pohon. Saya akan demo dengan kasus sederhana: putusan keputusan, yang merupakan pohon dengan 1 split saja.
Saya sedang melakukan fungsi fitting, di mana data dihasilkan oleh fungsi kuadratik sederhana, . Berikut adalah kebenaran kontur tanah yang diisi (kiri) dan keputusan akhir meningkatkan pas (kanan).f( x , y) = x2+ y2
Sekarang, periksa empat iterasi pertama.
Catatan, berbeda dari pelajar linier, model pada iterasi ke-4 tidak dapat dicapai dengan satu iterasi (satu tunggakan keputusan tunggal) dengan parameter lainnya.
Sejauh ini, saya menjelaskan, mengapa orang tidak menggunakan pembelajar linier sebagai pembelajar dasar. Namun, tidak ada yang menghalangi orang untuk melakukan itu. Jika kita menggunakan model linier sebagai pelajar dasar, dan membatasi jumlah iterasi, itu sama dengan menyelesaikan sistem linear, tetapi membatasi jumlah iterasi selama proses penyelesaian.
Contoh yang sama, tetapi dalam plot 3d, kurva merah adalah data, dan bidang hijau adalah fit terakhir. Anda dapat dengan mudah melihat, model akhir adalah model linier, dan itu adalah
z=mean(data$label)
yang sejajar dengan bidang x, y. (Anda dapat berpikir mengapa? Ini karena data kami "simetris", sehingga kemiringan pesawat akan menambah kerugian). Sekarang, periksa apa yang terjadi pada iterasi 4 pertama: model yang dipasang perlahan naik ke nilai optimal (rata-rata).Kesimpulan akhir, pembelajar linier tidak banyak digunakan, tetapi tidak ada yang mencegah orang untuk menggunakannya atau mengimplementasikannya di perpustakaan R. Selain itu, Anda dapat menggunakannya dan membatasi jumlah iterasi untuk mengatur model.
Posting terkait:
Gradient Boosting untuk Regresi Linier - mengapa tidak bekerja?
Apakah tunggul keputusan merupakan model linier?
sumber