Khi nào LASSO chọn các yếu tố dự đoán tương quan?


13

Tôi đang sử dụng gói 'lars' trong R với mã sau:

> 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 .....

Tôi đã có một bộ dữ liệu với 5 biến liên tục và tôi đang cố gắng khớp một mô hình với một biến (phụ thuộc) y. Hai trong số các dự đoán của tôi có mối tương quan cao với nhau (x1, x2).

Như bạn có thể thấy trong ví dụ trên, hàm lars với tùy chọn 'stepwise' trước tiên chọn biến tương quan nhất với y. Biến tiếp theo để vào mô hình là biến tương quan nhất với phần dư. Thật vậy, nó là 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  

Bây giờ, nếu tôi thực hiện tùy chọn '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

Nó thêm cả hai biến tương quan vào mô hình trong hai bước đầu tiên. Điều này trái ngược với những gì tôi đọc trong một số bài báo. Hầu hết sau đó nói rằng nếu có một nhóm biến trong đó các mối tương quan là rất cao, thì 'lasso' có xu hướng chỉ chọn một biến trong nhóm một cách ngẫu nhiên.

Ai đó có thể cung cấp một ví dụ về hành vi này? Hoặc giải thích, tại sao các biến x1, x2 của tôi được thêm vào mô hình lần lượt (cùng nhau)?


Đây là hồi quy góc nhỏ nhất đưa ra lời giải thích về các bước của Lasso.
Michael R. Chernick

@MichaelCécick: Nếu bạn nhìn vào Rcuộc gọi mà OP đang thực hiện và đầu ra liên quan mà anh ấy cung cấp, bạn sẽ thấy rằng anh ấy thực sự đang sử dụng Lasso. Như tôi chắc chắn bạn biết, một điều chỉnh nhỏ của thuật toán lars mang lại đường dẫn chính quy hóa Lasso.
Đức hồng y

"Dự đoán" của tôi là, vì x2 bao gồm 4 đơn vị x1, x1 và x2 kết hợp thực sự có nhiều phương sai nhất (9 đơn vị). Nếu bạn hạ thấp hệ số của x2 xuống 2, bạn sẽ thấy x4 được chọn trước x1 và x2.

Bạn có thể cung cấp một số tài liệu tham khảo cho bằng chứng về "tính ngẫu nhiên" đó không? Cảm ơn bạn.
ziyuang

Tôi đoán bạn có thể tìm thấy câu trả lời của mình trên bài viết này: arxiv.org/pdf/1204.1605.pdf
TPArrow

Câu trả lời:


15

Vấn đề cộng tác là cách đánh giá quá cao!

Thomas, bạn đã nói rõ một quan điểm chung, rằng nếu các yếu tố dự đoán có tương quan với nhau, ngay cả kỹ thuật chọn biến tốt nhất cũng chỉ chọn một cách ngẫu nhiên trong số đó. May mắn thay, đó là cách nhấn mạnh khả năng hồi quy để khám phá sự thật! Nếu bạn đã có đúng loại biến giải thích (ngoại sinh), hồi quy bội hứa hẹn sẽ tìm thấy hiệu ứng của từng biến giữ các biến khác. Bây giờ nếu các biến có tương quan hoàn hảo, thì điều này theo nghĩa đen là không thể. Nếu các biến tương quan, nó có thể khó hơn, nhưng với kích thước của tập dữ liệu điển hình hiện nay, điều đó không khó hơn nhiều.

Collinearity là một vấn đề thông tin thấp. Hãy xem Art parberger của Art Goldberger trên blog của Dave Giles . Cách chúng ta nói về cộng tuyến sẽ nghe có vẻ ngớ ngẩn nếu được áp dụng cho một giá trị trung bình thay vì hệ số hồi quy một phần.

Vẫn không thuyết phục? Đã đến lúc cho một số mã.

set.seed(34234)

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

Tôi đã tạo các biến tương quan cao x1 và x2, nhưng bạn có thể thấy trong biểu đồ bên dưới rằng khi x1 gần -1, chúng ta vẫn thấy biến thiên trong x2. nhập mô tả hình ảnh ở đây

Bây giờ là lúc để thêm "sự thật":

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

Hồi quy thông thường có thể thành công giữa các vấn đề cộng tác mạnh mẽ?

summary(lm(y ~ x1 + x2))

Ồ vâng, nó có thể:

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 ***

Bây giờ tôi không nói về LASSO, câu hỏi của bạn tập trung vào. Nhưng để tôi hỏi bạn điều này. Nếu hồi quy trường học cũ với việc loại bỏ lạc hậu không bị lừa bởi cộng tác, tại sao bạn lại nghĩ LASSO hiện đại sẽ như thế nào?


