상세 컨텐츠

본문 제목

[Practical Statistics for Data Scientists] A팀: Polynomial Regression & Spline

본문

Polynomial & Spline Regression을 설명하기에 앞서 Linear Regression Model(선형회귀모형)Nonlinear Regression Model설명드리고자 합니다. 첫 번째 회귀식은 linear regression model이라고 할 수 있는게, 각각의 x항들이 y에 대하여 선형적인 형태로 있기 때문입니다. 반면 두번째처럼 교차항이 있거나, 세번째처럼 다항식이 형성된다면 y에 대한 선형성이 당연히 깨지는 것을 확인할 수 있습니다. 이러한 회귀식들을 우리는 nonlinear regression model이라고 부릅니다.

아까의 식을 f(x)의 꼴로 확장해봅시다. Linear regression에서는 f(x) = βo+Xβ의 형식으로 이루어져 있었습니다.. βo절편항이고 Xβn*k 차원의 design matrix에다 K*1 차원의 회귀계수 베타를 곱한 것이었죠. 그러나 우리는 Linear Regression이 아닌 Nonlinear Regression을 제작할 때 이 f(x)를 다른 꼴로 확장할 필요가 있습니다. 그러므로 Nonlinear Regression궁극적인 목표는 어떻게 최적의 festimate하는가 입니다. Nonlinear Regressionnonparametric regression이라고도 합니다. Parametric이라는 것은 내가 구해야하는 parameter이 유한개라는 것입니다. 단순선형회귀모형에서 우리가 필요로 하는 parameter들은 β1, βo, 그리고 등분산성을 만족시키기 위한 σ^2있을텐데, 3개의 parameter들은 3차원 공간에서 span한다고 말할 수 있습니다. 반면 nonparametric (f)는 특정한 개수라고 단정지을 수 없습니다. 모수의 개수가 무한개까지 늘어날 수 있기 때문입니다. Span하는 공간 또한 무한 차원이 되겠죠. 그래서 nonlinear regression확장시켜 nonparametric regression이라고도 부릅니다.

교재에서는 f(x)를 추정하는 방법으로 polynomial regression, spline, GAM을 소개합니다. 그러나 그 외의 방법들도 있다는 것 또한 알아주셨으면 합니다. 

 

 

Polynomial Regression


Polynomial regression에서, 우리는 f가 아래와 같이 p차 항을 가지고 있는 다항함수라고 생각을 합니다. p가 유한 개일 때 우리는 당연히 이를 nonparametric이라고 부를 수는 없습니다. 그러나 p가 무한에 가까워지면 nonparametric이라고 부를 수 있겠죠? p차 다항식에서 p의 값이 늘어나면 전체적인 모델에서는 어떤 변화가 일어날까요? 바로 모델의 복잡성이 늘어납니다. 우리가 가지고 있는 데이터들이 최대한 주어진 데이터들에 맞게 형성이 되는 모습을 확인할 수 있습니다.

여러분들 이미 잘 알고 계시겠지만 p가 늘어난다고 무조건적으로 좋은 것은 아닙니다. p가 늘어나면 당연히 모델이 데이터에 맞게 형성되어서 training error은 줄어들겠죠. 그러나 모델 자체의 복잡도가 올라가면 bias-variance tradeoff 때문에 모델의 복잡성이 늘어나고 overfitting이 발생할 수 있습니다.

 

Polynomial Regression의 예시입니다. p가 1일 때(=선형회귀모형일 때)는 비선형적인 데이터에 fitting이 잘 되지 않습니다. 그러나 p의 개수가 점점 늘어날수록 데이터에 완벽하게 fitting하는 모습을 확인하실 수 있습니다. 

그렇다면 최적의 p를 구할 수 있는 방법은 무엇이 있을까요?

사실 test set이 있다면 그게 가장 최적의 방법이겠죠. Training set에 다양한 p값으로 모델을 fitting하고 그 모델들에다가 test set에 적용시켜 MSE, RMSE 등 정한 metric에서 score이 가장 낮은 모델을 채택하면 편하겠죠! 그러나 test set이 없을 경우에는 어떡할까요? 바로 위와 같이 BIC라는 기준을 삼으면 됩니다. 다양한 p의 값으로 BIC를 도출하고 BIC값이 가장 작을 때의 p를 사용하면 되는 것입니다.  BIC는 크게 두 부분으로 나누어져 있습니다. 앞 항은 training error을 담당합니다. 당연히 p가 높을수록 model complexity가 높아지니까 training error은 낮아집니다. BIC는 높은 p가 선택되는 것을 방지하기 위해 뒷항 (penalty term)을 추가합니다. 패널티 항은 log(n) * p 를 사용하고 P값이 높을수록 당연히 BIC의 전체 값이 커지겠죠. 그래서 무작정 높은 p가 선택되는 것을 방지합니다. 논외로 AIC라는 지표도 있는데, AIClog(n) 대신 2를 사용합니다. 여기서 BIC를 선택한 이유는, log(n)값이 2보다 더 크기 떄문에 p가 높은 모형이 선택되지 않도록 하는 더 엄격한 metric 때문입니.

 

 

Spline


