統計モデルの良さを測る物差し?赤池情報量基準(AIC)を初心者向けに徹底解説

データ分析のモデル選びで迷わないために

はじめに:赤池情報量基準(AIC)とは?

データ分析や統計モデリングの世界に足を踏み入れると、必ずと言っていいほど出会うのが「赤池情報量基準(Akaike’s Information Criterion)」、通称AICです。

AICとは、一言でいうと「統計モデルの良さを評価するための指標」です。複数のモデル候補がある中で、どのモデルが最も手元のデータをうまく説明し、かつ未知のデータに対しても高い予測性能を持つかを判断するための「物差し」のようなものだと考えてください。 この画期的な指標は、日本の統計数理学者である赤池弘次博士によって1973年に提唱されました。

なぜAICが必要なのか?―「当てはまりの良さ」と「複雑さ」のトレードオフ

良いモデルとは何でしょうか?多くの人は「データにピッタリ当てはまるモデル」と考えがちです。しかし、これは必ずしも正しくありません。モデルを複雑にすればするほど、手元にあるデータへの当てはまりは良くなります。 例えば、気温とアイスクリームの売上の関係を分析するとき、直線のグラフ(単純なモデル)よりも、全てのデータ点を無理やり通るようなグニャグニャのグラフ(複雑なモデル)の方が、目の前のデータに対する誤差は小さくなります。

しかし、そのグニャグニャのモデルは、データのノイズまで拾ってしまった「過学習(Overfitting)」という状態に陥っている可能性が高いです。 このようなモデルは、新しいデータが来たときにはうまく予測できない、つまり「汎用性のない」悪いモデルとなってしまいます。

一方で、単純すぎるモデルでは、データが持つ本来の傾向を捉えきれないかもしれません。

ここでAICの出番です。AICは、モデルの性能を以下の2つの観点のバランスで評価します。

  • モデルの当てはまりの良さ:モデルがどれだけデータをうまく説明できているか。
  • モデルの複雑さ:モデルに含まれるパラメータ(説明変数など)の数はどれくらいか。

AICは、複雑すぎるモデルにペナルティを課すことで、「データへの当てはまりが良く、かつ、できるだけシンプルなモデル」を選ぶ手助けをしてくれるのです。

AICの計算式と見方

AICは以下の式で計算されます。

AIC = -2 × (最大対数尤度) + 2 × (パラメータの数)

式をみて難しそうだと感じるかもしれませんが、ポイントは単純です。

  • 最大対数尤度 (L): モデルがデータをどれだけうまく説明できているか(当てはまりの良さ)を示す指標です。この値が大きいほど、当てはまりが良いことを意味します。 式では「-2」が掛けられているため、この項は当てはまりが良いほど小さくなります。
  • パラメータの数 (k): モデルの複雑さを表します。回帰分析でいえば、説明変数の数などがこれにあたります。 この項は、モデルが複雑になるほど大きくなる「罰則(ペナルティ)」の役割を果たします。

この式からわかるように、AICは「モデルの当てはまりの悪さ(-2 × 最大対数尤度)」と「モデルの複雑さ(2 × パラメータ数)」を足し合わせたものです。そして、複数のモデルを比較した際に、このAICの値が最も小さいモデルが、最も良いモデルだと判断します。

注意点: AICの値そのものに絶対的な意味はありません。例えば「AICが100だから良いモデルだ」という判断はできません。あくまで、複数のモデル候補を相対的に比較するための指標です。

AICとBICの違い

AICと似た指標に「ベイズ情報量基準(BIC)」があります。 どちらもモデルの良さと複雑さのバランスを取るための指標ですが、罰則項の付け方が異なります。

指標計算式特徴
AIC-2 * ln(L) + 2 * k予測性能を重視する傾向があります。真のモデルが候補に含まれていない場合でも、最も良い予測をするモデルを選ぶことを目指します。
BIC-2 * ln(L) + k * ln(n)AICよりも複雑なモデルに対する罰則が重い傾向があります。 データ数(n)が多いほど罰則が大きくなるため、よりシンプルなモデルを選択しやすいです。 真のモデルが候補の中に存在することを仮定しています。

どちらを使うべきかは分析の目的によりますが、一般的にBICの方がよりシンプルなモデルを選ぶ傾向があると覚えておくと良いでしょう。

PythonでのAIC計算例

Pythonでは、統計分析ライブラリstatsmodelsを使うことで、簡単にAICを計算できます。 以下は、線形回帰モデルを構築し、そのAICを確認する簡単な例です。

import numpy as np
import statsmodels.api as sm
# サンプルデータの生成
np.random.seed(0)
X = np.random.rand(100, 2) # 2つの説明変数
X = sm.add_constant(X) # 定数項(切片)を追加
y = 2 * X[:, 1] + 3 * X[:, 2] + np.random.randn(100) # 目的変数
# モデル1: 説明変数を1つだけ使用
model1 = sm.OLS(y, X[:,]).fit()
print(f"モデル1のAIC: {model1.aic}")
# モデル2: 説明変数を2つ使用
model2 = sm.OLS(y, X).fit()
print(f"モデル2のAIC: {model2.aic}")

このコードを実行すると、各モデルのAICが出力されます。この値を比較することで、どちらのモデルがより優れているかを客観的に評価できます。

まとめ

赤池情報量基準(AIC)は、データ分析におけるモデル選択の強力なツールです。最後に重要なポイントをまとめます。

  • AICは「モデルの当てはまりの良さ」「モデルの複雑さ」のバランスを評価する指標です。
  • 複雑なモデル(パラメータが多いモデル)にはペナルティを与え、過学習を防ぎます。
  • 複数のモデルを比較し、AICの値が最も小さいものが良いモデルと判断されます。
  • AICの値自体には意味がなく、あくまで相対的な比較に用います。

データに基づいた客観的なモデル選択を行うために、AICの考え方を理解し、ぜひ活用してみてください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です