생각보다 자주 잊어 Impurity의 대표 지표인 엔트로피와 지니계수의 계산 방법을 정리해본다.
엔트로피
엔트로피(Entropy)란 Shannon 박사의 정보이론에서 비롯된 정보량 개념으로 데이터를 불확실성으로 표현하는 방법이다.
확률변수 X의 분포가 특정 값에만 몰려있으면 데이터의 불확실성(엔트로피)이 낮지만, 분포가 전체적으로 고르게 분포하는 경우에는 데이터의 불확실성(엔트로피)이 크다고 할 수 있다.
엔트로피는 로그 확률변수의 평균으로 나타낸다.
갑자기 로그가 튀어나오는 것이 의외지만 확률곱을 확률합으로 나타낼 수 있다는 점에서 정보량 계산 시 많은 도움이 된다.
또한 확률밀도함수는 1보다 작기 때문에 로그를 취하면 음수가 되므로 마이너스 부호를 사용하여 양수로 바꾸어주는 것이 좋다.
로그의 밑은 임의로 사용해도 무방하나 정보이론은 이진법에서 정의되었기에 2를 일반적으로 사용한다.
확률변수 와 확률 이 주어졌을 때 엔트로피는 다음과 같이 구할 수 있다.
$$ E[-log_2(P(X))] = – \sum_{x_i \in X} P(x_i) * log_2 P(x_i) $$
인 점을 참고하면 엔트로피는 결국 확률에 대한 평균임을 이해할 수 있다.
엔트로피 계산은 비교적 단순하다.
예를 들어 확률변수 X={1, 2, 3}에 대해 사건 1, 1, 1, 2, 2, 3이 발생했을 때 각 확률변수 1, 2, 3에 대해 1/2, 1/3, 1/6의 확률을 계산할 수 있다.
그러므로 이 사건에 대한 엔트로피는 다음과 같이 계산할 수 있다.
$$
\begin{align*}
E[-log_2(P(X))] &= – \sum_{x_i \in X} P(x_i) * log_2 (P(x_i)) \\
&= – 1/2 * log_2 (1/2) – 1/3 * log_2 (1/3) – 1/6 * log_2 (1/6)
\end{align*}
$$
지니계수
지니계수(Gini Impurity)는 경제학에서의 지니계수(Gini Coefficient)와 혼동할 수 있는 개념이나 이와는 전혀 다른 지표이다.
경제학에서는 지니계수를 소득 불평형의 지표로서 사용한다.
이 또한 자주 언급되는 개념이니 잠깐 정리하고 넘어간다.
경제학에서는 로렌츠 곡선을 사용하여 소득 불평형을 측정하는 방법을 제시한다.
위 그래프는 45도 기울기의 완전평등선과 하위 소득인구의 누적비율과 소득 누적 간 비중을 나타낸 로렌츠 곡선을 나타낸 것이다.
이 때 완전분배 직선과 로렌츠 곡선 사이의 파란 면적을 불평등 면적이라 하며, 이 불평등 면적과 완전평등선 아래의 면적(삼각형) 간 비를 지니계수라 한다.
그림에서는 삼각형의 크기를 1로 간주하였기에 파란 면적을 지니계수로 간주한 것이다.
경제학에서의 지니계수는 본질적으로 [0, 1] 구간에 존재하며 1에 가까울수록 소득이 완전히 평등하게 분배됨을 의미한다.
다만 이는 경제학의 지표이며 지금부터 이야기할 Impurity 지표로서의 지니계수와는 다르기 때문에 이 글에서는 경제학에서의 지니계수를 Gini-Index or Gini-Coefficient로, 정보이론에서의 지니계수를 Gini-Impurity로 정의한다.
우선 Simpson index를 정의한다.
Simpson index는 두 번의 샘플링에서 클래스마다 같은 클래스로부터 샘플되었을 확률의 합으로 나타낸다.
$$ \lambda = \sum^{C}_{i=1}{p_i}^2 $$
참고로 Simpson은 그 Simpson’s paradox의 Simpson이 맞다. [더 읽기]
Simpson’s paradox: 데이터의 세부 그룹별로 일정한 추세나 경향성이 나타나지만, 전체적으로 보면 그 추세가 사라지거나 반대 방향의 경향성을 나타내는 현상
이제 1에서 Simpson Index를 빼면 클래스마다 두 번 추출한 샘플이 다른 확률에 대한 합이 되며 이는 곧 다양성의 지표가 된다.
Gini-Simpson Index 또는 Gini-Impurity는 다음과 같다.
$$ 1 – \lambda = 1 – \sum^{C}_{i=1}{p_i}^2 $$
지니계수 계산 또한 단순하다.
엔트로피와 동일한 예제를 보자.
확률변수 X={1, 2, 3}에 대해 사건 1, 1, 1, 2, 2, 3이 발생했을 때 각 확률변수 1, 2, 3에 대해 1/2, 1/3, 1/6의 확률을 계산할 수 있다.
그러므로 이 사건에 대한 지니계수는 다음과 같이 계산할 수 있다.
$$
\begin{align*}
1 – \lambda &= 1 – \sum^{C}_{i=1}{p_i}^2 \\
&= 1 – (1/2)^2 – (1/3)^2 – (1/6)^2
\end{align*}
$$
Gini-Impurity가 높다는 것은 곧 다양성이 크다는 것을 의미하며 확률 분포가 고르게 퍼져있음을 의미한다.