前回、モデルを選択する基準のところで情報量基準という言葉をちょこっと出して、そのままスルーしました。しかし、データ分析においては重要なのでとりあえずその基礎くらいは知っておきましょう。ちなみにコードを書く際にパラメータ選択させられることもあります。
ではそもそも情報量基準とはなんなのか? 機械学習におけるとりあえずの目標は学習です。言い換えれば目的関数のerrorを最小化することです。線形回帰などは最適解があり、数式を解けるので最適なパラメータが得られるのですが、前回も言ったようにskip functionのないニューラルネットワークを始め多くのモデルは最適解を得ることが容易ではないです。そこでランダムな値からパラメータを変動させていくのでした。この際、errorが減少するようにパラメータを更新する、つまり、勾配の逆方向に動かすのでした。
では、ここで出る問題は
errorが小さければいいのか?
ということです。以前触れましたが、モデルは学習の際に、underfittingやoverfittingを引き起こします。これはパラメータ数によって起こることが多いです。これは明らかですよね。例えば、多項式回帰の字数を増やしまくるとそのモデルはグニャグニャに曲がってデータにフィットしようとしますよね。もちろんfitするということは例えば誤差二乗和を計算すると必ず字数の増加に伴いそれは減少します。しかしこれは、上述の通りoverfittingではないのか?という問題です。
では、問題をまとめると
- 誤差(error)を減らしたい
- 過学習は避けたい
2種類あるねんから使い分けは?ってなりますよね。これについては非常に難しい議論のようです。 上のリンクによると結論としては
- 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は真のモデルがあると仮定して計算してる
BICにはデータ数のnがあるのでした。前述通り、この値が小さい方がいいモデルということになります。なので先ほどの例、つまり、多項式回帰でパラメータ数を増やしまくるとペナルティ項の値が大きくなります。この時、データ数が以上になるとBICの方が強くペナルティが反映されることがわかります。なので直感的にはBICはより厳しい検査基準と考えられそうです。
もう少し、深入りしてみます。
上で、導出の背景と言いましたが次の論文を見てみると AICはKLの最小化を目的として導出されました。一方でBICは事後分布の最大化を目的として導出されました。とはいえ、やはりどちらがいいかはわからないですね、、どっちか選べって言われると僕ならAICですかね。ちなみにKLを知らない人のためにちょこっとだけ説明すると
まず定義は上の式。で超絶簡単な例はwikiにあってそれを見てみよう。 図にあるように二項分布と一様分布P,Q間の距離を測りたいときKLを使ってみると計算は次のようになります。上の定義は連続としてインテグラルを使いました。(基本連続)。今回の例は離散なのでシグマに置き換えます。
こんな感じで計算します。2つの正規分布間のKLの計算とかやってみるといい練習になると思います。ここで重要なのが1つ。先ほどKLを距離と言いましたが、
KLは距離じゃない
数学をやってる人なら次の例でわかってくれると思います。上の計算はでした、一方でを計算するとこれは距離じゃないですね。なぜなら厳密に距離の定義を満たさないからです。詳しくは距離の定義でググるかwikiみてください。一言でいうと行き帰りの距離が等しくないから距離じゃないんです。
KLについて話始めるととんでもなく長くなるのでまた別の記事にして最後にコードを簡単に眺めて終わりましょう。 でわ