Lưu ý rằng
∥y−Xβ∥22+λ∥β∥1=∥y−β1x1−β2x2∥22+λ(|β1|+|β2|)=∥y−(β1+2β2)x1∥22+λ(|β1|+|β2|).
Đối với mọi giá trị cố định của hệ số , hình phạtđược giảm thiểu khi . Điều này là do hình phạt trên có trọng số gấp đôi ! Để đặt ký hiệu này,đáp ứng đối với bất kỳ . Do đó, công cụ ước tính Lasso
β1+2β2|β1|+|β2|β1=0β1
β~=argminβ:β1+2β2=K|β1|+|β2|
β~1=0Kβ^=argminβ∈Rp∥y−Xβ∥22+λ∥β∥1=argminβ∈Rp∥y−(β1+2β2)x1∥22+λ(|β1|+|β2|)=argβminK∈Rminβ∈Rp:β1+2β2=K∥y−Kx1∥22+λ(|β1|+|β2|)=argβminK∈R{∥y−Kx1∥22+λminβ∈Rp:β1+2β2=K{(|β1|+|β2|)}}
thỏa mãn . Lý do tại sao các ý kiến cho câu hỏi của OP là sai lệch là bởi vì có một hình phạt đối với mô hình: những điều đó
β^1=0(0,50)và hệ số cho cùng một lỗi, nhưng chỉ tiêu khác nhau ! Hơn nữa, không cần thiết phải xem xét bất cứ điều gì như LAR: kết quả này ngay lập tức từ các nguyên tắc đầu tiên.
(100,0)ℓ1
Như được chỉ ra bởi Fireorms, lý do tại sao mô phỏng của bạn cho thấy kết quả trái ngược nhau là glmnet
tự động chia tỷ lệ thành đơn vị phương sai của các tính năng. Đó là, do việc sử dụng glmnet
, chúng tôi thực sự có hiệu quả trong trường hợp . Ở đó, công cụ ước tính không còn là duy nhất: và đều nằm trong arg min. Thật vậy, nằm trong với mọi sao cho .x1=x2(100,0)(0,100)(a,b)argmina,b≥0a+b=100
Trong trường hợp các tính năng bằng nhau này, glmnet
sẽ hội tụ chính xác trong một lần lặp: nó làm mềm ngưỡng hệ số thứ nhất và sau đó hệ số thứ hai được ngưỡng mềm bằng không.
Điều này giải thích tại sao cụ thể mô phỏng tìm thấy . Thật vậy, hệ số thứ hai sẽ luôn bằng không, bất kể thứ tự của các tính năng.β^2=0
Chứng minh: Giả sử WLOG rằng tính năng thỏa mãn . Phối hợp gốc (thuật toán được sử dụng bởi ) tính toán cho lần lặp đầu tiên: theo sau là
trong đó . Sau đó, vìx∈Rn∥x∥2=1glmnet
β^(1)1=Sλ(xTy)
β^(1)2=Sλ[xT(y−xSλ(xTy))]=Sλ[xTy−xTx(xTy+T)]=Sλ[−T]=0,
T=⎧⎩⎨−λλ0 if xTy>λ if xTy<−λ otherwiseβ^(1)2=0, lần lặp thứ hai của gốc tọa độ sẽ lặp lại các tính toán ở trên. Theo cách tự nhiên, chúng ta thấy rằng cho tất cả các lần lặp và . Do đó, sẽ báo cáo và vì tiêu chí dừng ngay lập tức đạt được.
β^(i)j=β^(i)jij∈{1,2}glmnet
β^1=β^(1)1β^2=β^(1)2