ใน R“ glmnet” พอดีกับการสกัดกั้นหรือไม่?


10

glmnetฉันกำลังกระชับรูปแบบเชิงเส้นในการวิจัยโดยใช้ โมเดลดั้งเดิม (ที่ไม่ทำให้เป็นปกติ) ถูกติดตั้งโดยใช้lmและไม่มีเทอมคงที่ (นั่นคือในรูปแบบlm(y~0+x1+x2,data))

glmnetใช้เมทริกซ์ของผู้ทำนายและเวกเตอร์ของการตอบสนอง ฉันอ่านglmnetเอกสารแล้วและไม่สามารถเอ่ยถึงคำศัพท์คงที่ได้

ดังนั้นมีวิธีขอglmnetให้บังคับให้พอดีเชิงเส้นผ่านจุดกำเนิดหรือไม่

คำตอบ:


12

ใช่การสกัดกั้นถูกรวมอยู่ในโมเดลglmnetแต่ไม่ได้ทำการทำให้เป็นมาตรฐาน (cf. พา ธ การทำให้เป็นมาตรฐานสำหรับโมเดลเชิงเส้นทั่วไปผ่านทางพิกัดโคตร , หน้า 13) รายละเอียดเพิ่มเติมเกี่ยวกับการใช้งานนั้นสามารถรับได้โดยการดูที่รหัส (สำหรับตระกูลเกาส์มันเป็นelnet()ฟังก์ชั่นที่เรียกglmnet()) แต่อยู่ใน Fortran

คุณสามารถลองใช้มือสัมผัสแพคเกจซึ่งจะช่วยให้ลบตัดโดยผ่านไปunpenalized = ~0penalized()

> x <- matrix(rnorm(100*20),100,20)
> y <- rnorm(100)
> fit1 <- penalized(y, penalized=x, unpenalized=~0, 
                    standardize=TRUE) 
> fit2 <- lm(y ~ 0+x)
> plot((coef(fit1) + coef(fit2))/2, coef(fit2)-coef(fit1))

หากต้องการรับ Lasso เป็นประจำคุณอาจลองทำสิ่งต่อไปนี้

> fit1b <- penalized(y, penalized=x, unpenalized=~0, 
                     standardize=TRUE, lambda1=1, steps=20)
> show(fit1b)
> plotpath(fit1b)

ดังที่เห็นได้ในรูปถัดไปมีความแตกต่างกันเล็กน้อยระหว่างพารามิเตอร์การถดถอยที่คำนวณด้วยทั้งสองวิธี (ซ้าย) และคุณสามารถลงจุด Lasso path solution ได้อย่างง่ายดาย (ขวา)

ข้อความแสดงแทน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.