Decision Trees Explained - Entropy, Information Gain, Gini Index

학습 목표 매핑

SKALA 3기 Module 3 — ML/Deep Learning (Learning Objective 3-1)

  • Objective: 의사결정나무의 분할 기준(Gini Index vs Entropy)을 설명하고, 각 기준의 수식을 유도할 수 있다 (Bloom L2-L3)
  • Evaluation: 회귀/분류 문제에서 어느 기준을 사용해야 하는지 정당화 + 수치 계산 예시 제시

개념 요약

Entropy (엔트로피)

정의: 노드의 불순도(disorder) 또는 불확실성을 측정하는 정보론 개념

범위:

  • 최솟값: 0 (완전히 순수한 노드, 한 클래스만 존재)
  • 최댓값: 1 (완전히 균등한 분포)

수식:

여기서 는 각 클래스의 확률

구체적 예시 (Pass=9, Fail=6):

  • Entropy =
  • = 0.9183

Gini Index (지니 지수)

정의: “임의로 선택된 데이터가 잘못 분류될 확률”을 측정

범위:

  • 최솟값: 0 (완전히 순수함)
  • 최댓값: 0.5 (완전히 균등한 분포)

수식:

여기서 는 각 클래스의 확률

구체적 예시 (CS 배경, 모두 Pass):

  • ,
  • Gini = (완전히 순수함)

Information Gain (정보 이득)

정의: 부모 노드에서 자식 노드로의 엔트로피 감소량

수식:

역할: 어느 변수가 가장 좋은 분할을 제공하는지 결정 (높을수록 좋음)

선택 기준:

  • Information Gain이 가장 큰 변수를 루트 노드 또는 분할 기준으로 선택
  • 각 깊이에서 반복적으로 적용하여 트리 구성

핵심 개념: Entropy vs Gini

측면EntropyGini Index
수식 복잡도로그 함수 포함더 간단
계산 비용약간 높음약간 낮음
최댓값1.00.5
알고리즘ID3, C4.5 (정보 이득 기반)CART, scikit-learn (Gini 기반)
분류 성능대부분 유사대부분 유사

실무적 선택:

  • 둘 다 변수 선택에 사용되며, 결과는 대체로 유사
  • scikit-learn DecisionTreeClassifier는 기본값으로 Gini Index 사용
  • ID3/C4.5는 Information Gain 기반

학습 설계 포인트

Cognitive Level (Bloom)

  • L2 (Understand): Entropy/Gini 정의 설명, 수식 해석
  • L3 (Apply): 주어진 데이터셋에서 수치 계산
  • L4 (Analyze): Entropy vs Gini 선택 기준 분석

Hands-On Practice

import numpy as np
from sklearn.tree import DecisionTreeClassifier
 
# 예시: 15개 데이터 (Pass=9, Fail=6)
X = np.array([[...], [...], ...])  # Feature matrix
y = np.array([1,1,1,1,1,1,1,1,1, 0,0,0,0,0,0])  # Target
 
# Gini 기반 트리 (기본값)
clf_gini = DecisionTreeClassifier(criterion='gini', random_state=42)
clf_gini.fit(X, y)
 
# Entropy 기반 트리 (information gain)
clf_entropy = DecisionTreeClassifier(criterion='entropy', random_state=42)
clf_entropy.fit(X, y)
 
# 결과 비교: 대부분의 경우 유사하지만 깊은 트리에서는 차이 발생 가능

참고 자료

선행 개념

이 개념을 배우기 전에 필수로 알아야 할 것:

  1. Module 2-1, 2-3 → eda-exploratory-data-analysis-geeksforgeeks, data-visualization-3-layer-guide: 데이터 탐색과 분포 분석
    • 왜?: Decision Tree가 어떤 특성을 기반으로 분할하는지 이해하려면, 먼저 데이터의 분포를 파악해야 함
    • 예: “이 변수가 타겟 변수와 강한 상관성을 보임” → “Decision Tree가 이를 분할 기준으로 선택함”
  2. 기본 확률·통계: 확률(p), 로그 함수 개념

후속 개념 (이 개념이 선행)

이 개념을 배운 후 다음 단계:

  1. Module 3-2 → random-forest-gradient-boosting-xgboost: Decision Tree를 기반으로 하는 Ensemble 방법
    • “Decision Tree 여러 개를 결합하여 과적합 감소”
  2. Module 3-4 → tensorflow-keras-quickstart: 신경망과의 비교
    • “Decision Tree(해석 가능) vs Neural Network(성능 우수)” 비교

타 소스와의 연계

random-forest-gradient-boosting-xgboost (Ensemble 방법이 의사결정나무 개선)