ぽんのブログ -15ページ目

ぽんのブログ

自分用の備忘録ブログです。書いてある内容、とくにソースは、後で自分で要点が分かるよう、かなり簡略化してます(というか、いい加減)。あまり信用しないように(汗

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


即ち



で計算できます。