Neden lojistik regresyon optimizasyonu için Newton yöntemini kullanmaya yinelemeli yeniden ağırlıklı en küçük kareler denir?
Benim için net görünmüyor çünkü lojistik kayıp ve en az kar kaybı tamamen farklı şeyler.
Neden lojistik regresyon optimizasyonu için Newton yöntemini kullanmaya yinelemeli yeniden ağırlıklı en küçük kareler denir?
Benim için net görünmüyor çünkü lojistik kayıp ve en az kar kaybı tamamen farklı şeyler.
Yanıtlar:
Özet: GLM'ler, Dimitriy V. Masterov'un belirttiği gibi, bunun yerine beklenen Hessian ile Newton-Raphson olan Fisher skorlaması ile uyuyor (yani gözlemlenen bilgiler yerine Fisher bilgilerinin bir tahminini kullanıyoruz). Kanonik bağlantı fonksiyonunu kullanırsak, gözlemlenen Hessian'ın beklenen Hessian'a eşit olduğu ortaya çıkar, bu nedenle NR ve Fisher puanlaması bu durumda aynıdır. Her iki durumda da, Fisher puanlamasının aslında ağırlıklı bir en küçük kareler doğrusal modeline uyduğunu ve bu yakınsaklıktan elde edilen katsayı tahminlerinin maksimum lojistik regresyon olasılığına göre olduğunu göreceğiz. Daha önce çözülmüş bir soruna lojistik regresyon uydurmayı azaltmanın yanı sıra, lojistik regresyonumuz hakkında bilgi edinmek için nihai WLS uyumunda doğrusal regresyon teşhisi kullanabilme avantajından da yararlanıyoruz.
Bunu lojistik regresyona odaklayacağım, ancak GLM'lerde maksimum olasılık hakkında daha genel bir perspektif için, bu bölümün bundan geçen ve daha genel bir ortamda IRLS'yi türeyen bu bölümün 15.3 bölümünü öneriyorum (sanırım John Fox'un Uygulamalı Regresyon Analizi ve Genelleştirilmiş Doğrusal Modeller ).
Sonunda bkz comments
GLM'mizi, şeklinde bir şey yineleyerek takacağız ;
Bizim bağlantı işlevi, bir fonksiyonudur koşullu ortalama eşleyen doğrusal öngörücümüzle, bu nedenle ortalama modelimiz . , doğrusal öngörücüyü ortalamayla eşleyen ters bağlantı fonksiyonuolsun.
Lojistik regresyon için, bağımsız gözlemleri olan bir Bernoulli olasılığımız var, bu yüzden
Şimdi de kurallı bağlantı işlevini kullanıyorsanız varsayalım . Sonra g - 1 c ( x ) : = h c ( x ) = 1 yanih ′ c =hc⋅(1-hc), bu da ∂ℓ
Let
Now create the working response and note that
All together this means that we can optimize the log likelihood by iterating
Checking this in R
:
set.seed(123)
p <- 5
n <- 500
x <- matrix(rnorm(n * p), n, p)
betas <- runif(p, -2, 2)
hc <- function(x) 1 /(1 + exp(-x)) # inverse canonical link
p.true <- hc(x %*% betas)
y <- rbinom(n, 1, p.true)
# fitting with our procedure
my_IRLS_canonical <- function(x, y, b.init, hc, tol=1e-8) {
change <- Inf
b.old <- b.init
while(change > tol) {
eta <- x %*% b.old # linear predictor
y.hat <- hc(eta)
h.prime_eta <- y.hat * (1 - y.hat)
z <- (y - y.hat) / h.prime_eta
b.new <- b.old + lm(z ~ x - 1, weights = h.prime_eta)$coef # WLS regression
change <- sqrt(sum((b.new - b.old)^2))
b.old <- b.new
}
b.new
}
my_IRLS_canonical(x, y, rep(1,p), hc)
# x1 x2 x3 x4 x5
# -1.1149687 2.1897992 1.0271298 0.8702975 -1.2074851
glm(y ~ x - 1, family=binomial())$coef
# x1 x2 x3 x4 x5
# -1.1149687 2.1897992 1.0271298 0.8702975 -1.2074851
and they agree.
Now if we're not using the canonical link we don't get the simplification of in so becomes much more complicated, and we therefore see a noticeable difference by using in our Fisher scoring.
Here's how this will go: we already worked out the general so the Hessian will be the main difficulty. We need
Via the linearity of expectation all we need to do to get is replace each occurrence of with its mean under our model which is . Each term in the summand will therefore contain a factor of the form
Now let
We have
All together we are iterating
I've written it out this way to emphasize the connection to Newton-Raphson, but frequently people will factor the updates so that each new point is itself the WLS solution, rather than a WLS solution added to the current point . If we wanted to do this, we can do the following:
Let's confirm that this works by using it to perform a probit regression on the same simulated data as before (and this is not the canonical link, so we need this more general form of IRLS).
my_IRLS_general <- function(x, y, b.init, h, h.prime, tol=1e-8) {
change <- Inf
b.old <- b.init
while(change > tol) {
eta <- x %*% b.old # linear predictor
y.hat <- h(eta)
h.prime_eta <- h.prime(eta)
w_star <- h.prime_eta^2 / (y.hat * (1 - y.hat))
z_star <- (y - y.hat) / h.prime_eta
b.new <- b.old + lm(z_star ~ x - 1, weights = w_star)$coef # WLS
change <- sqrt(sum((b.new - b.old)^2))
b.old <- b.new
}
b.new
}
# probit inverse link and derivative
h_probit <- function(x) pnorm(x, 0, 1)
h.prime_probit <- function(x) dnorm(x, 0, 1)
my_IRLS_general(x, y, rep(0,p), h_probit, h.prime_probit)
# x1 x2 x3 x4 x5
# -0.6456508 1.2520266 0.5820856 0.4982678 -0.6768585
glm(y~x-1, family=binomial(link="probit"))$coef
# x1 x2 x3 x4 x5
# -0.6456490 1.2520241 0.5820835 0.4982663 -0.6768581
and again the two agree.
Finally, a few quick comments on convergence (I'll keep this brief as this is getting really long and I'm no expert at optimization). Even though theoretically each is negative definite, bad initial conditions can still prevent this algorithm from converging. In the probit example above, changing the initial conditions to b.init=rep(1,p)
results in this, and that doesn't even look like a suspicious initial condition. If you step through the IRLS procedure with that initialization and these simulated data, by the second time through the loop there are some that round to exactly and so the weights become undefined. If we're using the canonical link in the algorithm I gave we won't ever be dividing by to get undefined weights, but if we've got a situation where some are approaching or , such as in the case of perfect separation, then we'll still get non-convergence as the gradient dies without us reaching anything.