My Data Story
[회귀] 결정 트리 회귀 모델 본문
◈ '결정 트리' 목차 ◈
2. 결정 트리 회귀 모델
결정 트리 회귀 모델의 생성 원리와 결정 트리의 활용 및 불안정성에 대해 살펴보자.
1. 결정 트리 회귀 모델 생성 원리
1.1 재귀 분할
예측값과 실제값 사이의 차이가 감소하도록 예측 변수 값을 기준으로 반복적으로 데이터를 분할해나간다.
응답 변수 Y와 P개의 예측 변수 집합 X(j) (j=1,2 ... , P) 있다고 가정할 때,
파티션 A를 두 개의 하위 영역으로 나누는 가장 좋은 재귀적 분할 방법은 다음과 같다.
step1
모든 예측 변수 X(j)에 대해
a. X(j) 에 해당하는 모든 변수 값 s(j) 에 대해,
i. A에 해당하는 모든 레코드를 X(j) < s(j) 인 부분과 X(j) >=s(j) 인 부분으로 나눈다.
ii. A의 각 하위 분할 영역 안에 예측 오차를 측정
b. 하위 분할 영역 내에서의 예측 오차가 가장 작은 sj 값을 선택한다.
모든 예측 변수 X(j) 에 대한 가능한 임계값 s(j) 의 쌍에 대해 step1 을 진행한다.
step2
예측 오차가 가장 작은 X(j) 와 s(j) 값을 선택하고, A를 두 부분 A1 과 A2로 나눈다.
step3
A1 과 A2 각각에 대해서 step1 ~ step2 과정을 반복한다.
분할해도 더 이상 예측 오차가 개선되지 않을 정도로 충분히 분할을 진행했을 때, 알고리즘을 종료한다.
step4
각 영역의 예측값은 항상 그 영역에 있는 타깃값의 평균이다.
즉 leaf node 에 속하는 학습 데이터의 y 값 평균이 예측값이다.
1.2 CART 알고리즘
회귀 문제에 결정 트리 구현 할 경우, CART 알고리즘을 사용할 수 있다.
훈련 세트를 불순도를 최소화하는 방향으로 분할하는 대신, 평균제곱오차(MSE) 최소화하도록 분할한다.
즉 각 하위 분할 영역에서 평균으로부터의 편차들을 제곱한 값을 최소가 되도록 분할한다.
step1
훈련 세트를 하나의 특성 k의 임계값 t(k) 를 사용해 두 개의 서브셋으로 나눈다. ex. 꽃잎의 길이 < 2.4cm
step2
크기에 따라 가중치가 적용된 평균제곱오차(MSE)를 기준으로 가장 순수한 서브넷으로 나눌 수 있는 (k, t(k))를 찾는다.
즉 알고리즘은 예측값과 가능한 한 많은 샘플이 가까이 있도록 영역을 분할한다.
이때 각 영역의 예측값은 항상 그 영역에 있는 타깃값의 평균이다.
회귀를 위한 CART 비용 함수는 다음과 같다.
cf. 각 영역의 예측값 = 그 영역에 있는 타깃값 평균
step3
max_depth (최대 깊이) 가 되면 중지하거나 평균제곱오차(MSE)를 줄이는 분할을 찾을 수 없을 때 중단한다.
2. 결정 트리 회귀 모델 생성
결정 트리는 회귀 문제에도 사용할 수 있다.
분류에서는 각 노드에서 클래스를 예측했다면, 회귀에서는 각 노드에서의 값을 예측한다.
2.1 모델 훈련
사이킷런에서 DecisionTreeRegressor 클래스를 통해 구현할 수 있다.
from sklearn.tree improt DecisionTreeRegressor
tree_reg = DecisionTreeRegressor(max_depth=2)
tree_reg.fit(X, y)
각 영역의 예측값은 항상 그 영역에 있는 타깃값의 평균이다.
알고리즘은 예측값과 가능한 한 많은 샘플이 가까이 있도록 영역을 분할한다.
아래 그래프에서 규제가 없는 결정 트리 회귀 모델은 분류와 마찬가지로 과대 적합되기 쉽다.
min_samples_leaf 매개 변수를 추가 설정하니, 꽤 그럴싸한 모델이 만들어졌다.
2.2 결정 트리 시각화
from sklearn.tree import export_graphviz
export_graphviz(
tree_reg,
out_file = image_path('iris_tree.dot')
feature_names = iris.feature_names[2,:],
class_names = iris.target_names,
rounded = True,
filled = True
)
리프 노드의 구성
- samples : 해당 리프에 도달한 샘플의 개수
- value : 해당 리프에 도달한 샘플의 평균
- mse : 해당 리프에 도달한 샘플의 평균제곱오차
3. 결정 트리 활용
트리 모델은 데이터 탐색을 위한 시각화가 가능하다. 이는 어떤 변수가 중요하고 변수 간에 어떤 관계가 있는 지를 보여준다. 트리 모델은 예측 변수들 간의 비선형 관계를 담아낼 수 있다. 뿐만 아니라, 트리 모델은 일종의 규칙들의 집합이기에 실제 구현 방법에 대해서 비전문가들과 대화하는데 아주 효과적이라고 할 수 있다.
4. 결정 트리 불안정성
결정 트리는 계단 모양의 결정 경계를 만든다. 모든 분할은 축에 수직이다. 그래서 훈련 데이터에 민감하다.
이런 문제를 해결하는 방법은 훈련 데이터를 더 좋은 방향으로 회전 시키는 PCA 기법을 사용하는 것이다.
결정 트리의 결정 경계는 특성의 축에 수직으로 생성되어, 데이터 셋이 회전하여 특성 축이 바뀌면 결정 경계도 바뀌기 때문이다.
또는 랜덤 포레스트를 활용하면 많은 트리에서 만든 예측을 평균하여 이런 불안정성을 극복할 수 있다.
'Machine Learning > 2. 지도 학습 알고리즘' 카테고리의 다른 글
[모델 알고리즘][앙상블 학습] 랜덤포레스트 (0) | 2021.08.13 |
---|---|
[모델 알고리즘][앙상블 학습] 배깅, 페이스팅 (0) | 2021.08.13 |
[분류] 결정 트리 분류 모델 (0) | 2021.08.13 |
[모델 알고리즘] 서포트 벡터 머신 - SVM 이론 (0) | 2021.08.09 |
[모델 알고리즘] 서포트 벡터 머신 - SVM 회귀 (0) | 2021.08.09 |