Tôi muốn sử dụng GLM và Elastic Net để chọn các tính năng có liên quan đó + xây dựng mô hình hồi quy tuyến tính (nghĩa là cả dự đoán và hiểu biết, vì vậy sẽ tốt hơn nếu chỉ còn lại một vài tham số). Đầu ra liên tục. Đó là gen trên trường hợp. Tôi đã đọc về gói, nhưng tôi không chắc chắn 100% về các bước để làm theo:glmnet
Thực hiện CV để chọn lambda:
cv <- cv.glmnet(x,y,alpha=0.5)
(Q1) được cung cấp dữ liệu đầu vào, bạn có chọn giá trị alpha khác không?
(Q2) tôi có cần phải làm gì khác trước khi xây dựng mô hình không?Phù hợp với mô hình:
model=glmnet(x,y,type.gaussian="covariance",lambda=cv$lambda.min)
(Q3) có gì tốt hơn "hiệp phương sai"?
(Q4) Nếu lambda được chọn bởi CV, tại sao bước này cầnnlambda=
?
(Câu 5) là tốt hơn để sử dụnglambda.min
haylambda.1se
?Lấy các hệ số, để xem tham số nào đã rơi ra ("."):
predict(model, type="coefficients")
Trong trang trợ giúp có rất nhiều
predict
phương pháp (ví dụpredict.fishnet
,predict.glmnet
,predict.lognet
, vv). Nhưng bất kỳ dự đoán "đơn giản" như tôi thấy trên một ví dụ.
(Q6) Tôi có nên sử dụngpredict
haypredict.glmnet
hay khác?
Bất chấp những gì tôi đã đọc về các phương thức chính quy, tôi khá mới trong R và trong các gói thống kê này, vì vậy thật khó để chắc chắn liệu tôi có thích ứng được vấn đề của mình với mã không. Bất kỳ đề xuất sẽ được hoan nghênh.
CẬP NHẬT
Dựa trên "Như đã lưu ý trước đó, một đối tượng của lớp tàu chứa một phần tử được gọi finalModel
là mô hình được trang bị với các giá trị tham số điều chỉnh được chọn bằng cách lấy mẫu lại. Đối tượng này có thể được sử dụng theo cách truyền thống để tạo dự đoán cho các mẫu mới, sử dụng điều đó chức năng dự đoán của mô hình. "
Sử dụng caret
để điều chỉnh cả alpha và lambda:
trc = trainControl(method=cv, number=10)
fitM = train(x, y, trControl = trC, method="glmnet")
Có fitM
thay thế bước 2 trước không? Nếu vậy, làm thế nào để xác định các tùy chọn glmnet ( type.gaussian="naive",lambda=cv$lambda.min/1se
) bây giờ?
Và sau predict
bước, tôi có thể thay thế model
cho fitM
?
Nếu tôi làm
trc = trainControl(method=cv, number=10)
fitM = train(x, y, trControl = trC, method="glmnet")
predict(fitM$finalModel, type="coefficients")
nó có ý nghĩa gì không hoặc tôi trộn không chính xác cả hai từ vựng gói?