なぜ情報量は-log2P(x)で表せるのか？数学から理解する

#1.目的

以前の記事で[【機械学習】決定木をscikit-learnと数学の両方から理解する]
(https://qiita.com/Hawaii/items/53efe3e96b1171ebc7db)を書いた際に「4.決定木を数学から理解する」で情報量について触れました。

そこでは、情報量は下記のように定義されると書いています。

```math
I(x) = -\log_{2} P(x)
```

そもそも、なんで情報量ってこんな形で表されるのでしょうか？

今回は直感的な説明も含みますが、記事にすることで初心者の方にむ情報量の理解を深めていただくことが目的です。
※初心者の方の理解を最大の目的にしているため、ざっくりした書き方をしている個所もあるので、厳密に言うと異なる部分もありますのでご了承ください。

※「数学から理解する」シリーズとして、いくつか記事を投稿していますので、併せてお読みいただけますと幸いです。
[【機械学習】決定木をscikit-learnと数学の両方から理解する](https://qiita.com/Hawaii/items/53efe3e96b1171ebc7db)
[【機械学習】線形単回帰をscikit-learnと数学の両方から理解する](https://qiita.com/Hawaii/items/150897d4f807e5597f18)
[【機械学習】線形重回帰をscikit-learnと数学の両方から理解する]
(https://qiita.com/Hawaii/items/b84a0d669bcf5267e750)
[【機械学習】ロジスティック回帰をscikit-learnと数学の両方から理解する]
(https://qiita.com/Hawaii/items/ee2a0687ca451fe213be)
[【機械学習】SVMをscikit-learnと数学の両方から理解する]
(https://qiita.com/Hawaii/items/4688a50cffb2140f297d)
[【機械学習】相関係数はなぜ-1から1の範囲を取るのか、数学から理解する]
(https://qiita.com/Hawaii/items/3f4e91cf9b86676c202f)

#2.情報量について

##(1)前提
ある情報量$I(n)$について、$I(n) = Clog_an+D$**と表せるとまずは仮定します。**

ここは、なぜ$log$？とか難しいことは気にしないでください。一般的にそのように約束されているようです。
突然$log$が出てきますが、何らかの数値で表せられると仮定するんだな、と思っていただければ大丈夫です。

##(2)等確率のn個の事象
まずは、**等確率のn個の事象を特定したときに得られる情報量の定義**を考えていきます。

・・・。
<img width="200" alt="キャプチャ1.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/465870/9cc69138-64a5-eb73-434b-d7908a56bd2e.png">


「等確率のn個の事象を特定したときに得られる情報量」って、言葉が難しすぎますよね。

**超ざっくり言うと、nパターンある事象の中から、その中で実際はどのパターンが起きたのか特定できたときに、どれくらい驚くか？を数値化したもの**です。

そして、この**n個のパターンは全部同じ確率で発生しますよ、ということ**です。

※もう少し情報量の定義についてイメージを付けたい方は[【機械学習】決定木をscikit-learnと数学の両方から理解する]
(https://qiita.com/Hawaii/items/53efe3e96b1171ebc7db)の「4.決定木を数学から理解する」の羽生選手の例を参照してください。

さて、ではこの情報量についてみていきましょう。

＜$I(1)$の場合＞
$I(1)$の場合を考えます。
これってつまり、起こりうるパターンが1つしかなくて、その中で実際に起きたパターンを特定できたとしても意味ない（＝驚かない）と直感的にわかりますよね？

よって、この時情報量は0と考えます。

つまり、$I(1)=Clog_a1+D=0$となり、かつ$Clog_a1$は0なので、**$D=0$ということがここからわかります**。

→よって、$I(n)=Clog_an$と表記できることになります。

＜$I(2)$の場合＞
次に、$I(2)$の場合を考えます。
これはコインの裏表どちらが出るか、という状況に酷似しています。

この時、こういった**二者択一の情報量を１と世の中的に仮定しているため**、

$I(2)=Clog_a2=1$となり、これを変形すると$C = \frac{1}{log_a2}=\frac{log_aa}{log_a2}=log_2a$になります。
※最後の変換は底の変換公式の$log_ab=\frac{log_cb}{log_ca}$より算出されます。
 
よって、情報量$I(n)=Clog_an = log_2a・log_an = log_2a・\frac{log_2n}{log_2a}=log_2n$と定義されます。

ここまでのおさらいです。
全nパターンが等確率で発生する場合、その中のどのパターンが発生したか？を知った時の驚き度合い（＝情報量）を数値化すると、$log_2n$になります。

ただ、現実問題で全パターンが等確率で発生するってあんまりないですよね。

次は、各パターンが等確率でないことを考慮していきます。

##(3)等確率でないn個の事象
今度はすべてが等確率ではなく、確率Pで発生する事象を特定したときの情報量についてみていきましょう。

<img width="450" alt="キャプチャ2.PNG" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/465870/150fa82f-7ea9-1d6f-e1ee-841425eb60ac.png">


まず、上の図のようなn個の事象は今までと同様、すべて等確率で発生するとします。
このn個の中で、青枠のグループのどれかが発生する確率Pを$\frac{k}{n}$（これ、後から使います）と表せますね。
さらに、この情報量を$I$とおくことにします。

それでは、本題です。
このn個の中でどれか1つの事象を特定できた時の情報量はどのように表せられるでしょうか？2パターンあります。

####◆１パターン目
$log_2n$と表せます。
→これは(2)と全く同じことです。

全部でn個の事象から、ずばりこれが発生した！と特定した際に、その情報量は$log_2n$と表せます。

####◆2パターン目
先ほどの図のように、まず(ⅰ)k個のグループの中でのどれかだと特定される
→(ⅱ)k個の中の、さらにどれか1つと特定する、という2段階を踏みます。

(ⅰ)の情報量
これは、$I$と先ほど仮定しました。

(ⅱ)の情報量
1パターン目と同じ考え方で、$log_2k$と表せます。

####◆まとめると
1パターン目と2パターン目から、
$log_2n = I + log_2k$という式が成り立ちます。

これを式変形していきます。

```math
\begin{align}
I &= log_2n - log_2k\\
&= log_2\frac{n}{k}・・・☆\\
&= log_2P^{-1} ・・・★\\
&= -log_2P
\end{align}
```

※☆→★は少し理解しづらいと思うので、補足です。
$\frac{n}{k} = (\frac{k}{n})^{-1} = P^{-1}$と表せます。確率$P$を$\frac{k}{n}$と、(3)の冒頭で定義しましたよね。

つまり、確率Pで生じる事象Aが起きたと知ったときに得られる情報量は、下記のように数式で表せることがわかり、今回の目的は達成です。

$I(x) = -log_2P(x)$

#3.結び
いかがでしたでしょうか。
機械学習の決定木は情報量の考え方を元に機能しており、その情報量について理解しておきましょうというのが経緯でした。

1度ですんなり理解するのは難しいかもしれないですが、少しでも理解の深化の助けになりましたら幸いです。