Lojistik regresyon ortamında kare kayıp kullandığımda ne oluyor?


16

Bir oyuncak veri kümesi üzerinde ikili sınıflandırma yapmak için kare kaybı kullanmaya çalışıyorum.

mtcarsVeri seti kullanıyorum , iletim tipini tahmin etmek için galon başına mil ve ağırlık kullanıyorum. Aşağıdaki grafik, farklı renkteki iki tür iletim tipi verisini ve farklı kayıp fonksiyonu tarafından oluşturulan karar sınırını göstermektedir. Kare kayıp burada temel doğruluk etiketi (0 veya 1) ve tahmin edilen olasılık . Başka bir deyişle, lojistik kaybı sınıflandırma ortamında kare kaybı ile değiştiriyorum, diğer bölümler aynı.y i p i p i = Logit - 1 ( β T x i )i(yipi)2yipipi=Logit1(βTxi)

mtcarsVerileri olan bir oyuncak örneği için , çoğu durumda, lojistik regresyona "benzer" bir model aldım (rasgele tohum 0 ile aşağıdaki şekle bakın).

resim açıklamasını buraya girin

Ancak bazı yerlerde (eğer yaparsak set.seed(1)), kare kaybı iyi çalışmıyor gibi görünüyor. resim açıklamasını buraya girin Burada ne oluyor? Optimizasyon birleşmiyor mu? Lojistik kaybın karesi alınmış kayda göre optimize edilmesi daha mı kolay? Herhangi bir yardım mutluluk duyacağız.


kod

d=mtcars[,c("am","mpg","wt")]
plot(d$mpg,d$wt,col=factor(d$am))
lg_fit=glm(am~.,d, family = binomial())
abline(-lg_fit$coefficients[1]/lg_fit$coefficients[3],
       -lg_fit$coefficients[2]/lg_fit$coefficients[3])
grid()

# sq loss
lossSqOnBinary<-function(x,y,w){
  p=plogis(x %*% w)
  return(sum((y-p)^2))
}

# ----------------------------------------------------------------
# note, this random seed is important for squared loss work
# ----------------------------------------------------------------
set.seed(0)

x0=runif(3)
x=as.matrix(cbind(1,d[,2:3]))
y=d$am
opt=optim(x0, lossSqOnBinary, method="BFGS", x=x,y=y)

abline(-opt$par[1]/opt$par[3],
       -opt$par[2]/opt$par[3], lty=2)
legend(25,5,c("logisitc loss","squared loss"), lty=c(1,2))

1
Belki de rastgele başlangıç ​​değeri zayıftır. Neden daha iyi bir tane seçmiyorsunuz?
whuber

1
@whuber lojistik kaybı dışbükeydir, bu nedenle başlangıç ​​önemli değildir. p ve y'de kare kaybı ne olacak? dışbükey mi?
Haitao Du

5
Tarif ettiğin şeyi çoğaltamıyorum. optimbitmediğini söyler, hepsi bu: yakınsama. Kodunuzu ek argümanla yeniden çalıştırarak control=list(maxit=10000), uyumunu çizerek ve katsayılarını orijinal kodlarla karşılaştırarak çok şey öğrenebilirsiniz .
whuber

2
@amoeba yorumlarınız için teşekkür ederim, soruyu revize ettim. umarım daha iyidir.
Haitao Du

@amoeba Efsaneyi gözden geçireceğim, ancak bu ifade düzeltilmeyecek mi (3)? "Mtcars veri seti kullanıyorum, şanzıman tipini tahmin etmek için galon başına mil ve ağırlık kullanıyorum. Aşağıdaki grafikte, farklı renklerde iki tür iletim tipi verisi ve farklı kayıp fonksiyonu tarafından oluşturulan karar sınırı gösterilmektedir."
Haitao Du

Yanıtlar:


19

Sorunu kendi örneğinizde çözdüğünüz anlaşılıyor, ancak bence en küçük kareler ile maksimum olabilirlik lojistik regresyonu arasındaki farkın daha dikkatli bir şekilde incelenmesine değer.

Biraz gösterim alalım. Let ve . Maksimum olabilirlik (veya burada yaptığım gibi minimum negatif günlük olasılığı) yapıyorsak, ile bağlantı fonksiyonumuzdur .LS(yi,y^i)=12(yiy^i)2LL(yi,y^i)=yilogy^i+(1yi)log(1y^i) β L:=argminb R p- n i=1yi

β^L:=argminbRpi=1nyilogg1(xiTb)+(1yi)log(1g1(xiTb))
g

Alternatif olarak en küçük kareler çözeltisi olarak. Böylece minimize eder için ve benzer .

β^S:=argminbRp12i=1n(yig1(xiTb))2
β SLSLLβ^SLSLL

Let ve minimize tekabül objektif fonksiyonları olmak ve sırasıyla için yapılır ve . Son olarak, öyleyse . Standart bağlantıyı kullanırsak, geldiğini unutmayın fSfLLSLLβ S β L h = g - 1 y i = h ( x , T i b ) s ( Z ) = 1β^Sβ^Lh=g1y^i=h(xiTb)

