ML

[ML] Regression Tree

우언 2021. 12. 28. 12:17

https://www.youtube.com/watch?v=g9c66TUylZ4&t=1058s\ 

위 영상을 바탕으로 작성했다..

 

위 와 같이 선형성을 띄는 데이터의 경우 단순선형회귀를 적합하는 것이 옳겠다.

하지만

 

이런 모양의 데이터라면 회귀분석을 고려하기 어려울 것이다. 

물론 다항회귀분석을 고려하는 것은 어떻냐는 질문이 따라오겠지만

 

 

이런식의 범주형데이터가 섞여있거나 많은 변수들이 생긴다면 예측을하기 곤란해질 것이다.

그래서 회귀나무를 사용한다..

앞으로 그 회귀나무가 어떻게 만들어지는지 알아보자

Regression Tree도 일반 decision tree와 같이 어떤 feature를 어떤 threshold를(경계)으로 할 것인지 선택하는 것이 중요하다..

https://gwoolab.tistory.com/24 decision tree에서 수치형 변수를 다루는 방법과 거의 유사하다.

 

 

1. 한가지의 변수만을 고려

설명을 용이하게하기위해 effectuveness와 dosage두가지만을 고려해보자

 

drug dosage변수와 drug effectiveness(target)의 그래프를 보고 가장 낮은 drug dosage값 두가지에 집중해보자

 

두 drug dosage의 평균값은 3이다. 이제 이 3을 기준으로 두 그룹을 나눈다.

좌측편 target의 평균은 0이고 우측의 target평균은 38.8이다.

이제 dosage < 3 이라는 질문의 SSR (sum of squre residuals) 을 계산한다.

 

※ ssr = (참값 - 예측값(여기서는 각 그룹의 평균) )^2

예측값이 참값과 비슷할수록 ssr은 낮고 잘 예측했다고할 수 있다.

 

 

 

이런식으로 dosage변수들 사이의 값을 threshold로 하여 모든 ssr을계산사면 다음과같다 .

 

이중에서 가장 ssr이 작은  14.5를 threshold로 선택한다.

그말인 즉슨 dosage < 14.5라는 질문이 첫번째에 와야한다는 의미이다.

 

이후 다음 노드에서도 

같은 과정을 반복하여 dosage<11.5 라는 질문을 얻었다. 

이 때 no라는 대답의 값이 1개인 경우 그 노드는 리프노드가된다. 즉 더이상 분기할 수 없다.

 

좌측노드를 계속 분기한다면 위와 같은 트리를 얻을 것이다. 위 트리는 주어진 데이터에 있어서 100%를 예측할 수 있다.

하지만 이렇게 계속 분기한다면 엄청난 과적합의 리스크를 안고갈 수 밖에 없다..

 

이런 과적합을 해결하기 위해서는 여러가지 기법이있다. 

가장 간단한방법은 각 노드별 분류하는 row의 갯수의 하한선을 정하는 것이다. 만약에 하한선을 7로 정한다면

 

첫분기점 이후의 좌측노드의 row의 수는 7보다 작기때문에 더이상 분기하지않는다.

 

 

하지만 우측노드는 13개의 row를 가지기때문에 계속해서 분기할 수 있다.

같은 과정으로 계속해서 분기한다면.

 

이렇게 최종 트리를 얻을 수 있다.

 

 

 

 

2. 여러 변수를 고려할 때

범주형 변수일떄는 sex의 경우처럼 , 연속형 변수나 순서형 변수는 1번의 경우처럼 가장 낮은 ssr을 가지는 threshold를 선택하여 변수에 맞는 질문을 만들고 그 질문끼리 가장작은 질문을 우선 순위로하여 트리를 구성하여 트리를 완성한다.