Hồi quy tuyến tính đa biến với lasso in r


9

Tôi đang cố gắng tạo một mô hình rút gọn để dự đoán nhiều biến phụ thuộc (DV) (~ 450) có tương quan cao.

Các biến độc lập của tôi (IV) cũng rất nhiều (~ 2000) và có mối tương quan cao.

Nếu tôi sử dụng Lasso để chọn một mô hình rút gọn cho từng đầu ra riêng lẻ, tôi không được đảm bảo có cùng một tập hợp con của các biến độc lập khi tôi lặp qua từng biến phụ thuộc.

Có một hồi quy tuyến tính đa biến sử dụng Lasso trong R không?

Đây không phải là nhóm Lasso. nhóm lasso nhóm IV. Tôi muốn hồi quy tuyến tính đa biến (có nghĩa là DV là một ma trận, không phải là một vectơ vô hướng), cũng thực hiện lasso. (Lưu ý: như NRH chỉ ra, điều này không đúng. Nhóm lasso là một thuật ngữ chung bao gồm các chiến lược nhóm IV, nhưng cũng bao gồm các chiến lược nhóm các tham số khác như DV)

Tôi tìm thấy bài báo này được đưa vào một cái gì đó gọi là Bộ chồng chéo thưa thớt Lasso

Đây là một số mã thực hiện hồi quy tuyến tính đa biến

> dim(target)
[1] 6060  441
> dim(dictionary)
[1] 6060 2030
> fit = lm(target~dictionary)

Đây là một số mã mà lasso trên một DV

> fit = glmnet(dictionary, target[,1])

Và đây là những gì tôi muốn làm:

> fit = glmnet(dictionary, target)
Error in weighted.mean.default(y, weights) : 
  'x' and 'w' must have the same length

Chọn các tính năng phù hợp với TẤT CẢ các mục tiêu cùng một lúc


Không rõ những gì bạn đang yêu cầu, ngoại trừ về điểm cuối cùng. Các gói được gọi glmnetvà nó có một họa tiết kỹ lưỡng.
generic_user

"Mỗi lần" nghĩa là gì? Bạn đang chạy này trên tập con của dữ liệu của bạn? Xác nhận chéo? Mẫu khác nhau?
Shadowtalker

Mỗi lần, tôi có nghĩa là tôi hiện đang chạy glmnet trên một biến phụ thuộc duy nhất tại một thời điểm và lặp qua tất cả chúng
kmace

Hay nói cách khác, y của tôi luôn là một vectơ, không phải là ma trận
kmace

1
@Fireorms hoàn toàn. Tôi không biết thuật ngữ này chung chung hơn. Xin lỗi về điều đó
kmace

Câu trả lời:


11

Đối với các phản hồi đa biến (số lượng biến phụ thuộc lớn hơn 1), bạn cần family = "mgaussian"trong lệnh gọi của glmnet.

Các gói lsgl là một sự thay thế, cung cấp một hình phạt linh hoạt hơn.

k

j=1pβj2

βj=(βj1,,βjk)Tjglmnet

[ family = "mgaussian"] Trước đây cho phép mô hình gaussian đa phản hồi phù hợp, sử dụng hình phạt "nhóm -lasso" trên các hệ số cho mỗi biến. Buộc các câu trả lời lại với nhau như thế này được gọi là học tập "đa tác vụ" trong một số lĩnh vực.

Hình phạt này là một ví dụ về hình phạt lasso nhóm, nhóm các tham số cho các phản ứng khác nhau có liên quan đến cùng một yếu tố dự đoán. Nó dẫn đến việc lựa chọn các yếu tố dự đoán giống nhau trên tất cả các phản hồi cho một giá trị nhất định của tham số điều chỉnh.

Gói lsgl thực hiện các hình phạt lasso nhóm thưa thớt có dạng trong đó và là các trọng số nhất định được chọn để cân bằng các đóng góp từ các điều khoản khác nhau. Mặc định là và . Tham số là tham số điều chỉnh. Với (và ) hình phạt tương đương với hình phạt được sử dụng với . Với (và

αj=1pl=1kξjl|βjl|+(1α)j=1pγjβj2

ξjlγjξjl=1γj=kα[0,1]α=0γj=1glmnetfamily = "mgaussian"α=1ξjl=1) hình phạt cho Lasso bình thường. Việc thực hiện lsgl cũng cho phép nhóm các yếu tố dự đoán bổ sung.

Một lưu ý về nhóm lasso. Thuật ngữ nhóm Lasso thường được liên kết với một nhóm các yếu tố dự đoán. Tuy nhiên, từ quan điểm tổng quát hơn, lasso nhóm chỉ đơn giản là một nhóm các tham số trong hình phạt. Nhóm được sử dụng bởi glmnetvới family = "mgaussian"là một nhóm các tham số qua các phản hồi. Hiệu quả của việc phân nhóm như vậy là kết hợp ước lượng của các tham số trên các phản hồi, hóa ra đó là một ý tưởng tốt, nếu tất cả các phản hồi có thể được dự đoán từ cùng một bộ dự đoán. Ý tưởng chung về ghép nhiều vấn đề học tập, dự kiến ​​sẽ chia sẻ một số cấu trúc, được gọi là học tập đa tác vụ .

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.