[머신러닝] 분류 개요 : 결정 트리 (Decision Tree)

분류(Classification)

  • 학습 데이터로 주어진 데이터의 피처와 레이블값을 머신러닝 알고리즘으로 학습하여 모델을 생성
  • 생성된 모델에 새로운 데이터가 주어졌을 때 어떤 레이블에 속하는지 값을 예측한는 것

대표적인 분류 알고리즘

  • 베이즈 통계 기반 나이브 베이즈(Naive Bayes) : 스팸 필터
  • 선형 로지스틱 회귀 (Logistic Regression) : 이름은 회귀지만 대표적인 분류 알고리즘 / 강력한 이진 분류 선형 모델
  • 데이터 균일도에 따른 규칙 기반의 결정 트리(Decision Tree) : 설명이 중요할 때 유용한 모델
  • 근접 거리 기준의 최소 근접(Nearest Neighbor) 알고리즘 : KNN 알고리즘 (유클리디안 거리 이용)
  • 심층 연결 기반의 신경망(Neural Network) : RNN, CNN 등의 딥러닝
  • 앙상블(Ensemble) : 서로 다른(or 같은) 머신러닝 알고리즘을 결합

결정 트리 (Decision Tree)

장점

  • 쉽고 다양하게 적용가능
  • 데이터의 스케일링, 정규화 등의 전처리 영향이 매우 적음

단점

  • 과적합(overfitting) 발생 가능성 높음 : 예측성능 향상을 위한 복잡한 구조(depth)가 과적합을 야기할 수 있음
  • 앙상블을 통해 응용가능 → 약한 학습기를 대표로 자주 결합됨 : GBM, XGBoost, LightGBM,  RandomForest

 

훈련 데이터에 있는 특성을 기반으로 샘플의 클래스 레이블을 추정할 수 있는 일련의 질문들을 학습한다.  결정 알고리즘은 트리의 루트에서 지가해 정보 이득이 최대가 되는 특성으로 데이터를 분류한다.  if-else 기반 규칙으로 데이터 안에서 학습을 통해 자동으로 규칙을 찾아내어 트리 기반으로 구성한다.

 

출처 : https://nicola-ml.tistory.com/93

정보 이득 최대화

목적함수 :

 

$f$ : 분할에 사용할 특성 / $D_p, D_j$ : 부모와 $j$번째 자식 노드의 데이터셋 / $I$ : 불순도 지표

목적함수는 각 분할에서 정보이득을 최대화한다.  정보 이득 지수로 분할 기준을 정한다. 즉, 정보 이득이 높은 속성을 기준으로 분류하는 것이다.

 

불순도의 지표 (분할조건) 

서로 다른 값이 섞여 있으면 높고 같은 값이 섞여 있으면 낮다. 

 

  • 지니계수 : DecisionTreeClassfier 의 criterion 매개변수 기본 값
  • 엔트로피 : 지니계수와 결과 유사
  • 분류오차 : 클래스 확률변화에 둔감하므로 결정 트리 구성에 추천되지 않음

결정 트리의 주요 매개변수(파라미터)

max_depth - 트리의 최대 깊이를 설정
- 디폴트 : None → min_samples_split에 도달할 때 까지완전 분류 
- 너무 크면 과적합 유발하므로 튜닝 필요
max_features - 최대 피처 개수 설정 
- 디폴트 : None → 모든 피처 사용
max_leaf_nodes - 리프 노드의 최대 개수 지정 
min_samples_leaf - 리프 노드가 되기 위한 최소 샘플 갯수, 비율 → 과적합 제어
- 비대칭적 데이터의 경우 한쪽으로 몰릴 수 있으므로 작게 조절
- 디폴트 : 1
min_samples_split - 노드 분할을 위한 최소한의 샘플 갯수 → 과적합 제어
- 디폴트 : 2
min_impurity_decrease - 노드 분할이 감소시킬 최소 불순도
- 디폴트 : 0

 

결정 트리의 시각화 : Graphviz

결정 트리의 피처 선택 중요도

DecisionClassifier 객체의 feature_importances_ : 학습/예측을 위해 중요한 피처들을 선택할 수 있는 정보 제공