3.8 Lassoへの別道 — ステップ・グループ・効率的計算
Lassoは強力な正則化手法だが、その解の求め方や改良版には深い世界がある。 小さな一歩を繰り返すだけでLassoと同じ経路が得られること、グループ単位でゼロになれる拡張、 Lassoのバイアス問題を修正する工夫、そして一変数ずつ最適化する効率的なアルゴリズム—— これらを視覚的・直感的に理解していこう。
前章で学んだLasso(L₁正則化)の応用と改良版。 「なぜLassoはうまくいくのか」「もっとうまくできないか」という問いへの答えがここにある。
小さな一歩がLassoを生む — 前向きステージワイズ回帰
Lassoの解を求めるアルゴリズムには、複数の道がある。 そのうち一つが、前向きステージワイズ回帰(Forward Stagewise Regression)と呼ばれる、 驚くほどシンプルな手順だ。
やることはただ一つ:今の残差と最も相関が高い変数を選び、その係数をほんの少しだけ動かす。 これをひたすら繰り返す。

上のアニメーションを見てほしい。3つの係数(青・黄・緑)がゼロから始まり、 小さなステップを繰り返しながら、徐々に折れ線状の経路を形成していく。 これが前向きステージワイズ回帰の「生の動き」だ。
具体的な手順はこうだ:
- 全ての係数をゼロから始める
- 残差 $r = y - \hat{y}$ を計算する
- 残差と最も強く相関する変数 $x_j$ を選ぶ
- 係数 $\beta_j$ をほんの少しだけ更新する
- 残差を更新し、2に戻る
更新式は次の通りだ:
ここで $\varepsilon$ はステップサイズ(小さな正の数)、$\langle x_j, r \rangle$ は変数と残差の内積(一致度)を表す。$\text{sign}(\cdot)$ は符号を返す関数で、 内積が正なら $\beta_j$ を増やし、負なら減らす。
この $\varepsilon$ を限りなくゼロに近づけた極限の手続きをFS₀(インフィニテシマル前向きステージワイズ)と呼ぶ。 「インフィニテシマル」とは「無限小」の意味で、ステップが無限に小さくなる極限を指す。
驚くべき事実がある。FS₀ が生成する係数の経路は、Lassoの経路とまったく同じになる。 (厳密には係数のパスが単調に変化する場合だが、多くの実際の問題ではこれが成り立つ。)
「Lasso = 最適化問題を一気に解く」という視点と、「FS₀ = 小さな一歩の無限の積み重ね」という視点。 どちらも同じ答えに到達する。これは機械学習における深い数学的事実の一つだ。
変数のグループを丸ごと選ぶ — グループLasso
Lassoは「どの変数を使うか」を自動で選ぶ。 しかし現実のデータには、変数が自然にグループを形成するケースが多い。
例えば:
- カテゴリ変数(「都市」)をダミー変数化すると、「東京」「大阪」「名古屋」が同じグループになる
- 遺伝子データでは、同じ生物学的パスウェイに属する遺伝子群がグループになる
通常のLassoでは、グループ内の一部の変数だけが選ばれ、残りが捨てられることがある。カテゴリ変数のダミーなら、グループ全体を使うか全体を捨てるかが自然なはずだ。

上のアニメーションを見てほしい。青・黄・緑の3つのグループがある。 正則化パラメータ λ が増加するにつれ、黄色いグループの棒が全て同時に縮んでいく。 そして一斉にゼロになる——グループが丸ごと消えるのだ。一方、青と緑のグループは影響を受けない。
グループLassoはこの問題を解決する。 グループ $\ell$ の係数ベクトル$\beta_\ell$ に対して、 通常の絶対値ではなくL2ノルム $\|\beta_\ell\|_2$ でペナルティを課す:
ここで $p_\ell$ はグループ $\ell$ の変数の数、$\sqrt{p_\ell}$ はグループサイズを調整する重みだ。
なぜL2ノルムを使うと「グループ全体がゼロになる」のか?
$\|\beta_\ell\|_2 = \sqrt{\beta_{\ell,1}^2 + \beta_{\ell,2}^2 + \cdots}$——これは係数ベクトルの長さ(原点からの距離)だ。 グループ内の係数が全て小さいほど、このノルムは小さくなる。
幾何学的に言えば:通常のLasso(L1ノルム)の等ペナルティ面は正方形(ひし形)だ。 L2ノルムの等ペナルティ面は球だ。 球の場合、係数を「どれかだけ残す」より「全部同じ方向に縮める」ほうが球面上の一点に対応しやすく、 最適化がグループ全体をゼロにする方向に働く。
通常のLassoでは、グループ内の一部だけがゼロになることが可能だ。 グループLassoでは、グループを1単位として扱うため、全体が残るか全体が消えるかという「グループ単位の選択」が自然に起きる。
Lassoのバイアス問題 — 重要な変数も縮小されすぎる
Lassoには一つの根本的な問題がある:重要な変数の係数まで、小さく縮小されすぎる。
なぜか?Lassoのペナルティは $\lambda|\beta_j|$ で、 係数の絶対値に比例する。小さい係数には適度なペナルティがかかるが、大きい係数にも同じ比率でペナルティがかかる。 本当に重要な変数(真の係数が大きい)でも、推定値が真の値より小さくなってしまう。
これを「バイアス」と呼ぶ。 統計的には「一致性がない」(サンプルサイズが増えても推定値が真の値に収束しない)とも言う。

