これまでと前回の記事をまとめ、L2正則化項を任意の線形オペレータに置き換えた場合の
lasso解
を求めるLARS-ENアルゴリズムは以下になります。
1) 目的変数と残差との correlation c の更新
2) Cholesky分解の更新
として Z の j 列を cholinsert、または j 列を choldelete
3) 等角(equiangular)ベクトルの更新
として
ここに xx_A は xx の中からアクティブセット A に含まれる要素(または列)だけを抜き出したもの xx_A = xx(A) です。
4) ステップサイズの更新
として
また
としてステップサイズを
と更新。また なら j をアクティブセットに加える、
ならアクティブセットから j を除く。
5) 解の更新
で解 β および b = [ y ; 0 ] の推定値 ν を更新。
ちなみに ν のはじめの n 個 ν(1 : n) が y の推定値 μ
それからスケーリング定数 ζ ですが、これは
と、Z^T Z の対角成分が規格化されるように選ぶべきでしょう。
なので J の j 列を j_j として
>
となるような気がします。
ただ、これでは ζ はベクトルとなりその他の部分の計算量も増えてしまうので上の値に近い定数にする、としたほうが良いのかもしれません。