01. 결정 트리(Decision Tree)
- 설명이 필요할 때 유용한 모델
- 일련의 질문에 대한 결정을 통해 데이터를 분해
- 결정 알고리즘
- 트리의 루트(root, 즉 제일 상위에 있는 노드)에서 시작해서 정보 이득(Information Gain, IG)가 최대가 되는 특성으로 데이터를 나눔
- 반복 과정을 통해 리프 노드(leaf node, 즉 마지막 노드)가 순수해질떄까지 모든 자식 노드에서 이 분할 작업을 반복
- 즉, 각 노드의 모든 훈련 샘플은 동일한 클래스에 속함
- 노드가 많은 깊은 트리의 문제점: 과대 적합의 문제 발생 → 일반적으로 트리의 최대 깊이를 제한하여 트리를 가지치기(pruning)함
02. 정보 이득 최대화: 자원을 최대로 활용
- 트리 알고리즘으로 목적 함수를 사용하는 이유: 가장 정보가 풍부한 특성으로 노드를 나누기 위해
- 목적 함수의 역할: 각 분할에서 정보의 이득을 최대화함
- 정보 이득: 부모 노드의 불순도와 자식 노드의 불순도의 합의 차이를 이용해서 계산
- 자식 노드의 불순도가 낮을수록 정보 이득이 커짐
- 구현을 간단, 탐색 공간을 줄이기 위해 대부분의 라이브러리는 이진 결정 트리를 사용
- 보통 불순도 조건을 바꾸어 튜닝하기보다 가지치기 수준을 바꾸면서 튜닝하는 것이 좋음
- 이진 결정 트리에서 사용되는 세 개의 불순도 지표(분할 조건)
- 지니 불순도(Gini impurity): 잘못 분류될 확률을 최소화하기 위한 기준
- 클래스가 완벽하게 섞여있을 경우: 지니 불순도 최대
- 지니 불순도와 앤트로피 모두 비슷한 결과 출력
- 앤트로피(entropy): 트리의 상호 의존 정보를 최대화하는 것
- 한 노드의 모든 샘플이 같은 클래스인 경우: 앤트로피 0
- 클래스 분포 균등 : 앤트로피 최대
- 분류 오차(classfication error): 가지치기에는 좋은 조건, 결정 트리를 구성하는데 권장되지는 않음
- 이유: 노드의 클래스 확률 변화에 덜 민감함
- 지니 불순도(Gini impurity): 잘못 분류될 확률을 최소화하기 위한 기준
03. GraphViz
- 사이킷런의 결정 트리를 그리기 위해 사용하는 프로그램
- 사이킷런이 훈련 후 결정트리를 .dot파일로 추출하는 기능을 GraphViz를 통해서 이 파일을 시각화 할 수 있음
- 리눅스, 윈도, macOS 모두 지원
- 비슷한 기능을 가진 파이썬 라이브러리: PyDotPlus
'머신러닝 & 딥러닝' 카테고리의 다른 글
[머신러닝 & 딥러닝] 랜덤 포레스트 (RandomForest)의 특성 중요도 사용 (0) | 2025.04.22 |
---|---|
[머신 러닝 & 딥러닝] 랜덤 포레스트 (Random Forest) (0) | 2025.04.22 |
[머신러닝 & 딥러닝] K-Means 튜닝 하이퍼파라미터 (0) | 2025.04.21 |
[머신러닝 & 딥러닝] 딥러닝을 시작하기 전에 (0) | 2025.04.21 |
[머신러닝 & 딥러닝] 비지도 학습에서의 성능 평가 (2) - 실루엣 그래프 (0) | 2025.04.17 |