결정트리 (Decision Tree)

Seung Joo·2021년 6월 15일
0

결정트리 분류 (Decision Tree Classifier)

결정트리는 결정에 다다르기 위해 예 / 아니오 질문을 이어나가면서 학습한다.
이 질문은 스무고개 놀이의 질문과 비슷하다.

위 그림에서 트리의 노드는 질문이나 정답을 담은 네모 상자다.
마지막 노드는 리프(leaf)라고도 한다.

질문이나 말단의 정답을 노드(node)
노드를 연결한느 선(edge)

  • 결정 트리의 구조
    Root node -> internal node -> (extrnal, leaf, terminal) node

루트 노드(Root Node)라는 맨 위의 노드에서, 가장 잘 나눌 수 있는 기준이 되는 특성을 가지고 그것을 축으로 구분을 하게되고, 완전히 분류되지 못한 분기에서 또 다른 테스트를 반복하는 프로세스는 각 노드가 테스트 하나씩을 가지는 이진 결정트리가 된다. 계속 해서 반복되어 분류된 노드는 하나의 클래스를 가질 때까지 반복된다.
타깃 하나만으로 이뤄진 리프노드를 순수노드(pure node)라고 한다.

결정트리 학습 알고리즘

결정트리의 비용함수를 정의하고 그것을 최소화 하도록 분할하는 것

지니 불순도 (Gini Impurity)

IG(p)=i=1Jpi(1pi)=1i=1Jpi2{\displaystyle {I}_{G}(p)=\sum _{i=1}^{J}p_{i}(1-p_{i})=1-\sum _{i=1}^{J}{p_{i}}^{2}}

엔트로피 (Entropy)

H(T)=IE(p1,p2,...,pJ)=i=1Jpilog2pi{\displaystyle \mathrm {H} (T)=\operatorname {I} _{E}\left(p_{1},p_{2},...,p_{J}\right)=-\sum _{i=1}^{J}{p_{i}\log _{2}p_{i}}}

불순도(Impurity)의 개념

여러 범주가 섞여있는 정도

예)
A,B 두 클래스가 혼합된 데이터가 있을 때 비율
(45%, 55%)인 두 범주가 비슷한 경우는 불순도가 높은 것
(80%, 20%)이면 상대적으로 위의 상태보다 불순도가 낮은 것(순수도(purity)는 높음)

불순도가 낮은 경우 지니 불순도나 엔트로피는 낮은값을 가지게 된다.

결정트리의 복잡도 제어

일반적으로 결정 트리의 모든 리프 노드가 순수 노드가 될 때까지 진행하면 모델이 복잡해지고, 훈련 데이터에 과적합이 된다.

과대적합을 막는 방법

  • 사전 가지치기
    트리 생성을 일찍 중단하는 전략
  1. 트리의 최대갯수 제한
    max_depth 트리의 최대깊이를 제한
    max_leaf_nodes 리프 노드의 최대 개수 지정
    min_samples_leaf 리프 노드가 되기 위한 최소한의 샘플 개수 지정
    min_samples_split 노드가 분기할 수 있는 최소 샘플의 개수 지정
    트리의 깊이를 제한하면 훈련 세트의 정확도를 떨어뜨리지만 테스트 성능은 개선

노드가 분할하기 위한 포인트의 최소 개수 지정

  • 사후 가지치기
    트리를 만든 후 데이터 포인트가 적은 노드를 삭제하거나 병합하는 전략

트리의 특성 중요도 (Feature importance)

트리를 만드는 결정에 각 특성이 얼마나 중요한지를 평가

특성중요도 값은 0과 1사이의 숫자로 각 특성에 대해 0은 전혀 사용되지 않았다는 뜻이고, 1은 완벽하게 타깃 클래스를 예측했다는 뜻이다.
특성 중요도의 전체합은 1이다.


위의 그래프는 특성의 중요도를 순서대로 나타낸 것이다.

특성중요도의 값이 낮다고 해서 이 특성이 유용하지 않다는 뜻은 아니다. 단지 트리가 그 특성을 선택하지 않았을 뿐이며 다른 특성이 동일한 정보를 가지고 있어서일 수도 있다.

결정 트리의 장단점

장점

  1. 만들어진 모델을 쉽게 시각화할 수 있어서 작은 트리일 경우 비전문가도 이해하기 쉽다.
  2. 데이터의 스케일에 구애받지 않는다.
    각 특성이 개별적으로 처리되어 데이터를 분할하는데 데이터 스케일의 영향을 받지 않으므로 결정트리에서는 정규화나 표준화 같은 전처리 과정이 필요없다.

단점

과적합이 잘 일어나 일반화 성능이 좋지 않다.

profile
조금씩 천천히

0개의 댓글