こんにちは。
前回、モデルを選択する基準のところで情報量基準という言葉をちょこっと出して、そのままスルーしました。しかし、データ分析においては重要なのでとりあえずその基礎くらいは知っておきましょう。ちなみにコードを書く際にパラメータ選択させられることもあります。
ではそもそも情報量基準とはなんなのか?
機械学習におけるとりあえずの目標は学習です。言い換えれば目的関数のerrorを最小化することです。線形回帰などは最適解があり、数式を解けるので最適なパラメータが得られるのですが、前回も言ったようにskip functionのないニューラルネットワークを始め多くのモデルは最適解を得ることが容易ではないです。そこでランダムな値からパラメータを変動させていくのでした。この際、errorが減少するようにパラメータを更新する、つまり、勾配の逆方向に動かすのでした。
では、ここで出る問題は errorが小さければいいのか? ということです。以前触れましたが、モデルは学習の際に、underfittingやoverfittingを引き起こします。これはパラメータ数によって起こることが多いです。これは明らかですよね。例えば、多項式回帰の字数を増やしまくるとそのモデルはグニャグニャに曲がってデータにフィットしようとしますよね。もちろんfitするということは例えば誤差二乗和を計算すると必ず字数の増加に伴いそれは減少します。しかしこれは、上述の通りoverfittingではないのか?という問題です。
では、問題をまとめると
  • 誤差(error)を減らしたい
  • 過学習は避けたい
ということです。ではどうやって判断するのか、についてです。例えば2種類のモデルを考えましょう。それぞれ、A,Bとします。
エラーがAの方が小さかったとします。では情報量基準を用いてどっちがいいかみましょう。
情報量基準にはAICとBICがあります。式から分かると思いますが違いは第二項のペナルティ項のところですね。BICにはデータ数のnが含まれています。例えば先ほどの例を用いてこの情報量基準がBの方が小さかった場合、僕たちはBのモデルを使います。とりあえず使い方はこの情報量基準が小さいモデルを選ぶということになります。
2種類あるねんから使い分けは?ってなりますよね。これについては非常に難しい議論のようです。 上のリンクによると結論としては
  • AICとBICを両方使う
  • セットで値が小さいモデルを選ぶ
が最良のようです。そもそもAICとBICの導出の背景が関係していると思うんですよね。リンク先の回答を見てみると
AIC tries to select the model that most adequately describes an unknown, high dimensional reality. This means that reality is never in the set of candidate models that are being considered. On the contrary, BIC tries to find the TRUE model among the set of candidates.

ここで重要な点は
  • AICはモデルが真である仮定をしてない
  • BICは真のモデルがあると仮定して計算してる
ということです。モデルの候補の中に真のモデルがあるという仮定がもうよくわからないですよね、なのでひとまずこれはおいておいて先ほどの式を見比べて解釈してみましょう。

    \[\mathrm{AIC}=-2 \ln L+2 k\]

    \[\mathrm{BIC}=-2 \cdot \ln (L)+k \ln (n)\]

BICにはデータ数のnがあるのでした。前述通り、この値が小さい方がいいモデルということになります。なので先ほどの例、つまり、多項式回帰でパラメータ数を増やしまくるとペナルティ項の値が大きくなります。この時、データ数がn=e^2以上になるとBICの方が強くペナルティが反映されることがわかります。なので直感的にはBICはより厳しい検査基準と考えられそうです。
もう少し、深入りしてみます。
上で、導出の背景と言いましたが次の論文を見てみると AICはKLの最小化を目的として導出されました。一方でBICは事後分布の最大化を目的として導出されました。とはいえ、やはりどちらがいいかはわからないですね、、どっちか選べって言われると僕ならAICですかね。ちなみにKLを知らない人のためにちょこっとだけ説明すると

    \[D_{\mathrm{KL}}(P | Q)=\int_{-\infty}^{\infty} p(x) \log \left(\frac{p(x)}{q(x)}\right) dx\]

まず定義は上の式。で超絶簡単な例はwikiにあってそれを見てみよう。
図にあるように二項分布と一様分布P,Q間の距離を測りたいときKLを使ってみると計算は次のようになります。上の定義は連続としてインテグラルを使いました。(基本連続)。今回の例は離散なのでシグマに置き換えます。

    \[ \begin{aligned} D_{\mathrm{KL}}(P | Q) &=\sum_{x \in \mathcal{X}} P(x) \ln \left(\frac{P(x)}{Q(x)}\right) \ &=0.36 \ln \left(\frac{0.36}{0.33}\right)+0.48 \ln \left(\frac{0.48}{0.333}\right)+0.16 \ln \left(\frac{0.16}{0.33}\right) \ &=0.0852 \end{aligned}\]


こんな感じで計算します。2つの正規分布間のKLの計算とかやってみるといい練習になると思います。ここで重要なのが1つ。先ほどKLを距離と言いましたが、

KLは距離じゃない

数学をやってる人なら次の例でわかってくれると思います。上の計算はD_{\mathrm{KL}}(P | Q)でした、一方でD_{\mathrm{KL}}(Q | P)を計算すると

    \[\begin{aligned} D_{\mathrm{KL}}(Q | P) &=\sum_{x \in \mathcal{X}} Q(x) \ln \left(\frac{Q(x)}{P(x)}\right) \ &=0.33 \ln \left(\frac{0.33}{0.36}\right)+0.33 \ln \left(\frac{0.33}{0.48}\right)+0.33 \ln \left(\frac{0.33}{0.16}\right) \ &=0.0974 \end{aligned}\]

これは距離じゃないですね。なぜなら厳密に距離の定義を満たさないからです。詳しくは距離の定義でググるかwikiみてください。一言でいうと行き帰りの距離が等しくないから距離じゃないんです。
KLについて話始めるととんでもなく長くなるのでまた別の記事にして最後にコードを簡単に眺めて終わりましょう。
でわ