Bagaimana cara kerja pembelajar berbasis linier dalam meningkatkan? Dan bagaimana cara kerjanya di perpustakaan xgboost?

9

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!

Escachator
sumber
1
Saya tidak tahu bagaimana ini diterapkan tetapi saya tidak melihat alasan mengapa itu harus mempertimbangkan hanya satu fitur pada satu waktu
Alexey Grigorev
@AlexeyGrigorev sangat mungkin membutuhkan banyak fitur sekaligus, tetapi kemudian, bagaimana fitur ini dipilih? Setiap dokumen tentang proses spesifik untuk meningkatkan linear akan sangat memperjelas.
Escachator

Jawaban:

17

Jawaban singkat untuk pertanyaan Anda:

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

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 mengatur colsample_bytreefitur 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:

f(x)=m=1Mbm(x)

di mana adalah jumlah iterasi dalam meningkatkan, adalah model untuk iterasi .Mbmmth

Jika pembelajar dasar linier, misalnya, misalkan kita menjalankan iterasi, dan dan , maka2b1=β0+β1xb2=θ0+θ1x

f(x)=m=12bm(x)=β0+β1x+θ0+θ1x=(β0+θ0)+(β1+θ1)x

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

masukkan deskripsi gambar di sini

Sekarang, periksa empat iterasi pertama.

masukkan deskripsi gambar di sini

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).

masukkan deskripsi gambar di sini


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?

Haitao Du
sumber
1
Saya akan mengatakan bahwa kombinasi n pohon adalah pohon, tidak peduli seberapa besar n!
Metariat
@Metariat TIDAK !, pohon kombinasi BUKAN pohon !. untuk pohon, Anda akan melihat bentuk "T" pada split. Tetapi tunggul yang dikuatkan Anda akan melihat bentuk "#". yaitu, perpecahan akan melintasi perpecahan lainnya!
Haitao Du
Bisakah Anda memberi contoh n pohon? Aku akan memberimu pohon yang setara!
Metariat
@Metariat maaf saya tidak punya waktu untuk saat ini. Tetapi saya yakin meningkatkan pada tunggul keputusan tidak dapat dengan mudah dihasilkan oleh pohon keputusan. Akan kembali ke pertanyaan ini ketika saya punya waktu.
Haitao Du
1
Saya setuju bahwa kombinasi n pohon masih merupakan pohon, tetapi pohon ini akan jauh lebih besar. Dalam kasus terburuk jumlah daun sama dengan produk dari jumlah daun di semua pohon input, sehingga kompleksitas pohon tersebut tidak praktis. Di sisi lain dalam kasus kompleksitas fungsi linier persis sama.
Tomek Tarczynski