L1

Ý tưởng là các khái niệm đơn giản hơn có thể được sử dụng để giải thích hiện tượng được mô tả của OP và các khái niệm này không bị thay đổi về cơ bản khi bổ sung thuật ngữ chính quy hóa theo dữ liệu.
Ben Ogorek

7

Câu trả lời của Ben đã thôi thúc tôi tiến thêm một bước trên con đường anh ấy đã cung cấp, điều gì sẽ xảy ra nếu "sự thật", y, là trong những tình huống khác.

Trong ví dụ ban đầu, y phụ thuộc vào hai biến tương quan cao x1 và x2. Giả sử có một biến khác, x3, nói

x3 = c (1: N) / 250 # N được xác định trước, N = 1000, x3 có cùng tỷ lệ với x1 và thang đo của x3 có ảnh hưởng đến kết quả hồi quy tuyến tính bên dưới.

"Sự thật" y hiện được định nghĩa như sau

y = .5 * x1 - .7 * x3 + rnorm (N) # Quá trình tạo dữ liệu

Điều gì sẽ xảy ra với hồi quy?

tóm tắt (lm (y ~ x1 + x2))

Có tồn tại hiệu ứng cộng tuyến mạnh mẽ. Lỗi tiêu chuẩn của x2 quá lớn. Tuy nhiên, hồi quy tuyến tính xác định x2 là một biến không có ý nghĩa.

     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 

Còn trường hợp hồi quy khác thì sao?

tóm tắt (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 ***

Biến x2 không đáng kể và được khuyến nghị loại bỏ bằng hồi quy tuyến tính.

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

x1       x2       x3 
9.067865 9.067884 1.000105 

Từ kết quả trên, cộng tuyến không phải là vấn đề trong hồi quy tuyến tính và việc kiểm tra VIF không hữu ích lắm.

Hãy xem xét một tình huống khác. x3 = c (1: N) # N được xác định trước, N = 1000, x3 không cùng tỷ lệ với x1.

"Sự thật" y được định nghĩa giống như trên

y = .5 * x1 - .7 * x3 + rnorm (N) # Quá trình tạo dữ liệu

Điều gì sẽ xảy ra với hồi quy?

tóm tắt (lm (y ~ x1 + x2))

Có tồn tại hiệu ứng cộng tuyến mạnh mẽ. Các lỗi tiêu chuẩn của x1, x2 là quá lớn. Hồi quy tuyến tính không xác định được biến quan trọng 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 

Còn trường hợp hồi quy khác thì sao?

tóm tắt (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 ***

Biến x2 không đáng kể và được khuyến nghị loại bỏ bằng hồi quy tuyến tính.

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

x1       x2       x3 
9.182507 9.184419 1.001853 

Lưu ý: hồi quy của y trên x1 và x3. Lưu ý rằng lỗi tiêu chuẩn của x1 chỉ 0,03.

tóm tắt (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 ***

Dựa trên kết quả trên, kết luận của tôi là

  • khi các biến dự đoán nằm trong các thang đo tương tự, thì cộng tuyến không phải là vấn đề trong hồi quy tuyến tính;
  • khi các biến dự đoán không nằm trong thang đo tương tự,
    • khi hai biến tương quan cao đều nằm trong mô hình thực, thì cộng tuyến không phải là vấn đề;
    • khi chỉ có một trong hai biến tương quan cao trong mô hình thực sự,
      • Nếu các biến "đúng" khác được bao gồm trong hồi quy tuyến tính, hồi quy tuyến tính sẽ xác định các biến không quan trọng có tương quan với biến quan trọng.
      • Nếu các biến "đúng" khác không được đưa vào hồi quy tuyến tính, thì vấn đề về cộng tuyến là nghiêm trọng, dẫn đến lạm phát lỗi tiêu chuẩn.

Thật thú vị, mặc dù những kết quả này giả định mối quan hệ tuyến tính giữa các yếu tố dự đoán / tính năng và y. Họ là xa toàn diện. Điều gì xảy ra nếu có các mối quan hệ phi tuyến tính mạnh trong các yếu tố dự đoán của bạn (ví dụ: thuật ngữ tương tác x1 * x2, tính năng chức năng bước / vars giả (1 nếu x1> c cho một số hằng), v.v.)? Nếu bạn làm việc với dữ liệu tỷ lệ nhiễu tín hiệu thấp, như trong việc tạo tính năng cho giao dịch thuật toán, bạn luôn luôn phân tích các mô hình để giảm quá mức (vì tín hiệu của bạn yếu), vì vậy vẫn có những lý do mạnh mẽ để xử lý đa cộng tuyến
FXQuantTrader
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.