5.5 예측변수 선택

가능한 예측변수(predictor variable)가 많이 있을 때는, 회귀 모델에서 사용할 가장 좋은 예측변수(predictor variable)를 선택하는 몇 가지 전략이 필요합니다.

추천하지 않는 일반적인 접근 방식은 목표 예상변수(forecast variable)를 특정한 예측변수(predictor variable)에 대해 그래프로 나타내서 눈에 띄는 관계가 없는 경우에 버리는 것입니다. 특별히 다른 예측변수(predictor variable)의 효과가 설명되지 않았을 때 산점도(scatterplot)에서 관계를 보는 것이 항상 가능한 것은 아니기 때문에 이 방법은 유효하지 않습니다.

또한 유효하지 않은 또 다른 일반적인 접근 방식은 모든 예측변수(predictor variable)에 대해 다중 선형 회귀 분석을 하여 \(p\)-값들이 0.05보다 큰 모든 변수를 무시하는 것입니다. 먼저, 통계적인 유의미함이 항상 예측값을 나타내는 것은 아닙니다. 예측하는 것이 목표가 아닐 때도, 2개 이상의 예측변수(predictor variable)가 서로 관련되어있을 때 \(p\)-값들이 오해를 일으킬 수 있기 때문에 이것은 좋은 전략이 아닙니다(5.9 절을 보시길 바랍니다).

대신에, 예측 정확도 측정량을 사용할 것입니다. 이 절에서는 5가지 측정량을 소개하겠습니다. CV() 함수를 사용하여 이러한 값을 계산할 수 있습니다. 여기에서는 미국 소비 데이터에 모델을 적용하였습니다:

CV(fit.consMR)
#>        CV       AIC      AICc       BIC     AdjR2 
#>    0.1163 -409.2980 -408.8314 -389.9114    0.7486

이러한 값을 다른 모델로부터 얻은 관련된 값에 대해 비교합니다. CV, AIC, AICc, BIC 값을 가지고, 이러한 값이 가장 낮은 모델을 찾으려고 합니다. 조정된 \(R^2\) 경우에는 이러한 값이 가장 높은 모델을 찾습니다.

조정된 R\(^2\)

컴퓨터에 나오는 회귀 분석 출력에는 항상 5.2 절에서 다룬 \(R^2\) 값이 딸려나옵니다. 하지만, 이 값은 모델의 예측 능력을 측정하는 좋은 방법이 아닙니다. 이를 통해 모델이 과거 데이터를 얼마나 잘 설명하는지 측정할 수 있지만, 모델이 미래 데이터를 얼마나 잘 예측하는지를 측정할 수는 없습니다.

\(R^2\)는 “자유도(degree of freedom)”를 허용하지 않습니다. 어떤 변수를 추가하면 변수가 적합하지 않더라도 \(R^2\)의 값이 증가하는 경향이 있습니다. 이러한 이유로 예측하는 사람들은 \(R^2\)를 모델이 좋은 예측값을 낼 지 판단하기 위해 사용하지 않아야 합니다. 과대적합(over-fitting)이 발생할 수 있기 때문입니다.

제곱 오차의 최소 합(SSE)을 내는 모델을 고르는 것도 위와 같은 개념입니다. 여기에서 SSE는 다음과 같은 양입니다. \[ \text{SSE} = \sum_{t=1}^T e_{t}^2. \] SSE를 최소화하는 것은 \(R^2\)를 최대화하는 것과 같고, 항상 변수가 가장 많은 모델을 선택할 것이므로 예측변수(predictor variable)를 선택하는 올바른 방법이 아닙니다.

이러한 문제를 해결하기 위해 설계된 방법은 (“R-바-제곱(R-bar-squared)”이라고도 부르는) 조정된 \(R^2\)입니다. \[ \bar{R}^2 = 1-(1-R^2)\frac{T-1}{T-k-1}, \] 여기에서 \(T\)는 관측값의 수이고 \(k\)는 예측변수(predictor variable)의 수입니다. 각각의 추가된 예측변수(predictor variable)에 따라 증가하지 않을 것이기 때문에 \(R^2\)가 개선된 것입니다. 이 측정량을 사용하면 \(\bar{R}^2\)가 가장 큰 값을 갖는 것이 가장 좋은 모델이 될 것입니다. \(\bar{R}^2\)을 최대화하는 것은 식 (5.3)으로 주어지는 표준 오차 \(\hat{\sigma}_e\)를 최소화하는 것과 같습니다.

