꺼내먹는지식 준

머신러닝 정리 4.5 -회귀 나무 (Regression Tree) 본문

AI/머신러닝

머신러닝 정리 4.5 -회귀 나무 (Regression Tree)

알 수 없는 사용자 2023. 2. 15. 21:40

decision tree를 공부할 때 보통 이산형 데이터 즉 분류모델을 배운다. 

그런데 decision tree는 연속형 데이터에도 사용가능하다. 

그리고 코딩한줄이면 간단히 구현이 된다. 

 

하지만 머리로 생각해봐도 어떤 식으로 짜여졌는지 감이 잘 안온다. 

이에따라 간단히 정리해본다. 

(https://www.youtube.com/watch?v=g9c66TUylZ4) 내용 기반 

 

 

Linear Regression 으로 처리하기 어려운 경우 회귀 나무를 사용한다. 

위와 같이 X의 범위로 간단하게 분류한 후, leaf node에는 해당되는 데이터들의 y 값의 평균을 기입한다. 

 

위 과정을 반복하면, 쉽게 나눌 수 있다. 

 

하지만 위와 같이 단순한 경우는 사실 그래프를 눈으로 보고 분류해도 된다. 회귀 나무가 필요 없다. 

 

회귀 나무는 feature 개수가 1개보다 많을 때 진가가 드러난다.

여기서부터는 눈으로 구분하기 쉽지 않다. 

 

반면 회귀 나무는 쉽게 분류할 수 있다. 

 

 

회귀나무에 대해 알아봤으니, 이제 회귀나무를 만드는 법을 알아보자. 

Root Node 는 어떻게 정할까? 

 

예시를 통해 쉽게 접근해보자. 

root node 의 기준을 Dosage < 3 으로 정한다고 가정해보자. 

 

3 미만의 node 는 하나로 Average = 0 이다. 분류된 node의 개수가 적긴 하지만, 일단 잘 맞춘다. 

하지만 3 초과의 node는 Aveage = 38.8 이다. 실제로 데이터를 살펴보면 상당 수의 데이터가 100% 이기도 하고, 0%이기도 하다. 

38.8 이라는 수치는 전혀 데이터를 잘 설명하지 못한다. 

위 차이를 시각적으로 표현하기 위하여 데이터로부터 평균 값에 점선을 그어보자. 

이 점선을 Residual 이라 한다. 

 

수치적으로 차이를 나타내려면 MSE 를 구하면 된다.

왼 오른 노드의 Residual을 모두 구하는 과정은 MSE 구하는 과정과 동일하다. 

 

위 Residual 의 총 합은 37,468.5 로 계산되었다. 

구한 값을 그래프에 표현해보자. 

 

눈치가 빠른 분들은 위 그래프를 보고 Root Node를 결정하기 위한 과정이 interate 과정이라는 것을 알아챘을 것이다. 

 

그 다음 Root Node 의 기준은 다음 두 데이터의 평균 값으로 결정한다. 

위 과정으로 다시 분류한 후, residual 값을 계산한다. 

위 과정을 반복하면 아래와 같이 그래프가 생기는 것을 알 수 있다. 

이 때 Residual 이 가장 낮은 Dosage < 14.5 가 Root Node 가 된다. 

Decision Tree에서 label 을 Root Node 로 사용했던 것과 사뭇 다르다. 

 

그 이후 분류에서도 똑같이 Residual 을 구하면 된다. 

분류 된 데이터가 1개일 때 leaf node 처리한다. 

 

또한 Average = 0 으로 분류 된 데이터는 4개나 되지만 4개가 다 같은 값이므로 leaf node 처리한다. 

 

다 좋은데 위에 처럼 하면 overfitting 될 가능성이 있다. 

이럴 때는 분류할 때 최소 데이터 개수를 정하는 방법 등 다양한 방법이있다. 

(보통 최소 데이터 개수 20개)

 

위 문제는 데이터가 애초에 개수가 적으므로 minimum 개수를 7개로 설정한다. 

이 때 왼쪽 노드는 leaf 가 되고, 6개 데이터의 Average는 4.2% 가 된다. 

 

오른 쪽은 데이터가 7개보다 많으므로 leaf 가 아니고 분류 node 가 된다. 

반복하면 위와 같은 그래프가 결정된다. 

당연히 분류의 기준 값은 residual 을 통해 찾는다. 

 

feature가 Dosage 1개인 경우로 분류를 해보았다. feature 의 개수가 1개를 넘을 경우는 어떻게 될까? 

먼저 Dosage의 residual 을 구해 가장 낮을 때의 threshold 를 후보로 한다. 

다음은 Age로 동일하게 MSR(Minimum sum of residual)의 threshold를 후보로 한다. 

Sex도 동일하게 threshold 후보를 찾는다. 

 

이 중 가장 SSR이 낮은 Age를 첫번 째 cadidate로 한다. 

 

그리고 나서 나무를 키워낸다.

※Age 로 분류한 후, 또 다시 분류할 때는 남은 Dosage 와 Sex 중에서 골라야 하는 것일까? Decision Tree는 애초에 한 feature로 discrete 하게 분류를 해버리고 나니 다음 분류 노드에서 사용했던 feature가 제외되지만, Regression Tree는 얼마든지 또 continuous 한 값을 사용할 수 있다. 논리적으로 생각해 봤을 때는 만약 Age feature가 또다시 SSR이 낮으면 선택될 것 같다. 

 

Regression Tree는 딱 봐도 굉장히 오래 걸릴 것 같다. 하지만 굉장히 직관적이다. 

Comments