Por que o método de Newton para otimização da regressão logística é chamado de mínimos quadrados re-ponderados iterativos?
Não me parece claro porque a perda logística e a perda de mínimos quadrados são coisas completamente diferentes.
Por que o método de Newton para otimização da regressão logística é chamado de mínimos quadrados re-ponderados iterativos?
Não me parece claro porque a perda logística e a perda de mínimos quadrados são coisas completamente diferentes.
Respostas:
Resumo: GLMs são adequados através da pontuação de Fisher , que, como Dimitriy V. Masterov observa, é Newton-Raphson com o Hessian esperado (em vez disso, usamos uma estimativa das informações de Fisher em vez das informações observadas). Se estivermos usando a função de ligação canônica, verifica-se que o Hessian observado é igual ao Hessian esperado, portanto a pontuação NR e Fisher são as mesmas nesse caso. De qualquer forma, veremos que a pontuação de Fisher está realmente ajustando um modelo linear de mínimos quadrados ponderados, e as estimativas de coeficiente desse valor convergem * no máximo da probabilidade de regressão logística. Além de reduzir o ajuste de uma regressão logística a um problema já resolvido, também obtemos o benefício de poder usar diagnósticos de regressão linear no ajuste final do WLS para aprender sobre nossa regressão logística.
Vou manter isso focado na regressão logística, mas para uma perspectiva mais geral sobre a probabilidade máxima nos GLMs, recomendo a seção 15.3 deste capítulo, que passa por isso e deriva o IRLS em um cenário mais geral (acho que é de John Fox, Applied Análise de regressão e modelos lineares generalizados ).
ver comentários no final
Ajustaremos nosso GLM iterando algo da forma onde é a probabilidade do log e será o Hessiano observado ou esperado da probabilidade do log.ℓ J m
Nossa função de link é uma função que mapeia a média condicional para nosso preditor linear; portanto, nosso modelo para a média é . Seja a função de link inverso que mapeia o preditor linear para a média.μ i = E ( y i | x i ) g ( μ i ) = x T i β h
Para uma regressão logística, temos uma probabilidade de Bernoulli com observações independentes so Tomando derivadas, ∂ ℓ
Agora vamos supor que estamos usando a função de link canônico . Então para que que significa que isso simplifica tão Além disso, ainda usando , g - 1 c ( x ) : = h c ( x ) = 1 h ′ c =hc⋅(1-hc)∂ℓ∇l de(b;y)=Xt(y - y ). hc∂2ℓ
Seja Então temos e observamos como isso não tem mais , então (estamos vendo isso como uma função de portanto a única coisa aleatória é ) . Assim, mostramos que a pontuação de Fisher é equivalente a Newton-Raphson quando usamos o link canônico na regressão logística. Também em virtude de sempre será estritamente negativo definido, embora numericamente se chegar muito perto deH=- X T WX Y i E(H)=Hby y i ∈(0,1)- X T WX Y i 010H
Agora crie a resposta de trabalho e observe que ∇ l de = X t ( y - y ) = X T W z .
No conjunto, isso significa que podemos otimizar a probabilidade do log iterando e é exatamente para uma mínimos quadrados ponderados regressão de em . ( X T W ( m ) X ) - 1 X T W ( m ) Z ( m ) β z ( m ) X
Verificando isso em 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
e eles concordam.
Agora, se não estamos usando o link canônico, não obtemos a simplificação de in para que se torne muito mais complicado e, portanto, vemos uma diferença notável usando em nossa pontuação de Fisher.
Aqui está como vai ser: já elaboramos o modo que o Hessian será a principal dificuldade. Precisamos de
Através da linearidade da expectativa, tudo o que precisamos fazer para obter é substituir cada ocorrência de por sua média no modelo, que é . Cada termo no somatório conterá, portanto, um fator da forma Mas para realmente fazer nossa otimização, precisamos estimar cada , e na etapa é o melhor palpite que temos. Isso significa que isso reduzirá a
Agora, deixe e observe como no link canônico reduz para da seção anterior. Isso nos permite escrever exceto que agora é vez de ser necessariamente o próprio , portanto, isso pode diferir de Newton-Raphson. Para todos os portanto, além das questões numéricas, será definido como negativo.h ′
Temos permitindo que nossa nova resposta de trabalho seja com , temos .
Todos juntos estamos iterando portanto, essa ainda é uma sequência de regressões WLS, exceto que agora não é necessariamente Newton-Raphson.
Eu escrevi desta maneira para enfatizar a conexão com Newton-Raphson, mas frequentemente as pessoas fatoram as atualizações para que cada novo ponto seja a solução WLS, em vez de uma solução WLS adicionada até o ponto atual . Se quisermos fazer isso, podemos fazer o seguinte: portanto, se continuarmos assim, você verá a resposta de trabalho assuma a forma , mas é a mesma coisa.
Vamos confirmar que isso funciona usando-o para executar uma regressão probit nos mesmos dados simulados de antes (e esse não é o link canônico, por isso precisamos dessa forma mais geral de 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
e novamente os dois concordam.
Por fim, alguns comentários rápidos sobre convergência (vou ser breve, pois isso está ficando muito longo e não sou especialista em otimização). Embora, teoricamente, cada seja definido negativamente, más condições iniciais ainda podem impedir a convergência desse algoritmo. No exemplo probit acima, alterar as condições iniciais para resulta nisso, e isso nem parece uma condição inicial suspeita. Se você percorrer o procedimento IRLS com essa inicialização e esses dados simulados, pela segunda vez no loop, há alguns que arredondam para exatamente e os pesos se tornam indefinidos. Se estivermos usando o link canônico no algoritmo que forneci, nunca estaremos dividindo pory i 1 y i ( 1 - y i ) y i 0 1b.init=rep(1,p)
para obter pesos indefinidos, mas se tivermos uma situação em que alguns estão se aproximando de ou , como no caso de separação perfeita, ainda obteremos não convergência, pois o gradiente morre sem que alcancemos nada .