너무 많은 예측변수(predictor variable)를 선택하는 부분이 잘못되는 경향이 있지만, \(\bar{R}^2\)를 최대화하는 것은 예측변수(predictor variable)를 선택하는 방법으로 적합합니다.

교차검증

3.4 절에서 시계열 교차검증(cross-validation)을 모델의 예측 능력을 판단하는 일반적인 방법으로 소개했습니다. 회귀 모델에서 예측변수(predictor variable)를 선택하기 위해 고전적인 단일 관측치 제거법(leave-one-out) 교차검증을 사용하는 것도 가능합니다(Bergmeir, Hyndman, & Koo, 2018). 이 방법은 더 빠르면서 데이터를 더 효과적으로 사용할 수 있도록 합니다. 사용 과정은 다음과 같습니다:

  1. 관측값 \(t\)를 데이터 모음에서 제거하고, 모델로 나머지 데이터를 맞춥니다. 그리고 생략한 관측값에 대한 오차(\(e_{t}^*=y_{t}-\hat{y}_{t}\))를 계산합니다. \(\hat{y}_{t}\) 값을 추정할 때 \(t\)번째 관측값이 사용되지 않았기 때문에 잔차와 같지 않습니다.)
  2. \(t=1,\dots,T\)에 대해 1번 과정을 반복합니다.
  3. \(e_{1}^*,\dots,e_{T}^*\)로부터 MSE를 계산합니다. 이것을 CV라고 부르겠습니다.

이 방법은 시간이 오래걸리는 것처럼 보이지만, 한 모델을 전체 데이터 모음에 맞추는 것보다는 오래 걸리지 않도록 CV를 빠르게 계산하는 방법이 있습니다. 효율적으로 CV를 계산하는 식은 5.7 절에 있습니다. 이 기준에서 가장 좋은 모델은 CV가 가장 작은 모델입니다.

아카이케의 정보 기준

밀접하게 관련된 기법은 아카이케의 정보 기준입니다(Akaike’s Information Criterion; AIC). 이 양의 정의는 다음과 같습니다. \[ \text{AIC} = T\log\left(\frac{\text{SSE}}{T}\right) + 2(k+2), \] 여기에서 \(T\)는 추정에 사용하는 관측값의 수이고 \(k\)는 모델에 있는 예측변수(predictor variable)의 수입니다. 서로 다른 컴퓨터 패키지 모두 다 선택하게 될 같은 모델을 내야 하긴 하지만, 패키지마다 AIC를 계산할 때 살짝 다른 정의를 사용합니다. 식의 \(k+2\) 부분은 모델에 \(k+2\)개의 매개변수가 있기 때문에 나타나는 것입니다. 예측변수(predictor variable)에 대한 \(k\)개의 계수, 절편, 잔차에 대한 분산 때문에 \(k+2\)개입니다. 추정할 필요가 있는 매개변수의 수로 모델을 맞추는 작업(SSE)에 제한을 거는 것이 여기에서 기본적인 개념입니다.

AIC 값이 최소인 모델은 예측할 때 종종 가장 좋은 모델이 됩니다. 더 큰 \(T\) 값들의 경우에, AIC를 최소화하는 것은 CV 값을 최소화하는 것과 같습니다.

수정된 아카이케의 정보 기준

작은 \(T\) 값들의 경우에, AIC는 예측변수(predictor variable)를 너무 많이 고르는 경향이 있어서 다음과 같이 편향을 수정한 AIC를 사용합시다. \[ \text{AIC}_{\text{c}} = \text{AIC} + \frac{2(k+2)(k+3)}{T-k-3}. \] AIC처럼, AICc도 최소화해야합니다.

슈바르츠의 베이지안 정보 기준

관련된 측정량은 (종종 SBIC, BIC, 또는 SC라는 약자로 사용합니다) 슈바르츠(Schwarz)의 베이지안(Bayesian) 정보 기준입니다. \[ \text{BIC} = T\log\left(\frac{\text{SSE}}{T}\right) + (k+2)\log(T). \] AIC처럼, 가장 좋은 모델을 얻기 위해 BIC를 최소화해야합니다. BIC로 고른 모델은 AIC로 고른 것이나 더 적은 수의 항을 고려한 것과 같습니다. BIC가 AIC보다 매개변수의 수에 더 큰 제한을 주기 때문입니다. 큰 \(T\) 값에 대해, BIC를 최소화하는 것은 \(v = T[1-1/(\log(T)-1)]\)일 때 \(v\)개 관측치 제거법 교차 검증하는 것과 비슷합니다.

