ฉันต้องการเปรียบเทียบรุ่นที่เลือกกับสันหลัง, เชือกและยางยืด ภาพด้านล่างแสดงเส้นทางสัมประสิทธิ์โดยใช้ทั้ง 3 วิธี: สันเขา (รูป A, อัลฟา = 0), เชือก (รูป B; อัลฟา = 1) และตาข่ายยืดหยุ่น (รูป C; alpha = 0.5) วิธีการแก้ปัญหาที่ดีที่สุดขึ้นอยู่กับค่าแลมบ์ดาที่เลือกซึ่งเลือกจากการตรวจสอบข้าม
เมื่อดูที่แปลงเหล่านี้ฉันคาดว่าตาข่ายยืดหยุ่น (รูปที่ C) จะแสดงผลการจัดกลุ่ม อย่างไรก็ตามมันไม่ชัดเจนในกรณีที่นำเสนอ เส้นทางสัมประสิทธิ์สำหรับ lasso และ elastic net นั้นคล้ายกันมาก อะไรคือสาเหตุของสิ่งนี้ มันเป็นเพียงความผิดพลาดในการเขียนโค้ดหรือไม่? ฉันใช้รหัสต่อไปนี้ใน R:
library(glmnet)
X<- as.matrix(mydata[,2:22])
Y<- mydata[,23]
par(mfrow=c(1,3))
ans1<-cv.glmnet(X, Y, alpha=0) # ridge
plot(ans1$glmnet.fit, "lambda", label=FALSE)
text (6, 0.4, "A", cex=1.8, font=1)
ans2<-cv.glmnet(X, Y, alpha=1) # lasso
plot(ans2$glmnet.fit, "lambda", label=FALSE)
text (-0.8, 0.48, "B", cex=1.8, font=1)
ans3<-cv.glmnet(X, Y, alpha=0.5) # elastic net
plot(ans3$glmnet.fit, "lambda", label=FALSE)
text (0, 0.62, "C", cex=1.8, font=1)
รหัสที่ใช้ในการพล็อตเส้นทางสัมประสิทธิ์ความยืดหยุ่นนั้นเหมือนกับของสันเขาและบ่วง ความแตกต่างเพียงอย่างเดียวคือค่าของอัลฟา พารามิเตอร์อัลฟ่าสำหรับการถดถอยสุทธิแบบยืดหยุ่นถูกเลือกโดยใช้ MSE ต่ำสุด (หมายถึงข้อผิดพลาดกำลังสอง) สำหรับค่าแลมบ์ดาที่สอดคล้องกัน
ขอขอบคุณสำหรับความช่วยเหลือของคุณ !