정보이론·연습 문제

분할의 가중 Gini

문제 설명PROBLEM

preview

분할의 가중 Gini

38번 Gini 불순도 는 하나의 분포에 대해 계산했죠. 의사결정 나무 가 이 지표를 실제 사용 하는 방식은 분할 후 두 자식 노드의 Gini 를 샘플 수 가중 평균 합니다:

Gsplit=LNGini(L)+RNGini(R)\text{G}_\text{split} = \frac{|L|}{N} \text{Gini}(L) + \frac{|R|}{N} \text{Gini}(R)

이 값이 작을수록 좋은 split — 자식 노드들이 더 "순수" 해진 것. 트리는 매 노드에서 이 지표를 최소화하는 feature/threshold 를 탐색합니다.

과제

함수 weighted_gini_split(labels_left, labels_right) 를 완성하세요.

  • 두 정수 레이블 배열 (각각 왼쪽/오른쪽 자식 노드의 샘플 레이블).
  • 각 배열의 클래스별 확률로 Gini 계산 후 가중 평균.
  • 한쪽이 빈 배열이면 해당 자식의 Gini 는 0 (샘플 없음).
  • 둘 다 빈 경우 0.0 반환.

테스트 케이스

#이름검증
1완벽 분할 (각 자식 단일 클래스)0
2한쪽 비어 있음 → 다른 쪽 Gini
3균등 섞임 (각 자식 50/50)0.5
4가중치 반영큰 쪽이 작은 쪽보다 영향 ↑
5수치 검증손계산과 일치
개념 노트와 실수 포인트

정보이론

  • 엔트로피=불확실성, 크로스엔트로피, KL 발산(분포 차이).
  • ⚠️ log 밑(자연로그 ln 가 기본)과 log(0) 처리.