Làm thế nào để áp dụng phương pháp bình phương tối thiểu lặp lại (IRLS) cho mô hình LASSO?


12

Tôi đã lập trình hồi quy logistic bằng thuật toán IRLS . Tôi muốn áp dụng hình phạt LASSO để tự động chọn các tính năng phù hợp. Ở mỗi lần lặp, điều sau đây được giải quyết:

(XTWX)δβ^=XT(yp)

Hãy λ là một số thực không âm. Tôi không xử phạt việc đánh chặn như đề xuất trong The Elements of. Học thống kê . Ditto cho các hệ số đã bằng không. Mặt khác, tôi trừ một thuật ngữ từ phía bên tay phải:

XT(yp)λ×sign(β^)

Tuy nhiên, tôi không chắc về việc sửa đổi thuật toán IRLS. Đó có phải là cách làm đúng đắn?


Chỉnh sửa: Mặc dù tôi không tự tin về nó, đây là một trong những giải pháp cuối cùng tôi đã đưa ra. Điều thú vị là giải pháp này tương ứng với những gì tôi hiểu về LASSO. Thực sự có hai bước ở mỗi lần lặp thay vì chỉ một:

  • bước đầu tiên là giống như trước: chúng tôi thực hiện một lần lặp của thuật toán (như nếu trong công thức cho gradient ở trên),λ=0
  • bước thứ hai là bước mới: chúng ta áp dụng ngưỡng mềm cho từng thành phần (ngoại trừ thành phần , tương ứng với phần chặn) của vectơ β thu được ở bước đầu tiên. Điều này được gọi là thuật toán ngưỡng mềm lặp .β0β

i1,βisign(βi)×max(0,|βi|λ)

Vẫn không thể có được sự hội tụ tốt hơn bằng cách điều chỉnh IRLS. : '(
Chảo

Câu trả lời:


12

Vấn đề này thường được giải quyết bằng sự phù hợp bằng cách phối hợp gốc ( xem tại đây ). Phương pháp này vừa an toàn hơn về mặt số lượng, dễ thực hiện hơn về mặt thuật toán và áp dụng cho một mảng mô hình tổng quát hơn (bao gồm cả hồi quy Cox). Một thực hiện R có sẵn trong R gói glmnet . Các mã là nguồn mở (một phần trong và bằng C, một phần bằng R), vì vậy bạn có thể sử dụng chúng làm bản thiết kế.


@wok Lưu ý, gói scikit.learn cũng cung cấp triển khai hiệu quả trong Python cho loại công cụ này.
chl

Các thuật toán gốc tọa độ là thú vị. Cảm ơn. Vẫn đang suy nghĩ về nó.
Chảo

5

Hàm mất LASSO có gián đoạn ở 0 dọc theo mỗi trục, do đó IRLS sẽ gặp vấn đề với nó. Tôi đã tìm thấy một cách tiếp cận tối ưu hóa tối thiểu tuần tự (SMO) rất hiệu quả, xem ví dụ

http://bioinformatics.oxfordjournals.org/content/19/17/2246

phiên bản có phần mềm MATLAB là

http://bioinformatics.oxfordjournals.org/content/22/19/2348

phần mềm có sẵn ở đây:

http://theoval.cmp.uea.ac.uk/~gcc/cbl/blogreg/

Ý tưởng cơ bản là tối ưu hóa các hệ số tại một thời điểm và kiểm tra xem liệu bạn có vượt qua được một hệ số gián đoạn tại một thời điểm hay không, điều này rất dễ dàng khi bạn đang thực hiện tối ưu hóa vô hướng. Nghe có vẻ chậm, nhưng nó thực sự khá hiệu quả (mặc dù tôi hy vọng các thuật toán tốt hơn đã được phát triển kể từ đó - có lẽ bởi Keerthi hoặc Chih-Jen Lin, cả hai đều là chuyên gia hàng đầu trong lĩnh vực đó).


Cảm ơn. Tôi đang đọc nó và suy nghĩ về nó. Tuy nhiên, đây sẽ là một sửa đổi lớn của thuật toán hiện tại.
Chảo

4

Bạn có thể kiểm tra bài viết: Hồi quy logistic thường xuyên L1 hiệu quả, là thuật toán dựa trên IRLS cho LASSO. Về việc triển khai, liên kết có thể hữu ích cho bạn (http://ai.stanford.edu/~silee/software/irlslars.htmlm).


0

IRLS cho vấn đề LASSO như sau:

argminx12Axb22+λx1=argminx12Axb22+λxTWx

WWi,i=1|xi|
x1=i|xi|=ixi2|xi|


WxxTWxxxdiag(sign(x))Wx

xk+1=(ATA+λWk)1ATb

Wi,iK=1|xik|.

Initialization can be by W=I.

Pay attention this doesn't work well for large values of λ and you better use ADMM or Coordinate Descent.

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.