반응형
불순도(impurity)는 말 그대로 "데이터가 얼마나 섞여 있는가"를 나타내는 지표
트리 기반 모델에서는 데이터를 분할(split) 할 때마다 이 "불순도"를 줄이는 방향으로 나누려고함
즉, 하나의 노드 안에 한 클래스가 압도적으로 많아지게 만드는 분할이 좋다고 판단
-> 클래스 0 또는 클래스 1 중 하나로 쏠린 그룹을 만드는 것을 선호
1. 불순도 감소 진행 방식
어떤 노드에 100개의 샘플이 있다고 할 때
이 중에서 클래스가 1인 게 50개, 클래스 0인 게 50개
그럼 이건 아주 섞여 있는 상태 = 불순도가 높음
근데 어떤 변수로 나눴더니:
- 왼쪽 노드: 클래스 1이 45개, 클래스 0이 5개 → 거의 한 쪽 클래스
- 오른쪽 노드: 클래스 0이 45개, 클래스 1이 5개 → 역시 거의 한 쪽 클래스
이런 식으로 나뉘면, 각 노드의 불순도는 낮아지고, 전체적으로 "불순도 감소"가 컸다고함
2. 대표적인 불순도 지표
[트리 모델에서 사용하는 대표적인 불순도 지표]
Gini 불순도 | CART (RandomForest, XGBoost 기본값)에서 주로 사용 |
Entropy (엔트로피) | 정보 이득(information gain) 계산에 사용 |
Misclassification Error | 단순 분류 오류율 |
3. 불순도 감소 계산 공식
트리가 어떤 노드를 분할할 때,
전체 불순도 감소 = 부모 노드의 불순도 − (왼쪽 자식 노드 불순도 × 샘플 비율 + 오른쪽 자식 노드 불순도 × 샘플 비율)
Δ impurity = impurity(parent) - [impurity(left) * (n_left/n_total) + impurity(right) * (n_right/n_total)]
4. Feature Importance와의 관계
- 트리 모델은 데이터를 여러 번 분할하는데,
- 어떤 변수가 여러 번 분할에 사용되고, 그때마다 불순도 감소량이 크면,
그 변수는 전체 예측 성능에 큰 기여를 했다고 판단해 → 중요도 높게 책정됨
[정리 한 줄 요약]
불순도 감소는 트리 모델이 데이터를 나눌 때 "얼마나 잘 구분되게 나눴는가"를 판단하는 기준이고,
이 값이 크면 클수록 해당 변수는 중요한 변수로 간주된
반응형
'Data Anlaytist' 카테고리의 다른 글
RFE(Recursive Feature Elimination)와 RFECV (RFE with Cross-Validation) 개념 정리 (2) | 2025.04.11 |
---|---|
데이터 분석 시, 결측치(missing value)를 어떻게 처리할 수 있을까? (0) | 2025.03.31 |
A/B 테스트가 왜 필요할까? (3) | 2025.03.26 |
vscode 소스 제어 활용 / 병합 충돌 해결하기 (1) | 2025.02.06 |
melt()를 활용한 데이터 변환과 플롯 시각화 (0) | 2025.02.05 |