---
# System prepended metadata

title: 資訊量、資訊熵、交叉熵
tags: [Data Science]

---

###### tags: `Data Science`
# 資訊量、資訊熵、交叉熵

# 資訊量 (Information content 單位為:$bit$)

用科學公式性的方法去量化一段文字有多少資訊的想法，將==消息數==取==log==。若資訊源有 m 種消息，且每個消息的可能性相等，該信源的訊息量可表示如: 
$$I=\log_2m$$
 
假設A隊與B隊進行比賽，只有一隊能贏(不存在平局)，且勝率相等。此時:
$$I=log_22 , I=1(bit)$$

假設有32隊進行比賽，只有一隊能贏，勝率相等。則
$$I=log_232, I=5(bit)$$

由於每隊的勝率不盡相同，亞洲足球隊贏得世界盃冠軍的機率較小，當機率小的事件==發生==時非常吸引人關注，訊息量很大。故定義==機率==與==訊息量==的公式如下:

$$H(X_i)=-log_2P$$
$X_i$ 為一個發生的事件
$P$ 表示這個事件發生的**先驗機率**。(就是這個事件按照常理會發生的機率。)
$-log_2$ 取 2 是因為只有贏跟輸兩種 單位為bit


:::info
假設A隊在過去64場比賽贏了63次
A 隊下一次比賽贏的訊息量為$-log_2\frac{63}{64}=0.023(bit)$
B 隊下一次比賽營的訊息量為$-log_2\frac{1}{64}=6(bit)$
:::
同理也可以得到，對於機率100%的事件，訊息量為0。

另外從數學上可以發現， 為何這個公式前面要帶一個負號？
因為P是機率值 範圍在 0~1 之間，對他取log只會是負數，
於是公式上加一個負號可以負負得正。
這在之後資訊熵、交叉熵的公式定義也是一樣的理解方式。


# 資訊熵 (Information Entropy)

$$H(X)=\sum_{i}P(x_i)I(x_i)=-\sum_{i}P(x_i)log_bP(x_i)$$

當 $b=2$，單位為bit；當$b=e$，單位為nat；當$b=10$，單位為Hart。故不同底數算出來的值無法直接比較。


## 兩隊比賽
承上題， A 隊和 B 隊比賽結果的資訊熵為 ==兩隊的 $\sum$( 資訊量 * 機率 )==
- 一面倒的資訊熵
A 隊下一次比賽贏的訊息量為$-log_2\frac{63}{64}=0.023(bit)$
B 隊下一次比賽營的訊息量為$-log_2\frac{1}{64}=6(bit)$
$$H(X)=0.023\times\frac{63}{64}+6\times\frac{1}{64}\approx0.116644$$

- 五五波的資訊熵(勝率50%)
A 隊下一次比賽贏的訊息量為$-log_2\frac{32}{64}=1(bit)$
B 隊下一次比賽營的訊息量為$-log_2\frac{32}{64}=1(bit)$
$$H(X)=1\times\frac{32}{64}+1\times\frac{32}{64}=1$$

在考慮只有2個事件的資訊熵，函數會如下圖所示。可以看出當機率各為0.5時，得到的
熵為最大=1，而當兩隊的勝率差異很大時，熵會變小。
![](https://3.bp.blogspot.com/-N6gnWTxavyE/WmyYcj62vBI/AAAAAAAAK0Q/iZtB-fpbC2gIzD2eBajfes5YsU2jCtClQCLcBGAs/s640/d15.png)

## 多隊比賽
假設足球世界盃決賽32隊的情形下計算資訊熵。

- 一面倒的資訊熵(A隊勝率99%)
A 隊獲勝的訊息量為$H(X_i)=-log_20.99\approx0.0145$
其他隊伍獲勝的訊息量為$H(X_i)=-log_2\frac{0.01}{32}\approx11.60$

$$H(X)=0.99\times0.0145+\frac{0.01}{32}\times11.60+...+\frac{0.01}{32}\times11.60=0.130$$


- 五五波的資訊熵(各隊勝率相同)
每個隊伍獲勝的訊息量為 $H(X_i)-log_2\frac{1}{32}=5$
$$H(X)=5\times\frac{1}{32}+...+5\times\frac{1}{32}=5$$

在資訊可能有N種情況時，當N一定，那麼其中所有情況的機率相等時資訊熵是最大的。
而如果有一種情況的機率比其他情況的機率都大很多，那麼資訊熵就會越小。
也就是說：

     資訊越確定，越單一，資訊熵越小
     資訊越不確定，越混亂，資訊熵越大
決策樹演算法，就可以用資訊熵來進行條件的最佳化。
在文字挖掘中可以用資訊熵來斷定一個句子斷句的方案和各自成句的可能性。

# 交叉熵(Cross-entropy)
假設有兩個模型，針對四筆資料進行預測，每筆資料會得出該筆資料為男、女、其他的機率。
![](https://miro.medium.com/max/1400/1*NhHEllcubpwzL_YWT8fRcg.png)


在本例中，兩個模型的判斷結果完全相同，但還是要知道哪個模型比較準
因此用==交叉熵CrossEntropy==



$$H=\sum_{c=1}^c\sum_{i=1}^i-y_{c,i} log_2(P_{c,i})$$

$y_{c,i}$ 為 猜對與否 (predict = label)
$P_{c,i}$ 為 模型給出的預測機率
兩個 $\sum$ 就是兩層迴圈的意思


**Model 1** 的 Cross-Entropy 為

男生
$1\times\log(0.4)+0\times\log(0.3)+1\times\log(0.5)+0\times\log(0.8)\approx2.322$
女生
$0\times\log(0.3)+1\times\log(0.4)+0\times\log(0.3)+0\times\log(0.2)\approx1.322$
其他
$0\times\log(0.3)+0\times\log(0.3)+0\times\log(0.3)+1\times\log(0.1)\approx3.322$

$2.322+1.322+3.322=6.966$



因為有許多0的關係，故最後簡化為
$1\times\log(0.4)+1\times\log(0.4)+1\times\log(0.5)+1\times\log(0.8)\approx6.966$

意思就是==只算猜對的==

**Model2**
$1\times\log(0.7)+1\times\log(0.8)+1\times\log(0.9)+1\times\log(0.3)\approx2.725$

**Model1** 和 **Model2** 的預測結果相同，但是**Model2** 的 Cross-Entropy 比 **Model1** 小，
故可認定模型的預測表現較好