
106
파이썬 라이브러리를 활용한 머신러닝(번역개정판)
결정 트리의 복잡도 제어하기
일반적으로 트리 만들기를 모든 리프 노드가 순수 노드가 될 때까지 진행하면 모델이 매우 복
잡해지고 훈련 데이터에 과대적합됩니다. 순수 노드로 이루어진 트리는 훈련 세트에
100
% 정
확하게 맞는다는 의미입니다. 즉 훈련 세트의 모든 데이터 포인트는 정확한 클래스의 리프 노
드에 있습니다. [그림
2
-
26
]의 왼쪽 그래프가 과대적합된 것으로 볼 수 있습니다. 클래스
0
으
로 결정된 영역이 클래스
1
에 속한 포인트들로 둘러쌓인 것을 볼 수 있습니다. 그 반대 모습도
보입니다. 이는 바람직한 결정 경계의 모습이 아닙니다. 결정 경계가 클래스의 포인트들에서
멀리 떨어진 이상치
outlier
하나에 너무 민감하기 때문입니다.
과대적합을 막는 전략은 크게 두 가지입니다. 트리 생성을 일찍 중단하는 전략 (
사전 가지치기
pre
-
pruning
)과 트리를 만든 후 데이터 포인트가 적은 노드를 삭제하거나 병합하는 전략입니다
(
사후 가지치기
post
-
pruning
또는 그냥
가지치기
pruning
). 사전 가지치기 방법은 트리의 최대 깊이나
리프의 최대 개수를 제한하거나, 또는 노드가 분할하기 위한 포인트의 최소 개수를 지정하는
것입니다.
scikit
-
learn
에서 결정 트리는
DecisionTreeRegressor ...