LASSO เลือกตัวทำนายที่สัมพันธ์กันเมื่อใด


13

ฉันใช้แพ็คเกจ '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 ของฉันจึงถูกเพิ่มลงในโมเดลหลังจากนั้น (รวมกัน)?


นี่คือการถดถอยมุมน้อยที่สุดซึ่งให้คำอธิบายเกี่ยวกับขั้นตอนบ่วง
Michael R. Chernick

@MichaelChernick: ถ้าคุณดูการRโทรที่ OP กำลังทำอยู่และผลลัพธ์ที่เกี่ยวข้องที่เขาให้มาคุณจะเห็นว่าเขาใช้ Lasso อย่างแน่นอน ในขณะที่ฉันแน่ใจว่าคุณรู้วิธีปรับแต่งขนาดเล็กของอัลกอริทึม lars ให้เส้นทางการทำให้เป็นมาตรฐาน lasso
พระคาร์ดินัล

"เดา" ของฉันก็คือเนื่องจาก x2 รวม 4 หน่วยของ x1, x1 และ x2 รวมกันแล้วมีความแปรปรวนมากที่สุด (9 หน่วย) หากคุณลดค่าสัมประสิทธิ์ x2 เป็น 2 คุณจะเห็นว่า x4 ถูกเลือกก่อน x1 และ x2

คุณสามารถให้การอ้างอิงบางอย่างเพื่อพิสูจน์ว่า "การสุ่ม" นั้นได้หรือไม่? ขอบคุณ.
ziyuang

ฉันเดาว่าคุณสามารถหาคำตอบของคุณในกระดาษนี้: arxiv.org/pdf/1204.1605.pdf
TPArrow

คำตอบ:


15

ปัญหาเรื่องความไม่เป็นระเบียบเป็นวิธีที่ประเมินค่ามากเกินไป!

โทมัสคุณได้พูดถึงมุมมองร่วมกันว่าหากการคาดการณ์มีความสัมพันธ์กันแม้เทคนิคการเลือกตัวแปรที่ดีที่สุดเพียงแค่เลือกแบบสุ่มจากพวง โชคดีที่นั่นเป็นวิธีที่จะลดความสามารถในการเปิดเผยความจริง! หากคุณมีประเภทของตัวแปรอธิบายที่ถูกต้อง (ภายนอก) การถดถอยหลายครั้งจะให้ผลลัพธ์ของตัวแปรแต่ละตัวที่คงที่ไว้ ทีนี้ถ้าตัวแปรมีความสัมพันธ์กันอย่างสมบูรณ์แบบ หากตัวแปรมีความสัมพันธ์กันมันอาจจะยากกว่า แต่ด้วยขนาดของชุดข้อมูลทั่วไปในปัจจุบันมันไม่ได้ยากขนาดนั้น

Collinearity เป็นปัญหาที่มีข้อมูลน้อย มีลักษณะที่ล้อเลียนของ collinearity ศิลปะ Goldberger บนบล็อกของเดฟไจล์สฯ วิธีที่เราพูดถึง collinearity จะฟังดูโง่ถ้านำไปใช้กับค่าเฉลี่ยแทนที่จะเป็นค่าสัมประสิทธิ์การถดถอยบางส่วน

ยังไม่มั่นใจใช่ไหม ถึงเวลาสำหรับรหัสบางอย่าง

set.seed(34234)

N <- 1000
x1 <- rnorm(N)
x2 <- 2*x1 + .7 * rnorm(N)
cor(x1, x2) # correlation is .94
plot(x2 ~ x1)

ฉันได้สร้างตัวแปรที่มีความสัมพันธ์สูง x1 และ x2 แต่คุณสามารถเห็นได้ในพล็อตด้านล่างว่าเมื่อ x1 ใกล้ -1 เรายังเห็นความแปรปรวนใน x2 ป้อนคำอธิบายรูปภาพที่นี่

ตอนนี้ได้เวลาเพิ่ม "ความจริง":

y <- .5 * x1 - .7 * x2 + rnorm(N) # Data Generating Process

การถดถอยปกติสามารถประสบความสำเร็จท่ามกลางปัญหา collinearity อันยิ่งใหญ่ได้หรือไม่?

summary(lm(y ~ x1 + x2))

โอ้ใช่มันสามารถ:

Coefficients:
              Estimate Std. Error t value Pr(>|t|)    
