02.2.9
最尤推定
scipy.optimize.minimize のような数値最適化で解きます。ロジスティック回帰のクロスエントロピー、ナイーブベイズの平均と分散、ガウス混合モデルの EM アルゴリズムはどれも中身が MLE なので、ここを押さえると分類手法の「学習」が何を計算しているか一本でつながります。先に ロジスティック回帰 の「対数尤度を最大化する」という一文を読んでおくと、このページの \(\ell(\theta)\) がそこで出てきた式の一般形だと分かります。
直感 #
コインを 10 回投げて 7 回表が出た。「このコインの表の確率は?」という問いに対して、「7 回表が出る確率が最も高くなる値」を探すのが最尤推定です。\(p = 0.5\) だと 7 回表が出る確率は 0.117、\(p = 0.7\) だと 0.267、\(p = 0.9\) だと 0.057 なので、答えは 0.7。MLE は「データを最もよく説明するパラメータ」を選ぶ、それだけの原理です。ただし「\(p\) が 0.7 である確率」を求めているのではなく、「\(p\) を 0.7 と仮定したときにデータが出る確率」を比べている点が、下のステップ再生で確かめるポイントです。
何が起きているか(ステップで見る) #
コードを読む前に、この手法が図の上で何をしているかを追ってみましょう。「再生」を押すか、スライダーを動かすと 1 手順ずつ進みます。
見るポイント:尤度は「このパラメータなら、観測したデータが出る確率」。それを最大にする値を選ぶ。
式で書くと何を最大にしているか #
尤度と対数尤度 #
観測データ \(x_1, \ldots, x_n\) が互いに独立なら、「全部がこの値で出る確率」は各点の確率の積です。これをパラメータ \(\theta\) の関数と見たものが尤度関数です。
$$ L(\theta) = \prod_{i=1}^{n} f(x_i | \theta) $$100 個の確率を掛けると \(10^{-50}\) のような小さな数になるので、対数をとって和に直します。対数は単調増加なので、最大になる \(\theta\) は変わりません。
$$ \ell(\theta) = \sum_{i=1}^{n} \log f(x_i | \theta) $$MLE はこの \(\ell(\theta)\) を最大にする \(\hat{\theta} = \arg\max_\theta \ell(\theta)\) です。コインの例では \(\theta = p\)、正規分布の例では \(\theta = (\mu, \sigma)\) の 2 つになります。
例 1: コイン投げ(ベルヌーイ分布) #
次のコードは、表の確率 \(p\) を 0 から 1 まで 200 通り動かし、それぞれで「10 回中 7 回表」が出る確率を計算して曲線にします。山の頂点が MLE です。
| |
例 2: 正規分布の MLE #
今度は閉じた式を使わず、平均 5.0・標準偏差 2.0 の正規分布から 100 個サンプルを作り、負の対数尤度を数値最適化で最小にして \(\mu\) と \(\sigma\) を推定します。答えは data.mean() と data.std() に一致するはずです。
| |
MLE が使われている手法 #
| 手法 | MLE の役割 |
|---|---|
| ロジスティック回帰 | クロスエントロピー最小化 = 対数尤度最大化 |
| ナイーブベイズ | クラス条件付き確率のパラメータ推定 |
| ガウス混合モデル | EM アルゴリズムの M ステップ |
| ARIMA | モデルパラメータの推定 |
MLE vs MAP vs ベイズ推定 #
| 推定手法 | 事前分布 | 出力 | 対応する手法 |
|---|---|---|---|
| MLE | なし | 点推定 | ロジスティック回帰 |
| MAP | あり | 点推定 | Ridge 回帰(ガウス事前分布) |
| ベイズ | あり | 事後分布 | ベイズ線形回帰 |
使いどころと落とし穴 #
MLE はデータが 100 点以上あれば安定しますが、コインを 3 回投げて 3 回表のときは \(\hat{p} = 1.0\) と極端な答えを返します。これが MLE の弱点で、少ないデータでは事前分布を掛けて極端な値を抑える MAP 推定(表の MAP の行)に切り替えるのが定石です。ナイーブベイズのラプラス平滑化(alpha=1)は、まさにこの「カウント 0 を 0 と推定しない」ための MAP 的な補正です。もう 1 つの落とし穴は、尤度が局所的な山をいくつも持つ場合で、ガウス混合モデルの EM アルゴリズムは初期値によって別の山に登ることがあります。
まとめ #
最尤推定は、尤度 \(L(\theta) = \prod f(x_i \mid \theta)\) を最大にするパラメータを選ぶ原理で、計算では対数をとった \(\ell(\theta)\) を使います。コインの例では \(\hat{p} = k/n = 0.7\) と式で解け、正規分布の例では scipy.optimize.minimize による数値最適化が標本平均・標本標準偏差と一致する値を返しました。ロジスティック回帰の学習が「クロスエントロピーの最小化」と呼ばれるのは、符号を反転した対数尤度を最小化しているからです。データが数個しかないときは MLE が極端な値を返すので、AIC・BIC のような尤度ベースのモデル選択や、事前分布を入れる MAP・ベイズ推定を次に読んでください。