엔트로피

엔트로피(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 $$

이다. 즉, 엔트로피는 이산 확률 변수가 가질 수 있는 확률 변수가 동일한 값의 가짓수와 같다.

표본 데이터가 주어진 경우

확률 변수 모형, 즉 이론적인 확률 밀도(질량) 함수가 아닌 실제 데이터가 주어진 경우에는 확률 밀도(질량) 함수를 추정하여 엔트로피를 계산한다.

예를 들어 데이터가 모두 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 [3]:
-1/2*np.log2(1/2)-1/2*np.log2(1/2)


Out[3]:
1.0

만약 데이터가 모두 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 [4]:
-1/3*np.log2(1/3)-2/3*np.log2(2/3)


Out[4]:
0.91829583405448956

만약 데이터가 모두 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 [5]:
-3/4*np.log2(3/4)-1/4*np.log2(1/4)


Out[5]:
0.81127812445913283

만약 데이터가 모두 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 \sum \,p(x_k, y_j) \log_2 p(y \mid x) $$$$ H[Y \mid X] = -\int \int p(x, y) \log_2 p(y \mid x) \; dxdy $$

이 식은 조건부 확률 분포의 정의를 사용하여 다음과 같이 고칠 수 있다.

$$ H[Y \mid X] = \sum \,p(x_k)\,H[Y \mid x_k] $$$$ H[Y \mid X] = \int p(x)\,H[Y \mid x] \; dx $$

조건부 엔트로피와 결합 엔트로피는 다음과 같은 관계를 가진다.

$$ 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 $$