Soy Library

[논문리뷰] [Xuming He, Pin Ng, 1999] COBS: qualitative constrained smoothing via linear programming 본문

Study/Statistics

[논문리뷰] [Xuming He, Pin Ng, 1999] COBS: qualitative constrained smoothing via linear programming

Soy_Hwang 2021. 10. 13. 00:14

이때까지 많은 smoothing spline기법이 많이 개발되어왔지만, monotonicity(단조성)나 convexity/concavity, periodicity 등과 같은 제약조건을 젹용하는데에는 어려움이 있었다. 해당 논문에서는 이러한 제약조건을 만족하는 smoothing spline 기법을 소개한다. COBS 모형은 Xuming He 와 Peide Shi에 의해 맨 처음으로 고안되었고 그 이후 다른 연구자들에 의해 추가 연구가 진행되었다. 

 

COBS 모형은 몇몇 데이터에 대해 flexible한 옵션들을 통해 이점을 갖는다고 말한다. COBS에서 fit에 대해 smoother를 제공하는 두 가지 옵션이 있는데 이를 (1) smoothing splines (with a roughness penalty)와 (2) regression splines (without roughness penalty) 라고 본 논문에서 칭한다. 

 

Smoothing splines는 사용자가 직접 정하는 user-interactive한 모수로, 여기서는 $\lambda$라고 표기한다. 따라서 $\lambda$값을 조절함으로써 전체적인 fit의 매끄러운 정도가 달라진다. (user-defined의 람다값을 input으로 넣으면 knots가 selection 되지 않음.)

(* smoothing spline에 대해서 나중에 다뤄봐야겠다. 기본적으로 모든 데이터에 대해 knot를 가지고 그 knot 사이에 이어진 스플라인을 매끄럽게 만드는 방식이라고 생각하면 될 것 같다. )

 

아래는 샘플 사이즈가 100개인 데이터에 cobs모형을 적합한 선에 대한 그림이다. 검은색, 파란색, 빨간색 세 개의 경우 모두 knots의 개수를 99개(degree = 2인 quadratic spline으로 지정하였기 때문에 knots의 개수가 데이터의 개수와 같으면 코드가 돌아가지 않음.)로 지정하였고, 람다값을 바꿔서 적합해보았다. 검은색 선은 $\lambda = 0$인 케이스로 앞서 말한 (2) regression B-spline로써 fit을 적합한다. 즉, smooth하게 만드는 모수는 지정되지 않았지만 automatic하게 knots를 selection하여 fit을 정하게 된다. 다른 fit들에 비해 상대적으로 굴곡이 나타나는 것을 확인할 수 있다.

검은색 선에서의 knots를 출력한 결과, 99개로 initial knots를 주었지만 결과적으로 5개의 interior knots만 남은 것을 알 수 있다. 즉, 다섯 개의 interior knots 사이를 quadratic spline으로 이어 적합선을 만든 것. 

> # the final knots
> fit_cobs$knots 
[1] -0.0000010  0.5353535  0.6262626  0.7171717  0.8080808
[6]  0.8989899  1.0000010

$\lambda$값을 지정하면, 검은색 선과 같이 knots의 selection은 진행되지 않고 99개의 knots 사이의 quadratic spline의 smoothing이 진행이 된다. 

> # the final knots of fit_cobs2
> fit_cobs2$knots
 [1] -0.00000100  0.01010101  0.02020202  0.03030303  0.04040404
 [6]  0.05050505  0.06060606  0.07070707  0.08080808  0.09090909
[11]  0.10101010  0.11111111  0.12121212  0.13131313  0.14141414
[16]  0.15151515  0.16161616  0.17171717  0.18181818  0.19191919
[21]  0.20202020  0.21212121  0.22222222  0.23232323  0.24242424
[26]  0.25252525  0.26262626  0.27272727  0.28282828  0.29292929
[31]  0.30303030  0.31313131  0.32323232  0.33333333  0.34343434
[36]  0.35353535  0.36363636  0.37373737  0.38383838  0.39393939
[41]  0.40404040  0.41414141  0.42424242  0.43434343  0.44444444
[46]  0.45454545  0.46464646  0.47474747  0.48484848  0.49494949
[51]  0.50505051  0.51515152  0.52525253  0.53535354  0.54545455
[56]  0.55555556  0.56565657  0.57575758  0.58585859  0.59595960
[61]  0.60606061  0.61616162  0.62626263  0.63636364  0.64646465
[66]  0.65656566  0.66666667  0.67676768  0.68686869  0.69696970
[71]  0.70707071  0.71717172  0.72727273  0.73737374  0.74747475
[76]  0.75757576  0.76767677  0.77777778  0.78787879  0.79797980
[81]  0.80808081  0.81818182  0.82828283  0.83838384  0.84848485
[86]  0.85858586  0.86868687  0.87878788  0.88888889  0.89898990
[91]  0.90909091  0.91919192  0.92929293  0.93939394  0.94949495
[96]  0.95959596  0.96969697  0.97979798  1.00000100

# lambda value of fit_cobs2
> fit_cobs2$lambda
[1] 0.03

적합된 결과에서 knots를 출력해보니 99개가 그대로 있다. 하지만 이때의 람다값은 내가 0.03으로 지정하여 검은색 선보다 선이 매끄럽게 나타나는 것이다.

자 그러면 람다 값은 사용자가 직접 조절하여 fit을 결정하는데, knots는 어떻게 selection되는 것일까? 이것이 이제 automatically 진행되는 것으로 본논문에서 강조하는 모양이다. 본 방법론에서의 knots는 회귀분석에서 variable selection step과 비슷하게 진행된다. 

맨 처음에 다음의 AIC 값을 가장 작게 만드는 $N$ 값을 이용하여 initial interior knots의 수를 정한다. 

$$ AIC(T) =  \log \left({1 \over n}  \sum_{i} \rho_\tau (y_i - \hat{m}_T (x_i) ) \right) + 2 (N + m) / n $$

Initial knots의 수를 정하였다면 knots를 sequentially deletion하면서 AIC 값이 가장 크게 감소되는 knot를 지우게 된다. 이는 회귀분석의 stepwise elimination과 매우 흡사한 방법이다.