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₂ペナルティは $\sum \beta_j^2$ の形をしている。これは各係数を原点に向かって引っ張る力だが、 係数がゼロに近づくほどその引力は弱まる。ゼロにはなれるが、数学的には「ゼロに達する前に均衡点が生まれる」。
一方、L₁ペナルティは $\sum |\beta_j|$ の形をしている。絶対値はゼロ付近でも一定の引力を保ち続ける。 その結果、係数が正確にゼロになることが多い。
これが「スパース解」——大部分の係数がゼロで、少数だけが非ゼロという解——を生む理由だ。 幾何学的に見ると、ダイヤモンドの「角」が軸上にあるため、 等高線との接触は高確率でその角(= 一方の係数がゼロ)で起きる。
このLasso(L₁正則化)の定式化とRidge(L₂)の違いを数式で確認しよう:
L₂はペナルティが $\beta_j^2$ なのでゼロ付近で傾きが消える。 L₁は $|\beta_j|$ なのでゼロ付近でも傾き(サブ勾配)が残り、係数を正確にゼロに押しつける。 この小さな違いが、「縮める(Ridge)」か「消す(Lasso)」かという哲学的な差を生む。
Lassoの正式な定式化と係数パス
分類問題にLassoを適用する最も直接的な方法は、目的変数を ±1 とコードして 回帰問題として解くことだ(2クラスの場合)。
Lassoの最適化問題は次のように書ける:
ここで重要な性質がある:$p > N$(変数数がサンプル数を超える)のとき、 $\lambda \to 0$ とすると訓練データに完全にフィットしてしまう。 しかし凸双対理論により、いかなる $\lambda$ でも非ゼロ係数の数はN個以下に制限されることが証明されている。
7,129個の遺伝子で38サンプルのデータでも、Lassoは最大38個の遺伝子しか選ばない。 これが「厳しいかたちの特徴選択」と言われる理由だ。
λを変化させると係数がどう変わるか——「係数パス」と呼ばれるこの動きを見てみよう。

λが小さいとき(右端)、多くの係数が非ゼロだ。λが大きくなる(左へ移動)につれ、 係数が一本ずつゼロに向かう。これが「段階的な特徴選択」——どの特徴が最初にゼロになるかは、 その特徴の重要度に依存する。
多クラス(K クラス)への拡張は、対数尤度にペナルティを加える形になる:
ここで:
- $g_i$:$i$ 番目のサンプルのクラスラベル
- $k = 1, \ldots, K$:クラスのインデックス
- $\Pr(g_i|x_i)$:クラス $g_i$ に属する確率(大きいほど良い予測)
- 最大化している理由:対数尤度はデータへの当てはまりの良さなので、大きいほど嬉しい
これはロジスティック回帰のL₁正則化版だ。 解は $\lambda$ が大きいほどスパース(非ゼロ係数が少ない)になり、クロスバリデーションで最適な $\lambda$ を選ぶ。
Elastic Net — 相関した遺伝子の扱い
Lassoには弱点がある。遺伝子は分子経路上で協調して働く—— つまり、多くの遺伝子が強く相関している。
例えば、遺伝子AとBが非常に強く相関しているとき、 Lassoはどちらか一方だけを選ぶ。もう片方は捨てる。 統計的には等価なのに、「たまたまどちらかだけ」という状況になる。
Ridge(L₂)はどう扱うか? 相関した変数の係数を「平均化」する方向に縮める。 どちらも残すが、それぞれが少し小さくなる。
下のアニメーションで、強い相関がある場合にLassoとElastic Netがどう振る舞うか比較してみよう。

Elastic Net(Zou and Hastie, 2005)はその妥協点だ。 L₁とL₂の両方のペナルティを組み合わせる:
$\alpha \in [0, 1]$ がバランスを決める:
- $\alpha = 1$: 純粋なLasso(スパース、相関変数の一方を切る)
- $\alpha = 0$: 純粋なRidge(全て残す、相関変数を平均化)
- $0 < \alpha < 1$: 両方の性質を組み合わせ
多クラス分類への適用は:
白血病データ(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$ でのピークが特定のタンパク質の存在を示す。
データは:
- 健常者157人、前立腺癌患者167人
- 16,898個の $m/z$ 測定点(変数 p = 16,898)
- 訓練データ217サンプル、テストデータ108サンプル
$p \gg N$ の典型的な高次元問題だ。
直接Lassoを適用した結果
生の $m/z$ 値(16,898変数)に直接Lassoを適用した結果:
| 手法 | テスト誤差/108 | 使用サイト数 |
|---|---|---|
| 最近傍縮小重心 | 34 | 459 |
| Lasso回帰 | 22 | 113 |
Lassoはより少ない特徴量で、より高い精度を達成した。
ピーク抽出アプローチの試み
しかし問題があった。タンパク質は質量分析でスペクトルにピークとして現れるが、 「同一のタンパク質が患者によって少し異なる $m/z$ 位置でピークを示す」 という現象(m/z warping)がある。 Lassoは生の値を使うため、この問題に無関心だった。
そこでピーク抽出を試みた:
- 217個の訓練スペクトルから5,178個のピークを検出
- 階層的クラスタリングで728個の共通ピークを特定
- 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つのペナルティを追加する:
2つのペナルティの役割:
- $\lambda_1 \sum |\beta_j|$:スパース性(ほとんどの係数をゼロに)
- $\lambda_2 \sum |\beta_{j+1} - \beta_j|$:滑らかさ(隣接係数の差も小さく)
この2つのペナルティが「スパースかつスムーズ」な解を生む。 下のアニメーションで、ゲノムデータへの適用を見てみよう。

CGHデータに適用すると、大部分の領域では係数がゼロ(変化なし)、 特定の染色体領域だけで大きな値を持つ(増幅または欠失)という解が得られる。
特別な場合として、予測行列が単位行列(恒等行列)のとき、Fused Lasso Signal Approximatorが得られる:
これはノイズのある信号から「スパースかつスムーズ」な信号を復元する手法として理解できる。 $\lambda_1$ がスパース性を、$\lambda_2$ が滑らかさ(隣接差分)を制御する。 2つのパラメータのバランスで、どこまで「段階的(スパース)」で、 どこまで「滑らか」にするかを調整できる。
まとめ — L₁正則化のエコシステム
この章で学んだL₁正則化の世界を俯瞰してみよう。 3つの手法がそれぞれ異なるスパース性パターンを生む様子を確認したい。

なぜL₁が高次元で重要か:
- 自動特徴選択:$p > N$ でも、非ゼロ係数はN個以下に制限される
- 解釈可能性:どの変数が重要かが明確になる
- 計算効率:スパースな解はメモリ・計算コストが小さい
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₁正則化で「どの変数が重要か」を選べるようになった今、 変数そのものが定義しにくいケースへと話が発展する。