정보 엔트로피 개념과 결정 트리 모델의 정보 획득량 계산법 완벽 해설

썸네일

머신러닝과 데이터 사이언스의 세계에 입문하게 되면, 수많은 알고리즘과 마주하게 됩니다. 그중에서도 결정 트리(Decision Tree)는 가장 직관적이면서도 강력한 설명력을 가진 모델로 손꼽힙니다. 마치 우리가 어린 시절 즐겨 하던 '스무고개' 게임처럼, 데이터를 특정 기준에 따라 예/아니오로 나누어가며 정답을 찾아가는 과정은 인간의 사고방식과 매우 유사합니다. 하지만 여기서 한 가지 중요한 의문이 생깁니다. 컴퓨터는 도대체 '어떤 질문'을 먼저 던져야 정답을 가장 빨리, 그리고 정확하게 맞출 수 있는지 어떻게 판단할까요?

이 의문을 해결하는 열쇠가 바로 정보 엔트로피(Information Entropy)정보 획득량(Information Gain)입니다. 이 두 가지 개념은 결정 트리가 데이터를 분할하는 기준이 되며, 모델의 성능을 좌우하는 핵심적인 수학적 원리입니다. 이번 포스팅에서는 정보 엔트로피의 개념부터 시작하여, 결정 트리가 어떻게 정보 획득량을 계산하고 최적의 분기점을 찾아내는지 구체적인 예시와 수식을 통해 아주 상세하게 알아보겠습니다.


1. 불확실성을 수치화하다: 정보 엔트로피(Information Entropy)

우리가 흔히 '엔트로피'라는 단어를 들으면 열역학 제2법칙이나 '무질서도'를 떠올리곤 합니다. 하지만 정보 이론에서의 엔트로피는 조금 다른 의미를 가집니다. 1948년, 정보 이론의 아버지라 불리는 클로드 섀넌(Claude Shannon)은 엔트로피 개념을 도입하여 데이터 집합에 담긴 정보의 양, 혹은 불확실성의 크기를 수학적으로 정의했습니다.

1.1 엔트로피의 직관적 이해와 예시

머신러닝의 분류(Classification) 문제에서 엔트로피는 데이터 집합의 순도(Purity) 혹은 불순도(Impurity)를 나타내는 척도로 사용됩니다. 이를 직관적으로 이해하기 위해 몇 가지 상황을 가정해 보겠습니다.

  • 상황 A (확실성 100%): 주머니 안에 빨간 공만 10개 들어있습니다. 여기서 공을 하나 꺼낼 때 빨간 공이 나올 확률은 100%입니다. 결과에 대한 불확실성이 전혀 없습니다. 이때의 엔트로피는 0입니다.
  • 상황 B (최대 불확실성): 주머니 안에 빨간 공 5개, 파란 공 5개가 들어있습니다. 공을 꺼냈을 때 무슨 색일지 예측하기가 가장 어렵습니다. 확률이 반반이기 때문입니다. 이때 엔트로피는 최댓값을 가집니다.
  • 상황 C (약간의 불확실성): 빨간 공 9개, 파란 공 1개가 있습니다. 우리는 빨간 공이 나올 것이라고 꽤 높은 확신을 가지고 예측할 수 있습니다. 이때의 엔트로피는 0보다는 크지만 상황 B보다는 훨씬 낮습니다.

결국 결정 트리 모델의 학습 목표는 데이터를 분할해 나가는 과정을 통해 이 정보 엔트로피를 낮추는(순도를 높이는) 것입니다. 데이터가 섞여 있는 무질서한 상태에서, 한 종류의 데이터만 남는 질서 정연한 상태로 나아가는 과정인 셈입니다.

1.2 섀넌 엔트로피의 수학적 정의

이를 수학적으로 표현하면 다음과 같습니다. 어떤 데이터 집합 $S$에 대해, 범주(Class) $i$에 속할 확률을 $p_i$라고 할 때, 엔트로피 $H(S)$는 다음과 같이 정의됩니다.

$$ H(S) = - \sum{i=1}^{c} pi \log2(pi) $$

