INTRODUCTION
Model tree는 종속 변수의 몇 개의 독립된 구간으로 나누어 각각 다른 model을 적용하는 방법이다. 이번 글에서는 하나의 종속 변수와 독립 변수간의 회귀를 위한 model tree를 형성하는 방법에 대해 다루고자 한다.
Model tree는 비선형 상관 관계를 선형 model을 통해 회귀할 수 있다는 점에서 일반적인 선형 회귀를 이용하는 것보다 좋다. 하지만, tree에 node가 너무 많아지면, 과적합이 발생할 수 있다. 본문에서는 이를 해결하기 위한 방법을 설명하려 한다.
IDEA
먼저, model tree를 형성하기 위해 독립 변수를 몇 개의 구간으로 나누어야 한다. 이때, 간단히 같은 간격의 정확히 \(n\)개의 구간으로 나누겠다. 이 구간 마다 각각의 model을 형성시켜줄 경우 과적합이 발생할 수 있는 위험성이 있다. 이를 방지하기 위해 dynamic programming을 이용한다.
*어떤 구간에서 MSE가 가장 작은 모델은 Pearson의 방법을 이용하여 구할 수 있다.
\(D_i=max_{j<i}\{D_j \times r_{j, i}\}\)
위 식은 model tree의 node에서 구간을 어떻게 나눌지를 결정할 수 있는 dynamic programming이다. 이 dynamic programing에서 Pearson correlation coefficient의 곱을 최대화 하는 방법을 이용한다. 이 방법을 사용하면, node를 만들 때 마다 일종의 패널티를 받는것과 같은 효과를 낼 수 있다. 이를 이용하면 과적합을 어느정도 해결할 수 있다.
Source Code
https://github.com/Sora-Sugiyama/Libs/blob/main/Data-Structure/MSA_SEGTREE.h