Saya bisa melatih regresi logistik dalam R
menggunakan
glm(y ~ x, family=binomial(logit)))
tapi, IIUC, ini mengoptimalkan kemungkinan log.
Apakah ada cara untuk melatih model menggunakan fungsi kehilangan linier ( ) (yang dalam hal ini sama dengan jarak variasi total )?
Yaitu, diberi vektor numerik dan vektor sedikit (logis) , saya ingin membangun fungsi monoton (pada kenyataannya, peningkatan) sedemikian rupa sehingga diminimalkan.
Lihat juga
Jawaban:
Apa yang ingin Anda lakukan tidak ada karena, karena kurangnya kata yang lebih baik, cacat secara matematis.
Tetapi pertama-tama, saya akan menekankan mengapa menurut saya premis pertanyaan Anda masuk akal. Saya kemudian akan mencoba menjelaskan mengapa saya pikir kesimpulan yang Anda ambil dari mereka didasarkan pada kesalahpahaman model logistik dan, akhirnya, saya akan menyarankan pendekatan alternatif.
Saya akan menunjukkan pengamatannAnda(huruf tebal menunjukkan vektor) yang terletak diruangpdimensi (entri pertama x{(xxi,yi)}ni=1 n p xxi p<n yi∈[0,1] f(xxi)=f(xx′iββ) xx′iββ n p
Anda benar bahwa jika Anda bermaksud menggunakan TVD sebagai kriteria untuk mengevaluasi model yang sesuai, maka masuk akal untuk mengharapkan kecocokan Anda untuk mengoptimalkan kriteria yang sama di antara semua kandidat yang mungkin, pada data Anda. Karenanya
Masalahnya adalah istilah error : dan jika kita menegakkan (kami hanya ingin model kita menjadi asimtotik berisi ), kemudian, harus menjadi heteroskedastic . Ini karena dapat mengambil dua nilai, 0 dan 1. Oleh karena itu, diberikan , juga hanya dapat mengambil dua nilai: ketika , yang terjadi dengan probabilitas , dan ketikaϵi=yi−f(xx′iββ) E(ϵϵ)=0 ϵi yi xxi ϵi 1−f(xx′iββ) yi=1 f(xx′iββ) −f(xx′iββ) yi=1 , yang terjadi dengan probabilitas .1−f(xx′iββ)
Pertimbangan ini secara bersama menyiratkan bahwa:
karenanya tidak konstan tetapi berbentuk parabola cekung dan dimaksimalkan ketika sedemikian rupa sehingga .var(ϵϵ) xx E(y|xx)≈.5
Ini melekat heteroskedastisitas dari residual memiliki konsekuensi . Ini menyiratkan antara lain bahwa ketika meminimalkan fungsi kehilangan , Anda secara asimptot merupakan bagian dari bobot sampel Anda. Yaitu, yang cocok tidak cocok dengan data sama sekali tetapi hanya sebagian yang terkumpul di sekitar tempat-tempat di mana sedemikian rupa sehingga . Intinya, ini adalah titik data paling tidak informatif dalam sampel Anda : mereka sesuai dengan pengamatan yang komponen kebisingannya terbesar. Karenanya, kecocokan Anda ditarik ke , misalnya dibuat tidak relevan.l1 ββ∗ xx E(yy|xx)≈.5 ββ∗=ββ:f(xx′ββ)≈.5
Salah satu solusi, seperti yang jelas dari paparan di atas adalah dengan menjatuhkan persyaratan ketidakberpihakan. Cara populer untuk bias estimator (dengan beberapa interpretasi Bayesian terlampir) adalah dengan memasukkan istilah penyusutan. Jika kami skala responsnya:
dan, untuk kemanfaatan komputasi, ganti dengan fungsi monoton lainnya --it akan nyaman bagi sekuel untuk menunjukkan komponen pertama dari vektor parameter sebagai dan yang - dan termasuk istilah penyusutan (misalnya salah satu bentuk ), masalah optimisasi yang dihasilkan menjadi:f(xx′ββ) g(xx,[c,γγ])=xx′[c,γγ] c p−1 γγ ||γγ||2
Perhatikan bahwa dalam masalah optimisasi baru (juga cembung) ini, penalti untuk pengamatan yang diklasifikasikan dengan benar adalah 0 dan tumbuh secara linier dengan untuk yang tidak diklasifikasikan - seperti dalam kerugian. Solusi untuk masalah optimasi kedua ini adalah koefisien linear svm (dengan pemisahan sempurna). Berbeda dengan , masuk akal untuk mempelajari dari data dengan penalti jenis TVD ('type' karena istilah bias) . Akibatnya, solusi ini diterapkan secara luas. Lihat misalnya paket R LiblineaR .xx′[[c,γ] l1 β[c∗,γγ∗] [ c ∗ , γββ∗ [c∗,γγ∗]
sumber
Saya tidak yakin mengapa Anda ingin menggunakan kerugian L1 untuk sesuatu yang dibatasi antara 0 dan 1. Tergantung pada apa tujuan Anda, Anda mungkin ingin mempertimbangkan sesuatu seperti kehilangan engsel, yang mirip dengan kehilangan L1 dalam satu arah dan datar di yang lain.
Bagaimanapun, kode di bawah ini harus melakukan apa yang Anda minta. Perhatikan bahwa respons optimal pada dasarnya adalah fungsi langkah.
sumber
Anda dapat menggunakan paket glmnet untuk pemasangan model L1, L2. Ini tidak terbatas pada regresi logistik tetapi termasuk itu.
Berikut sketsanya: http://web.stanford.edu/~hastie/glmnet/glmnet_alpha.html
Ada juga webminar: https://www.youtube.com/watch?v=BU2gjoLPfDc
Liblinear baik, tetapi saya telah menemukan glmnet lebih mudah untuk memulai. Glmnet menyertakan fungsi yang melakukan validasi silang dan memilih parameter regularisasi untuk Anda berdasarkan pada berbagai metrik seperti AUC.
Mengenai teori, saya akan membaca makalah tibshiarini tentang laso (regularisasi L1) dan bab dalam elemen pembelajaran statistik. http://statweb.stanford.edu/~tibs/lasso/lasso.pdf
Tentang kehilangan log, hanya untuk mengevaluasi model. Ini bukan fungsi kerugian untuk pemasangan model.
sumber