결정 트리, Decision Tree
관측값과 목푯값을 연결시켜 주는 예측 모델로서 나무 모양으로 데이터를 분류함
- 수많은 트리 기반 모델의 기본 모델(based model)
- 선형 모델과는 달리, 트리 모델에서는 각 변수의 특정 지점을 기준으로 데이터를 분류해 가며 예측 모델을 만듦
장점 | 단점 |
데이터에 대한 가정이 없는 모델임(Nonparametric Model) | 트리가 무한정 깊어지면 오버피팅 문제를 야기할 수 있음 |
예를들어 선형 모델은 정규분포에 대한 가정이나 독립변수와 종속변수의 선형 관계 등을 가정으로 하는 모델인 반면, 결정 트리는 데이터에 대한 가정이 없어 어디에나 자유롭게 적용할 수 있음 | 추후에 등장할 트리 기반 모델들에 비하면 예측력이 상당히 떨어짐 |
아웃라이어에 영향을 거의 받지 않음 | |
트리 그래프를 통해서 직관적으로 이해하고 설명할 수 있음. 즉 시각화에 굉장히 탁월함 |
- 종속변수가 연속형 데이터와 범주형 데이터 모두에 사용할 수 있음
- 모델링 결과를 시각화할 목적으로 가장 유용
- 아웃라이어가 문제될 정도로 많을 때 선형 모델보다 좋은 대안이 될 수 있음
코드
from sklearn.tree import DecisionTreeClassifier
model = DecisionTreeClassifier()
model.fit(X_train, y_train)
pred = model.predict(X_test)
모델 이해
분류 결정 트리
DecisionTreeClassifier는 각 노드(Node)의 순도가 가장 높은 방향으로 분류함
- 순도: 한 노드 안에 여러 종류가 아닌 한 종류의 목푯값만 있는 상태에 대한 지표
- 순도를 평가하는 지표로 지니 인덱스(Gini index)와 교차 엔트로피(Cross Entropy)가 있음
낮은 순도 | 높은 순도 |
사과 3개, 복숭아 3개 | 사과 3개, 복숭아 0 |
지니 인덱스
$$ 1-\sum_{i=1}^n(p_i)^2 $$
- 순도가 높을 수록 지니 인덱스는 낮은 값을 보이며, 최댓값은 0.5, 최솟값은 0이 나올 수 있음
- 결정 트리에서는 지니 인덱스가 가장 낮은 값이 나오는 특정 변수의 특정 값을 기준으로 노드를 분류함
- 사이킷런의 결정 트리에서는 기본값으로 지니 인덱스를 사용함
교차 엔트로피
$$ -\sum_{i=1}^n(p_i)^2 \times log_2(p_i) $$
- 순도가 높을수록 낮은 값을 보이며, 최댓값은 1까지 나올 수 있음
회귀 결정 트리
DecisionTreeRegressor는 가장 낮은 MSE값이 나오도록 노드를 분류함
- MSE는 사이킷런의 결정 트리 모델에서 기본값으로 설정된 평가 기준
- 필요에 따라 매개변수를 이용하여 MSE 대신 MAE나 Poisson등으로 설정할 수 있음
트리 그래프
각 노드
- 분류 기준
- 지니 인덱스(gini)
- 총 데이터 수(samples)
- 목푯값 0과 1의 개수(value)
참고: 데싸노트의 실전에서 통하는 머신러닝
반응형