엔트로피(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 $$이다. 즉, 엔트로피는 이산 확률 변수가 가질 수 있는 확률 변수가 동일한 값의 가짓수와 같다.
In [4]:
-1/6*np.log2(1/6)*6
Out[4]:
In [5]:
-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)
Out[5]:
In [ ]:
확률 변수 모형, 즉 이론적인 확률 밀도(질량) 함수가 아닌 실제 데이터가 주어진 경우에는 확률 밀도(질량) 함수를 추정하여 엔트로피를 계산한다.
예를 들어 데이터가 모두 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 $$
In [1]:
-1/2*np.log2(1/2)-1/2*np.log2(1/2)
# 이럴 경우에는 아까 말한 0,1 두 개가 똑같아서 압축을 해도 의미가 없는 경우다.
Out[1]:
만약 데이터가 모두 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 $$
In [2]:
-1/3*np.log2(1/3)-2/3*np.log2(2/3)
Out[2]:
만약 데이터가 모두 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 $$
In [3]:
-3/4*np.log2(3/4)-1/4*np.log2(1/4)
Out[3]:
만약 데이터가 모두 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 |
만약 데이터가 모두 80개가 있고 $X$, $Y$ 값이 다음과 같다면
Y = 0 | Y = 1 | sum | |
---|---|---|---|
X = 0 | 20 | 40 | 60 |
X = 1 | 20 | 0 | 20 |
In [6]:
-(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)))
Out[6]: