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] → 총 54개의 sample 중 5개가 error
- 보라: value = [0, 1, 45] → 총 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 tk를 선택하고 이에 따라 training set을 두 개의 하위 set으로 나눔
- 이후 accuracy를 측정
- cost function을 바탕으로 수정
주의사항: 언제까지 학습?
- 지정한 max_dept hyperparameter에 도달한 경우
- impurity가 0일 때까지(더 이상 줄어들지 않는 경우)
→ 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
→ 한 class만 존재, 정보량의 가치가 없다. (아주 pure)
어떤 파라미터를 사용해야 하는가?
Recall other ML methods
- input data의 차원을 미리 가정했어야 함
- solver 속성과 같이 여러 속성에 대한 parameter를 지정해야 함
in DT
- training data에 대한 매우 적은 가정만으로도 가능
- Linear Regression의 경우 input data의 차원이 성능에 큰 영향
- 아무 parameter가 없이도 가능 (max_depth가 무한이 됨 → 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:]
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의 자유도를 제한해야 한다 → 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
DT의 장단점
장점
- 이해와 분석이 쉽다.
- 사용이 쉽다.
- Versatile (분류, 회귀 가능)
- Powerful (accuracy는 잘 맞추지만, 일반화는 어렵다.)
단점
- DT는 직교 decision boundaries를 선호한다.
- training set의 약간의 변화에도 민감하게 decision boundary가 변한다.
- 오른쪽 dataset은 원본을 45도 변화시킴 → 불필요하게 나뉜 형태
- 또 다른 예로 training data를 일부 제외하게 되면 아래와 같이 결과가 달라진다. 비교