(Intercept) -0.0005334  0.0312637  -0.017    0.986    
x1           0.6376689  0.0927472   6.875 1.09e-11 ***
x2          -0.7530805  0.0444443 -16.944  < 2e-16 ***

ตอนนี้ฉันไม่ได้พูดถึง LASSO ซึ่งคำถามของคุณมุ่งเน้นไปที่ แต่ขอให้ฉันถามคุณ หากการถดถอยในโรงเรียนเก่าที่ไม่มีการกำจัดย้อนหลังไม่ได้ถูกหลอกด้วยความหลงใหลเชิงกลทำไมคุณถึงคิดว่า LASSO ที่ล้ำสมัยจะเป็นเช่นไร?


จนถึงจุดสุดท้ายของคุณในขณะที่ OLS เป็นแบบหมุนได้ฉันจะไม่คาดหวังคุณสมบัติเดียวกันจาก LASSO เนื่องจากบรรทัดฐานLASSO นั้นแฟนซีหรือไม่อาจไม่เกี่ยวข้องกัน L1
steveo'america

แนวคิดคือแนวคิดที่ง่ายกว่าสามารถใช้เพื่ออธิบายปรากฏการณ์ที่อธิบายของ OP และแนวคิดเหล่านี้ไม่ได้เปลี่ยนแปลงโดยพื้นฐานจากการเพิ่มคำศัพท์การทำให้เป็นมาตรฐาน
Ben Ogorek

7

คำตอบของเบ็นเป็นแรงบันดาลใจให้ฉันก้าวไปอีกขั้นหนึ่งบนเส้นทางที่เขาให้ไว้จะเกิดอะไรขึ้นถ้า "ความจริง", y อยู่ในสถานการณ์อื่น

ในตัวอย่างดั้งเดิม y ขึ้นอยู่กับตัวแปรที่มีความสัมพันธ์สูงสองตัวแปร x1 และ x2 สมมติว่ามีตัวแปรอีกตัวหนึ่ง x3 พูด

x3 = c (1: N) / 250 # N ถูกกำหนดก่อนหน้านี้ N = 1,000, x3 อยู่ในระดับใกล้เคียงกับ x1 และสเกลของ x3 มีผลต่อผลลัพธ์การถดถอยเชิงเส้นด้านล่าง

ตอนนี้ "ความจริง" y ถูกกำหนดดังนี้

y = .5 * x1 - .7 * x3 + rnorm (N) # กระบวนการสร้างข้อมูล

จะเกิดอะไรขึ้นกับการถดถอย

สรุป (lm (y ~ x1 + x2))

มีผล collinearity ที่แข็งแกร่งอยู่ ข้อผิดพลาดมาตรฐานของ x2 ใหญ่เกินไป อย่างไรก็ตามการถดถอยเชิงเส้นระบุ x2 เป็นตัวแปรที่ไม่สำคัญ

     Coefficients:
        Estimate Std. Error t value Pr(>|t|)    
(Intercept) -1.39164    0.04172 -33.354  < 2e-16 ***
x1           0.65329    0.12550   5.205 2.35e-07 ***
x2          -0.07878    0.05848  -1.347    0.178 

vif (lm (y ~ x1 + x2))

x1       x2 
9.167429 9.167429 

กรณีการถดถอยอื่น ๆ

สรุป (lm (y ~ x1 + x2 + x3))

Coefficients:
        Estimate Std. Error t value Pr(>|t|)    
(Intercept)  0.02100    0.06573   0.319    0.749    
x1           0.55398    0.09880   5.607 2.67e-08 ***
x2          -0.02966    0.04604  -0.644    0.520    
x3          -0.70562    0.02845 -24.805  < 2e-16 ***

ตัวแปร x2 ไม่สำคัญและแนะนำให้ลบโดยการถดถอยเชิงเส้น

vif (lm (y ~ x1 + x2 + x3))

x1       x2       x3 
9.067865 9.067884 1.000105 

จากผลการทดสอบข้างต้นความไม่เป็นเชิงเส้น collinearity ไม่ใช่ปัญหาในการถดถอยแบบเส้นตรงและการตรวจสอบ VIF นั้นไม่ได้มีประโยชน์มาก

ลองดูสถานการณ์อื่น x3 = c (1: N) # N ถูกกำหนดก่อนหน้านี้ N = 1,000, x3 ไม่ได้อยู่ในระดับเดียวกับ x1

"ความจริง" y ถูกกำหนดเช่นเดียวกับข้างต้น

y = .5 * x1 - .7 * x3 + rnorm (N) # กระบวนการสร้างข้อมูล