h(z)=11+ezh(z)=h(z)(1h(z)).


Düzenli lojistik regresyon için Kullanma biz bu basitleştirebilir yani

fLbj=i=1nh(xiTb)xij(yih(xiTb)1yi1h(xiTb)).
h=h(1h)
fLbj=i=1nxij(yi(1y^i)(1yi)y^i)=i=1nxij(yiy^i)
fL(b)=XT(YY^).

Sonra ikinci türevleri yapalım. Hessen

HL:=2fLbjbk=i=1nxijxiky^i(1y^i).
HL=X, TbirXbir=tanılama( Y (1 - Y )), HL -Y , Y'HLB Bu araçlarının . , mevcut takılmış değerlere bağlı, ancak düştü ve . Dolayısıyla optimizasyon problemimiz .HL=XTAXA=diag(Y^(1Y^))HLY^YHLb


Bunu en küçük karelerle karşılaştıralım.

fSbj=i=1n(yiy^i)h(xiTb)xij.

Bu demektir ki Bu hayati bir noktadır: degrade tüm dışında neredeyse aynıdır , bu nedenle temelde degradeyi göre düzleştiriyoruz . Bu, yakınsamayı yavaşlatacaktır.

fS(b)=XTA(YY^).
i y^i(1y^i)(0,1)fL

Hessian için önce

fSbj=i=1nxij(yiy^i)y^i(1y^i)=i=1nxij(yiy^i(1+yi)y^i2+y^i3).

Bu bizi

HS:=2fSbjbk=i=1nxijxikh(xiTb)(yi2(1+yi)y^i+3y^i2).

Let . Şimdi B=diag(yi2(1+yi)y^i+3y^i2)

HS=XTABX.

Ne yazık ki, bizim için ağırlıklar negatif olmayan olmasını garanti değildir: eğer sonra pozitif olan iff . Benzer şekilde, daha sonra pozitif olduğunda ( için de olumludur, ancak bu mümkün değildir). Bu, mutlaka PSD olmadığı anlamına gelir , bu yüzden sadece öğrenmeyi zorlaştıracak degradelerimizi , aynı zamanda problemimizin dışbükeyliğini de bozduk.Byi=0yi2(1+yi)y^i+3y^i2=y^i(3y^i2)y^i>23yi=1yi2(1+yi)y^i+3y^i2=14y^i+3y^i2y^i<13y^i>1HS


Sonuçta, lojistik regresyonun bazen en az kareler ile veya yakın yeterli değerlere sahip böylece oldukça küçük olabilir ve bu nedenle gradyan oldukça düzleştirilmiş.01y^i(1y^i)

Bunu sinir ağlarına bağlamak, mütevazı bir lojistik regresyon olmasına rağmen, kare kayıpla Goodfellow, Bengio ve Courville'in aşağıdakileri yazarken Derin Öğrenme kitabında ne gibi bir şey yaşadığını düşünüyorum :

Sinir ağı tasarımı boyunca tekrar eden bir tema, maliyet fonksiyonunun gradyanının, öğrenme algoritması için iyi bir rehber görevi görecek kadar büyük ve öngörülebilir olması gerektiğidir. Doygunluğu çok küçük hale getirdikleri için doygun (çok düz hale gelen) işlevler bu hedefi zayıflatır. Çoğu durumda bu, gizli birimlerin veya çıkış birimlerinin çıktısını üretmek için kullanılan etkinleştirme işlevlerinin doymuş olması nedeniyle olur. Negatif log olasılığı, birçok model için bu sorunun önlenmesine yardımcı olur. Birçok çıktı birimi, argümanı çok olumsuz olduğunda doyurabilecek bir exp işlevi içerir. Negatif log olabilirlik maliyeti işlevindeki log işlevi, bazı çıktı birimlerinin sürekliliğini geri alır. Maliyet fonksiyonu ile çıktı birimi seçimi arasındaki etkileşimi Sn. 6.2.2.

ve 6.2.2'de,

Ne yazık ki, ortalama kare hatası ve ortalama mutlak hata, gradyan tabanlı optimizasyonla kullanıldığında genellikle kötü sonuçlara yol açar. Doymuş olan bazı çıktı birimleri, bu maliyet fonksiyonları ile birleştirildiğinde çok küçük eğimler üretir. Çapraz entropi maliyet fonksiyonunun, dağılımının tamamını tahmin etmek gerekli olmasa bile ortalama kare hatadan veya ortalama mutlak hatadan daha popüler olmasının bir nedeni budur .p(y|x)

(her iki alıntı da bölüm 6'dan alınmıştır).


1
Türev ve kendir türetmemde bana gerçekten yardımcı oldum. Yarın daha dikkatli kontrol edeceğim.
Haitao Du

1
@ hxd1011 çok hoş geldiniz ve bu eski sorunuzun bağlantısı için teşekkürler! Ben gerçekten bu daha dikkatli geçmesi için anlam oldu bu yüzden bu harika bir bahane oldu :)
jld

