ตัวอย่างในการทำวานิลลาการตรวจสอบข้ามธรรมดาสำหรับเชือกใน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)))