จะเกิดอะไรขึ้นกับการถดถอย

สรุป (lm (y ~ x1 + x2))

มีผล collinearity ที่แข็งแกร่งอยู่ ข้อผิดพลาดมาตรฐานของ x1, x2 ใหญ่เกินไป การถดถอยเชิงเส้นล้มเหลวในการระบุตัวแปรสำคัญ x1

   Coefficients:
        Estimate Std. Error t value Pr(>|t|)    
(Intercept) -350.347      6.395 -54.783   <2e-16 ***
x1            25.207     19.237   1.310    0.190    
x2           -12.212      8.963  -1.362    0.173  

vif (lm (y ~ x1 + x2))

    x1       x2 
9.167429 9.167429 

กรณีการถดถอยอื่น ๆ

สรุป (lm (y ~ x1 + x2 + x3))

Coefficients:
          Estimate Std. Error   t value Pr(>|t|)    
(Intercept)  0.0360104  0.0610405     0.590    0.555    
x1           0.5742955  0.0917555     6.259 5.75e-10 ***
x2          -0.0277623  0.0427585    -0.649    0.516    
x3          -0.7000676  0.0001057 -6625.170  < 2e-16 ***

ตัวแปร x2 ไม่สำคัญและแนะนำให้ลบโดยการถดถอยเชิงเส้น

vif (lm (y ~ x1 + x2 + x3))

x1       x2       x3 
9.182507 9.184419 1.001853 

หมายเหตุ: การถดถอยของ y บน x1 และ x3 ขอให้สังเกตว่าข้อผิดพลาดมาตรฐานของ x1 เพียง 0.03

สรุป (lm (y ~ x1 + x3))

Coefficients:
              Estimate Std. Error   t value Pr(>|t|)    
(Intercept) -0.1595528  0.0647908    -2.463    0.014 *  
x1           0.4871557  0.0321623    15.147   <2e-16 ***
x3          -0.6997853  0.0001121 -6240.617   <2e-16 ***

จากผลลัพธ์ข้างต้นข้อสรุปของฉันคือ

  • เมื่อตัวแปรพยากรณ์อยู่ในระดับใกล้เคียงกันความไม่เป็นเชิงเส้นในปัญหาการถดถอยเชิงเส้น
  • เมื่อตัวแปรทำนายไม่ได้อยู่ในสเกลที่คล้ายกัน
    • เมื่อตัวแปรทั้งสองที่มีความสัมพันธ์กันสูงมีทั้งในตัวแบบที่แท้จริงการ collinearity ไม่ใช่ปัญหา
    • เมื่อมีเพียงหนึ่งในสองตัวแปรที่มีความสัมพันธ์สูงที่อยู่ในรูปแบบที่แท้จริง
      • หากตัวแปร "จริง" อื่น ๆ รวมอยู่ในการถดถอยเชิงเส้นการถดถอยเชิงเส้นจะระบุตัวแปรที่ไม่สำคัญที่สัมพันธ์กับตัวแปรสำคัญ
      • หากตัวแปร "จริง" อื่น ๆ ไม่รวมอยู่ในการถดถอยแบบเส้นตรงปัญหาของการจับคู่กันอย่างรุนแรงส่งผลให้เกิดข้อผิดพลาดมาตรฐานเงินเฟ้อ

ที่น่าสนใจแม้ว่าผลลัพธ์เหล่านี้จะถือว่ามีความสัมพันธ์เชิงเส้นตรงระหว่างตัวทำนาย / คุณสมบัติและ y พวกเขาอยู่ไกลจากที่ครอบคลุม จะเกิดอะไรขึ้นถ้ามีความสัมพันธ์แบบไม่เชิงเส้นในตัวทำนายของคุณ (เช่นคำศัพท์เชิงปฏิสัมพันธ์ x1 * x2, ฟังก์ชั่นขั้นตอน / vummy vars (1 ถ้า x1> c สำหรับค่าคงที่บางส่วน) ฯลฯ )? หากคุณทำงานกับสัญญาณต่ำข้อมูลเสียงอัตราส่วนเช่นในการสร้างคุณลักษณะสำหรับการซื้อขายอัลกอริทึมที่คุณเสมอรุ่นประหยัดเพื่อลด overfitting (เพราะสัญญาณของคุณจะอ่อนแอ) เพื่อให้มีเหตุผลที่ยังคงแข็งแกร่งในการจัดการ W พหุ
FXQuantTrader
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.