Elatsic netではL2正則化項が、単位行列を E として
という形をしていました。この E を任意の線形オペレータ J に置き換えた場合を考えます。
従って求める β は
となります。ここに
即ち J の行数を p_J とします。
これは
として
なる β を求める事になります。
1. 等角ベクトル (equiangular vector) u
LARS-ENアルゴリズムでは、イテレーション毎に解 β は修正方向 w に対し
式(1)
と更新されます。ここに γ は修正量を表します。よって b の推定値 ν は
と更新されます。従って等角ベクトルは n + p_J 次元のベクトル
となります。
ところで式(1)の β は、アクティブセット A に含まれる要素しか変化しません。
なぜならアクティブセットに含まれない β の要素は
だからです。なので w も
となります。以後この w の非ゼロ部分を w_A と書きます。
w_A は
で求められます。ここに Z_A はmatlab風に書くと Z(:, A) です。また
また c_A は後に出てくる残差と目的変数の相関(内積)です。
すると u は
式(2)
なる n + p_J 次元ベクトルとなります。
2. 解及び b の推定値 ν の更新
u により b の推定値 ν は
と更新されます。ここに
は y の推定値です。
3.ステップサイズの更新
ステップサイズ γ の計算には
が必要になりますが、これは式(2)から
で計算できます。
因みに γ の計算には a(Ac) しか参照されないので J = E (elastic net)の場合には
だけ計算しておけば足ります(逆に J != E なら(J によっては)後ろの部分も計算しなければなりません)。
4. Cholesky 分解の更新
γ の更新結果からアクティブセット A も更新されます。 w_A を求める際の
の計算にCholesky分解を用いている場合、cholinsert / delete アルゴリズムを用いる事で計算の大幅な効率化が図れます。
今 j を新たにアクティブセットに加えるものとします。
この時
なので
つまりベクトル
を cholinsert すれば良い事となります。
また要素を除く場合は普通に choldelete すれば良いです。
5.Correlation の計算
b とその推定値 ν との残差 r = b - ν と説明変数との相関 c は
即ち
で計算できます。