このページを高速ナビゲートするための索引チップです。クリックで該当セクションへ。
クリックで該当章にジャンプします。 論文・実務で頻出する派生語まで網羅。
🍰 まずはやさしく
モデルの良さを測る物差しです。
最適なモデルを選ぶために使います。
スマホのプラン選びに似ています。
結論を短くまとめて説明します。
この用語は、 統計データ解析・データサイエンスの世界で重要な概念の1つです。 ジャストインタイム型学習では、 必要なときに参照し、 関連概念と合わせて学ぶことで定着を図ります。
この用語の基本的な意味、 数学的定義、 直感的理解について、 上記の3つの概念マップを通じて、 関連する用語と一緒に把握しましょう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | import pandas as pd import numpy as np from scipy import stats import matplotlib.pyplot as plt # SSDSE-B-2026 の読み込み(2行目の日本語見出しは skiprows で除外) df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1]) df = df[df['SSDSE-B-2026'] == 2023] # 2023年の47都道府県を抽出 # 基本統計 df.describe() df.info() # 可視化(A1101総人口 / A1303 65歳以上人口 / A4101出生数 / B4101年平均気温 / L3221消費支出) df[['A1101', 'A1303', 'A4101', 'B4101', 'L3221']].hist(bins=30, figsize=(15, 10)) plt.show() |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | # 基本パターン import pandas as pd import numpy as np from scipy import stats import matplotlib.pyplot as plt import seaborn as sns # データ読み込み(2023年の47都道府県) df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1]) df = df[df['SSDSE-B-2026'] == 2023] # 基本統計量 df.describe() # 可視化(A1101総人口 / A1303 65歳以上人口 / L3221消費支出) sns.pairplot(df[['A1101', 'A1303', 'L3221']].astype(float)) plt.show() |
このページの上にある3つの概念マップ(関係マップ、 包含マップ、 ツリーマップ)でこの概念の位置づけが視覚的に分かります。 関連手法を辿って学習を進めましょう。
統計データ活用コンペティションのSSDSE-B-2026データは、 47都道府県の社会経済データ。 この概念を使って以下のような分析ができます:
| 機能 | Python (pandas) | Python (scipy) |
|---|---|---|
| 要約統計 | df.describe() | stats.describe() |
| 平均 | df.mean() | np.mean() |
| 標準偏差 | df.std() | np.std() |
| 相関 | df.corr() | stats.pearsonr() |
| t検定 | — | stats.ttest_ind() |
| 回帰 | — | stats.linregress() |
| 分布フィッティング | — | stats.norm.fit() |
この概念は、 他の多くの統計概念と密接に関連しています。 ジャストインタイム型学習では、 必要に応じて関連用語へジャンプしながら全体像を構築します。
| グループ | 主要概念 |
|---|---|
| 記述統計 | 平均、 中央値、 最頻値、 分散、 標準偏差、 共分散、 相関係数 |
| 可視化 | ヒストグラム、 散布図、 箱ひげ図、 ヒートマップ |
| 推測統計 | 標本平均、 標準誤差、 信頼区間、 p値、 有意水準 |
| 確率分布 | 正規分布、 t分布、 χ²分布、 F分布、 二項分布 |
| 仮説検定 | t検定、 F検定、 χ²検定、 ノンパラ検定 |
| 回帰 | 単回帰、 重回帰、 OLS、 Ridge、 LASSO |
| 分類 | ロジスティック回帰、 決定木、 SVM、 k-NN |
| 教師なし学習 | クラスタリング、 PCA、 因子分析 |
| 時系列 | ARIMA、 VAR、 指数平滑法、 自己相関 |
| 因果推論 | DiD、 IV、 傾向スコア、 交絡変数 |
| 前処理 | 標準化、 正規化、 欠損値処理、 多重共線性対策 |
| 評価 | R²、 残差、 CV、 RMSE、 効果量 |
🍰 まずはやさしく
モデル選びの基準となる用語です。
どの分析方法が良いか判断します。
部活の練習メニューを選ぶときのようなものです。
この用語がどう使われるか解説します。
論文中に 「AIC(赤池情報量基準)」として登場する用語。
AIC(赤池情報量基準) とは:モデルの「適合度」と「複雑さ(パラメータ数)」のバランスを評価。AICが小さいモデルが良い。
このページは AIC (赤池情報量基準) を解説する用語ページです。
カテゴリ:モデル選択
ジャストインタイム型データサイエンス教育の一環として、必要な時に参照し、関連概念とともに学べる構成になっています。
🍰 まずはやさしく
ちょうど良いバランスを探す道具です。
複雑すぎない最適な形を見つけます。
買い物で質と値段を比べる感覚です。
直感的にわかる仕組みを説明します。
「当てはまりの良さ」と「パラメータ数による複雑さペナルティ」のトレードオフを数値化。AIC が小さいモデルが「予測誤差期待値が小さい」と期待される。AIC差 2 以上で実質的差ありと判断する慣習。
| 場面 | 使い方 |
|---|---|
| 探索的データ分析 | 分布や関係性の最初の確認 |
| モデル比較 | 仮定の妥当性を裏付ける指標として |
| レポート作成 | 標準的な要約統計量・指標として明記 |
AIC を実務で活用するには、 (1) モデル複雑度と汎化誤差のトレードオフ、 (2) 残差分布の妥当性、 (3) 候補モデルの相対比較 の 3 つを同時に把握する必要があります。 ここでは html/glossary/figures/ の既存図を使い、 AIC によるモデル選択の「土地勘」 をビジュアルに刻みます。
読み取るポイント:
読み取るポイント:
読み取るポイント:
この 3 枚を順に読むと、 「トレードオフ理解 → 仮定点検 → 相対比較」 という AIC 活用の正攻法が体系化される。 図 B (残差プロット) を最初に確認し、 仮定が満たされていなければ AIC の値自体を信頼してはいけない。 関連用語 BIC / クロスバリデーション / モデル選択 へ進めば、 AIC と他指標の関係を整理できる。
🍰 まずはやさしく
計算式で表した評価基準です。
数値でモデルの良さを判定します。
テストの点数と勉強時間の関係に似ています。
具体的な計算方法について学びます。
AIC (赤池情報量基準) の中心となる数式・定義は次の通りです。
$$ \mathrm{AIC} = -2\ln L + 2k $$
AIC は 最大対数尤度 $\ln L$ から パラメータ数 $k$ によるペナルティを差し引いた量を −2 倍した値。 値が小さいモデルほど「データへの当てはまり」と「モデルの簡潔さ」のバランスが良いと判定される。 サンプルサイズが小さい場合 ($n/k < 40$) は補正版 AICc:
$$ \mathrm{AICc} = \mathrm{AIC} + \frac{2k(k+1)}{n-k-1} $$
を使う。 BIC ($-2\ln L + k \ln n$) と異なり、 AIC は 予測誤差 (Kullback-Leibler 情報量) を最小化する観点で導出されている。 つまり「真のモデル選び」ではなく「未来データへの当てはまりを最適化する選び方」を提供する。
前節の数式に含まれる記号を、 日本語の意味に翻訳する。
aic の数式は、 これらの記号を組み合わせて「データから未知量を推定する」あるいは「データの構造を要約する」プロセスを記述している。
「出生数(A4101)」を目的変数として、 説明変数の数を変えた 4 モデルの AIC を比較し、 最も小さいモデルを選びます。 47 都道府県の小標本では AICc(補正版 AIC)も併記すべきです(n/k 比が小さいとき AIC は罰則不足)。
| モデル | 説明変数 k | 対数尤度 ℓ | AIC = −2ℓ+2k | AICc | 判定 |
|---|---|---|---|---|---|
| M1: 切片のみ | 1 | 最小 | 大 | 大 | 情報量不足 |
| M2: 総人口のみ(A1101) | 2 | 改善 | 中 | 中 | 単純すぎ |
| M3: 総人口+65歳以上人口+年平均気温(A1101+A1303+B4101) | 4 | 大幅改善 | 最小 | 最小 | バランス◎ |
| M4: 多数の数値変数を投入 | 20+ | 最大 | 中 | 悪化 | 過学習 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | import numpy as np, pandas as pd, statsmodels.api as sm df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1]) df = df[df['SSDSE-B-2026'] == 2023] # 2023年の47都道府県 y = df['A4101'].astype(float) # 出生数を被説明変数に candidates = { 'M1': None, # 切片のみ 'M2': ['A1101'], # 総人口 'M3': ['A1101', 'A1303', 'B4101'], # 総人口+65歳以上人口+年平均気温 'M4': ['A1101', 'A1303', 'B4101', 'L3221'], } for name, cols in candidates.items(): if cols is None: X = np.ones((len(y), 1)) else: X = sm.add_constant(df[cols].astype(float)) r = sm.OLS(y, X).fit() k = X.shape[1]; n = len(y) aic = r.aic aicc = aic + 2*k*(k+1) / (n - k - 1) print(f'{name}: k={k}, AIC={aic:.2f}, AICc={aicc:.2f}') |
※ AICc は n/k < 40 の小標本で必須の補正です。 SSDSE-B-2026(n=47)では k が 5 を超えるとほぼ全モデルで AICc を使うべきです。
政府統計の総合窓口 e-Stat が公開する SSDSE-B-2026.csv(47都道府県×項目)を用いた具体的計算例を示します。
SSDSE-B-2026(2023年)の「出生数(A4101)」を被説明変数、説明変数として「総人口(A1101)」(k=2) と「総人口+65歳以上人口(A1101+A1303)」(k=3) で線形回帰し、両モデルの AIC を比較します。 65歳以上人口を加えて対数尤度が十分改善すれば ΔAIC が大きくなり k=3 モデルを採用、 改善がペナルティ 2 に満たなければ k=2 モデルを残す、 という判断を上のコードで実測してください。
| 項目 | 値・指標 |
|---|---|
| データ件数 | 47 都道府県(2023年) |
| 対象指標 | 出生数(A4101)・総人口(A1101)・65歳以上人口(A1303) |
| 計算結果 | 上記コードの print 出力(実測値)を参照 |
SSDSE-B-2026 の出生数(A4101)を被説明変数として、 説明変数の組み合わせを変えた 4 つのモデルの AIC を比較します。 単純に「AIC 最小モデルを選ぶ」のではなく、 「ΔAIC が 2 未満なら同等、 2-7 で弱い差、 10 超で明確な差」というガイドラインを実データで体感します。
説明変数の数を 1 → 2 → 3 → 4 と増やしたとき、 AIC がどこで頭打ちになるかを SSDSE-B-2026 で確かめる。
data/raw/SSDSE-B-2026.csv の A4101(出生数)を y、 説明変数候補は A1101(総人口)・ A1303(65歳以上人口)・ B4101(年平均気温)・ L3221(消費支出)。
4 つの入れ子モデルの AIC と ΔAIC、 BIC、 調整済み R^2。
AIC は対数尤度に対して「説明変数 1 個追加につき +2」のペナルティを課す。 つまり、 説明変数を増やして対数尤度が +1 しか改善しないなら AIC は悪化する。 BIC は標本サイズに応じて重いペナルティを課すため、 同じデータで AIC・BIC のどちらが小さくなるかは標本サイズに依存する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | import pandas as pd import statsmodels.api as sm df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1]) df = df[df['SSDSE-B-2026'] == 2023] # 2023年の47都道府県 y = df['A4101'].astype(float) # 出生数 candidates = [ ['A1101'], ['A1101', 'A1303'], ['A1101', 'A1303', 'B4101'], ['A1101', 'A1303', 'B4101', 'L3221'], ] rows = [] for cols in candidates: X = sm.add_constant(df[cols].astype(float)) m = sm.OLS(y, X).fit() rows.append({ 'k': len(cols), 'AIC': m.aic, 'BIC': m.bic, 'R2adj': m.rsquared_adj, }) print(pd.DataFrame(rows)) |
ΔAIC = AIC_i - AIC_min を全モデルで計算し、 2 未満のモデルが複数あれば「同等」と扱う。Akaike Information Criterion(赤池情報量規準)。 1973 年に赤池弘次が提案。
$\text{AIC} = -2\ln L + 2k$。 説明変数 1 個追加で +2、 対数尤度が +1 程度しか改善しないモデルは AIC が悪化する。
その通り。 ΔAIC が 2 未満なら同等、 2-7 で弱い差、 10 超で明確な差、 というのが一般的な指針。
予測精度重視なら AIC、 真のモデル選択なら BIC。 BIC のペナルティは $k\ln n$ で n に依存し、 通常 AIC より厳しい。
使えるが、 クロスバリデーションの方が一般的。 線形混合モデル ・ GLM ・ 時系列モデルでは AIC が標準ツール。
n/k が 40 未満の小標本で必要。 SSDSE-B-2026 の N=47 で k=10 なら n/k=4.7 と小さく、 AICc 推奨。
不可。 同じ y(変換していない、 同じ単位)に対する複数モデルでのみ比較可能。
ステップワイズ AIC 選択は標準的だが、 結果が初期モデルに依存する。 全探索 AIC(全部分集合)の方が原則的。
あり得る。 AIC は「予測誤差の漸近的最小化」を目指すが、 有限標本では過剰になりうる。 ホールドアウトで再評価が必要。
WAIC(広く適用可能な情報量規準)と LOO-CV。 PyMC では arviz.compare() でこれらを比較できる。
4 つの説明変数の全 16 通りの組み合わせ(空も含む)で AIC を計算し、 最小モデルを特定せよ。
同じデータ・ 同じモデル族で 3 つの規準で選んだ最適モデルを比較せよ。 一致するか/一致しないかは N と説明変数の選び方で変わる。
AIC と AICc を計算し、 N=47 で結果が変わるかを観察せよ。 説明変数 5 以上では明確に変わる。
AIC は赤池弘次が 1971 年に着想し、 1973 年に Budapest の国際会議で発表しました。 当時、 モデル選択は「真のモデルを当てる」アプローチが主流でしたが、 赤池は「真のモデルとの Kullback-Leibler 距離を最小化する」という予測的視点に転回しました。 これが現代の機械学習における「予測精度を最大化する」考え方の源流となります。
このページは「AIC」を SSDSE-B-2026 (47 都道府県 × 多変量) を題材に体系的に学ぶための一気通貫の教材です。 単なる用語定義集ではなく、 「直感 → 数式 → 実装 → 落とし穴 → 関連手法」 という流れで一周することで、 業務での意思決定にそのまま使える知識に組み上げます。
本ページで取り上げた手法・記号・コード例は、 すべて実データの 47 都道府県を入力として動作する形にしてあります。 合成データに依存しないため、 SSDSE-B-2026 を data/raw/SSDSE-B-2026.csv として配置するだけでコード片を再現できます。
関連グループ教材へのリンクを使い、 「この用語が属する大きな分野」を俯瞰してから戻ってくると、 知識が一段抽象化された形で定着します。 用語ページは点、 グループ教材は線、 概念マップは面 — 三層を往復しながら学習を進めてください。
本ページの内容に不足を感じたら、 関連用語ページを辿りながら、 ご自身の解釈を加筆していくことを推奨します。 教材の完成形ではなく、 学習者自身の理解の出発点として位置付けてください。
最後に、 SSDSE-B-2026 の 47 都道府県データは「N=47 と少ない」という構造的制約があります。 統計検定の漸近近似が崩れる場面、 単一の県(東京都・沖縄県)が全体傾向を支配する場面、 標準誤差が過小評価される場面 — これらは本ページの随所で繰り返し注意喚起しました。 「実データの小ささを軽視しない」 という姿勢が、 実務でのデータサイエンティストの基本姿勢です。
3 つのモデル候補 (定数・線形・二次) の対数尤度と自由パラメータ数を代表値として、 AIC が最小のものを選択する手順を示す。 SSDSE-B-2026 (A1101 総人口、 A1303 65歳以上人口、 A4101 出生数 等) の実モデル比較は上の SSDSE-B-2026 実値計算例セクション (章 7 冒頭) を参照。
| モデル | logL | k | AIC = -2logL + 2k |
|---|---|---|---|
| M1 (定数) | -50 | 1 | 102 |
| M2 (線形) | -42 | 2 | 88 |
| M3 (二次) | -40 | 3 | 86 |
1 2 3 4 5 6 | import numpy as np logL = np.array([-50, -42, -40]) k = np.array([1, 2, 3]) aic = -2*logL + 2*k print(f"AIC = {aic}") print(f"最良モデル index = {aic.argmin()} (AIC={aic.min()})") |
💬 手計算 (Step 2) M3 が最良 (AIC=86) と Python 出力が完全一致。
下は デモ用の人工データ(40 点・真の関数は 3 次多項式) に多項式を最小二乗で当てはめ、次数スライダーを動かすと AIC がリアルタイムに再計算される実験室です(SSDSE の実測値ではなく、当てはめの挙動を体感するためのサンプルです)。左の図は「データ+当てはめ曲線」、右の図は「次数を横軸にとった当てはまり項・ペナルティ項・その和(AIC)」を描きます。和が U 字を描き、その谷が AIC 最良モデルであることを目で確かめてください。
AIC は「データにどれだけ合っているか(当てはまり項 −2·lnL=小さいほど良い)」から「モデルの複雑さ(ペナルティ項 2k)」を引き算・足し算で天秤にかけます。次数を上げると曲線はデータに吸い付き当てはまり項は下がり続けますが、パラメータ数 k が増えペナルティが積み上がります。両者の 和が最小になる「ほどよい次数」が、未来データへの予測に最も強いモデルです。
ln(n)·k にした基準(上のチェックボックスで切替)。n が大きいほど罰が重く、AIC より単純なモデルを選びやすい。真のモデルがモデル集合に含まれると仮定して一致性を狙う立場です。AIC + 2k(k+1)/(n−k−1)。n/k が小さいとき AIC は罰則不足になるため、47 都道府県のような小標本では AICc が推奨されます。1 2 3 4 5 6 7 8 9 | import statsmodels.api as sm, pandas as pd df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1]) df = df[df['SSDSE-B-2026'] == 2023] # 2023年の47都道府県 X = sm.add_constant(df[['A1101', 'A1303', 'B4101']].astype(float)) y = df['A4101'].astype(float) # 出生数 res = sm.OLS(y, X).fit() print('AIC =', res.aic) print('BIC =', res.bic) print('log-likelihood =', res.llf) |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | import numpy as np from sklearn.linear_model import LinearRegression X = df[['A1101', 'A1303', 'B4101']].astype(float).values y = df['A4101'].astype(float).values m = LinearRegression().fit(X, y) resid = y - m.predict(X) n, k = len(y), X.shape[1] + 1 # 切片を含めて k sigma2 = (resid ** 2).mean() loglik = -n/2 * (np.log(2*np.pi*sigma2) + 1) aic = -2*loglik + 2*k aicc = aic + 2*k*(k+1) / (n - k - 1) bic = -2*loglik + np.log(n)*k print(f'AIC={aic:.2f}, AICc={aicc:.2f}, BIC={bic:.2f}') |
1 2 3 4 | from scipy import stats sigma = resid.std(ddof=0) loglik2 = stats.norm(loc=0, scale=sigma).logpdf(resid).sum() print('log-likelihood (scipy):', loglik2) |
1 2 3 4 5 | # 例:PyMC で組んだ trace に対して # import arviz as az # waic = az.waic(trace) # loo = az.loo(trace) # print(waic, loo) |
| 指標 | 罰則項 | 向く場面 |
|---|---|---|
| AIC | 2k | 予測誤差最小化、 n が大 |
| AICc | 2k + 2k(k+1)/(n-k-1) | 小標本(n/k < 40) |
| BIC | k log(n) | 真モデル選択、 n が大 |
| DIC | 事後平均偏差 + 有効パラ数 | ベイズ階層 |
| WAIC | 点ごとの対数事後予測密度 | ベイズ(汎用) |
| LOO-CV | leave-one-out 対数尤度和 | ベイズ・MCMC 安定 |
1 2 3 4 5 6 7 8 9 10 11 12 | import pandas as pd import numpy as np import statsmodels.api as sm df = pd.read_csv('data/raw/SSDSE-B-2026.csv', encoding='cp932', skiprows=[1]) df = df[df['SSDSE-B-2026'] == 2023] # 2023年の47都道府県 y = df['A4101'].astype(float) # 出生数 X1 = sm.add_constant(df[['A1101']].astype(float)) # 総人口 X2 = sm.add_constant(df[['A1101', 'A1303']].astype(float)) # +65歳以上人口 m1 = sm.OLS(y, X1).fit(); m2 = sm.OLS(y, X2).fit() print(f'AIC1: {m1.aic:.1f}, AIC2: {m2.aic:.1f}, ΔAIC={m1.aic-m2.aic:.1f}') |
上記コードは pandas / numpy / scipy / sklearn / statsmodels の標準的なライブラリを用い、SSDSE-B-2026.csv を直接読み込んで計算します(合成データ不使用)。
statsmodels で NaN がある列を入れ替えるときに陥りやすい罠です。log(n)·k で、 n が大きいほど厳しくなります。 n=100 で log(n) ≈ 4.6 なので BIC は AIC(罰則 2k)の 2 倍以上厳しい。 「AIC が小さい/BIC が小さい」モデルが異なるのは普通で、 どちらを採用するかは「予測 vs 真モデル」の目的次第。 両方を報告し、 一致したら強い結論、 食い違えばその理由を議論する、 のが論文での標準作法です。az.waic, az.loo が用意されています。 「ベイズ階層モデルを組んだのに AIC で比較しました」と書くと、 査読でほぼ確実に指摘されます。AIC (赤池情報量規準) は「モデル選択基準」群の代表で、 中心ノードを「AIC」とし、 上位 (尤度ベース情報量規準)、 並列 (BIC、 調整済み R²、 Mallows Cp、 交差検証)、 下位 (重回帰、 ARIMA 次数選択、 GLM、 混合モデル) を放射状に配置する。
AIC は BIC・調整済み R²・Mallows Cp・交差検証と並列の「モデル選択基準」群を成し、 重回帰・ARIMA 次数選択・GLM・混合モデルなど尤度を持つあらゆるモデルの比較に用いる。
p値だけでなく効果量も併記するのが現代統計の標準。 主要な指標と Cohen の解釈基準:
| 統計量 | 効果量 | 小 | 中 | 大 |
|---|---|---|---|---|
| 2群平均差 | Cohen's d | 0.2 | 0.5 | 0.8 |
| 相関 | r | 0.1 | 0.3 | 0.5 |
| 線形回帰 | R² | 0.02 | 0.13 | 0.26 |
| ANOVA | η² (eta²) | 0.01 | 0.06 | 0.14 |
| χ² | Cramér's V | 0.1 | 0.3 | 0.5 |
| ロジスティック | Odds Ratio | 1.5 | 2.5 | 4.0 |
AIC(赤池情報量基準) がデータサイエンスの体系の中でどこに位置するかを、 3つの異なる視点で可視化します。 同じ情報でも見方を変えると気付きが変わります。
🌐 統計・データサイエンス › 関連・回帰 › 回帰 › AIC(赤池情報量基準)
中心に AIC(赤池情報量基準) を置き、 そこから 重回帰・ステップワイズ・最小二乗法・単回帰・Ridge回帰・LASSO 計 6 個の用語へ、 前提・兄弟・発展形といった関係を矢印で結んでいます。 線がどちら向きかを見れば、 先に読むべき用語とあとから読む用語が分かります。 ノードはドラッグで動かせ、 ホイールでズーム、 クリックでその用語のページへ遷移します。
大きな円が小さな円を包含する Circle Packing 図。 「AIC(赤池情報量基準)」は緑色でハイライト。
長方形を入れ子に分割した Treemap 図。 各分野の規模感を面積で比較。 「AIC(赤池情報量基準)」は緑色でハイライト。
| マップ | 分かること | こんな時に見る |
|---|---|---|
| 🔗 関係マップ | 手法間の横の関係(前提→発展→応用) | 「次に何を学べばよい?」 学習順序の判断 |
| ⭕ 包含マップ | 分類体系の入れ子構造(上位⊃下位) | 「この手法はどんなジャンルに属する?」 |
| 🌳 ツリーマップ | 分野の規模比較(面積=ボリューム) | 「データサイエンス全体の俯瞰像」 |
💡 3 つの図は同じ位置関係を別の角度から描いています。 関係マップは AIC(赤池情報量基準) の隣に何が並ぶかを、 包含マップとツリーマップは 統計・データサイエンス → 回帰 → AIC(赤池情報量基準) という入れ子の位置を示します。 「回帰には他に何があったか」を思い出したいときは包含マップを、 「次に何を読むか」を決めたいときは関係マップを開いてください。
「AIC(赤池情報量基準)」は予測志向のモデル選択規準。 上流の尤度・並列の BIC/CV・下流のモデル選択と連動して使う。 単に「AIC が小さいほうがよい」と一行で済ます指標ではない。
AIC は単独で使うのではなく、 ΔAIC(2 番目に良いモデルとの差)・Akaike 重み・BIC との照合とセットで読む。 ΔAIC < 2 なら実質的に等価と判断し、 解釈性で選ぶのが定石。
AIC を使うか、 別の規準に切り替えるかを 4 分岐で判定する。 「AIC 最小化」が万能でないことを意識する。
AIC は予測志向の指標。 「説明力」を見たいなら調整済み R²、 「真モデル」を選びたいなら BIC、 「汎化誤差」を直接見たいなら CV を選ぶ。 用途で使い分けるのが正しい。
AIC の式はたった一行 $$\mathrm{AIC} = -2\log L + 2k$$ です。 ここで $\log L$ は「モデルがデータをどれだけうまく説明できたか(対数尤度)」、 $k$ は「モデルが使ったパラメータの個数(複雑さ)」。 第1項 $-2\log L$ は当てはまりが良いほど小さくなり、 第2項 $2k$ はパラメータを増やすほど大きくなります。 AIC はこの2つを足し算して、 小さいほど良いと読みます。
なぜ「引き算ではなく罰を足す」のか。 パラメータを増やせば手元のデータへの当てはまり($\log L$)は必ず良くなりますが、 その一部は「たまたまこの標本にあった雑音を暗記しただけ」で、 未来のデータでは通用しません(=過学習)。 $2k$ は「1個パラメータを増やすなら、 当てはまり項を最低でも 2 は改善しないと割に合わない」という入場料のようなもの。 AIC が本当に近似しようとしているのは、 手元データへの当てはまりではなく「将来のデータに対する予測の良さ」(後述する KL 情報量)です。
| 覚え方 | 意味 |
|---|---|
| −2logL が主役 | 当てはまりの良さ。 小さいほど良い。 変数を足すと必ず下がる。 |
| +2k は罰金 | 複雑さの入場料。 パラメータ1個につき2点上乗せ。 |
| 和が最小の谷を探す | 下げ止まって上がり始める「ほどよい複雑さ」が予測最良。 |
| 絶対値でなく差を見る | AIC=1012 単独に意味はない。 ΔAIC で相対比較。 |
💡 上の 🎮 触って理解するウィジェット で次数スライダーを動かすと、 まさにこの「当てはまり項の減少」と「ペナルティ項の増加」の綱引きが U 字カーブとして見えます。 谷が AIC 最良モデルです。
抽象論だけでは腑に落ちないので、 SSDSE-B-2026(cp932, skiprows=[1], 2023年・47都道府県, n=47)の実データで実際に AIC を計算しました。 応答変数を A5101(死亡数)とし、 説明変数を段階的に増やした 5 つの入れ子モデルを OLS で当てはめ、 ガウス誤差の対数尤度から AIC / AICc / BIC を算出した実測値です(合成値ではありません)。
| モデル(説明変数) | k | logL | AIC | AICc | BIC | ΔAIC | Akaike重み |
|---|---|---|---|---|---|---|---|
| M0 切片のみ | 2 | −590.74 | 1185.48 | 1185.75 | 1189.18 | 172.94 | 0.000 |
| M1 +A1303(65歳以上人口) | 3 | −546.96 | 1099.92 | 1100.48 | 1105.47 | 87.37 | 0.000 |
| M2 +A1101(総人口) | 4 | −506.68 | 1021.36 | 1022.31 | 1028.76 | 8.81 | 0.009 |
| M3 +A4101(出生数)★AIC最小 | 5 | −501.27 | 1012.54 | 1014.01 | 1021.80 | 0.00 | 0.722 |
| M4 +L3221(消費支出) | 6 | −501.26 | 1014.52 | 1016.62 | 1025.62 | 1.97 | 0.269 |
この実測表からAICの本質が3つ読み取れます。
※ ここでの $k$ は回帰係数に加えて誤差分散 $\sigma^2$ も1パラメータとして数えています(ガウス最尤の標準的な数え方)。 n=47 と小標本のため、 本来は AICc を主として読むべき場面ですが、 この例では AIC・AICc・BIC がいずれも M3 を選び、 結論は一致しました。
$\mathrm{AICc}=\mathrm{AIC}+\dfrac{2k(k+1)}{n-k-1}$。 補正項は $n\to\infty$ で 0 に収束し AIC に一致しますが、 $n/k$ が小さいと大きな罰を追加します。 分母 $n-k-1$ が 0 以下になる($k \ge n-1$)と定義できないため、 高次元では使えません。 迷ったら AICc を既定にして構いません(大標本では AIC と一致するため損がない)。
| 観点 | AIC | BIC |
|---|---|---|
| 罰則項 | 2k | k·log n(n 増で厳しく) |
| 目的 | 予測誤差最小 | 真のモデル特定 |
| 漸近的性質 | 効率性(予測最良) | 一致性(真モデルに確率1で収束) |
| 傾向 | やや大きいモデル | より簡潔なモデル |
重要な事実:真のモデルが候補集合に含まれないなら BIC の一致性は意味を失い、 予測目的では AIC のほうが優れることが多い。 逆に真の構造が有限次元で候補に含まれるなら BIC が優位。 どちらが「正しい」ではなく前提の違いです。
線形回帰(正規誤差・分散既知の近似)では、 Mallows' $C_p = \dfrac{\mathrm{RSS}_p}{\hat\sigma^2} - n + 2p$ が予測誤差の推定量になります。 実は正規線形モデルでは Cp と AIC はほぼ同値(定数差・分散の扱いを除けば順序が一致)。 $C_p \approx p$ となるモデルが望ましい、 という古典的な読み方をします。 AIC の線形回帰版と理解すると位置づけが明快です。(Mallows' Cp の独立ページは本用語集には未収録のためテキストで解説)
Stone (1977) の定理により、 AIC は漸近的に leave-one-out 交差検証(LOO-CV)と等価です。 つまり AIC は「n 回のモデル再学習が必要な LOO-CV を、 1 回の当てはめで近似する高速な代用品」と読めます。 AIC は尤度モデルの正しさを仮定する代わりに速く、 交差検証は分布仮定が少ない代わりに計算が重い、 というトレードオフ。 尤度が書けない手法(決定木など)では CV を使います。 関連: 検証によるモデル選択、 ネスト交差検証、 汎化、 バイアス–バリアンス。
AIC は「思いつき」ではなく、 真の分布 $g$ とモデル $f$ の隔たりを測る Kullback–Leibler(KL) 情報量 $D_{KL}(g\|f)=\int g\log(g/f)$ から導かれます。 予測の良さは「将来データに対する期待対数尤度」で測れますが、 これを手元データの最大対数尤度 $\log L$ で推定すると楽観的に偏る(バイアスの分だけ過大評価)。 赤池 (1973) はこのバイアスが漸近的に $k$(パラメータ数)に等しいことを示し、 補正後を 2 倍したものが $-2\log L + 2k = \mathrm{AIC}$ です。 だから「AIC 最小=KL 情報量が最小=真の分布に最も近い予測」を近似的に狙う、 という意味になります。 関連: モデル選択、 真の生成過程。
ΔAIC が小さいモデルが複数あるとき、 1つを選ぶよりAkaike 重み $w_i=\dfrac{\exp(-\Delta_i/2)}{\sum_j \exp(-\Delta_j/2)}$ で加重平均するほうが、 予測が頑健でモデル選択の不確実性も表現できます(Burnham & Anderson の枠組み)。 上の実測例では M3=0.722, M4=0.269 なので、 予測値は $0.722\hat y_{M3} + 0.269\hat y_{M4} + \cdots$ のように合成します。 「唯一の勝者を選ぶ」から「候補集団の意見を重みで束ねる」への発想転換です。 正則化(Ridge/Lasso)や モデル複雑度の管理とも問題意識を共有します。