上のアニメーションを見てほしい。3つの曲線が重なって描かれる:
- 青(Lasso):完全なV字型。大きな係数にも一定の比率でペナルティがかかり続ける
- 黄(SCAD):小さな係数ではLassoと同じだが、大きな係数では水平になる
- 緑(適応Lasso):変数ごとに個別の重みを持つ修正版
赤い矢印が示す部分——大きな $|\beta|$ での差がポイントだ。
SCAD(滑らかにクリップされた絶対偏差)ペナルティ
SCADペナルティは3段階で変化する:
- $|\beta| \leq \lambda$ のとき: Lassoと同じ勾配 $\lambda$(通常の罰則)
- $\lambda < |\beta| \leq a\lambda$ のとき: 罰則の勾配が徐々に減少($a$ は通常4程度の定数)
- $|\beta| > a\lambda$ のとき: 罰則の勾配はゼロ——もう縮小しない!
つまり「小さな係数は強く縮小してゼロに近づける(スパース性)」、 「大きな係数は縮小しない(バイアスなし)」という理想的な性質を両立させる。 V字型のLassoペナルティを、先端だけ平らにしたような形だと思えばよい。
適応Lasso(Adaptive Lasso)
各変数に個別の重みを持つペナルティを使う:
$\hat{\beta}_j$ は最小二乗推定値、$\nu > 0$ はハイパーパラメータ(通常 $\nu = 1$ や $\nu = 2$ を使う)。
重要な変数($|\hat{\beta}_j|$ が大きい)は分母が大きくなり、$w_j$ が小さくなる → 罰則が軽くなる。 重要でない変数は $|\hat{\beta}_j|$ が小さく、$w_j$ が大きくなる → 強く縮小される。
直感的に言えば「重要そうな変数は優しく扱い、重要でなさそうな変数は厳しく扱う」。 最初に最小二乗で変数の重要度を把握し、その知識を使ってペナルティを個別に調整する賢いやり方だ。
座標降下法 — 一つずつ、確実に最適化する
Lassoの解を求める別のアプローチが座標降下法(Coordinate Descent)だ。 LARSアルゴリズムが全変数を同時に考慮するのに対し、座標降下法は一度に一つの変数だけを最適化する。

上のアニメーションを見てほしい。楕円形の等高線(損失関数の等値曲線)上で、 赤い点が水平→垂直→水平→垂直……とジグザグに動いている。 これが座標降下法の本質だ。
水平移動 = 「$\beta_1$ を固定して $\beta_2$ を最適化」、 垂直移動 = 「$\beta_2$ を固定して $\beta_1$ を最適化」。 このジグザグを繰り返すことで、最小点(黄色い点)に向かって収束していく。
やり方はシンプルだ:
- 変数 $\beta_j$ 以外の係数を固定する
- 固定された他の係数を使って部分的な残差を求める:$$\tilde{y}_i^{(j)} = y_i - \sum_{k \neq j} x_{ik}\hat{\beta}_k(\lambda)$$
- この残差に対して $\beta_j$ のLasso問題を解く
- 次の変数に移り、繰り返す
ステップ3の解は、閉じた形で書ける:
ここで $S(t, \lambda) = \text{sign}(t)(|t| - \lambda)_+$ はソフト閾値化演算子だ。$(\cdot)_+$ は「正なら値をそのまま、負なら0にする」演算子。つまり:
- $|t| \leq \lambda$ のとき:$S(t, \lambda) = 0$(絶対値がλ以下ならゼロに)
- $|t| > \lambda$ のとき:$S(t, \lambda) = \text{sign}(t)(|t| - \lambda)$(λより大きければ、絶対値からλを引いた値)
簡単に言えば「内積の絶対値がλより小さければ無視し、大きければλだけ縮小する」。 これがLassoの本質そのものだ。
なぜ効率的か?
一変数のLasso問題は即座に解ける。全変数をサイクルして繰り返すと、全体のLasso解に収束する。
さらに温かい始点(warm start)が使える:$\lambda$ を少しずつ小さくしながら解を求めるとき、 前の $\lambda$ での解を初期値として使える。 また、係数がゼロのままのことが多いので計算をスキップできる。
LARSよりもシンプルで、特に高次元(変数が多い)問題で高速になることが多い。リッジ回帰、 グループLasso、Fused Lassoなど、様々な拡張にも適用できる。
まとめ — Lassoの深い世界

この章を通じて、Lassoという一つの正則化手法の「奥深さ」が見えてきた。 上のアニメーションのように、Lassoを中心に4つのアイデアが放射状に広がっている。
| 手法 | 核心のアイデア | 何を解決するか |
|---|---|---|
| FS₀(前向きステージワイズ) | 小さな一歩の無限の積み重ね | Lassoの別の見方を提供 |
| グループLasso | グループごとにL2ノルムでペナルティ | グループ単位の変数選択 |
| SCAD / 適応Lasso | 大きな係数への罰則を軽減 | Lassoのバイアス問題を修正 |
| 座標降下法 | 一変数ずつ最適化を繰り返す | 高次元での効率的な計算 |
Lassoは「基本形」だが、その周辺には多くの変種と改良がある。 状況(グループ構造があるか、バイアスが問題か、計算速度が必要か)に応じて 最適な手法を選ぶのが実践的なアプローチだ。
統計学習における一つの深い教訓がここにある:単純なアイデアを徹底的に理解することで、多くの問題に対応できる豊かな手法群が生まれる。
前向きステージワイズ回帰の「小さな一歩」も、グループLassoの「L2ノルム」も、 SCADの「ペナルティの勾配を下げる」も——すべては「Lassoをより賢くする」という一つの問いから出発している。 この姿勢こそ、統計学習を深く学ぶための根本だ。