이 수식에는 몇 가지 중요한 포인트가 숨어 있습니다.

  1. 마이너스 기호(-): 확률 $pi$는 항상 0과 1 사이의 값입니다. 따라서 $\log2(p_i)$는 음수가 됩니다. 엔트로피 값을 양수로 만들어주기 위해 전체 합에 마이너스를 붙입니다.
  2. 로그의 밑이 2인 이유: 정보 이론에서 정보의 최소 단위는 비트(bit)입니다. 예/아니오(0/1)로 정보를 표현하기 때문에 밑이 2인 로그를 사용합니다.
  3. 가중 합: 각 사건이 일어날 확률($pi$)에 정보량($-\log2(p_i)$)을 곱하여 더한 것으로, 이는 평균 정보량(기댓값)을 의미합니다.

2. 결정 트리의 나침반: 정보 획득량(Information Gain)

엔트로피가 현재 상태의 불확실성을 나타낸다면, 정보 획득량(Information Gain)은 어떤 행동(데이터 분할)을 취했을 때 불확실성이 얼마나 줄어들었는지를 측정하는 변화량입니다. 결정 트리는 수많은 속성(Feature) 중에서 정보 획득량이 가장 큰 속성을 선택하여 가지를 뻗습니다.

2.1 정보 획득량의 계산 원리

정보 획득량은 '분할 전의 엔트로피'에서 '분할 후의 가중 평균 엔트로피'를 뺀 값입니다. 수식으로는 다음과 같이 표현됩니다.

$$ IG(S, A) = H(S) - \sum{v \in Values(A)} \frac{|Sv|}{|S|} H(S_v) $$

  • $H(S)$: 부모 노드(분할 전)의 엔트로피입니다.
  • $\sum ...$: 자식 노드(분할 후)들의 엔트로피를 각 노드에 속한 데이터 개수 비율만큼 가중치를 두어 평균 낸 값입니다.
  • $IG(S, A)$: 속성 A를 선택했을 때 얻게 되는 정보의 양입니다.

이 값이 클수록 "속성 A를 기준으로 데이터를 나누었더니 데이터가 훨씬 깔끔하게(순도 높게) 정리되었다"는 것을 의미합니다. ID3 알고리즘은 바로 이 원리를 이용하여 트리를 성장시킵니다.


3. 실전 예제: 테니스 경기 여부 예측하기

개념만으로는 와닿지 않을 수 있으니, 유명한 예제인 '날씨에 따른 테니스 경기 여부' 데이터를 통해 직접 계산해 보겠습니다. 총 14일간의 데이터가 있고, 결과는 Yes(9일), No(5일)입니다.

단계 1: 전체 데이터의 엔트로피(Root Entropy) 구하기

먼저 아무런 분할도 하지 않은 상태, 즉 루트 노드의 불확실성을 계산합니다. * 전체 데이터: 14개 * Yes: 9개 ($p{yes} = 9/14$) * No: 5개 ($p{no} = 5/14$)

$$ H(S) = - \left( \frac{9}{14} \log2 \frac{9}{14} \right) - \left( \frac{5}{14} \log2 \frac{5}{14} \right) $$

계산기를 두드려보면, $$ H(S) \approx -(-0.412) - (-0.530) \approx 0.940 $$

현재의 불확실성은 약 0.940입니다. (0이면 완전 확실, 1이면 완전 불확실)

단계 2: '바람(Wind)' 속성으로 분할했을 때의 엔트로피

이제 '바람'이라는 속성을 기준으로 데이터를 나누어 봅니다. 바람은 'Weak(약함)'과 'Strong(강함)' 두 가지 값을 가집니다.

1. 바람이 약한 경우 (Weak): 8개 데이터 * 이 중 Yes: 6개, No: 2개 * $H(Weak) = - (\frac{6}{8} \log2 \frac{6}{8}) - (\frac{2}{8} \log2 \frac{2}{8}) \approx 0.811$

2. 바람이 강한 경우 (Strong): 6개 데이터 * 이 중 Yes: 3개, No: 3개 * $H(Strong) = - (\frac{3}{6} \log2 \frac{3}{6}) - (\frac{3}{6} \log2 \frac{3}{6}) = 1.0$ * (Yes와 No가 정확히 반반이므로 불확실성이 최대인 1이 됩니다.)