어떤 양을 사용해야 합니까?

\(\bar{R}^2\)이 널리 사용되고, 다른 양보다 더 오래되었지만, 이 양은 너무 많은 예측변수(predictor variable)를 고르는 경향이 있어서 예측 작업에 덜 적합합니다.

많은 통계학자는 진짜 근본 모델이 있을 때, 충분한 데이터가 있다면 BIC가 그 근본 모델을 고를 것이기 때문에 BIC를 사용합니다. 하지만, 실제로는 진정한 근본 모델이 있는 경우는 거의 없으며 진정한 근본 모델이 있더라도 (매개변수 추정값이 정확하지 않을 수 있기 때문에) 해당 모델을 선택하는 것이 반드시 가장 좋은 예측치를 낼 것이라고 보장하지 않습니다.

결과적으로, 여기에서는 예측을 목적으로 하는 (큰 \(T\) 값에 대해 동등한 모델을 내는) AICc, AIC, 또는 CV 통계를 주로 사용하겠습니다.

예제: 미국 소비

미국 소비 예측 다중 회귀 예제에서 4개의 예측변수(predictor variable)를 고려했습니다. 4개의 예측변수(predictor variable)를 고려하면, \(2^4=16\) 개의 모델이 가능합니다. 이제 4개의 모든 예측변수(predictor variable)가 실제로 유용한지, 이 중에서 하나 이상을 버릴지 여부를 확인할 수 있습니다. 16개의 모델을 맞췄고 결과를 표 5.1에 요약하였습니다. “1”은 모델에 포함된 예측변수(predictor variable)를 의미하고, “0”은 모델에 포함되지 않은 예측변수(predictor variable)를 의미합니다. 따라서 첫 번째 행은 4개의 예측변수(predictor variable)를 모두 포함하는 모델의 예측 정확도 측정값을 나타냅니다.

결과를 AICc에 따라서 정렬하였습니다. 그러므로 가장 좋은 모델이 표의 맨 위에 놓이고 가장 나쁜 모델이 표의 맨 아래에 놓입니다.

Table 5.1: 4가지 예측변수로 미국 소비를 예측하는 것에 대한 모든 가능한 16가지 모델.
소득 생산 저축 실업률 CV AIC AICc BIC AdjR2
1 1 1 1 0.116 -409.3 -408.8 -389.9 0.749
1 0 1 1 0.116 -408.1 -407.8 -391.9 0.746
1 1 1 0 0.118 -407.5 -407.1 -391.3 0.745
1 0 1 0 0.129 -388.7 -388.5 -375.8 0.716
1 1 0 1 0.278 -243.2 -242.8 -227.0 0.386
1 0 0 1 0.283 -237.9 -237.7 -225.0 0.365
1 1 0 0 0.289 -236.1 -235.9 -223.2 0.359
0 1 1 1 0.293 -234.4 -234.0 -218.2 0.356
0 1 1 0 0.300 -228.9 -228.7 -216.0 0.334
0 1 0 1 0.303 -226.3 -226.1 -213.4 0.324
0 0 1 1 0.306 -224.6 -224.4 -211.7 0.318
0 1 0 0 0.314 -219.6 -219.5 -209.9 0.296
0 0 0 1 0.314 -217.7 -217.5 -208.0 0.288
1 0 0 0 0.372 -185.4 -185.3 -175.7 0.154
0 0 1 0 0.414 -164.1 -164.0 -154.4 0.052
0 0 0 0 0.432 -155.1 -155.0 -148.6 0.000

