Machine Learning/Supervised Learning

[Supervised Learning] Decision Tree

데이터 세상 2021. 3. 24. 18:54

Decision Tree (결정 트리)

  • 분류와 회귀 문제에 널리 사용하는 모델
  • 결정에 다다르기 위해 예/아니오 질문을 이어 나가면서 학습
  • 결정 트리의 학습은 정답에 가장 빨리 도달하는 예/아니오 질문(테스트) 목록을 학습한다는 뜻

  • 트리 만들기는 모든 리프 노드가 순수 노드가 될 때까지 진행
    • 모델이 매우 복잡해지고 훈련 데이터에 과대 적합(overfitting)됨
    • 적절한 리프 노드의 샘플 개수와 트리의 깊이에 제한을 둬서 과대 적합 방지해야 함
  • 과대 적합(overfitting)을 막기 위해 사전 가지치기(pre-pruning)와 데이터 포인트가 적은 노드를 삭제하거나 병합하는 방법 사용

장점

  • 수학적인 지식이 없어도 결과를 해석하고 이해하기 쉽다
  • 수치 데이터 및 범주 데이터에 모두 사용 가능하다

단점

  • overfitting의 위험이 높다
  • 학습 시 적절한 리프 노드의 샘플 개수와 트리의 깊이에 제한을 둬서 학습 데이터에 너무 모델이 치우지지 않게 주의해야 한다

Pre-Pruning

  • 트리의 최대 깊이나 리프의 최대 개수를 제한하거나 노드가 분할하기 위한 포인트의 개수를 지정하는 것
  • Scikit-learn 패키지에서는 pre-pruning만 지원

장점

  • 만들어진 모델을 쉽게 시각화할 수 있어서 비전문가도 이해하기 쉽다
  • 데이터 스케일에 구애 받지 않는다

단점

  • 사전 가지치기를 사용해도 과대 적합되는 경향이 있어 일반적 성능이 좋지 않으며 새로운 데이터를 예측할 능력이 부족한다.

Information Entropy (정보 엔트로피)

Entropy (엔트로피)

  • 불확실성을 수치적으로 표현한 값

Information gain (정보 이득)

  • 질문 이전의 엔트로피에서 질문 이후의 엔트로피를 뺀 값
  • 불확실성이 줄어 든 정보

질문 후의 정보 이득 = 질문 전의 엔트로피 - 질문 이후 엔트로피

Gain(T,X) = Entropy(T) - Entropy(T,X)

 

Gini Coefficient (지니 계수)

특징이 항상 이진 분류로 나뉠 때 사용

지니 계수가 높을수록 순도가 높음

  • 순도가 높다는 뜻은 한 그룹에 모여있는 데이터들의 속성들이 많이 일치한다는 뜻

Hyper Parameter

from sklearn.tree import DecisionTreeClassifier
clf = DecisionTreeClassifier(max_depth=4, 
                             min_samples_split=2, 
                             min_samples_leaf=2, 
                             random_state=70)

max_depth

  • 트리의 최대 한도 깊이
  • default는 None. 완벽히 클래스 결정값이 될 때까지 깊이를 계속 키우거나 노드가 가지는 데이터 개수가 min_samples_split보다 작아질 때까지 계속 분할
  • 깊이가 깊어지는 min_samples_split 설정대로 최대 분할하여 과적합할 수 있으므로 적당한 값으로 제어

min_samples_split

  • 자식 노드를 갖기 위한 최소한의 데이터 개수
  • 노드를 분할하기 위한 최소한의 샘플 데이터 수로 과적합 제어에 사용
  • defaultsms 2, 작게 설정할수록 분할되는 노드가 많아져 과적합 가능성이 증가

min_sample_leaf

  • 리프 노드의 최소 데이터 개수
  • 과적합 제어 용도
  • 비대칭적 데이터의 경우 특정 클래스의 데이터가 극도로 작을 수 있어 이 경우에는 작게 설정

max_features

  • 최적의 분할을 위해 고려할 최대 feature 개수
  • default는 None으로 데이터 세트의 모든 feature를 사용하여 분할

max_leaf_nodes

  • 리프 노드 최대 개수

random_state

  • 동일한 정수를 입력했을 때 학습 결과를 항상 같게 만들어주는 파라미터

시각화

 

Decision Tree Visualization

  • gini: 불순도 척도. 0일 경우 모든 샘플이 하나의 레이블을 가지며, 1에 가까울수록 여러 레이블이 한 노드에 존재함
  • samples: 노드 안에 들어 있는 데이터의 개수
  • value: 레이블별 데이터의 개수
  • class: 레이블

References

반응형