ハイパーパラメータの世界へようこそ!

これまで学習してきた一般化線形モデル(GLM)では、変数に対する最適な「重み(係数)」を見つけることに集中してきました。しかし、もしモデルがデータの学習において「やりすぎて」しまったらどうなるでしょうか?実際のデータの傾向ではなく、ノイズまで学習してしまったら?そこで登場するのが正則化回帰(Regularized Regression)です。今回は、その制御に使う「つまみとダイヤル」、すなわちハイパーパラメータについて学びます。

最初は難しく感じるかもしれませんが、大丈夫です!ハイパーパラメータを、道路の制限速度のようなものだと考えてみてください。ドライバー(モデル)は目的地(誤差の最小化)に早く着こうとスピードを出しますが、制限速度(ハイパーパラメータ)があるおかげで、安全に、そして脱線(過学習)せずに走ることができます。さあ、詳しく見ていきましょう!


ハイパーパラメータとは?

標準的なGLMでは、モデルが自動的に係数(\(\beta\))を計算します。これらはパラメータと呼ばれます。一方でハイパーパラメータは、モデルが学習を始める前に、私たちデータサイエンティストが自分で決める必要のある値のことです。

Exam PAとR言語のglmnetパッケージにおいては、知っておくべき主要なハイパーパラメータは次の2つです。
1. \(\lambda\)(ラムダ): 複雑さを調整するパラメータ。
2. \(\alpha\)(アルファ): エラスティックネットの混合パラメータ。

クイック復習: パラメータはデータからモデルが学習するもの、ハイパーパラメータは学習プロセスをコントロールするためにユーザーが設定するものです。


1. \(\lambda\)(ラムダ):ペナルティの強さ

正則化回帰では、対数尤度関数に「ペナルティ」を追加します。このペナルティは、係数(\(\beta\))が大きくなりすぎるのを防ぐためのものです。このペナルティの強さを制御するのがハイパーパラメータの\(\lambda\)です。

  • \(\lambda = 0\) のとき: ペナルティなし。モデルは標準的なGLMと全く同じ動きをします。変数が多すぎると、過学習(overfitting)を起こしやすくなります。
  • \(\lambda\) が非常に大きいとき: ペナルティが非常に強力になります。モデルは係数を強制的に非常に小さく(0に近づける)します。これは過小学習(underfitting)の原因となります。
  • 目標: 大きすぎず小さすぎない、「ちょうどいい」\(\lambda\)を見つけることです(これを「ゴルディロックス」な選択と呼んだりします)。

たとえ話: \(\lambda\)を、変数に対する「税金」だと想像してください。税率が0なら、みんな無制限にお金を使います(係数が大きくなる)。税率が100%なら、誰も何も使えません(係数が0になる)。私たちは、支出が理にかなった範囲に収まるような適度な税率を探したいのです!


2. \(\alpha\)(アルファ):ペナルティの種類

\(\lambda\)が「どれだけ」ペナルティをかけるかを決めるのに対し、\(\alpha\)は「どんな種類」のペナルティを使うかを決めます。Exam PAでは、主に次の3つのシナリオを扱います。

リッジ回帰(Ridge Regression, \(\alpha = 0\))

リッジ回帰はL2ノルムというペナルティを使います。これは係数の二乗和です:\(\sum \beta_j^2\)。
主な特徴: すべての係数を0に近づけますが、決して完全に0にはなりません。すべての変数をモデルに残したまま、係数を「おとなしく」させる手法です。

ラッソ回帰(Lasso Regression, \(\alpha = 1\))

ラッソ回帰はL1ノルムというペナルティを使います。これは係数の絶対値の和です:\(\sum |\beta_j|\)。
主な特徴: ラッソは「ミニマリスト」です。係数を正確に0にする力を持っています。つまり、ラッソは自動変数選択を行ってくれるのです。

エラスティックネット(Elastic Net, \(0 < \alpha < 1\))

これはリッジとラッソの折衷案です。相関の高い変数が複数ある場合に特に有効です。

暗記のコツ:
Lasso = Less variables(変数を減らす)
Ridge = Retains variables(すべて維持する)

重要なポイント: \(\alpha\)は正則化の「スタイル(選択か収縮か)」を決め、\(\lambda\)は「強度」を決めます。


どうやって最適なハイパーパラメータを選ぶのか?

勘で決めるのではありません!交差検証(Cross-Validation, CV)というプロセスを使います。特に、Rの`cv.glmnet`関数は試験において最高の相棒となります。

ステップバイステップの選択:

1. データの標準化: 正則化する前に、数値予測変数を必ず同じスケールに揃えましょう。(Rの`glmnet`はデフォルトでこれを行います!)そうしないと、「年収」のような大きな値を持つ変数が、「年齢」のような小さな値を持つ変数とは異なるペナルティを受けてしまいます。
2. 交差検証の実行: コンピュータが\(\lambda\)の様々な範囲を試します。
3. 勝者を選ぶ: 出力結果から、通常は以下のいずれかの\(\lambda\)を選択します。

  • lambda.min: 交差検証誤差が最小となる\(\lambda\)の値です。最も精度の高いモデルを作りたいときに使います。
  • lambda.1se: 最小誤差から標準誤差の範囲内に収まる、最も大きな\(\lambda\)です。よりシンプルで簡潔な(parsimonious)モデルを作りたい場合(特にラッソで)に使います。

豆知識: Exam PAの試験で「シンプル」や「解釈可能性」が求められているなら、\(\lambda\)を大きくして不要な変数をカットできるlambda.1seの方が好まれる傾向にあります!


避けるべき一般的なミス

1. 標準化を忘れる: 前述の通り、正則化はスケールに依存します。幸い`glmnet`が自動で行ってくれますが、レポートの中で「標準化を行った」という旨を記述すると、コンセプトを理解しているという良いアピールになります!

2. \(\alpha\)と\(\lambda\)を混同する: \(\alpha\)は通常自分で決める(あるいはループで検証する)ものであるのに対し、\(\lambda\)は誤差プロットの「肘(elbow)」や「谷(dip)」から交差検証を通じて特定される値であることを覚えておきましょう。

3. カテゴリ変数を見落とす: ラッソを使う際、5つの水準を持つカテゴリ変数は、一部の水準が「0(除外)」になり、残りが生き残ることがあります。これがラッソ流のグループの扱い方です。


まとめチェックリスト

- 正則化は、大きな係数を罰することで過学習を防ぎます。
- \(\lambda\)(ラムダ)はペナルティの強さを制御します。高い\(\lambda\) = よりシンプルなモデル。
- \(\alpha\)(アルファ)はペナルティの種類を制御します。\(\alpha=1\)はラッソ(変数選択)、\(\alpha=0\)はリッジ(係数の収縮)。
- 交差検証は、最適な\(\lambda\)を見つけるためのツールです。
- lambda.minは最適化用、lambda.1seはよりシンプルで頑健なモデル用です。

お疲れ様でした!これで正則化回帰のダイヤル操作をマスターしましたね。これらのツールは、未知のデータに対しても優れたパフォーマンスを発揮するGLMを作るために不可欠です。それこそが、アクチュアリーに求められるスキルなのです!