단계 3: 정보 획득량 최종 도출

분할 후의 엔트로피는 각 그룹의 크기에 비례하여 가중 평균을 냅니다.

  • 분할 후 엔트로피: $\frac{8}{14} imes 0.811 + \frac{6}{14} imes 1.0 \approx 0.463 + 0.428 = 0.891$

이제 원래 엔트로피에서 분할 후 엔트로피를 뺍니다.

$$ IG(S, Wind) = 0.940 - 0.891 = 0.049 $$

결과적으로 '바람'이라는 속성을 알게 됨으로써 우리는 0.049만큼의 정보를 얻었습니다(불확실성을 줄였습니다). 만약 '날씨(Sunny, Overcast, Rain)'나 '습도' 같은 다른 속성의 정보 획득량이 0.049보다 크다면, 모델은 바람 대신 그 속성을 최상위 노드로 선택할 것입니다.


4. 정보 획득량의 한계와 발전된 지표들

정보 획득량은 훌륭한 기준이지만 완벽하지는 않습니다. 가장 치명적인 단점은 속성의 값(Value) 종류가 많은 속성을 지나치게 선호한다는 점입니다.

4.1 고유값(Cardinality) 문제와 정보 획득 비율(Gain Ratio)

극단적인 예로, 데이터에 각 사람의 '주민등록번호'가 포함되어 있다고 가정해 봅시다. 주민등록번호로 데이터를 나누면 모든 사람이 각각 하나의 그룹(Leaf Node)이 됩니다. 각 그룹에는 데이터가 1개뿐이므로 순도는 100%, 엔트로피는 0이 됩니다. 정보 획득량 수식에 따르면 이것이 최고의 분할이 되지만, 이는 새로운 데이터에 대해 전혀 예측을 못 하는 과적합(Overfitting) 모델이 됩니다.

이 문제를 해결하기 위해 C4.5 알고리즘에서는 정보 획득 비율(Gain Ratio)을 사용합니다. 이는 정보 획득량을 '분할 정보(Split Information)'로 나누어, 가지가 너무 많이 뻗어 나가는 속성에 페널티를 부여하는 방식입니다.

4.2 지니 불순도(Gini Impurity)와의 비교

또 다른 대안으로는 지니 불순도가 있습니다. CART 알고리즘에서 사용하는 이 지표는 로그 연산 대신 제곱 연산을 사용합니다.

$$ Gini(S) = 1 - \sum{i=1}^{c} pi^2 $$

지니 불순도는 엔트로피와 매우 유사한 경향성을 보이지만, 로그 연산이 없어 계산 속도가 더 빠르다는 장점이 있습니다. 실제 분석 환경에서는 엔트로피와 지니 불순도 간의 성능 차이가 크지 않아, 대용량 데이터 처리 시에는 지니 불순도가 선호되기도 합니다.


5. 결론: 데이터의 본질을 꿰뚫는 통찰

정보 엔트로피는 단순한 수학 공식을 넘어, 무질서한 데이터 속에서 질서를 찾아내는 핵심 원리입니다. 결정 트리 모델이 '스무고개'를 하듯 최적의 질문을 찾아내는 과정은, 바로 이 엔트로피를 최소화하여 정보 획득량을 극대화하려는 노력의 연속입니다.

우리가 Scikit-learn과 같은 라이브러리를 사용할 때 criterion='entropy'라는 파라미터 하나로 이 모든 과정을 자동화할 수 있지만, 그 이면에 숨겨진 불확실성의 감소라는 원리를 이해하는 것은 매우 중요합니다. 이는 모델이 왜 특정 변수를 중요하게 생각했는지 해석할 수 있는 힘을 길러주며, 더 나아가 데이터 전처리 단계에서 어떤 피처(Feature)를 남기고 제거할지 판단하는 직관을 제공하기 때문입니다.

데이터 사이언스를 공부하고 계신다면, $\log$ 기호 속에 숨겨진 이 '정보의 무게'를 꼭 기억하시기 바랍니다. 불확실성을 줄여나가는 과정, 그것이 바로 학습(Learning)의 본질이자 데이터 분석의 목표입니다.

신고하기