가장 좋은 모델이 4개의 예측변수(predictor variable)를 모두 포함합니다. 하지만, 결과를 자세하게 살펴보면 몇 가지 재미있는 특징이 보입니다. 처음 네 행의 모델과 그 아래에 있는 모델이 분명하게 구분됩니다. 이것은 소득과 저축이 생산과 실업률보다 더 중요한 변수라는 것을 나타냅니다. 또한, 처음 두 행에서 CV, AIC, 및 AICc 값이 거의 같습니다. 따라서 우리는 생산 변수를 무시할 수 있고 비슷한 예측치를 얻을 수 있었습니다. 그림 5.5에 나타나는 것처럼 생산과 실업률이 아주 높은 상관 관계를 갖고, 따라서 생산에 나타나는 대부분의 예측 정보는 실업률 변수에도 포함된다는 것에 주목하시길 바랍니다.

가장 좋은 부분집합 회귀

가능한 경우, (위의 예제에서 한 것처럼) 모든 가능한 회귀 모델을 맞춰야 하고, 다룬 측정량 중 하나에 근거하여 가장 좋은 모델을 골라야합니다. 이것을 “가장 좋은 부분집합(Best subset)” 회귀 또는 “모든 가능한 부분집합(all possible subset)” 회귀라고 합니다.

단계적 회귀

많은 수의 예측변수(predictor variable)가 있는 경우에는, 모든 가능한 모델을 맞출 수는 없습니다. 예를 들면, 40개의 예측변수(predictor variable)가 있는 경우에는 \(2^{40} >\) 1조 개의 모델이 있을 수 있습니다! 결과적으로, 다룰 모델의 개수를 제한하는 전략이 필요합니다.

후진 단계적 회귀(backwards stepwise regression)는 꽤 잘 들어맞는 접근 방식입니다:

  • 모든 잠재적인 예측변수(predictor variable)를 포함하는 모델부터 시작합니다.
  • 한 번에 하나의 예측변수(predictor variable)를 제거합니다. 이렇게 하여 예측 정확도가 나아지면 모델을 유지합니다.
  • 더 나아지지 않을 때까지 반복합니다.

잠재적인 예측변수(predictor variable)가 너무 많으면, 후진 단계적 회귀(backwards stepwise regression)가 작동하지 않을 것이고 대신에 전진 단계적 회귀(forward stepwise regression)를 사용할 수 있습니다. 이 절차는 절편만 포함하는 모델에서 시작합니다. 예측변수(predictor variable)는 한 번에 하나씩 추가하며, 예측 정확도를 높이는 모델은 유지합니다. 더 나아지지 않을 때까지 이 과정을 반복합니다.

대안으로, 후진(backward)이나 전진(forward)에 대해, 시작 모델은 잠재적인 예측변수(predictor variable)의 부분집합을 포함하는 것일 수 있습니다. 이 경우에, 추가 단계가 포함되어야 합니다. 후진 절차에 대해, 각 단계에서 예측변수(predictor variable)를 넣는 것도 고려해야하며, 전진(forward) 절차에 대해, 예측변수(predictor variable)를 빼는 것도 고려해야 합니다. 이것을 혼합 절차라고 부릅니다.

어떠한 단계별 접근 방식이 가장 좋은 모델로 이어진다는 보장이 없지만 거의 항상 좋은 모델로 이어진다는 것을 깨닫는 것이 중요합니다. 자세한 내용은 James, Witten, Hastie, & Tibshirani (2014) 을 참조하시길 바랍니다.

예측변수를 고른 후의 추측을 주의합시다

이 책에서는 예측변수(predictor variable)의 통계 추론을 다루지 않습니다(즉, 각 예측변수와 관련된 \(p\)-값을 살피는 것). 예측변수(predictor variable)의 통계적인 유의미함을 살펴보고 싶다면, 예측변수(predictor variable)를 먼저 고르는 일을 포함하는 어떠한 절차도 \(p\)-값에 깔린 가정을 무효화합니다. 모델을 예측용으로 사용할 때 예측변수(predictor variable)를 고르는 절차는 유용합니다만, 예측변수(predictor variable)에 대한 어떤 목표 예상변수(forecast variable)의 효과를 살펴보고 싶을 때는 그렇지 않습니다.

참고 문헌

Bergmeir, C., Hyndman, R. J., & Koo, B. (2018). A note on the validity of cross-validation for evaluating autoregressive time series prediction. Computational Statistics and Data Analysis, 120, 70–83. https://robjhyndman.com/publications/cv-time-series/

James, G., Witten, D., Hastie, T., & Tibshirani, R. (2014). An introduction to statistical learning: With applications in R. New York: Springer. [Amazon]