L₁正則化付き線形分類器 — 縮めるのか、消すのか

7,129個の遺伝子を測定して、38人の患者から白血病のタイプを判別したい。 L₂正則化は「全部を少しずつ縮める」。でも「どの遺伝子が重要か」は教えてくれない。 L₁正則化(Lasso)はその問いに正面から答える——係数を正確にゼロにするという数学の力で。

L₂ vs L₁ — 「縮めるか、消すか」の哲学的違い

想像してみてほしい。7,129個の遺伝子の発現量を測定したデータがある。 患者が2種類の白血病のどちらか(ALL: 急性リンパ性白血病、AML: 急性骨髄性白血病)を 判別したい。でも、訓練データは38人分しかない。

「全部の遺伝子を使えばいいじゃないか」——その通りだが、 7,129個の変数で38人のデータを学習すると、過学習が起きる。 何かを削らなければならない。ではどの遺伝子が重要かをどうやって見つけるのか?

前の18.3節で学んだL₂正則化(Ridge)を使うと、 確かに予測精度は上がる。しかし、「どの遺伝子が重要か」という問いには答えてくれない。 7,129個の遺伝子すべてが少しずつ使われ、係数はどれもゼロにならないからだ。

「なぜゼロにならないのか?」を考えてみよう。 下のアニメーションで、L₂とL₁の幾何学的な違いを確認してほしい。

L₂(円形)とL₁(ダイヤモンド)の制約領域と等高線の交点の違いを示すアニメーション
左: L₂(円形制約)では解が軸上に乗らない。右: L₁(ダイヤモンド制約)では解がほぼ確実に角(軸上)に落ち、一方の係数がゼロになる。

L₂ペナルティは $\sum \beta_j^2$ の形をしている。これは各係数を原点に向かって引っ張る力だが、 係数がゼロに近づくほどその引力は弱まる。ゼロにはなれるが、数学的には「ゼロに達する前に均衡点が生まれる」。

一方、L₁ペナルティは $\sum |\beta_j|$ の形をしている。絶対値はゼロ付近でも一定の引力を保ち続ける。 その結果、係数が正確にゼロになることが多い。

これが「スパース解」——大部分の係数がゼロで、少数だけが非ゼロという解——を生む理由だ。 幾何学的に見ると、ダイヤモンドの「角」が軸上にあるため、 等高線との接触は高確率でその角(= 一方の係数がゼロ)で起きる。

このLasso(L₁正則化)の定式化とRidge(L₂)の違いを数式で確認しよう:

$$\text{L}_2 \text{ (Ridge):} \quad \min_\beta \sum_{i=1}^N \left(y_i - x_i^T\beta\right)^2 + \lambda\sum_{j=1}^p \beta_j^2$$
$$\text{L}_1 \text{ (Lasso):} \quad \min_\beta \sum_{i=1}^N \left(y_i - x_i^T\beta\right)^2 + \lambda\sum_{j=1}^p |\beta_j|$$

L₂はペナルティが $\beta_j^2$ なのでゼロ付近で傾きが消える。 L₁は $|\beta_j|$ なのでゼロ付近でも傾き(サブ勾配)が残り、係数を正確にゼロに押しつける。 この小さな違いが、「縮める(Ridge)」か「消す(Lasso)」かという哲学的な差を生む。

Lassoの正式な定式化と係数パス

分類問題にLassoを適用する最も直接的な方法は、目的変数を ±1 とコードして 回帰問題として解くことだ(2クラスの場合)。

Lassoの最適化問題は次のように書ける:

$$\min_{\beta} \frac{1}{2}\sum_{i=1}^N \left(y_i - \beta_0 - \sum_{j=1}^p x_{ij}\beta_j\right)^2 + \lambda\sum_{j=1}^p |\beta_j|$$

ここで重要な性質がある:$p > N$(変数数がサンプル数を超える)のとき、 $\lambda \to 0$ とすると訓練データに完全にフィットしてしまう。 しかし凸双対理論により、いかなる $\lambda$ でも非ゼロ係数の数はN個以下に制限されることが証明されている。

7,129個の遺伝子で38サンプルのデータでも、Lassoは最大38個の遺伝子しか選ばない。 これが「厳しいかたちの特徴選択」と言われる理由だ。

λを変化させると係数がどう変わるか——「係数パス」と呼ばれるこの動きを見てみよう。

λが大きくなるにつれて係数が一つずつゼロに張り付いていくアニメーション
右から左へ動く縦線はλの増大を示す。係数が一本ずつゼロに「ぺちゃっ」と張り付いていく様子がLassoの特徴。

