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:
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:
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),
- 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 .