Klasifikasi dengan Peningkatan Gradien: Cara mempertahankan prediksi dalam [0,1]

17

Pertanyaan

Saya berjuang untuk memahami bagaimana prediksi disimpan dalam interval ketika melakukan klasifikasi biner dengan Gradient Boosting.[0,1]

Asumsikan kita sedang mengerjakan masalah klasifikasi biner, dan fungsi tujuan kita adalah hilangnya log, , di mana adalah variabel target dan adalah model kami saat ini.y { 0 , 1 } Hyilog(Hm(xsaya))+(1-ysaya)catatan(1-Hm(xsaya))y{0,1}H

Saat melatih pembelajar lemah berikutnya sedemikian rupa sehingga model baru kami adalah , mekanisme apa yang seharusnya menjaga ? Atau, mungkin pertanyaan yang lebih relevan, apakah ada mekanisme seperti itu?H i = H i - 1 + h i H i[ 0 , 1 ]hsayaHi=Hi1+hiHi[0,1]


Informasi lebih lanjut tentang apa yang saya lakukan

Saya mencoba menerapkan peningkatan gradien, menggunakan pohon regresi. Apa yang saya lakukan untuk menghindarinya adalah mengalikan dengan faktor , sehingga tidak pergi di bawah nol atau di atas satu, dan saya memilih dalam kisaran ini yang meminimalkan fungsi kerugian. c [ 0 , c max ] H + c max h chic[0,cmax]H+cmaxhc

Ini membawa masalah berikut: Setelah beberapa putaran, saya punya satu titik yang diklasifikasikan sempurna, dan split terbaik yang tersedia untuk mendorong classifier ke arah gradien ingin mendorong titik ini di atas satu, yang saya pastikan tidak terjadi oleh pengaturan . Dengan demikian semua iterasi berikutnya akan memilih pemisahan yang sama dan .c = 0c=0c=0

Saya mencoba praktik regularisasi umum

  • Mengurangi tingkat belajar dengan mengalikan dengan . Ini hanya menunda masalah.μ = 0,01cμ=0.01
  • Subsampling ruang fitur, tetapi beberapa poin sangat mudah untuk diklasifikasikan, mereka menandai hampir setiap kotak di "apakah ini positif?" formulir, dan hampir setiap "perpecahan yang baik" menunjukkan perilaku ini.

Saya pikir ini bukan masalah parameter, dan harus ada cara yang lebih baik untuk memperbaikinya. Saya tidak mengabaikan kemungkinan bahwa implementasi saya rusak, tetapi saya tidak menemukan adanya masalah untuk mengatasi masalah ini.

Apa yang kita manipulasi, dalam konteks kerugian logistik, harus menjadi probabilitas, jadi bagaimana kita menghindarinya?


Intuisi saya adalah menempatkan model yang sedang kita bangun, , dalam fungsi sigmoid sedemikian rupa sehingga dibatasi menjadi , dan saya kira itu akan berhasil, tetapi saya ingin tahu apakah ada solusi lain. Karena meningkatkan gradien tampaknya berhasil digunakan dalam tugas klasifikasi, solusi "benar" (yaitu, dengan justifikasi) harus ada.[ 0 , 1 ]H[0,1]

Mengedipkan mata
sumber
Anda bisa meminta bahwa adalah multiplikatif, karena berperilaku positif dengan para ahli Anda yang lain. ln ( H )Hln(H)
Alex R.

Jawaban:

21

Saya suka memikirkan hal ini dalam analogi dengan kasus model linier, dan ekstensi mereka ke GLM (model linier umum).

Dalam model linier, kami menyesuaikan fungsi linier untuk memprediksi respons kami

y^=β0+β1x1+βnxn

Untuk menggeneralisasi ke situasi lain, kami memperkenalkan fungsi tautan, yang mengubah bagian linier model ke skala respons (secara teknis ini adalah tautan terbalik, tetapi saya pikir lebih mudah untuk memikirkannya dengan cara ini, mengubah prediktor linier). menjadi respons, daripada mengubah respons menjadi prediktor linier).

Misalnya, model logistik menggunakan fungsi sigmoid (atau logit)