λが小さいとき(右端)、多くの係数が非ゼロだ。λが大きくなる(左へ移動)につれ、 係数が一本ずつゼロに向かう。これが「段階的な特徴選択」——どの特徴が最初にゼロになるかは、 その特徴の重要度に依存する。

多クラス(K クラス)への拡張は、対数尤度にペナルティを加える形になる:

$$\max_{\{\beta_{0k},\beta_k\}_1^K} \left[\sum_{i=1}^N \log \Pr(g_i|x_i) - \lambda \sum_{k=1}^K \sum_{j=1}^p |\beta_{kj}|\right]$$

ここで:

これはロジスティック回帰のL₁正則化版だ。 解は $\lambda$ が大きいほどスパース(非ゼロ係数が少ない)になり、クロスバリデーションで最適な $\lambda$ を選ぶ。

Elastic Net — 相関した遺伝子の扱い

Lassoには弱点がある。遺伝子は分子経路上で協調して働く—— つまり、多くの遺伝子が強く相関している。

例えば、遺伝子AとBが非常に強く相関しているとき、 Lassoはどちらか一方だけを選ぶ。もう片方は捨てる。 統計的には等価なのに、「たまたまどちらかだけ」という状況になる。

Ridge(L₂)はどう扱うか? 相関した変数の係数を「平均化」する方向に縮める。 どちらも残すが、それぞれが少し小さくなる。

下のアニメーションで、強い相関がある場合にLassoとElastic Netがどう振る舞うか比較してみよう。

強く相関した2変数に対するLasso(左)とElastic Net(右)の解の違いを示すアニメーション
細長い楕円等高線が強い相関を表す。左(Lasso)では解が角に落ちて一方がゼロに。右(Elastic Net)では両方が非ゼロのまま残る。

Elastic Net(Zou and Hastie, 2005)はその妥協点だ。 L₁とL₂の両方のペナルティを組み合わせる:

$$\text{Elastic Net penalty:} \quad \sum_{j=1}^p \left(\alpha|\beta_j| + (1-\alpha)\beta_j^2\right)$$

$\alpha \in [0, 1]$ がバランスを決める:

多クラス分類への適用は:

$$\max_{\{\beta_{0k},\beta_k\}_1^K} \left[\sum_{i=1}^N \log \Pr(g_i|x_i) - \lambda \sum_{k=1}^K \sum_{j=1}^p \left(\alpha|\beta_{kj}| + (1-\alpha)\beta_{kj}^2\right)\right]$$

白血病データ(7,129遺伝子 × 38サンプル)での実験では、 $\alpha \in [0.75, 0.80]$ が最良のCV誤差を示した。 Lassoでは19個の非ゼロ係数、Elastic Netでは39個—— Elastic Netはより多くの遺伝子を含みながらも、各係数は小さく保つ。

「スパース性」と「グループ化(相関変数を共に選ぶ)」という2つの望ましい性質を 同時に持てるのが、Elastic Netの強みだ。

応用例 — タンパク質質量分析と癌診断

ここで実際の応用例を見てみよう。 タンパク質質量分析(Protein Mass Spectrometry)は血液中のタンパク質を分析し、 疾患を診断する技術だ。

患者の血清サンプルに対して、飛行時間(time of flight) $t_j$ ごとの強度 $x_ij$ が観測される。 これは質量/電荷比 $m/z$ と対応しており、 特定の $t_j$ でのピークが特定のタンパク質の存在を示す。

データは:

$p \gg N$ の典型的な高次元問題だ。

直接Lassoを適用した結果

生の $m/z$ 値(16,898変数)に直接Lassoを適用した結果:

手法テスト誤差/108使用サイト数
最近傍縮小重心34459
Lasso回帰22113

Lassoはより少ない特徴量で、より高い精度を達成した。

ピーク抽出アプローチの試み

しかし問題があった。タンパク質は質量分析でスペクトルにピークとして現れるが、 「同一のタンパク質が患者によって少し異なる $m/z$ 位置でピークを示す」 という現象(m/z warping)がある。 Lassoは生の値を使うため、この問題に無関心だった。

そこでピーク抽出を試みた:

  1. 217個の訓練スペクトルから5,178個のピークを検出
  2. 階層的クラスタリングで728個の共通ピークを特定
  3. 217 × 728の行列でLassoを適用

テスト誤差は28/108とやや増加したが、35個のピーク位置という 生物学的に解釈しやすい結果を得た。精度か解釈可能性か—— この選択は応用の目的によって変わる。

