∥y−Xβ∥22+λ∥β∥1=∥y−β1x1−β2x2∥22+λ(|β1|+|β2|)=∥y−(β1+2β2)x1∥22+λ(|β1|+|β2|).
Para qualquer valor fixo do coeficiente , a penalidadeé minimizado quando . Isso ocorre porque a penalidade em é duas vezes mais ponderada! Para colocar isso em notação,satisfaz para qualquer . Portanto, o estimador de laço
β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|)}}
satisfaz . A razão pela qual os comentários à pergunta do OP são enganosos é porque há uma penalidade no modelo: aqueles
β^1=0(0,50)e coeficientes dão o mesmo erro, mas diferentes norma! Além disso, não é necessário olhar para algo como LARs: esse resultado segue imediatamente os primeiros princípios.
(100,0)ℓ1
Conforme apontado pelo Firebug, a razão pela qual sua simulação mostra um resultado contraditório é que ela é glmnet
dimensionada automaticamente para variar a unidade dos recursos. Ou seja, devido ao uso de glmnet
, estamos efetivamente no caso em que . Lá, o estimador não é mais único: e estão ambos no arg min. De fato, está no para qualquer tal que .x1=x2(100,0)(0,100)(a,b)argmina,b≥0a+b=100
Nesse caso de recursos iguais, glmnet
convergirá em exatamente uma iteração: limiares soft o primeiro coeficiente e, em seguida, o segundo coeficiente é limiar soft a zero.
Isso explica por que a simulação encontrou em particular. De fato, o segundo coeficiente sempre será zero, independentemente da ordem dos recursos.β^2=0
Prova: suponha ao WLOG que o recurso satisfaça . A descida de coordenadas (o algoritmo usado por ) calcula sua primeira iteração: seguida por
onde . Então, comox∈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, a segunda iteração de descida de coordenadas repetirá os cálculos acima. Indutivamente, vemos que para todas as iterações e . Portanto , reportará e pois o critério de parada é imediatamente atingido.
β^(i)j=β^(i)jij∈{1,2}glmnet
β^1=β^(1)1β^2=β^(1)2