Spline에서의 가장 중요한 키워드는 “locally simple, globally flexible“임을 기억하고 개념을 이해하셨으면 좋겠습니다. Spline은 크게 어려운 개념이 아닙니다. Polynomial regression의 확장이라고 생각하면 됩니다. 개괄적인 개념부터 설명드리자면, 구간(우리는 이걸 knot point라고 부를거에요)를 만들어서 각 구간 내에 차원이 낮은 polynomial regression을 대입합니다. (2, 3차원 등의 저차원) 이렇게 보면 각 knot point 내에서는 그렇게 복잡한 모델 같지 않아보이지만 전체적으로 보았을 때는 그 형태가 매우 복잡함을 확인할 수 있습니다. 또한 우리는 nonlinear regression을 다루면서 어떻게 f를 추정하는지가 키포인트라고 말씀드린 바 있습니다. Spline도 마찬가지입니다. Spline에서 f(x)는 위와 같이 나타낼 수 있습니다. 그리고 각각의 h1, hm… knot point 내의 함수식을 의미하며, fspan(h1, h2, … , hm)에 포함된다고 생각하시면 될 것 같습니다. 여기서 우리는 splinepolynomial regression의 확장임을 다시 한 번 확인할 수 있습니다. m = 1,…,M에서 hm(x)x^m으로 표현될 수 있기 때문이죠.

먼저 가장 간단한 형태의 spline부터 살펴보겠습니다. 그림에 대한 설명을 먼저 하자면, 보라색 선은 우리가 궁극적으로 fitting 해야하는 best model이며, 초록색 선은 우리가 fitting을 진행한 결과를 시각화 한 것입니다. Piecewise constant를 먼저 살펴보겠습니다. spline은 각각의 knot point 내의 hm(x)indicator function의 형식으로 이루어져 있습니다. 이것을 함수로 나타내면 f(x)= β0+ β1*I(x<t1)+ β2*I(t1≤x<t2) 의 식으로 이루어져 있겠죠. 이걸 조금 더 보라색에 맞게 fitting한 것이 piecewise linear 입니다. Piecewise constant1차식을 추가한 꼴이죠. 그러나 각 knot point를 기준으로 초록선이 하나의 선으로 연결되어 있지 않음을 확인하실 수 있습니다.

 

그 한계를 극복한 것이 바로 continuous piecewise linear입니다.

f(x)linear 꼴 ( f(x)= β0+ β1x ) 에다가 각 knot point마다  βmhm(x) = βm(x-tm) 의 식을 추가해주도록 합니다. 이러면 knot point를 기준으로 떨어져 있던 초록 선들이 하나로 이어짐을 확인할 수 있습니다. 추가적으로 hm(x)는 오른쪽에 보시는 바와 같이 함수의 개형이 일종의 relu함수처럼 보입니다. 첫번째 knot point 전에는 기울기가 0이다가, t-1부터 기울기가 발생하여 이전 knot point 간의 간극을 이어주는 역할을 합니다. hm(x)를 Truncated Power Basis라고도 부릅니다.

 

일차함수였던 spline을 삼차함수으로 확장시키면 위와 같은 f(x) 식을 얻을 수 있습니다.

여기서 h(x, tm) = (x-tm)^3입니다.continuous piecewise linear과 달리 세제곱이 붙었습니다. 그래서 cubic spline에서 최종적으로 얻게 되는 초록색 함수는 연속할 뿐만 아니라 2번 미분이 가능합니다.

Spline도 regression과 마찬가지로 residual을 최소화하는 β를 찾는 objective function을 가지고 있습니다. 

 

Natural cubic spline은 우리가 배워왔던 spline의 양 극단 (-, t1), [tM, )에 제약을 걸어주는 것입니다. 우리는 보통 양 극단의 데이터가 어떠한 형태로 이루어져 있는지 알 수 없습니다. 이렇기 때문에 우리는 변동성을 최대한 줄이고자 극단에서 spline의 모양을 파란색 선과 같이 linear하게 만들어줍니다.

허접한 그림 죄송합니다...

Spline중에서 가장 대표적으로 쓰이는 splineb-spline입니다. TPB 말고 b-spline이 더욱 쓰이는 이유는 TBPknot point의 개수를 지정해줘야 하기 떄문입니다. 그리고 최적의 knot point 개수를 파악하기가 쉽지 않기 때문입니다. B spline에서는 basis function들을 생성합니다. Basis function들의 개수는 자유도인 df로 표현이 됩니다. Basis function들은 특정한 point 내에서 그 함수가 가진 영향력을 나타냅니다. 예를 들어서 파란색 함수 같은 경우는 양 극단에서 큰 영향력을 미치고, 주황색 함수 같은 경우 0-2 사이에서 강한 영향력을 미칩니다 그래서 우리가 특정 지점 t 의 값을 예측하고 싶을 때, 우리는 해당 위치의 function들의 가중치 합으로 예측을 진행합니다. 그리고 basis function의 개수는 polynomial regression과 마찬가지로 BIC를 기준으로 선정할 수 있습니다.

 

 

 

 

GAM(Generalized Additive Model)


Generative additive modelknot point에 제약을 받지 않는 모델입니다. GAM이 Spline과 다른 점은, 기존 f(x)가 각각의 변수가 componently하게 하나의 함수를 형성합니다. 그래서 각 항들이 각각의 가중치를 가지고 더해지면서

하나의 함수가 만든다고 하여 "generative additive"라고 불립니다. 이 함수의 특징은 교차항 (x1x2)가 존재하지 않는다는 것이빈다. 하나의 함수가 형성되는 과정은 backfitting algorithm이라는 알고리즘을 활용합니다. 간단히 설명하자면 각 g(x)들을 다 0으로 지정하고 iteration을 반복하면서 training error0으로 수렴하도록 g(x)들을 조정하는 과정입니다.

관련글 더보기

댓글 영역