3.4.4 最小角回帰(Least Angle Regression)

Lassoを一瞬で解く方法

前の章で学んだLasso。強力な手法ですが、1つ問題がありました。

「最適なλ(ペナルティの強さ)をどう選ぶか?」

普通は、いろんなλの値を試して、交差検証(データを分割して検証する方法)で比較します。 λを100通り試すなら、100回最適化問題を解く必要がある。これは時間がかかります。

ところが、ある巧妙なアルゴリズムを使えば、すべてのλに対する解を、たった1回の計算で求められるのです。

そのアルゴリズムが「最小角回帰」(Least Angle Regression、略してLAR)。

今回は、LARのアイデアを見ていきましょう。 変数選択の本質に迫る、美しい構造が見えてきます。

変数選択のジレンマ

まず、変数選択の問題を別の角度から考えてみましょう。

Lasso以外にも、変数を選ぶ方法はあります。 最もシンプルなのが「Forward Stepwise Selection」。1つずつ変数を追加していく方法です。

  1. 最も予測に役立つ変数を1つ選ぶ
  2. 次に役立つ変数を1つ追加する
  3. これを繰り返す

シンプルで直感的。でも、問題があります。

「最も役立つ変数を1つ選ぶ」というのは、極端な決定です。 2番目に良い変数は完全に無視される。 そして、一度選ばれた変数の係数は、ステップごとに最小二乗法解に一気にジャンプします。

Forward Stepwiseの貪欲な変数選択

これは「貪欲すぎる」のでは?

もし、複数の変数を「少しずつ」追加できたらどうでしょう?

ここに、LARのアイデアがあります。

LARの基本アイデア - 「公平に」変数を追加

最小角回帰(LAR)は、Forward Stepwiseを「民主化」したアルゴリズムです。

どういう意味でしょうか?

LARでは、1つの変数を完全に追加する代わりに、複数の変数を「少しずつ」追加します。

アルゴリズムを直感的に説明しましょう。

まず「残差」という言葉を確認しておきます。 残差とは、現在のモデルでは説明しきれない部分、つまり「予測値と実際の値のズレ」のことです。 この残差を減らすことが、モデルを良くするということ。

ステップ1: 残差と最も相関が高い(残差を最も減らせそうな)変数を見つける

ステップ2: その変数の係数を、残差との相関が他の変数と「同率」になるまで増やす

ステップ3: 2つの変数を「同時に」、両方との相関が同率のまま減少するように係数を増やす

ステップ4: 3つ目の変数が追いつくまで続け、追いついたら3つ同時に...

このプロセスを、すべての変数がモデルに入るまで繰り返します。

LARの等角方向への進行

重要なのは、「追いついた」変数は完全に無視されず、すぐにモデルに参加できることです。 これが「民主的」という意味です。

なぜ「最小角」なのか

アルゴリズムの名前「Least Angle」(最小角)は、どこから来ているのでしょうか?

LARの各ステップで、係数が進む方向を考えてみましょう。

ここで「アクティブな変数」という用語を使います。 アクティブな変数とは、現在モデルに参加していて、係数が変化し続けている変数のことです。

2つの変数がアクティブ(残差との相関が最大で同率)のとき、 係数の更新方向は、この2つの変数の方向と「等しい角度」を成す方向です。

つまり、どちらの変数にも「公平に」近い方向。 これが「最小角」の意味です。

幾何学的には、アクティブな変数たちの方向を平均化した方向に進みます。

$$\text{更新方向} \propto X_{A_k}(X_{A_k}^T X_{A_k})^{-1}\mathbf{1}$$

この式は複雑に見えますが、意味は単純です。

結果として得られる方向は、アクティブなすべての変数と等しい角度を成します。

3つの変数に対する等角方向

3つ以上の変数がアクティブな場合も同様です。 すべてのアクティブな変数と等しい角度を成す方向に進みます。

