Проблема з ласою має рішення закритої форми: \ beta_j ^ {\ текст {lasso}} = \ mathrm {sgn} (\ beta ^ {\ текст {LS}} _ j) (| \ beta_j ^ {\ текст {LS }} | - \ alpha) ^ +
якщо X має ортонормальні стовпці. Це було показано в цій темі: Виведення розчину ласо закритої форми .
βlasso=argminβ∥y−Xβ∥22+α∥β∥1
βlassoj=sgn(βLSj)(|βLSj|−α)+
X
Однак я не розумію, чому взагалі немає рішення закритої форми. За допомогою піддіфференціалів я отримав наступне.
( X - матриця n×p )
f(β)=∥y−Xβ∥22+α∥β∥1
=∑i=1n(yi−Xiβ)2+α∑j=1p|βj|
(
Xi - i-й рядок
X )
=∑i=1ny2i−2∑i=1nyiXiβ+∑i=1nβTXTiXiβ+α∑j=1p|βj|
⇒∂f∂βj=−2∑i=1nyiXij+2∑i=1nX2ijβj+∂∂βj(α|βj|)
= \ початок {випадків} -2 \ sum_ {i = 1} ^ ny_i X_ {ij} + 2 \ sum_ {i = 1} ^ n X_ {ij} ^ 2 \ beta_j + \ alpha \ текст {for} \ beta_j > 0 \\ -2 \ sum_ {i = 1} ^ ny_i X_ {ij} + 2 \ sum_ {i = 1} ^ n X_ {ij} ^ 2 \ beta_j - \ alpha \ текст {for} \ beta_j <0 \\ [-2 \ sum_ {i = 1} ^ ny_i X_ {ij} - \ alpha, -2 \ sum_ {i = 1} ^ ny_i X_ {ij} + \ alpha] \ текст {for} \ beta_j = 0 \ end { случаи}=⎧⎩⎨⎪⎪−2∑ni=1yiXij+2∑ni=1X2ijβj+α for βj>0−2∑ni=1yiXij+2∑ni=1X2ijβj−α for βj<0[−2∑ni=1yiXij−α,−2∑ni=1yiXij+α] for βj=0
З
∂f∂βj=0 отримаємо
βj=⎧⎩⎨⎪⎪(2(∑ni=1yiXij)−α)/2∑ni=1X2ij(2(∑ni=1yiXij)+α)/2∑ni=1X2ij0for ∑ni=1yiXij>αfor ∑ni=1yiXij<−α for ∑ni=1yiXij∈[−α,α]
Хтось бачить, де я пішов не так?
Відповідь:
Якщо ми запишемо задачу за допомогою матриць, ми можемо легко зрозуміти, чому рішення закритої форми існує лише в ортонормальному випадку з XTX=I :
f(β)=∥y−Xβ∥22+α∥β∥1
=yTy−2βTXTy+βTXTXβ+α∥β∥1
⇒∇f(β)=−2XTy+2XTXβ+∇(α|β∥1)
(тут я зробив відразу багато кроків. Однак, до цього моменту це повністю аналог виведенню рішення з найменшими квадратами. Тому ви повинні мати змогу знайти пропущені кроки там.)
⇒∂f∂βj=−2XTjy+2(XTX)jβ+∂∂βj(α|βj|)
З ∂f∂βj=0 отримаємо
2(XTX)jβ=2XTjy−∂∂βj(α|βj|)
⇔2(XTX)jjβj=2XTjy−∂∂βj(α|βj|)−2∑i=1,i≠jp(XTX)jiβi
Зараз ми можемо бачити, що наше рішення для однієї залежить від усіх інших тому не зрозуміло, як діяти звідси. Якщо є ортонормальним, у нас є тож у цьому випадку, безумовно, існує рішення закритої форми.βjβi≠jX2(XTX)jβ=2(I)jβ=2βj
Дякую Гурмундуру Ейнарссону за його відповідь, про яку я детально розповів тут. Я сподіваюся, що цього разу це правильно :-)