[기계학습개론] Decision Tree

SUbbb·2021년 10월 25일
0

기계학습개론

목록 보기
5/10
post-thumbnail

Decision Tree, Hyperparameter tuning

Recall Iris Dataset

  • multi-class 분류를 위한 Logistic Regression (+ softmax regression)

Training & Visualizing a Decision Tree

DT: IF와 ELSE로 이루어짐

  • "max_depth=2": 분기문이 2개
  • "random_state=42": 일종의 seed값으로, 매번 결과가 달라지지 않게 하기 위해 특정 값으로 고정

의사 결정 트리란 무엇인가 ?

  • decisions의 tree-like model을 사용하는 decision support tool이다.
    • conditional control statements를 포함하는 알고리즘을 display

Decision tree 학습:

  • classification과 regression에 사용되는 지도 학습
  • data feature에서 추론한 간단한 decision rule(조건문)들을 학습하여 target 변수의 값을 예측하는 모델을 생성한다.

DT의 이점

  • 매우 간단하다.
    • 구현이 쉽다.
  • Versatile: 분류 문제도 해결 가능
  • White box: 모델에 대한 해석이 가능
    • black box(ex. DNN)와 반대되는 개념
  • data preparation(preprocessing)이 적다.

DT: detail

node의 attributes

  • samples: node당 해당하는 총 개수
  • value: 해당 node가 적용되는 각 class 내부의 학습 instance 수를 나타냄
    • 학습 결과에 대한 분석의 증거자료가 된다.
  • gini: 불순도 측정치
    • 모든 학습 instance가 동일한 class에 속하는 경우, node가 pure하다라고 하고 이때의 gini=0

  • pure의 정도: 주황 > 보라 > 초록 (gini가 작은 순)
  • 초록: value = [0, 49, 5] \rarr 총 54개의 sample 중 5개가 error
  • 보라: value = [0, 1, 45] \rarr 총 46개의 sample 중 1개가 error

DT와 Decision boundaries

  • 두꺼운 선은 decision boundary를 의미하고 Impure한 영역에 대해서는 class를 더 나눔으로써 (Depth=1, Depth=2 추가) 해결

DT를 학습하는 방법: CART (in scikit-learn)

DT 학습 알고리즘

Classification and Regression Tree (CART) algorithm

  • 단일 특징 k와 threshold tkt_k를 선택하고 이에 따라 training set을 두 개의 하위 set으로 나눔
  • 이후 accuracy를 측정
  • cost function을 바탕으로 수정

주의사항: 언제까지 학습?

  • 지정한 max_dept hyperparameter에 도달한 경우
  • impurity가 0일 때까지(더 이상 줄어들지 않는 경우)

\rarr greedy algorithm (반드시 최적이라는 보장이 없음, max_depth가 지정된 경우 첫 split에 따라 달라질 수 있음)

Parametric or non-parametric?

Data 관점

  • non-paramertic: 랜덤값으로 인해 확률분포로 모델링이 불가능한 data
  • parametric: 정규분포로 데이터 전체를 모델링할 수 있는 data

DT는 non-parametric data로부터도 구현 가능 (확률분포가 없어도 구현이 가능하다.)

Another criterion

gini와 함께 entropy 또한 측정치로 사용 가능 (결과의 차이는 없음)

  • ML에서 특정 dataset의 set의 entropy가 0
    \rarr 한 class만 존재, 정보량의 가치가 없다. (아주 pure)

어떤 파라미터를 사용해야 하는가?

Recall other ML methods

  • input data의 차원을 미리 가정했어야 함

  • solver 속성과 같이 여러 속성에 대한 parameter를 지정해야 함

in DT

  • training data에 대한 매우 적은 가정만으로도 가능
    • Linear Regression의 경우 input data의 차원이 성능에 큰 영향
  • 아무 parameter가 없이도 가능 (max_depth가 무한이 됨 \rarr overfitting의 가능성이 커짐)
    • Linear Regression, Logistic Regression은 parameter가 없으면 모델 스스로가 parameter를 알 수 없음.

No parameter for DT

from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier

iris = load_iris()
X = iris.data[:,2:] # petal length and width
y = iris.target

tree_clf = DecisionTreeClassifier()
tree_clf.fit(X,y)
  • DecisionTreeClassifier 에 대한 어떠한 parameter도 주어지지 않음
  • overfitting 될 수도 있다.

  • depth는 5개, gini가 작아지는 쪽으로 계속 이동
  • Nonparametric case
    • parametric model의 경우, parameter들에 대한 가정이 수반되어야 함

Regularization Hyperparameters

  • 학습동안 DT의 자유도를 제한해야 한다 \rarr overfitting을 방지하기 위함
    • Regularization
    • 자유도와 정확도의 tradeoff (자유도를 제한하게 되면 정확도은 당연히 저하)
  • DT의 maximum depth를 줄이는 것도 규제의 한 방법
  • Others:
    • min_samples_split (split 결정조건이 현재 노드의 최소 샘플 수)
    • min_samples_leaf (leaf 노드가 가져야 하는 최소 샘플 수)
    • max_features (각 노드로 분류할 경우, 최대 features 수, 이는 특정 feature에 overfitting되지 않기 위함)

Regression using DT

Regression tree

  • 노이즈가 있는 2차 dataset에 대한 학습

  • DecisionTreeRegressor 사용

    • criterion 이 gini나 entropy가 아닌 mse를 사용
  • class가 존재하지 않는다.

  • CART cost function for regression

DT의 장단점

장점

  • 이해와 분석이 쉽다.
  • 사용이 쉽다.
  • Versatile (분류, 회귀 가능)
  • Powerful (accuracy는 잘 맞추지만, 일반화는 어렵다.)

단점

  • DT는 직교 decision boundaries를 선호한다.
    • 모든 분할은 축에 수직.
  • training set의 약간의 변화에도 민감하게 decision boundary가 변한다.
    • 오른쪽 dataset은 원본을 45도 변화시킴 \rarr 불필요하게 나뉜 형태
    • 또 다른 예로 training data를 일부 제외하게 되면 아래와 같이 결과가 달라진다. 비교
profile
배우고 정리하고 공유하기

0개의 댓글