-1/6*np.log2(1/6)*6

-1/2*np.log2(1/2)-1/4*np.log2(1/4)-1/8*np.log2(1/8)-1/16*np.log2(1/16)-1/32*np.log2(1/32)-1/32*np.log2(1/32)

"""
Explanation: 엔트로피
엔트로피(entropy)는 확률 변수가 담을 수 있는 정보의 양을 나타내는 값으로 다음과 같이 정의한다.
확률 변수 $X$가 이산 확률 변수이면
$$ H[X] = -\sum_{k=1}^K p(x_k) \log_2 p(x_k) $$
확률 변수 $X$가 연속 확률 변수이면
$$ H[X] = -\int p(x) \log_2 p(x) \; dx $$
이 식에서 $p(x)$는 확률 밀도(질량) 함수이다.
엔트로피 계산 예
실제로 엔트로피를 계산해 보자.
만약 이산 확률 변수가 1부터 8까지의 8개의 값 또는 클래스를 가질 수 있고 각각의 클래스에 대한 확률이 다음과 같다고 가정한다.
$$ \Big{ \dfrac{1}{2}, \dfrac{1}{4}, \dfrac{1}{8}, \dfrac{1}{16}, \dfrac{1}{64}, \dfrac{1}{64}, \dfrac{1}{64}, \dfrac{1}{64} \Big} $$
이 때의 엔트로피는 다음과 같다.
$$ H = -\dfrac{1}{2}\log_2\dfrac{1}{2} -\dfrac{1}{4}\log_2\dfrac{1}{4} -\dfrac{1}{8}\log_2\dfrac{1}{8} -\dfrac{1}{16}\log_2\dfrac{1}{16} -\dfrac{4}{64}\log_2\dfrac{1}{64} = 2 $$
만약 모든 가능한 값(클래스) $x_k$에 대해 $p(x_k) = 0$ 또는 $p(x_k) = 1$ 뿐이라면 엔트로피는 0 임을 알 수 있다. 이 경우는 사실 단 하나의 값만 나올 수 있는 경우이므로 정보가 없는 상수값이다.
만약 이산 확률 변수가 가질 수 있는 값(클래스)의 종류가 $2^K$이고 모두 같은 확률을 가진다면
$$ H = -\frac{2^K}{2^K}\log_2\dfrac{1}{2^K} = K $$
이다. 즉,  엔트로피는 이산 확률 변수가 가질 수 있는 확률 변수가 동일한 값의 가짓수와 같다.
(노트의 사례)
End of explanation
"""


-1/2*np.log2(1/2)-1/2*np.log2(1/2)
# 이럴 경우에는 아까 말한 0,1 두 개가 똑같아서 압축을 해도 의미가 없는 경우다.

"""
Explanation: 압축 방법
0000000100110...
10 -> 1bit
p=0.5(베르누이 분포일 때) 가장 정보가 많은 경우
p=0.01 이라고 하면 0이 엄청나게 많고 1이 적은 경우
압축하는 방법은 0이 몇 번 나오는 지 쓴다. 예를 들어 0이 7번 나오고 1이 2번 나오고 다시 0이 10번 나온다는 식으로 줄여서 쓴다. 그러면 이 숫자를 다시 이진법으로 쓰는 방식

p=0.5일 경우에는 압축의 의미가 없다. 계속 0과 1이 번갈아 나오기 때문


원리는 그렇다. 확률 변수는 수치를 담고 있고 내가 얼마나 많은 정보를 가지고 있는 지를 판단할 수 있다.


표본 데이터가 주어진 경우
확률 변수 모형, 즉 이론적인 확률 밀도(질량) 함수가 아닌 실제 데이터가 주어진 경우에는 확률 밀도(질량) 함수를 추정하여 엔트로피를 계산한다.
예를 들어 데이터가 모두 80개가 있고 그 중 Y = 0 인 데이터가 40개, Y = 1인 데이터가 40개 있는 경우는
$$ P(y=0) = \dfrac{40}{80} = \dfrac{1}{2} $$
$$ P(y=1) = \dfrac{40}{80} = \dfrac{1}{2} $$
$$ H[Y] = -\dfrac{1}{2}\log_2\left(\dfrac{1}{2}\right) -\dfrac{1}{2}\log_2\left(\dfrac{1}{2}\right) = \dfrac{1}{2} + \dfrac{1}{2}  = 1 $$
End of explanation
"""


-1/3*np.log2(1/3)-2/3*np.log2(2/3)

