ここまで、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)をさらに書き下すと
となります。