Lấy các giá trị dự đoán (Y = 1 hoặc 0) từ mô hình hồi quy logistic phù hợp


50

Giả sử tôi có một đối tượng của lớp glm(tương ứng với mô hình hồi quy logistic) và tôi muốn biến các xác suất dự đoán được đưa ra bằng predict.glmcách sử dụng đối số type="response"thành phản hồi nhị phân, tức là hoặc Y = 0 . Cách nhanh nhất và kinh điển nhất để làm điều này trong R là gì?Y=1Y=0

Trong khi, một lần nữa, tôi biết predict.glm, tôi không biết nơi chính xác giá trị cắt sống - và tôi đoán đây là trở ngại chính của tôi ở đây.P(Yi=1|X^i)

Câu trả lời:


77

Một khi bạn có xác suất dự đoán, tùy thuộc vào ngưỡng bạn muốn sử dụng. Bạn có thể chọn ngưỡng để tối ưu hóa độ nhạy, độ đặc hiệu hoặc bất kỳ biện pháp nào quan trọng nhất trong ngữ cảnh của ứng dụng (một số thông tin bổ sung sẽ hữu ích ở đây để có câu trả lời cụ thể hơn). Bạn có thể muốn xem xét các đường cong ROC và các biện pháp khác liên quan đến phân loại tối ưu.

Chỉnh sửa: Để làm rõ câu trả lời này phần nào tôi sẽ đưa ra một ví dụ. Câu trả lời thực sự là việc cắt tối ưu phụ thuộc vào thuộc tính nào của trình phân loại là quan trọng trong ngữ cảnh của ứng dụng. Hãy là giá trị đích thực cho quan sát tôi , và Y i là lớp dự đoán. Một số biện pháp phổ biến của hiệu suất làYiiY^i

(1) Độ nhạy: - tỷ lệ '1 của được xác định một cách chính xác như vậy.P(Y^i=1|Yi=1)

P(Y^i=0|Yi=0)

P(Yi=Y^i)

(1) cũng được gọi là Tỷ lệ dương thực sự, (2) cũng được gọi là Tỷ lệ âm tính thực sự.

(1,1)

δ=[P(Yi=1|Y^i=1)1]2+[P(Yi=0|Y^i=0)1]2

δ(1,1)

Dưới đây là một ví dụ mô phỏng sử dụng dự đoán từ mô hình hồi quy logistic để phân loại. Điểm cắt được thay đổi để xem mức cắt nào mang lại cho phân loại "tốt nhất" theo từng biện pháp trong ba biện pháp này. Trong ví dụ này, dữ liệu đến từ mô hình hồi quy logistic với ba yếu tố dự đoán (xem mã R bên dưới biểu đồ). Như bạn có thể thấy từ ví dụ này, việc cắt "tối ưu" phụ thuộc vào biện pháp nào là quan trọng nhất - điều này hoàn toàn phụ thuộc vào ứng dụng.

P(Yi=1|Y^i=1)P(Yi=0|Y^i=0)

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

# data y simulated from a logistic regression model 
# with with three predictors, n=10000
x = matrix(rnorm(30000),10000,3)
lp = 0 + x[,1] - 1.42*x[2] + .67*x[,3] + 1.1*x[,1]*x[,2] - 1.5*x[,1]*x[,3] +2.2*x[,2]*x[,3] + x[,1]*x[,2]*x[,3]
p = 1/(1+exp(-lp))
y = runif(10000)<p

# fit a logistic regression model
mod = glm(y~x[,1]*x[,2]*x[,3],family="binomial")

# using a cutoff of cut, calculate sensitivity, specificity, and classification rate
perf = function(cut, mod, y)
{
   yhat = (mod$fit>cut)
   w = which(y==1)
   sensitivity = mean( yhat[w] == 1 ) 
   specificity = mean( yhat[-w] == 0 ) 
   c.rate = mean( y==yhat ) 
   d = cbind(sensitivity,specificity)-c(1,1)
   d = sqrt( d[1]^2 + d[2]^2 ) 
   out = t(as.matrix(c(sensitivity, specificity, c.rate,d)))
   colnames(out) = c("sensitivity", "specificity", "c.rate", "distance")
   return(out)
}

s = seq(.01,.99,length=1000)
OUT = matrix(0,1000,4)
for(i in 1:1000) OUT[i,]=perf(s[i],mod,y)
plot(s,OUT[,1],xlab="Cutoff",ylab="Value",cex.lab=1.5,cex.axis=1.5,ylim=c(0,1),type="l",lwd=2,axes=FALSE,col=2)
axis(1,seq(0,1,length=5),seq(0,1,length=5),cex.lab=1.5)
axis(2,seq(0,1,length=5),seq(0,1,length=5),cex.lab=1.5)
lines(s,OUT[,2],col="darkgreen",lwd=2)
lines(s,OUT[,3],col=4,lwd=2)
lines(s,OUT[,4],col="darkred",lwd=2)
box()
legend(0,.25,col=c(2,"darkgreen",4,"darkred"),lwd=c(2,2,2,2),c("Sensitivity","Specificity","Classification Rate","Distance"))

2
(+1) Câu trả lời rất hay. Tôi thích ví dụ này. Có một giải thích sẵn sàng mà bạn biết để thúc đẩy việc sử dụng khoảng cách Euclide mà bạn đã đưa ra không? Tôi cũng nghĩ rằng có thể thú vị khi chỉ ra trong bối cảnh này rằng đường cong ROC về cơ bản có được bằng cách thực hiện một sửa đổi hậu kỳ của ước tính đánh chặn của mô hình logistic.
Đức hồng y

@Cardinal, tôi biết rằng các ngưỡng phân loại nhị phân thường được chọn dựa trên điểm nào trên đường cong ROC gần nhất với (1,1) - khoảng cách euclide tùy ý định nghĩa mặc định về "khoảng cách" trong ví dụ của tôi
Macro

Tôi hiểu rồi. Tôi nghĩ rằng có thể có một sự giải thích trực quan về đại lượng này theo mô hình cơ bản mà tôi không thấy. (Có lẽ có [?])
hồng y

δ

R
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.