daisy9 2022. 11. 3. 14:40

CART = Classification and Regression Trees 의 약자로 decision tree의 일종이다.

 

CART의 가장 큰 장점은

- 특성변수(X)가 연속형이든 범주형이든 상관없이 적용할 수 있다는 점

- 이상치에 영향을 받지 않는다는 점

이다.

 

decision tree를 만들 때 중요한 것은

1. 노드 선택의 기준

2. 나무의 깊이 이다. 깊이가 너무 깊으면 overfitting의 위험이 있다.

회귀 나무와 분류 나무 각각에서 어떻게 선택해야 하는지 보도록 하겠다.

 

Regression tree (회귀 나무)

- y가 연속변수일 때 사용하며, 각 cell/region에서 평균값을 할당한다.

 

- 노드 선택의 기준: 특성변수별로 왼쪽과 오른쪽의 분산을 더하여 SSE를 계산한다.

좋은 나무는 그룹별로 비슷한 특성을 가지도록 분류해야 하기 때문에 SSE가 작은 것이 좋다. 

따라서 SSE가 가장 작은 특성변수부터를 기준으로 split 한다.

 

파이썬 코드는 다음과 같다.

from sklearn import tree
dtc = tree.DecisionTreeRegressor(criterion='', max_depth=3, random_state=1)

 

 

Classification tree (분류 나무)

- y가 이산변수일 때 사용하며, 각 cell/region에서 비중이 가장 큰 class를 할당한다.

 

- 노드 선택의 기준: 불순도 측도 (impurity measure)를 사용한다. 

불순도 측도로는 3가지가 있다. Gini Index, Cross Entropy, Misclassification Error

잘 분류된 나무일수록 불순도가 낮을 것이다. 따라서 불순도가 낮을수록, 순도가 높을수록 좋다.

만일 어떤 클래스가 분류되는 확률이 1/2이면 가장 불순도가 높고 0 또는 1에 가까워질수록 순도가 높다. 

 

더 보편적으로는 Information Gain을 계산한다.

Information Gain이 높을수록 좋아 IG가 최대가 되도록 node를 선택해준다.

 

파이썬 코드는 다음과 같다.

from sklearn import tree
dtc = tree.DecisionTreeClassifier(criterion='gini', max_depth=3, random_state=1)