このジレンマは機械学習全般に共通する問いだ。 生データを直接使えば精度は高まるが、「なぜその予測をしたか」が不透明になる。 前処理で特徴を絞れば解釈可能だが、情報が失われる可能性がある。

Fused Lasso — 隣接する特徴量の「なめらかさ」を保つ

質量分析データで発見した問題を思い出してほしい。 「同一のタンパク質が少し異なる $m/z$ 位置でピークを示す」—— これは、特徴量($m/z$ 値)が自然な順序を持つことを示している。

ゲノムデータはさらにわかりやすい例だ。 CGH(Comparative Genomic Hybridization)アレイは染色体上の各位置でDNAコピー数を測定する。 癌細胞では遺伝子の増幅(コピー数増加)や欠失(コピー数減少)が起こるが、 これらは連続した染色体領域で起こることが多い。

つまり、隣接する測定点の係数は似ているはずだ。 通常のLassoはこの「隣接性」を無視する。

Fused Lasso(Tibshirani et al., 2005)はこの問題を解決する。 最適化問題に2つのペナルティを追加する:

$$\min_{\beta \in \mathbb{R}^p} \left\{\sum_{i=1}^N \left(y_i - \beta_0 - \sum_{j=1}^p x_{ij}\beta_j\right)^2 + \lambda_1\sum_{j=1}^p |\beta_j| + \lambda_2\sum_{j=1}^{p-1}|\beta_{j+1} - \beta_j|\right\}$$

2つのペナルティの役割:

この2つのペナルティが「スパースかつスムーズ」な解を生む。 下のアニメーションで、ゲノムデータへの適用を見てみよう。

Fused Lassoがノイズのある信号から段階的に変化するスムーズな推定値を抽出するアニメーション
グレーの点はノイズを含むゲノム測定値。赤い折れ線がFused Lassoの推定値:大部分がゼロ、増幅領域だけステップアップした構造を持つ。

CGHデータに適用すると、大部分の領域では係数がゼロ(変化なし)、 特定の染色体領域だけで大きな値を持つ(増幅または欠失)という解が得られる。

特別な場合として、予測行列が単位行列(恒等行列)のとき、Fused Lasso Signal Approximatorが得られる:

$$\min_{\beta \in \mathbb{R}^N} \left\{\sum_{i=1}^N (y_i - \beta_0 - \beta_i)^2 + \lambda_1\sum_{i=1}^N |\beta_i| + \lambda_2\sum_{i=1}^{N-1}|\beta_{i+1} - \beta_i|\right\}$$

これはノイズのある信号から「スパースかつスムーズ」な信号を復元する手法として理解できる。 $\lambda_1$ がスパース性を、$\lambda_2$ が滑らかさ(隣接差分)を制御する。 2つのパラメータのバランスで、どこまで「段階的(スパース)」で、 どこまで「滑らか」にするかを調整できる。

まとめ — L₁正則化のエコシステム

この章で学んだL₁正則化の世界を俯瞰してみよう。 3つの手法がそれぞれ異なるスパース性パターンを生む様子を確認したい。

Lasso、Elastic Net、Fused Lassoの3手法の係数パターン比較アニメーション
上: Lasso(青)—まばらな非ゼロ係数。中: Elastic Net(黄)—より多くの係数が残るが小さい。下: Fused Lasso(緑)—空間的なブロック構造。

なぜL₁が高次元で重要か:

  1. 自動特徴選択:$p > N$ でも、非ゼロ係数はN個以下に制限される
  2. 解釈可能性:どの変数が重要かが明確になる
  3. 計算効率:スパースな解はメモリ・計算コストが小さい

L₁正則化のバリエーションを比較すると:

手法ペナルティ特徴
Lasso$\sum |\beta_j|$強いスパース性、相関変数の一方を切る
Elastic Net$\alpha\sum|\beta_j| + (1-\alpha)\sum\beta_j^2$スパース + 相関変数のグループ化
Fused Lasso$\sum|\beta_j| + \sum|\beta_{j+1}-\beta_j|$スパース + 空間的滑らかさ

L₂正則化は「どの変数も平等に扱い、小さくする」という哲学。L₁正則化は「本当に重要な変数だけを選び、残りを切る」という哲学。 高次元データでは後者が生物学的・医学的な発見をもたらすことが多い。

次の節(18.5)では、特徴量自体が計算できないケース—— カーネル関数でしか類似度が定義できない場合の分類を扱う。 L₁正則化で「どの変数が重要か」を選べるようになった今、 変数そのものが定義しにくいケースへと話が発展する。