Hồi quy logistic glmnet có thể xử lý trực tiếp các biến nhân tố (phân loại) mà không cần các biến giả không? [đóng cửa]


15

Tôi đang xây dựng một hồi quy logistic trong R bằng phương pháp LASSO với các hàm cv.glmnetđể chọn lambdaglmnetcho mô hình cuối cùng.

Tôi đã biết tất cả các nhược điểm liên quan đến việc lựa chọn mô hình tự động nhưng dù sao tôi cũng cần phải làm điều đó.

Vấn đề của tôi là tôi cần bao gồm các biến nhân tố (phân loại) trong mô hình, có cách nào để làm điều đó mà không tạo ra nhiều biến giả không? Biến này gần như là tất cả các chuỗi và không phải là số.


2
Tôi tò mò về cách tốt nhất để làm điều này là tốt.
bác sĩ lâm sàng

Câu trả lời:


26

glmnet không thể lấy yếu tố trực tiếp, bạn cần chuyển đổi các yếu tố thành người giả. Ví dụ, đây chỉ là một bước đơn giản sử dụng model.matrix:

x_train <- model.matrix( ~ .-1, train[,features])
lm = cv.glmnet(x=x_train,y = as.factor(train$y), intercept=FALSE ,family =   "binomial", alpha=1, nfolds=7)
best_lambda <- lm$lambda[which.min(lm$cvm)]

alpha = 1 sẽ xây dựng LASSO.


1
+1 Câu trả lời tuyệt vời! Tôi có thể hỏi tại sao bạn hoặc bất cứ ai tại sao một người sử dụng đánh chặn = FALSE?
Erosennin

Điều này dường như thất bại khi có hai biến phân loại: Tôi nhận đúng các cột L1 nếu var1 có các mức L1, nhưng các cột L2-1 cho var2 (có các mức L2).
Peter Straka

Tài khoản Ít nhất một trong số các hình nộm L2 giả cho var2 là dự phòng (với mục đích xây dựng mô hình tuyến tính).
VictorZurkowski
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.