왜 로지스틱 회귀가 완벽한 분리 사례에서 작동하지 않는지에 대한 직관적 인 설명이 있습니까? 왜 정규화를 추가하면 문제가 해결됩니까?


20

로지스틱 회귀 분석에서 완벽한 분리에 대한 많은 토론이 있습니다. 예를 들어 R의 로지스틱 회귀는 완벽한 분리 (Hauck-Donner 현상)를 초래했습니다. 이제 뭐? 로지스틱 회귀 모델은 수렴하지 않습니다 .

개인적으로 여전히 문제가되는 이유와 정규화를 추가하면 문제가 해결되는 것은 직관적이지 않다고 생각합니다. 애니메이션을 만들어서 도움이 될 것이라고 생각합니다. 따라서 자신의 질문을 게시하고 커뮤니티에 공유하기 위해 스스로 답하십시오.


Brian Ripley의이 오래된 포스트를보십시오 : math.yorku.ca/Who/Faculty/Monette/S-news/0027.html
kjetil b halvorsen

답변:


29

완구 데이터가 포함 된 2D 데모를 사용하여 정규화 여부에 관계없이 로지스틱 회귀 분석에서 완벽한 분리를 위해 발생한 상황을 설명합니다. 실험은 겹치는 데이터 세트로 시작했으며 점차 두 클래스를 분리했습니다. 목적 기능 윤곽선 및 최적화 (물류 손실)가 오른쪽 하위 그림에 표시됩니다. 데이터와 선형 결정 경계는 왼쪽 그림에 그려져 있습니다.

먼저 정규화없이 로지스틱 회귀 분석을 시도합니다.

  • 데이터가 분리되면서 알 수 있듯이 목적 함수 (물류 손실)가 급격히 변화하고 있으며 옵티마이 저가 더 큰 가치로 멀어지고 있습니다 .
  • 작업을 완료하면 형상이 "닫힌 모양"이 아닙니다. 이때 솔루션이 오른쪽 상단 코너로 이동하면 목적 함수는 항상 더 작아집니다.

여기에 이미지 설명을 입력하십시오

다음으로 L2 정규화로 로지스틱 회귀 분석을 시도합니다 (L1은 유사 함).

  • 동일한 설정으로 매우 작은 L2 정규화를 추가하면 데이터 분리와 관련된 목적 함수 변경이 변경됩니다.

  • 이 경우에는 항상 "볼록한"목표가 있습니다. 데이터의 분리 량에 관계없이

여기에 이미지 설명을 입력하십시오

코드 (이 답변에도 동일한 코드를 사용합니다 : 로지스틱 회귀에 대한 정규화 방법 )

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)

2
λ0+λ=ϵ

4
이 시각화는 환상적입니다.
Matthew Drury
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.