ฉันใช้แพ็คเกจ 'lars' ใน R ด้วยรหัสต่อไปนี้:
> library(lars)
> set.seed(3)
> n <- 1000
> x1 <- rnorm(n)
> x2 <- x1+rnorm(n)*0.5
> x3 <- rnorm(n)
> x4 <- rnorm(n)
> x5 <- rexp(n)
> y <- 5*x1 + 4*x2 + 2*x3 + 7*x4 + rnorm(n)
> x <- cbind(x1,x2,x3,x4,x5)
> cor(cbind(y,x))
y x1 x2 x3 x4 x5
y 1.00000000 0.74678534 0.743536093 0.210757777 0.59218321 0.03943133
x1 0.74678534 1.00000000 0.892113559 0.015302566 -0.03040464 0.04952222
x2 0.74353609 0.89211356 1.000000000 -0.003146131 -0.02172854 0.05703270
x3 0.21075778 0.01530257 -0.003146131 1.000000000 0.05437726 0.01449142
x4 0.59218321 -0.03040464 -0.021728535 0.054377256 1.00000000 -0.02166716
x5 0.03943133 0.04952222 0.057032700 0.014491422 -0.02166716 1.00000000
> m <- lars(x,y,"step",trace=T)
Forward Stepwise sequence
Computing X'X .....
LARS Step 1 : Variable 1 added
LARS Step 2 : Variable 4 added
LARS Step 3 : Variable 3 added
LARS Step 4 : Variable 2 added
LARS Step 5 : Variable 5 added
Computing residuals, RSS etc .....
ฉันมีชุดข้อมูลที่มี 5 ตัวแปรอย่างต่อเนื่องและฉันพยายามที่จะปรับโมเดลให้เหมาะกับตัวแปรเดี่ยว (ขึ้นอยู่กับ) y ตัวทำนายสองตัวของฉันมีความสัมพันธ์กันอย่างมาก (x1, x2)
ดังที่คุณเห็นในตัวอย่างด้านบนฟังก์ชัน lars พร้อมตัวเลือก 'stepwise' จะเลือกตัวแปรที่สัมพันธ์กับ y เป็นอันดับแรก ตัวแปรถัดไปในการป้อนโมเดลคือตัวแปรที่มีความสัมพันธ์กับเศษซากมากที่สุด แน่นอนมันคือ x4:
> round((cor(cbind(resid(lm(y~x1)),x))[1,3:6]),4)
x2 x3 x4 x5
0.1163 0.2997 0.9246 0.0037
ตอนนี้ถ้าฉันเลือก 'lasso':
> m <- lars(x,y,"lasso",trace=T)
LASSO sequence
Computing X'X ....
LARS Step 1 : Variable 1 added
LARS Step 2 : Variable 2 added
LARS Step 3 : Variable 4 added
LARS Step 4 : Variable 3 added
LARS Step 5 : Variable 5 added
มันเพิ่มทั้งสองตัวแปรที่เกี่ยวข้องกับรูปแบบในสองขั้นตอนแรก ตรงข้ามกับสิ่งที่ฉันอ่านในเอกสารหลายฉบับ ส่วนใหญ่แล้วบอกว่าถ้ามีกลุ่มของตัวแปรที่มีความสัมพันธ์สูงมากแล้ว 'lasso' มีแนวโน้มที่จะเลือกเพียงหนึ่งตัวแปรจากกลุ่มที่สุ่ม
ใครสามารถให้ตัวอย่างของพฤติกรรมนี้ หรืออธิบายว่าทำไมตัวแปร x, x2 ของฉันจึงถูกเพิ่มลงในโมเดลหลังจากนั้น (รวมกัน)?
R
โทรที่ OP กำลังทำอยู่และผลลัพธ์ที่เกี่ยวข้องที่เขาให้มาคุณจะเห็นว่าเขาใช้ Lasso อย่างแน่นอน ในขณะที่ฉันแน่ใจว่าคุณรู้วิธีปรับแต่งขนาดเล็กของอัลกอริทึม lars ให้เส้นทางการทำให้เป็นมาตรฐาน lasso