1
Matematiği dikkatlice okudum ve kodla doğruladım. Kare kaybı için Hessian'ın sayısal yaklaşımla eşleşmediğini buldum. Kontrol edebilir misin? İsterseniz kodu göstermekten çok mutluyum.
Haitao Du

@ hxd1011 Tekrar türetme işlemini gerçekleştirdim ve bir işaret hatası olduğunu düşünüyorum : için olduğu her yerde . Tekrar kontrol edip düzeltip düzeltmediğini söyleyebilir misiniz? Düzeltme için çok teşekkürler. HSyi2(1yi)y^i+3y^i2yi2(1+yi)y^i+3y^i2
jld

@ hxd1011 düzeltti sevindim! bulduğunuz için tekrar teşekkürler
jld

5

Yardım için @whuber ve @Chaconne'a teşekkür ederim. Özellikle @Chaconne, bu türev yıllarca olmasını istediğim şey.

Sorun optimizasyon bölümünde. Rastgele çekirdeği 1 olarak ayarlarsak, varsayılan BFGS çalışmaz. Ancak algoritmayı değiştirir ve maksimum yineleme numarasını değiştirirsek, tekrar çalışır.

@Chaconne'den bahsedildiği gibi, problem sınıflandırma için kare kaybı dışbükey değildir ve optimize edilmesi daha zordur. @ Chaconne'nin matematiğini eklemek için, lojistik kayıp ve kare kayıp üzerine bazı görselleştirmeler sunmak istiyorum.

mtcarsOrijinal oyuncak örneğinin kesişme dahil katsayısı olduğu için demo verilerini değiştireceğiz . Bu veri setinde üretilen başka bir oyuncak veri seti kullanacağız , görselleştirme için daha iyi olan parametre ayarladık .3mlbench2

İşte demo

  • Veriler sol şekilde gösterilmektedir: iki renkte iki sınıfımız var. x, y veri için iki özelliktir. Ek olarak kırmızı çizgiyi lojistik kayıptan doğrusal sınıflandırıcıyı, mavi çizgi ise kare kayıptan doğrusal sınıflandırıcıyı temsil eder.

  • Ortadaki şekil ve sağdaki şekil lojistik kayıp (kırmızı) ve kare kayıp (mavi) için konturu gösterir. x, y taktığımız iki parametredir. Nokta, BFGS tarafından bulunan en uygun noktadır.

resim açıklamasını buraya girin

Konturdan, kare kaybını optimize etmenin neden daha zor olduğunu kolayca görebiliriz: Chaconne'nin belirttiği gibi, dışbükey değildir.

İşte persp3d'den bir görünüm daha.

resim açıklamasını buraya girin


kod

set.seed(0)
d=mlbench::mlbench.2dnormals(50,2,r=1)
x=d$x
y=ifelse(d$classes==1,1,0)

lg_loss <- function(w){
  p=plogis(x %*% w)
  L=-y*log(p)-(1-y)*log(1-p)
  return(sum(L))
}
sq_loss <- function(w){
  p=plogis(x %*% w)
  L=sum((y-p)^2)
  return(L)
}

w_grid_v=seq(-15,15,0.1)
w_grid=expand.grid(w_grid_v,w_grid_v)

opt1=optimx::optimx(c(1,1),fn=lg_loss ,method="BFGS")
z1=matrix(apply(w_grid,1,lg_loss),ncol=length(w_grid_v))

opt2=optimx::optimx(c(1,1),fn=sq_loss ,method="BFGS")
z2=matrix(apply(w_grid,1,sq_loss),ncol=length(w_grid_v))

par(mfrow=c(1,3))
plot(d,xlim=c(-3,3),ylim=c(-3,3))
abline(0,-opt1$p2/opt1$p1,col='darkred',lwd=2)
abline(0,-opt2$p2/opt2$p1,col='blue',lwd=2)
grid()
contour(w_grid_v,w_grid_v,z1,col='darkred',lwd=2, nlevels = 8)
points(opt1$p1,opt1$p2,col='darkred',pch=19)
grid()
contour(w_grid_v,w_grid_v,z2,col='blue',lwd=2, nlevels = 8)
points(opt2$p1,opt2$p2,col='blue',pch=19)
grid()


# library(rgl)
# persp3d(w_grid_v,w_grid_v,z1,col='darkred')

2
İlk figürünüzün üçüncü alt bölümünde herhangi bir dışbükeylik görmüyorum ...
amip diyor Reinstate Monica

@amoeba Dışbükey konturun elips gibi olduğunu düşündüm, iki U şekilli eğri arka arkaya dışbükey değil, doğru mu?
Haitao Du

2
Hayır neden? Belki daha büyük bir elips benzeri konturun bir parçasıdır? Yani, çok dışbükey olmayabilir, sadece bu özel figürde görmediğimi söylüyorum.
amip: Reinstate Monica
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.