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

ぽんのブログ

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

ここまで、lassoを解くためのアルゴリズムとして LARS、LARS-EN を扱ってきましたが、この他に挙げられるlasso解法の代表的なアルゴリズムの一つに coordinate descent とよばれるものがあります。
今回はこちらのアルゴリズムについて書きたいと思います。

参考文献としては Friedman et al., 2011 が挙げられるでしょうか。

さて、この coordinate descent アルゴリズムですが、有名な glmnet でも使われているそうです。
基本的な考え方は Gauss-Seidel法という連立方程式の解法と同じだそうです。

今、線形方程式



を考え、以下の目的関数を最小にする解を求めるものとします。



Gauss-Seidel法では β の各要素を、勾配を使って一つづつ更新してゆきます。
今着目する についての目的関数の勾配


についての極値で  を更新します。つまり



から

式(1)


とします。ここで



で、β から β_j を除いたものです。

式(1)はつまり、着目する解以外を固定した場合の目的関数の勾配で解を更新する、即ち着目する解以外を固定したときの目的関数の断面(プロファイル)の極小値で解を置き換える事になります。

Gauss-Seidel法では、全ての j について式(1)で更新し、これを解が収束するまで続けます。

さて、次に以下の L2 正則化問題を考えます。



この場合も式(1)と同様、β_j は



で更新されます。 x_j が規格化されていれば z_j^T z_j = 1+λ2 なので

式(2)


となります。式(2)をさらに書き下すと



となります。