Có bất kỳ lời giải thích trực quan về lý do tại sao hồi quy logistic sẽ không hoạt động cho trường hợp tách hoàn hảo? Và tại sao thêm chính quy sẽ sửa chữa nó?


20

Chúng tôi có nhiều cuộc thảo luận tốt về sự tách biệt hoàn hảo trong hồi quy logistic. Chẳng hạn như, hồi quy logistic trong R dẫn đến sự phân tách hoàn hảo (hiện tượng Hauck-Donner). Giờ thì sao? mô hình hồi quy Logistic không hội tụ .

Cá nhân tôi vẫn cảm thấy nó không trực quan về lý do tại sao nó sẽ là một vấn đề và tại sao việc thêm chính quy sẽ khắc phục nó. Tôi đã thực hiện một số hình ảnh động và nghĩ rằng nó sẽ hữu ích. Vì vậy, hãy đăng câu hỏi của anh ấy và tự trả lời nó để chia sẻ với cộng đồng.


Xem bài đăng cũ này của Brian Ripley: math.yorku.ca/Who/Facemony/Monette/S-news/0027.html
kjetil b halvorsen

Câu trả lời:


29

Một bản demo 2D với dữ liệu đồ chơi sẽ được sử dụng để giải thích những gì đang xảy ra để phân tách hoàn hảo về hồi quy logistic có và không có quy tắc. Các thí nghiệm bắt đầu với một tập dữ liệu chồng chéo và chúng tôi dần dần tách hai lớp ra. Đường viền hàm mục tiêu và tối ưu (mất logistic) sẽ được hiển thị trong hình bên phải. Dữ liệu và ranh giới quyết định tuyến tính được vẽ trong hình phụ bên trái.

Đầu tiên chúng ta thử hồi quy logistic mà không cần chính quy.

  • Như chúng ta có thể thấy với dữ liệu di chuyển xa nhau, hàm mục tiêu (mất logistic) đang thay đổi đáng kể và tối ưu hóa đang chuyển sang một giá trị lớn hơn .
  • Khi chúng tôi đã hoàn thành thao tác, đường viền sẽ không phải là "hình dạng đóng". Tại thời điểm này, hàm mục tiêu sẽ luôn nhỏ hơn khi giải pháp di chuyển đến phía trên bên phải.

nhập mô tả hình ảnh ở đây

Tiếp theo, chúng tôi thử hồi quy logistic với chính quy L2 (L1 là tương tự).

  • Với cùng một thiết lập, việc thêm một chính quy L2 rất nhỏ sẽ thay đổi hàm mục tiêu thay đổi liên quan đến việc tách dữ liệu.

  • Trong trường hợp này, chúng ta sẽ luôn có mục tiêu "lồi". Không có vấn đề bao nhiêu tách dữ liệu.

nhập mô tả hình ảnh ở đây

(Tôi cũng sử dụng cùng một mã cho câu trả lời này: Các phương thức chính quy cho hồi quy logistic )

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
Những hình dung này là tuyệt vời.
Matthew Drury
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.