LARとLassoの驚くべき関係

ここで驚くべき発見があります。

LARとLassoは、ほとんど同じなのです。

実際、LARにたった1つの修正を加えるだけで、完全なLassoの係数パスが得られます。

その修正とは:

「係数がゼロを通過しようとしたら、その変数をアクティブセットから外す」

これだけです。

LARでは、一度アクティブになった変数は最後まで残ります。 しかしLassoでは、ペナルティの効果で係数がゼロに戻ることがあります。

LARをLassoに変換するには、係数がゼロになった瞬間にその変数を「非活性化」するだけ。

LARとLassoの係数パスの違い

この発見(Efron et al., 2004)により、Lassoの完全な係数パスを、 通常の最小二乗法1回分とほぼ同じ計算量で求められるようになりました。

係数パスの区分線形性

LARとLassoには、もう1つ重要な性質があります。

係数パスが「区分線形」(piecewise linear)なのです。

どういう意味でしょうか?

正則化パラメータλを変化させたとき、係数の軌跡を見てみましょう。 この軌跡は、直線を折れ線でつないだ形になっています。

なぜこれが重要?

区分線形であれば、「折れ点」(kink)の位置だけを計算すればよいのです。 折れ点と折れ点の間は、単純な直線補間で求められます。

係数パスの区分線形性

これがLARの計算効率の秘密です。

従来、Lassoの解を求めるには様々なλの値で最適化問題を解く必要がありました。 LARを使えば、折れ点だけを順番に計算することで、すべてのλに対する解が一度に得られます。

$$\hat{\beta}(s) = \hat{\beta}_{k-1} + s \cdot \delta_k \quad \text{(ステップ}k\text{内)}$$

各ステップ内では、係数は一定の方向$\delta_k$に沿って線形に変化します。 ステップの境界(折れ点)でのみ方向が変わります。

計算効率の革命

ここまでの説明で、LARの美しい構造が見えてきました。 でも、実用上最も重要なのは計算効率です。

従来、Lassoの解を求めるには「座標降下法」などを使っていました。 座標降下法とは、変数を1つずつ順番に最適化していく方法です。

この方法で問題なのは、λ(ペナルティの強さ)の各値ごとに最適化が必要なこと。

100通りのλを試したければ、100回の最適化。 1000通りなら1000回。

ところがLARなら、完全な係数パス(すべてのλに対する解)が一度に得られます

従来法とLARの計算量比較

なぜでしょう?

答えは「区分線形性」にあります。 係数パスは折れ線で、折れ点は有限個しかありません。 折れ点の位置さえ分かれば、その間は単純な直線補間で求められる。

結果として、計算量は:

ほぼ同じなのです。

λの最適値を交差検証で探すとき、この効率性は決定的。 全てのλに対する解が一度に得られるので、検証が劇的に高速化します。

まとめ

この章で学んだことを振り返りましょう。

変数選択のジレンマから出発

  • Forward Stepwiseは「貪欲すぎる」
  • 変数を「少しずつ」追加するアイデア

最小角回帰(LAR)の本質

  • アクティブな変数と等しい角度を成す方向に進む
  • これが「公平に」変数を追加するということ

LARとLassoの驚くべき関係

  • LARにたった1つの修正(ゼロでの停止)を加えるとLasso
  • 2つの手法は双子のように近い

区分線形性と計算効率

  • 係数パスは折れ線(区分線形)
  • 折れ点だけ計算すれば、全てのλに対する解が得られる
  • 計算量は最小二乗法と同程度
LARの全体像まとめ

LARは単なる「計算の効率化」ではありません。

Forward Stepwise、LAR、Lasso。 一見バラバラに見えるこれらの手法が、実は深いところでつながっている。 「貪欲に選ぶ」か「公平に選ぶ」か、その連続的なスペクトルの上に、すべてが並んでいる。

この構造的な理解こそが、LARがもたらした最大の洞察なのです。