ตัวอย่างในการทำวานิลลาการตรวจสอบข้ามธรรมดาสำหรับเชือกในglmnet
ในmtcars
ชุดข้อมูล
โหลดชุดข้อมูล
เตรียมคุณสมบัติ (ตัวแปรอิสระ) พวกเขาควรจะเป็นmatrix
ระดับ วิธีที่ง่ายที่สุดในการแปลงdf
ที่มีตัวแปรเด็ดขาดเข้าผ่านทางmatrix
model.matrix
โปรดทราบว่าโดยค่าเริ่มต้นglmnet
คุณจะต้องมีการสกัดกั้นดังนั้นคุณควรจะตัดการสกัดกั้นจากเมทริกซ์โมเดล
เตรียมการตอบสนอง (ตัวแปรตาม) ให้รหัสรถที่มีค่าเฉลี่ยmpg
สูงกว่าอย่างมีประสิทธิภาพ ('1') และที่เหลือไม่มีประสิทธิภาพ ('0') แปลงตัวแปรนี้เป็นตัวประกอบ
cv.glmnet
เรียกข้ามการตรวจสอบผ่าน มันจะดึงalpha=1
จากglmnet
พารามิเตอร์เริ่มต้นซึ่งเป็นสิ่งที่คุณขอ: lasso ถดถอย
โดยการตรวจสอบผลลัพธ์ของการตรวจสอบข้ามคุณอาจสนใจข้อมูลอย่างน้อย 2 ชิ้น:
โปรดดูรหัส R ตามคำแนะนำข้างต้น:
# Load data set
data("mtcars")
# Prepare data set
x <- model.matrix(~.-1, data= mtcars[,-1])
mpg <- ifelse( mtcars$mpg < mean(mtcars$mpg), 0, 1)
y <- factor(mpg, labels = c('notEfficient', 'efficient'))
library(glmnet)
# Run cross-validation
mod_cv <- cv.glmnet(x=x, y=y, family='binomial')
mod_cv$lambda.1se
[1] 0.108442
coef(mod_cv, mod_cv$lambda.1se)
1
(Intercept) 5.6971598
cyl -0.9822704
disp .
hp .
drat .
wt .
qsec .
vs .
am .
gear .
carb .
mod_cv$lambda.min
[1] 0.01537137
coef(mod_cv, mod_cv$lambda.min)
1
(Intercept) 6.04249733
cyl -0.95867199
disp .
hp -0.01962924
drat 0.83578090
wt .
qsec .
vs .
am 2.65798203
gear .
carb -0.67974620
ความคิดเห็นสุดท้าย:
บันทึกผลลัพธ์ของโมเดลไม่ได้เกี่ยวกับนัยสำคัญทางสถิติของค่าสัมประสิทธิ์เท่านั้นที่มีค่า
penalizer L1 (เชือก) ซึ่งคุณถามหาเป็นที่รู้จักสำหรับความไม่แน่นอนเป็นหลักฐานในการนี้โพสต์บล็อกและ stackexchange นี้คำถาม วิธีที่ดีกว่าก็คือการตรวจสอบข้ามalpha
ซึ่งจะช่วยให้คุณตัดสินใจเลือกการลงโทษที่เหมาะสมของ l1 และ l2
อีกทางเลือกหนึ่งในการตรวจสอบข้ามอาจจะเปลี่ยนเป็นคาเร็ต train( ... method='glmnet')
และในที่สุดวิธีที่ดีที่สุดในการเรียนรู้เพิ่มเติมcv.glmnet
และการเริ่มต้นที่มาจากglmnet
หลักสูตร?glmnet
ในคอนโซลของ R)))