2
เหตุใดการถดถอยของสันเขา glmnet จึงให้คำตอบที่แตกต่างจากการคำนวณด้วยตนเอง
ฉันใช้ glmnet เพื่อคำนวณการถดถอยของสันเขา ฉันได้ผลลัพธ์บางอย่างที่ทำให้ฉันสงสัยว่า glmnet นั้นกำลังทำสิ่งที่ฉันคิด เพื่อตรวจสอบนี้ฉันเขียนสคริปต์ R ง่าย ๆ ที่ฉันเปรียบเทียบผลลัพธ์ของการถดถอยของสันที่กระทำโดยแก้และหนึ่งใน glmnet ความแตกต่างสำคัญ: n <- 1000 p. <- 100 X. <- matrix(rnorm(n*p,0,1),n,p) beta <- rnorm(p,0,1) Y <- X%*%beta+rnorm(n,0,0.5) beta1 <- solve(t(X)%*%X+5*diag(p),t(X)%*%Y) beta2 <- glmnet(X,Y, alpha=0, lambda=10, intercept=FALSE, standardize=FALSE, family="gaussian")$beta@x beta1-beta2 บรรทัดฐานของความแตกต่างมักจะอยู่ที่ประมาณ 20 ซึ่งไม่สามารถเกิดขึ้นได้เนื่องจากอัลกอริทึมที่แตกต่างกันเชิงตัวเลขฉันต้องทำอะไรผิดพลาด การตั้งค่าใดที่ฉันต้องตั้งค่าglmnetเพื่อให้ได้ผลลัพธ์เช่นเดียวกับสันเขา