y^=11+exp((β0+β1x1+βnxn))

dan regresi poisson menggunakan fungsi eksponensial

y^=exp(β0+β1x1+βnxn)

Untuk membangun analogi dengan peningkatan gradien, kami mengganti bagian linier dari model ini dengan jumlah pohon yang dikuatkan. Jadi, misalnya, kasus gaussian (analog dengan regresi linier) menjadi terkenal

y^=ihi

di mana adalah urutan peserta didik yang lemah. Kasus binomial analog dengan regresi logistik (seperti yang Anda catat dalam jawaban Anda)hi

y^=11+exp(ihi)

dan meningkatkan poisson adalah analog dengan regresi poisson

y^=exp(ihi)

Pertanyaannya tetap, bagaimana orang cocok dengan model yang dikuatkan ini ketika fungsi tautan dilibatkan? Untuk kasus gaussian, di mana tautannya adalah fungsi identitas, mantra yang sering terdengar untuk menyesuaikan peserta didik yang lemah dengan residu dari model kerja saat ini berhasil, tetapi ini tidak benar-benar menggeneralisasi ke model yang lebih rumit. Caranya adalah dengan menulis fungsi kerugian yang diperkecil sebagai fungsi dari bagian linier model (yaitu bagian dari formulasi GLM).iβixi

Sebagai contoh, kerugian binomial biasanya ditemui sebagai

iyilog(pi)+(1yi)log(1pi)

Di sini, kerugian adalah fungsi dari , nilai prediksi pada skala yang sama dengan respons, dan adalah transformasi non-linear dari prediktor linier . Sebagai gantinya, kita dapat menyatakan kembali ini sebagai fungsi , (dalam hal ini juga dikenal sebagai peluang log)pipiLiLi

iyiLilog(1+exp(Li))

Kemudian kita dapat mengambil gradien ini sehubungan dengan , dan mendorong untuk langsung meminimalkan jumlah ini.L

Hanya di bagian paling akhir, ketika kita ingin menghasilkan prediksi untuk pengguna, kita menerapkan fungsi tautan ke urutan terakhir dari pelajar yang lemah untuk menempatkan prediksi pada skala yang sama dengan respons. Sambil menyesuaikan model, kami bekerja secara internal pada skala linier sepanjang waktu.

Matthew Drury
sumber
2
Setuju dengan "tulis fungsi kerugian yang diperkecil sebagai fungsi dari bagian linier model". Tapi saya pikir cara langsung untuk memahaminya tanpa menurunkan peluang log adalah: untuk bagian linier model, yaitu , pikirkan fungsi kerugian sebagai , dan pseudo-residual hanya untuk membuat turunan dari loss wrt . r(-,)i(yilog11+er+(1yi)log(111+er))r
user2830451
@ matthew-drury Bisakah Anda menambahkan beberapa cahaya pada bagian multinomial K-class dari algoritma yang sama di mana ide serupa diperluas untuk bekerja untuk itu?
MixCoded
6

Setelah beberapa penelitian, sepertinya intuisi saya dan komentar Alex R. benar.

Untuk membangun model berkelanjutan dengan prediksi dalam , seseorang dapat menempatkan model ke fungsi logistik (Wikipedia) , sehingga untuk , kita memiliki Langkah-langkah meningkatkan gradien kemudian mengambil turunan sehubungan dengan dan memperbarui model, seolah-olah fungsi logistik adalah bagian dari fungsi biaya, dan berfungsi.[0,1]HHR

11+eH[0,1]
H

Ini telah disarankan dalam makalah Aditif regresi logistik: pandangan statistik meningkatkan , oleh Friedman, Hastie dan Tibshirani, untuk membangun LogitBoost (Wikipedia) , sebuah adaptasi dari AdaBoost (Wikipedia) ke Kehilangan Logistik.

Dalam istilah yang sangat mendasar, jika mungkin untuk beralih dari regresi linier ke regresi logistik dengan penambahan sigmoid, maka itu juga berfungsi untuk mengubah peningkatan regresi ke peningkatan klasifikasi.

Mengedipkan mata
sumber