Tôi đang xem xét sử dụng Lasso như một phương pháp để chọn các tính năng và điều chỉnh mô hình dự đoán với mục tiêu nhị phân. Dưới đây là một số mã tôi đã chơi để thử phương pháp với hồi quy logistic thường xuyên.
Câu hỏi của tôi là tôi có được một nhóm các biến "đáng kể" nhưng tôi có thể xếp thứ tự các biến này để ước tính tầm quan trọng tương đối của từng biến không? Các hệ số có thể được tiêu chuẩn hóa cho mục đích xếp hạng này theo giá trị tuyệt đối (tôi hiểu rằng chúng được hiển thị trên thang đo biến ban đầu thông qua coef
hàm)? Nếu vậy, làm thế nào để làm như vậy (sử dụng độ lệch chuẩn của x và y) Chuẩn hóa các hệ số hồi quy .
MẪU MÃ SỐ:
library(glmnet)
#data comes from
#http://archive.ics.uci.edu/ml/datasets/Breast+Cancer+Wisconsin+(Diagnostic)
datasetTest <- read.csv('C:/Documents and Settings/E997608/Desktop/wdbc.data.txt',head=FALSE)
#appears to use the first level as the target success
datasetTest$V2<-as.factor(ifelse(as.character(datasetTest$V2)=="M","0","1"))
#cross validation to find optimal lambda
#using the lasso because alpha=1
cv.result<-cv.glmnet(
x=as.matrix(dataset[,3:ncol(datasetTest)]),
y=datasetTest[,2],
family="binomial",
nfolds=10,
type.measure="deviance",
alpha=1
)
#values of lambda used
histogram(cv.result$lambda)
#plot of the error measure (here was deviance)
#as a CI from each of the 10 folds
#for each value of lambda (log actually)
plot(cv.result)
#the mean cross validation error (one for each of the
#100 values of lambda
cv.result$cvm
#the value of lambda that minimzes the error measure
#result: 0.001909601
cv.result$lambda.min
log(cv.result$lambda.min)
#the value of lambda that minimzes the error measure
#within 1 SE of the minimum
#result: 0.007024236
cv.result$lambda.1se
#the full sequence was fit in the object called cv.result$glmnet.fit
#this is same as a call to it directly.
#here are the coefficients from the min lambda
coef(cv.result$glmnet.fit,s=cv.result$lambda.1se)