❗️블로그 옮김: https://www.taemobang.com
※ prerequisites
Smoothing splines도 기저 함수(Basis functions)를 이용한 모델링 방식으로, 기저 함수로 polynomial function만을 이용하는 Regression splines와 달리 오차를 최소화하는 적절한 기저 함수를 찾아 $y_i$에 대한 예측을 수행한다.
목적 함수
관측된 데이터에 잘 적합하는 smooth 곡선(curve) $g(x)$를 찾기 위해서는, 결국 다음의 식을 최소화해야 한다.
$RSS = \sum_{i=1}^n (y_i - g(x_i))^2$
이때 만약 $g(x_i)$에 아무런 제약을 주지 않으면, 우리는 관측된 데이터의 모든 $y_i$를 반환하는 $g$를 선택함으로써 항상 RSS를 0으로 만들 수 있다. 이는 곧 지나치게 flexible한 곡선을 만들어내며 데이터에 과적합(overfitting)을 야기시킨다. 그래서 RSS를 최대한 작게 하면서도 smooth한 함수 $g$를 찾아야 하며, 이를 위해서는 적절한 penalty term이 필요하다:
$\sum_{i=1}^n (y_i - g(x_i))^2 + \lambda\int {g}''(t)^2dt$
where $\lambda$ is a nonnegative tuning parameter. $\cdots$ 식 (1)
이를 최소화하는 $g$가 곧 smoothing spline이다. 즉, 위 식은 smoothing spline에서 최소화하고자 하는 목적함수에 해당한다. Penalty term은 $g$의 2차 미분에 적분을 취한 형태를 보이고 있는데, 이러한 penalty term이 가지는 의미에 대해 생각해보자. 먼저, ${g}''(t)$는 $g$의 2차 미분으로 기울기 변화량을 나타낸다. 이러한 이유로 함수의 2차 미분은 해당 함수의 roughness에 대한 측도로 여겨진다. 즉, $g(t)$가 t 근처에서 꾸불꾸불한 복잡한 모형을 띨수록 ${g}''(t)$의 절댓값은 커지며, 그 반대로 단조로운 형태를 띨수록 0에 가까워진다(그래서 직선의 2차 미분은 0이며, 직선은 완벽히 smooth함). 또한, 적분 기호 $\int$은 $t$의 범위에서 summation을 취하는 것으로 생각할 수 있다. 즉, Penalty term $\int {g}''(t)^2dt$은 함수 ${g}'(t)$의 전체 범위에서 총변화량을 의미한다. 만약 $g$가 매우 smooth한 함수라면, ${g}'(t)$는 상수에 가까워지므로 penalty term은 매우 작은 값을 가진다. 그러므로, $\lambda\int {g}''(t)^2dt$는 g가 smooth하게 만드는 역할을 한다. $\lambda$가 커질수록 penalty가 커지므로 $g$는 더 smooth 해질 것이다(간단한 모형을 의미함). 즉, $\lambda$는 smoothing spline의 bias-variance trade-off를 통제한다고도 볼 수 있다.
식 (1)을 최소화하는 $g(x)$는 특별한 성질을 갖는데, 그것은 $g(x)$는 $x_1, x_2, \cdots, x_n$를 knots으로 갖는 natural cubic spline과 같다는 것이다. 그러나, 둘은 정확하게 동일하진 않다. 목적함수에 penalty term이 포함되어 $g(x)$는 natural cubic spline의 shrunken 버전으로 볼 수 있으며, 이 shrinkage의 정도는 $\lambda$로 조절한다.
$\lambda$의 선택
조절 모수(tuning parameter) $\lambda$는 smoothing spline의 roughness를 조절한다. 구체적으로 말하면, $\lambda$는 모수(회귀계수)에 제약을 주거나 크기를 축소(shrinkage)하여 roughness를 조절한다. 그래서, smoothing splines의 자유도 계산에는 $\lambda$가 관여한다(자유도는 자유롭게 움직이는 모수의 수로도 표현되므로). 이러한 이유에서, smoothing splines의 자유도는 $df$가 아닌 $df_{\lambda}$(effective degrees of freedom)로 표기한다. 예를 들어, $\lambda$가 0에서 $\infty$로 움직이면 $df_{\lambda}$는 $n$에서 $2$까지 움직인다. $\lambda = 0$일 때 $df_{\lambda} = n$인 이유는 penalty가 없는 경우 smoothing splines은 모든 data points에 knots을 놓아서, 모든 data points를 따라가는 곡선을 추정하기 때문이다. 이러한 이유로, $df_{\lambda}$를 smoothing spline의 flexibility를 나타내는 측도로 생각할 수도 있다(클수록 flexible : Bias 감소, Variance 증가).
effective degrees of freedom $df_{\lambda}$를 수식으로 정의할 수도 있는데, 그전에 먼저 다음과 같이 표현할 수 있는 식을 알아둬야 한다.
$\hat{g}_{\lambda} = S_{\lambda}y$ $\cdots$ 식(2)
$\hat{g}$은 특정 $\lambda$ 값에 대한 식 (1)의 해를 의미한다. 즉, $\hat{g}$은 training points $x_1, \cdots, x_n$에 대한 smoothing splines의 적합 값 $n$개를 요소로 갖는 벡터이다. 식 (2)는 데이터를 smoothing splines에 적합시켜 나오는 적합값이 $n \times n$ 행렬 $S_{\lambda}$와 반응 변수 벡터 $y$의 곱으로 표현됨을 나타낸다. 그럼 이제 우리는 effective degrees of freedom $df_{\lambda}$를 다음과 같이 정의할 수 있다.
$df_{\lambda} = \sum_{i=1}^n \left \{ S_{\lambda} \right \}_{ii}$
$\lambda$에 따라 knots이 결정되는 smoothing spline에서는 regression splines에서처럼 knots의 수나 위치를 따로 선택할 필요가 없으며, 우리는 $\lambda$ 값만 결정해주면 된다. 이때 교차 검증(Cross-validation)을 통해 RSS(Residuals sum of squares)를 최소화하는 $\lambda$를 선택한다. smoothing splines에서는 data point를 하나 씩만 빼가며 모형을 적합하고 RSS를 계산하는 Loo-CV(Leave one-out)가 효율적으로 수행되며, 이는 regression splines 뿐만 아니라 임의의 기저 함수(basis functions)를 사용하는 least squares regression에서도 그렇다. Loo-CV Error를 계산하는 수식은 다음과 같다:
$RSS_{cv}(\lambda) = \sum_{i=1}^n (y_i - \hat{g}_{\lambda}^{(-i)}(x_i))^2 = \sum_{i=1}^n [\frac{y_i - \hat{g}_{\lambda}(x_i)}{1 - \left \{ S_{\lambda} \right \}_{ii}}]$
이때 위 첨자 $(-i)$는 i-번째 관측값만 빼고 적합시킨 것을 의미한다.
다음의 그림은 앞전의 포스팅에서 쭉 사용했던 급여($Y$, 단위 : 1000달러) 데이터에 smoothing splines를 적합시킨 것이다. 빨간색 선은 사전에 $df_{\lambda} = 16$으로 설정하여 모형을 적합시킨 것이며, 파란색 선은 Loo-CV를 통해 선택된 최적의 $\lambda$로 적합시킨 smoothing splines에 해당한다. 이 데이터에서는 두 모형의 차이가 딱히 없어 보이지만, 자유도가 더 큰 빨간색 곡선이 좀 더 꾸불꾸불해(wigglier) 보이는 것은 명백하다. 또한, 이렇게 더 복잡한 모형을 적합시키더라도 모형 간에 큰 차이가 없기 때문에, 이러한 경우 $df_{\lambda} = 6.8$인 더 간단한 모형을 선호한다.
참고 문헌
James, Gareth, et al. An Introduction to Statistical Learning. Springer. 2013
'Machine&Statistical Learning > GAM' 카테고리의 다른 글
GAMs: Generalized additive models (3) | 2020.06.22 |
---|---|
Local regressions (0) | 2020.06.10 |
Regression splines (0) | 2020.06.08 |
다항 회귀와 계단 함수 (0) | 2020.06.08 |
선형모형의 한계 (0) | 2020.06.06 |
댓글