Perlu bantuan untuk memahami proposal poin split perkiraan xgboost


12

Latar Belakang:

di xgboost yang iterasi mencoba untuk menyesuaikan pohon atas segala contoh yang meminimalkan tujuan berikut:f t ntftn

i=1n[gift(xi)+12hift2(xi)]

di mana adalah urutan pertama dan kedua, di atas estimasi terbaik kami sebelumnya (dari iterasi ):y t - 1gi,hiy^t1

  • gi=dy^l(yi,y^)
  • hi=dy^2l(yi,y^)

dan adalah fungsi kerugian kita.l


Pertanyaannya (akhirnya):

Ketika membangun dan mempertimbangkan fitur spesifik dalam pemisahan tertentu, mereka menggunakan heuristik berikut untuk menilai hanya beberapa kandidat yang terpecah: Mereka mengurutkan semua contoh dengan mereka , melewati daftar yang diurutkan dan menjumlahkan turunan kedua . Mereka menganggap kandidat yang terbelah hanya ketika jumlah berubah lebih dari . Mengapa demikian??? k x k h i ϵftkxkhiϵ

Penjelasan yang mereka berikan membuat saya terhindar:

Mereka mengklaim kita dapat menulis ulang persamaan sebelumnya seperti ini:

i=1n12hi[ft(xi)gi/hi]2+constant

dan saya gagal mengikuti aljabar - dapatkah Anda menunjukkan mengapa itu sama?

Dan kemudian mereka mengklaim bahwa "ini persis kerugian kuadrat tertimbang dengan label dan bobot " - pernyataan yang saya setujui, tapi saya tidak mengerti bagaimana kaitannya dengan algoritma calon split yang mereka gunakan ...h igi/hihi

Terima kasih dan maaf jika ini terlalu lama untuk forum ini.

Jawaban:


8

Saya tidak akan merinci tetapi berikut ini akan membantu Anda memahami ide itu.

Mereka menggunakan Quantiles (Wikipedia) untuk menentukan tempat untuk membagi. Jika Anda memiliki 100 kemungkinan titik perpecahan, (diurutkan), Anda dapat mencoba titik perpecahan kuantil dan sudah memiliki perkiraan yang baik. Inilah yang dilakukan parameter . Mereka menganggap titik perpecahan saat split memiliki lebih banyak poin di bawahnya daripada titik split terakhir. Jika , Anda akan berakhir dengan titik perpecahan, lebih besar dari dari poin lainnya. Mereka tidak mempertimbangkan pemisahan baru ketika "jumlah berubah lebih dari{x1,,x100}10{x10,x20,,x90}ϵϵNϵ=0.01100{1%,2%,...,99%}ϵ "tetapi ketika jumlah titik di bawah titik saat ini lebih besar dengan daripada yang terakhir.ϵ

Sekarang, jika Anda memiliki banyak titik kontinu yang sudah diklasifikasikan dengan baik, mungkin tidak berguna untuk membagi di antara mereka. Anda ingin membagi bagian-bagian dari kumpulan data Anda yang sangat salah, yang sulit dipelajari. Untuk melakukannya, mereka menggunakan kuantil tertimbang. Di sinilah bobot berperan. kuantil pertama tidak akan menjadi titik pertama yang lebih besar dari dari poin, tetapi titik pertama yang lebih besar dari dari bobot.1010%10%


Saya masuk hanya untuk memberi Anda suara. Terima kasih atas penjelasan yang mudah dipahami.
Pakpoom Tiwakornkit

3

Hanya menambahkan bagian aljabar ke jawaban @Winks:

Persamaan kedua harus memiliki tanda terbalik, seperti pada:

i=1n12hi[ft(xi)(gi/hi)]2+constant=i=1n12hi[ft2(xi)+2ft(xi)gihi+(gi/hi)2]=i=1n[gift(xi)+12hift2(xi)+gi22hi]

Istilah terakhir memang konstan: ingat bahwa dan ditentukan oleh iterasi sebelumnya, jadi mereka konstan ketika mencoba untuk mengatur .gihift

Jadi, sekarang kita dapat mengklaim "ini persis kerugian kuadrat tertimbang dengan label dan bobot "gi/hihi

Penghargaan untuk Yaron dan Avi dari tim saya karena menjelaskan hal ini kepada saya.


0

Dan kemudian mereka mengklaim bahwa "ini persis kerugian kuadrat tertimbang dengan label gi / higi / hai dan bobot hihi" - pernyataan yang saya setujui, tapi saya tidak mengerti bagaimana kaitannya dengan algoritma calon split yang mereka gunakan .. .

  1. Jika hanya ada satu sampel, dan Anda mengoptimalkan pada iterasi , mudah untuk melihat bahwa nilainya akan menjadi , menjelaskanwtthw=gi/hi(ft(gi/hi))2

  2. Sekarang Anda memiliki seluruh kumpulan data. Dalam kasus di mana fungsi kerugian memiliki turunan kedua yang identik, akan menjadi bukan . Saya menulisnya dengan cara ini karena dalam kasus itu, tidak akan relevan dengan perbedaan antara sampel, karena tidak ada perbedaan. Namun, pada kenyataannya, ketika menjaga tidak berubah, berfluktuasi dengan distribusi .wavg(gi)/constsigma(gi)/sigma(hi)whigiwi w hi

Saya pikir itu menjelaskan mengapa ia bekerja karena tertimbang oleh .hi

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.