バナナでもわかる話

開設当初は計量経済学・統計学が専門の大学院生でした。今はデータを扱うお仕事をしています。統計学・経済学・投資理論・マーケティング等々に関する勉強・解説ブログ。ときどき趣味も。極力数式は使わずイメージで説明出来るよう心掛けていますが、時々暴走します。

統計検定1級対策解説~情報量基準編~

今回はAICです。
AIC周りの話は、カルバックライブラー情報量とAICにどういう結びつきがあるのか概要を知っておくことが重要になってきます。

スポンサーリンク



AICとは

AICは次のような式で表されます。


 AIC=-2 \sum_{i=1}^n log f(X_i,\hat{\theta})+2 dim(\theta)


まず \hat{\theta}は、n個のサンプルから得られるパラメータの最尤推定量です。そして、 dim(\theta)は分布の自由度となっています。

このAICとはなんぞやというのを理解することがこの章で重要な話になってきます。

何の役に立つんだって話

このAIC、何の役に立つのかというと、オーバーフィットを回避するためのモデル選択に利用できます。

オーバーフィットとは

例えば、こんな感じのデータがあったとします。
f:id:bananarian:20190515123427p:plain

x=seq(0,1,0.1)
train=sin(2*pi*x)+rnorm(11,sd=0.3)

で、どういう関数を当てはめたら良いかよくわからないので、最小二乗法(又は最尤法)を使って、多項式を当てはめてみることにするとします。


多項式っていうのはこういうやつですね。

 f(x)=\sum_{m=1}^M \alpha_{m-1}X^{m-1}+\epsilon

これはM-1次の多項式です。
Mはどうやって決めるのか問題がありますが、最尤法であれば、対数尤度最大、最小二乗法であれば二乗誤差を最小にするように、Mを適当に動かしてやると探すことが出来ますね。ちなみに、機械学習界隈ではよくRMSEが利用されますがどれを使おうとさしたる違いはありません。


で、普通に最小二乗法、又は最尤法を使うと次のような曲線が得られます。
f:id:bananarian:20190515124216p:plain

「おぉ~~全ての点を通ってて良い感じ~!」

と満足してはいけません。この曲線には問題があります。

同じ分布から新しいサンプルをこんな風に取ってきたとします。

xtest=seq(0,1,0.01)
test1=sin(2*pi*xtest)+rnorm(length(xtest),sd=0.3)

今の曲線をこの新しいサンプルにあてはめるとこんな感じ。
f:id:bananarian:20190515124809p:plain

変なところにすっ飛んでいってる所があり、予測が見当違いになってしまいます。


このように、既存のデータに極端にフィットしてしまい、新しいデータに対する予測性能が無くなってしまう現象をオーバーフィッティングと呼びます。

パラメータの次元(今回ならM)も最適化しようとした場合に、最尤法や最小二乗法を用いると、このような状況が発生します。それを回避するために利用される手法がAICです。

AICの式の意味

AICの式をもう一度確認してみます。

 AIC=-2 \sum_{i=1}^n log f(X_i,\hat{\theta})+2 dim(\theta)


「このAICを最小化するようなパラメータを選択するのが良い」というのがAICが利用される場合の主張です。

第1項は最大対数尤度ですね。普通の最尤法ではこのAICの第一項を最小化(マイナスがついているので)するような値を選択しているわけですが、それではパラメータの次元を弄り始めるとさっきのような問題が発生します。

そこでAICでは第二項目としてパラメータの自由度を加えます。

つまり、パラメータの自由度を増やせば増やすほど罰則がかかるようになっているわけですね。

AICを使ってみる

では、自由度をいじりながらAICの値を確認してみます。簡単にプロットしてやると次のようになりました。

f:id:bananarian:20190515130147p:plain

最小点は6ですね。つまり、「10次多項式なんていらない、6次で十分だ」とAICで主張できるわけです。

