Existe alguma explicação intuitiva sobre por que a regressão logística não funciona para um caso de separação perfeito? E por que adicionar regularização irá corrigi-lo?

20

Temos muitas boas discussões sobre a separação perfeita na regressão logística. Por exemplo, a regressão logística em R resultou em perfeita separação (fenômeno de Hauck-Donner). O que agora? e o modelo de regressão logística não converge .

Pessoalmente, ainda acho que não é intuitivo por que será um problema e por que a adição de regularização o corrigirá. Fiz algumas animações e acho que será útil. Então, poste sua pergunta e responda sozinha para compartilhar com a comunidade.

Haitao Du
fonte
Veja esta postagem antiga de Brian Ripley: math.yorku.ca/Who/Faculty/Monette/S-news/0027.html
kjetil b halvorsen

Respostas:

29

Uma demonstração 2D com dados de brinquedos será usada para explicar o que estava acontecendo para uma separação perfeita na regressão logística com e sem regularização. Os experimentos começaram com um conjunto de dados sobrepostos e gradualmente separamos duas classes. O contorno da função objetivo e o valor ótimo (perda logística) serão mostrados na sub-figura à direita. Os dados e o limite de decisão linear são plotados na sub-figura esquerda.

Primeiro, tentamos a regressão logística sem regularização.

  • Como podemos ver com os dados se separando, a função objetivo (perda logística) está mudando drasticamente e a otimização está se afastando para um valor maior .
  • Quando concluirmos a operação, o contorno não será uma "forma fechada". Nesse momento, a função objetivo sempre será menor quando a solução se mover para o canto superior direito.

insira a descrição da imagem aqui

Em seguida, tentamos a regressão logística com regularização de L2 (L1 é semelhante).

  • Com a mesma configuração, adicionar uma regularização L2 muito pequena alterará as alterações da função objetivo em relação à separação dos dados.

  • Nesse caso, sempre teremos o objetivo "convexo". Não importa quanta separação os dados tenham.

insira a descrição da imagem aqui

código (eu também uso o mesmo código para esta resposta: Métodos de regularização para regressão logística )

set.seed(0)  
d=mlbench::mlbench.2dnormals(100, 2, r=1)

x = d$x
y = ifelse(d$classes==1, 1, 0)

logistic_loss <- function(w){
  p    = plogis(x %*% w)
  L    = -y*log(p) - (1-y)*log(1-p)
  LwR2 = sum(L) + lambda*t(w) %*% w
  return(c(LwR2))
}

logistic_loss_gr <- function(w){
  p = plogis(x %*% w)
  v = t(x) %*% (p - y)
  return(c(v) + 2*lambda*w)
}

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

lambda = 0
opt1   = optimx::optimx(c(1,1), fn=logistic_loss, gr=logistic_loss_gr, method="BFGS")
z1     = matrix(apply(w_grid,1,logistic_loss), ncol=length(w_grid_v))

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

plot(d, xlim=c(-3,3), ylim=c(-3,3))
abline(0, -opt1$p2/opt1$p1, col='blue',  lwd=2)
abline(0, -opt2$p2/opt2$p1, col='black', lwd=2)
contour(w_grid_v, w_grid_v, z1, col='blue',  lwd=2, nlevels=8)
contour(w_grid_v, w_grid_v, z2, col='black', lwd=2, nlevels=8, add=T)
points(opt1$p1, opt1$p2, col='blue',  pch=19)
points(opt2$p1, opt2$p2, col='black', pch=19)
Haitao Du
fonte
2
Isso lembra muito as soluções de viscosidade para PDEs hiperbólicas. Gostaria de saber se é possível obter diretamente a solução limitadora sem precisar aproximar , como é para alguns PDEs? λ0+λ=ϵ
GeoMatt22
4
Essas visualizações são fantásticas.
Matthew Drury