"""
Explanation: 만약 데이터가 모두 60개가 있고 그 중 Y= 0 인 데이터가 20개, Y = 1인 데이터가 40개 있는 경우는
$$ P(y=0) = \dfrac{20}{60} = \dfrac{1}{3} $$
$$ P(y=1) = \dfrac{40}{60} = \dfrac{2}{3} $$
$$ H[Y] = -\dfrac{1}{3}\log_2\left(\dfrac{1}{3}\right) -\dfrac{2}{3}\log_2\left(\dfrac{2}{3}\right) = 0.92 $$
End of explanation
"""


-3/4*np.log2(3/4)-1/4*np.log2(1/4)

"""
Explanation: 만약 데이터가 모두 40개가 있고 그 중 Y= 0 인 데이터가 30개, Y = 1인 데이터가 10개 있는 경우는
$$ P(y=0) = \dfrac{30}{40} = \dfrac{3}{4} $$
$$ P(y=1) = \dfrac{10}{40} = \dfrac{1}{4} $$
$$ H[Y] = -\dfrac{3}{4}\log_2\left(\dfrac{3}{4}\right) -\dfrac{1}{4}\log_2\left(\dfrac{1}{4}\right) = 0.81 $$
End of explanation
"""


-(25/100 * (20/25 * np.log2(20/25) + 5/25 * np.log2(5/25)) + 75/100 * (25/75 * np.log2(25/75) + 50/75 * np.log2(50/75)))

"""
Explanation: 만약 데이터가 모두 20개가 있고 그 중 Y= 0 인 데이터가 20개, Y = 1인 데이터가 0개 있는 경우는
$$ P(y=0) = \dfrac{20}{20} = 1 $$
$$ P(y=1) = \dfrac{0}{20} = 0 $$
$$ H[Y] \rightarrow 0 $$
조건부 엔트로피
조건부 엔트로피는 다음과 같이 정의한다.
$$ H[Y \mid X] = - \sum_i \sum_j \,p(x_i, y_j) \log_2 p(y_j \mid x_i)  $$
$$ H[Y \mid X] = -\int \int p(x, y) \log_2 p(y \mid x) \; dxdy $$
이 식은 조건부 확률 분포의 정의를 사용하여 다음과 같이 고칠 수 있다.
$$ H[Y \mid X]  = \sum_i \,p(x_i)\,H[Y \mid x_i] $$
$$ H[Y \mid X]  = \int p(x)\,H[Y \mid x] \; dx $$
위에는 X가 선택되지 않은 상황의 엔트로피의 가중합이고 아래는 X가 특정한 값이 선택된 경우의 가중합
(증명)
$$ 
\begin{eqnarray}
H[Y \mid X] 
&=& - \sum_i \sum_j \,p(x_i, y_j) \log_2 p(y_j \mid x_i) \
&=& - \sum_i \sum_j p(y_j \mid x_i) p(x_i) \log_2 p(y_j \mid x_i) \
&=& - \sum_i p(x_i) \sum_j p(y_j \mid x_i)  \log_2 p(y_j \mid x_i) \
&=& \sum_i p(x_i) H[Y \mid x_i] \
\end{eqnarray}
$$
조건부 엔트로피와 결합 엔트로피는 다음과 같은 관계를 가진다.
$$ H[ X, Y ] = H[Y \mid X] + H[X] $$
조건부 엔트로피 계산의 예
예를 들어 데이터가 모두 80개가 있고 $X$, $Y$ 값이 다음과 같다고 하자
| | Y = 0 | Y = 1 | sum |
|-|-|-|-|
| X = 0 | 30 | 10 | 40 |
| X = 1 | 10 | 30 | 40 |
$$ 
H[Y \mid X ] = p(X=0)\,H[Y \mid X=0] + p(X=1)\,H[Y \mid X=1] = \dfrac{40}{80} \cdot 0.81 + \dfrac{40}{80} \cdot 0.81 = 0.81
$$
만약 데이터가 모두 80개가 있고 $X$, $Y$ 값이 다음과 같다면
| | Y = 0 | Y = 1 | sum |
|-|-|-|-|
| X = 0 | 20 | 40 | 60 |
| X = 1 | 20 | 0  | 20 |
$$ 
H[Y \mid X ] = p(X=0)\,H[Y \mid X=0] + p(X=1)\,H[Y \mid X=1] = \dfrac{60}{80} \cdot 0.92 + \dfrac{20}{80} \cdot 0 = 0.69
$$
실습 문제
<img src="5.png.jpg" stype="width:60%; margin: 0 auto 0 auto;">
End of explanation
"""