ちなみに6次でさっきのプロットをしてみるとこんな感じ。
f:id:bananarian:20190515130703p:plain
f:id:bananarian:20190515130715p:plain

見た目的にも最小二乗法を使った場合よりも良いですね。

余談(機械学習でよく使われる手法の話)

ちなみに、機械学習や予測の文脈では次のような手法も使われます。

持っているデータを

・最小二乗法(最尤推定)用のトレーニングデータ
・次元Mを決めるためのテストデータ

にわけることで、先ほどの問題を解決するといった手法です。


こんな感じでテストデータとトレーニングデータがあったとします。

x=seq(0,1,0.1)
train=sin(2*pi*x)+rnorm(11,sd=0.3)
test=sin(2*pi*x)+rnorm(11,sd=0.3)

この2つのデータに対して、トレーニングデータで学習した最尤推定量を元に、パラメータの自由度をいじって、その際のRMSEを見ることを考えます。

すると次のような推移になります。
f:id:bananarian:20190515131537p:plain

テストデータを用いた場合は、途中でRMSEの減少が止まっています。
つまり、テストデータを用いた場合、10次元も6次元もいらない。3次多項式で十分だと主張できることになります。

先ほどのAICは、尤度を利用していることからも分かる通り、サンプルサイズが少ない場合十分に機能しない可能性があります。そのため、データセットをこのように分ける手法が取られることもあるわけです。


カルバックライブラー情報量

カルバックライブラー情報量は、2つの分布間の(ある種の)距離を測る考え方です。
次のように定式化します。

2つの密度関数f,gについて

 KL(f|g)=\int f(x)log(\frac{f(x)}{g(x)})dx

2つの密度関数の対数の差の期待値を取っているのが見えますか?
もし、二つの密度が全く同じであれば0になります。

カルバックライブラー情報量とAICの関係性

ある分布 f(y;\theta)から標本Xが得られたとします。
この標本を使って分布のパラメータ \thetaを推定することを考える場合、その推定量 \hat{\theta}を使って尤度 f(y;\hat{\theta})を考えた場合、真の分布 f(y;\theta)に近くならなければならないはずです。


ここで、未知の標本(架空の物、得られていない) Yを使って真の分布と推定量を突っ込んだ分布の距離をカルバックライブラー情報量で考えてやると次のようになります。


 KL(f(y; \theta)|f(y;\hat{\theta}))=\int f(y;\theta)log(f(y; \theta))dy -\int f(y; \theta) log(f(y; \hat{\theta)}) dy

この値を小さくするためには、第1項目は弄りようが無いので、第2項目を考える必要が出てきますね。
つまり、第二項目の

 \int f(y; \theta) log(f(y; \hat{\theta)}) dy

を最大にするような推定量が汎化性能(予測とかの意味で良い性質を持つこと)の意味で良い推定量であると言えます。
これを平均対数尤度と呼んだりします。


もし、ここで新しいデータとして今の分布と同様の分布から Zが得られたとすると、

平均対数尤度の推定値は \frac{1}{n}\sum log(f(z; \hat{\theta}))となるわけですが、 \hat{\theta}はデータXの下での最尤推定量だったので、


 \frac{1}{n}\sum log(f(X; \hat{\theta)}) ≧ \frac{1}{n}\sum log(f(z; \hat{\theta)})

が成り立ちます。つまり、よりよい推定量を考えるためには平均対数尤度を最大化しなければならないのに、それよりも値が大きいXの対数尤度を最大化して満足してしまっていることがわかります。


しかし、そうはいっても「もしZを取ってこれたら」という話をしているに過ぎないので、実際はデータXでなんとかしなければなりません。

そこで、うまく平均対数尤度に近づくように補正する項を持ってきてやろうといことで漸近的に出てくるのが、先ほどAICで出てきた dim(\theta)です。

こうして、平均対数尤度を考える代わりに、既存のデータでどうにかできるようAICが生まれてきたというわけですね。