모형선택을 위한 교차검증¶
AIC나 BIC 같은 정보기준은 수학적 근사로 표본 밖 성능을 추정한다. 교차검증은 더 직접적인 접근을 취한다. 자료를 훈련 부분집합과 검증 부분집합으로 반복해 나누고, 훈련자료로 모형을 적합한 뒤 남겨 둔 자료에서 예측을 평가한다. 이렇게 하면 모형이 새 관측값에 얼마나 잘 일반화되는지에 대한 구체적인 추정값을 얻는다.
1. 검증집합 방법¶
가장 단순한 전략은 자료를 서로 겹치지 않는 두 부분집합, 곧 모형을 적합할 훈련집합과 평가할 검증집합(홀드아웃 집합)으로 나누는 것이다.
관측값 \(n\)개가 있을 때 일정 비율(보통 50–80%)을 무작위로 훈련에 배정하고 나머지를 검증에 배정한다. 훈련집합으로 모형을 적합하고 검증집합에서 예측오차를 계산한다.
여기서 \(\hat{y}_i\)는 훈련집합만으로 적합한 모형이 내놓은 관측값 \(i\)의 예측값이다.
한계¶
- 큰 분산: 추정값이 어떤 관측값이 훈련에 가고 어떤 것이 검증에 가느냐에 크게 좌우된다. 무작위 분할이 달라지면 오차 추정값이 상당히 달라질 수 있다.
- 줄어든 훈련자료: 모형이 쓸 수 있는 것보다 적은 관측값으로 훈련되므로 오차 추정값에 비관적 편향이 생긴다.
2. K-겹 교차검증¶
K-겹 교차검증은 모든 관측값을 훈련과 검증에 모두 쓰게 하여 검증집합 방법의 한계를 극복한다.
절차¶
- \(n\)개의 관측값을 크기가 대략 같은 \(K\)개의 묶음(겹) \(C_1, C_2, \ldots, C_K\)으로 무작위로 나눈다.
- 각 겹 \(k = 1, \ldots, K\)에 대해:
- 겹 \(C_k\)에 속한 관측값을 제외한 모든 관측값으로 모형을 적합한다.
- \(C_k\)의 남겨 둔 관측값을 예측하고 오차를 기록한다.
- 모든 겹의 예측오차를 평균낸다.
공식¶
\(n_k = |C_k|\)를 겹 \(k\)의 관측값 개수라 하고, \(\hat{y}_i^{(-k)}\)를 겹 \(k\) 없이 훈련한 모형이 내놓은 관측값 \(i\)의 예측값이라 하자. 예측오차의 K-겹 교차검증 추정값은
모든 겹의 크기가 같다면 이는 다음과 동등하다.
여기서 \(\text{MSE}_k = \frac{1}{n_k} \sum_{i \in C_k} (y_i - \hat{y}_i^{(-k)})^2\)는 겹 \(k\)의 평균제곱오차이다.
흔한 선택은 \(K = 5\)와 \(K = 10\)이다. 두 값 모두 교차검증 추정값의 편향과 분산 사이에서 좋은 절충을 이룬다는 것이 경험적으로 확인되었다.
3. 하나 빼기 교차검증¶
하나 빼기 교차검증(LOOCV)은 \(K = n\)인 K-겹 교차검증의 특수한 경우로, 각 겹이 정확히 관측값 하나를 담는다.
여기서 \(\hat{y}_i^{(-i)}\)는 \(i\)를 제외한 모든 관측값으로 훈련한 모형이 내놓은 관측값 \(i\)의 예측값이다.
선형회귀에서의 지름길¶
선형회귀에서 LOOCV에는 놀라운 계산 지름길이 있다. \(n\)개의 모형을 따로 적합하는 대신, 모자행렬 \(\mathbf{H} = \mathbf{X}(\mathbf{X}^\top\mathbf{X})^{-1}\mathbf{X}^\top\)를 이용해 한 번의 적합으로 LOOCV 오차를 계산할 수 있다.
여기서 \(e_i = y_i - \hat{y}_i\)는 통상적인 잔차이고 \(h_{ii}\)는 \(\mathbf{H}\)의 \(i\)번째 대각원소이다. 이 공식은 관측값 \(i\)의 하나 빼기 예측오차가 통상적인 잔차를 \(1 - h_{ii}\)로 나눈 것에 지나지 않음을 보여준다. 여기서 \(h_{ii}\)는 관측값 \(i\)의 지렛대를 잰다.
LOOCV 지름길의 유도
관측값 \(i\)를 제거하면 Sherman-Morrison-Woodbury 공식이 \(\hat{\boldsymbol{\beta}}\)의 변화를 주며, \(x_i\)에서의 예측값은 정확히 \(e_i \cdot h_{ii} / (1 - h_{ii})\)만큼 바뀐다. 따라서 하나 빼기 잔차는 \(y_i - \hat{y}_i^{(-i)} = e_i / (1 - h_{ii})\)이다.
4. 교차검증의 편향-분산 절충¶
\(K\)의 선택에는 절충이 따른다.
편향: K-겹 교차검증에서 각 훈련집합의 크기는 대략 \(n(K-1)/K\)이다. \(K\)가 작으면(예: \(K = 2\)) 각 훈련집합이 전체 자료보다 훨씬 작아, 모든 자료로 훈련한 모형에 비해 성능이 떨어지는 모형이 나온다. 이는 교차검증 오차 추정값에 위쪽 편향을 만든다. LOOCV(\(K = n\))는 각 훈련집합이 \(n - 1\)개의 관측값을 가지므로 이 편향을 최소화한다.
분산: LOOCV의 \(K\)개 훈련집합은 거의 완전히 겹치므로(\(n - 2\)개의 관측값을 공유한다) \(K\)개의 적합된 모형이 강하게 상관되어 있다. 상관된 양들을 평균내는 것은 무상관인 양들을 평균내는 것보다 분산을 덜 줄인다. 그 결과 LOOCV는 분산이 클 수 있다. \(K\)가 작으면(예: \(K = 5\)나 \(K = 10\)) 추정값들의 상관이 덜해 분산이 보통 더 작다.
| \(K\)의 선택 | 교차검증 추정값의 편향 | 교차검증 추정값의 분산 | 계산량 |
|---|---|---|---|
| \(K = 5\) | 중간(위쪽) | 작음 | 모형 5회 적합 |
| \(K = 10\) | 작음 | 중간 | 모형 10회 적합 |
| \(K = n\) (LOOCV) | 거의 불편 | 클 수 있음 | 1회 적합(선형회귀의 지름길을 쓸 때) |

위 표를 모의실험으로 확인해 보자. 관측값 \(n = 80\), 설명변수 \(5\)개의 회귀를 \(600\)번 되풀이하면서, 매번 전체 자료로 적합한 모형의 진짜 표본밖 MSE를 아주 큰 검정자료에서 따로 재 두었다. 교차검증이 추정하려는 목표가 그 값이고, 그림은 (교차검증 추정값 \(-\) 실제값)을 정리한 것이다.
왼쪽이 편향이다. \(K = 2\)에서 평균 오차가 \(+0.098\)로 뚜렷하게 위로 치우친다. 훈련집합이 \(40\)개뿐이라 전체 \(80\)개로 적합한 모형보다 나쁜 모형을 평가하게 되기 때문이다. \(K = 5\)에서 \(+0.022\), \(K = 10\)에서 \(+0.009\)로 급격히 줄고, LOOCV(\(K = 80\))에서는 \(+0.001\)로 사실상 사라진다. 훈련집합이 \(79\)개여서 전체와 거의 같기 때문이다. 표의 "편향" 열이 그대로 재현되었다.
오른쪽이 분산이다. \(K = 2\)에서 오차의 표준편차가 \(0.239\)로 가장 크고, \(K = 5\)에서 \(0.195\), \(K = 10\)에서 \(0.188\)까지 줄어든 뒤 \(K = 20\) 이후로는 \(0.184\) 언저리에서 더 이상 내려가지 않는다. \(K\)를 \(20\)에서 \(80\)으로 네 배 늘려도 얻는 것이 없다는 뜻이다. 겹이 많아질수록 각 훈련집합이 서로 거의 같아져(LOOCV에서는 \(78\)개의 관측값을 공유한다) \(K\)개의 추정값이 강하게 상관되고, 상관된 값을 평균해서는 분산이 줄지 않기 때문이다.
두 그림을 겹쳐 보면 \(K = 5\)에서 \(K = 10\) 사이가 답이라는 것이 보인다. 그보다 작으면 편향이 눈에 띄게 커지고, 그보다 크면 계산만 늘 뿐 편향도 분산도 거의 개선되지 않는다. 아래 권장이 경험칙이 아니라 이 두 곡선의 교차점에서 나온 결론이다.
기본 권장
실무에서는 \(K = 5\)나 \(K = 10\)이 권장된다. James 등(2013)은 이 값들이 편향도 분산도 지나치게 크지 않은 교차검증 오차 추정값을 준다는 것이 경험적으로 확인되었다고 지적한다.
5. 모형선택을 위한 교차검증¶
K-겹 교차검증으로 \(M\)개의 후보 모형 가운데 고르려면
- 각 모형 \(j = 1, \ldots, M\)에 대해 \(\text{CV}_{(K)}^{(j)}\)를 계산한다.
- 교차검증 오차가 가장 작은 모형을 고른다: \(\hat{j} = \arg\min_j \text{CV}_{(K)}^{(j)}\).
1 표준오차 규칙¶
절대적으로 가장 낮은 교차검증 오차를 갖는 모형을 고르는 대신, 1 표준오차 규칙은 교차검증 오차가 최솟값의 1 표준오차 안에 드는 가장 단순한 모형을 고른다. 과적합에 대한 추가 방어책이 된다.
\(\text{SE}(\text{CV}_{(K)}^{(j)})\)를 모형 \(j\)의 교차검증 추정값의 표준오차라 하자. 이는 \(K\)개 겹별 MSE의 표준편차를 \(\sqrt{K}\)로 나눈 값이다. 1 표준오차 규칙은 다음을 만족하는 가장 단순한 모형 \(j\)를 고른다.
6. AIC와의 관계¶
Stone(1977)은 선형회귀에서 AIC에 의한 모형선택이 LOOCV와 점근적으로 동등함을 증명했다. 곧 큰 표본에서 AIC와 LOOCV는 같은 모형을 고르는 경향이 있다. \(K\)가 작은 K-겹 교차검증은 AIC와 동등하지 않다. 훈련집합이 작아 생기는 위쪽 편향 때문에 더 단순한 모형을 고르는 경향이 있어 오히려 BIC에 가깝다.
교차검증에도 가정이 있다
교차검증은 관측값이 교환 가능하다고(대략 순서가 중요하지 않다고) 가정한다. 시계열 자료에서 표준적인 무작위 겹 교차검증은 시간 구조를 위배하여 오도할 만큼 낙관적인 추정값을 낸다. 시계열 자료에는 이동창이나 확장창 교차검증 같은 전용 전략이 필요하다.
연습문제¶
연습문제 1. k-겹 교차검증과 하나 빼기 교차검증(LOOCV)의 차이를 설명하라. 추정된 검정오차의 편향과 분산에는 어떤 절충이 있는가?
풀이
k-겹 교차검증은 자료를 크기가 대략 같은 \(k\)개의 겹으로 나누고 \(k-1\)개 겹으로 훈련한 뒤 남겨 둔 겹에서 검정하며, 모든 겹을 돌아가면서 반복한다. 교차검증 추정값은 겹들의 검정오차 평균이다. 흔한 선택은 \(k = 5\)나 \(10\)이다.
LOOCV는 \(k = n\)인 특수한 경우로, 각 관측값이 자기 자신의 검정집합이 된다. 모형을 \(n\)번 훈련하며 매번 \(n-1\)개의 관측값을 쓴다.
편향-분산 절충:
- LOOCV는 편향이 작지만(훈련집합이 거의 전체 자료이다) 분산이 크다(\(n\)개의 훈련집합이 크게 겹쳐 \(n\)개의 오차 추정값이 강하게 상관된다).
- 5-겹이나 10-겹은 편향이 조금 더 크지만(훈련집합이 더 작다) 분산이 더 작다(훈련집합이 덜 겹쳐 추정값 사이의 상관이 줄어든다).
실무에서는 분산 감소가 작은 편향 증가를 능가하므로 5-겹이나 10-겹이 검정오차를 더 잘 추정하는 편이다.
연습문제 2. 한 데이터 과학자가 다항회귀를 적합하고 훈련자료로 훈련오차를 최소화하는 차수를 골랐다. 그 결과 15차가 최선이라고 나왔다. 무엇이 문제이며 교차검증은 어떻게 도움이 되는가?
풀이
훈련오차로 모형 복잡도를 고르면 언제나 가장 복잡한 모형이 선택된다. 모형이 유연해질수록 훈련오차가 단조롭게 줄어들기 때문이다. 15차 다항식은 훈련자료를 과적합하여 잡음까지 외워 버리고 새 자료에서 성능이 나쁠 가능성이 높다.
교차검증은 (보지 않은 자료에서의 성능인) 검정오차를 추정하여 이 문제에 대처한다. 각 후보 차수 \(d\)에 대해
- 자료를 \(k\)개의 겹으로 나눈다.
- 각 겹에 대해 나머지 자료로 \(d\)차 다항식을 적합하고 남겨 둔 겹에서 예측오차를 계산한다.
- 겹들의 오차를 평균낸다.
교차검증 오차를 최소화하는 차수가 적합과 복잡도의 균형을 이룬다. 보통 교차검증은 훨씬 낮은 차수(예: 2–4차)를 고르며 이쪽이 더 잘 일반화된다.
연습문제 3. 층화 k-겹 교차검증에서 층화의 기준은 무엇이며 언제 중요한가?
풀이
층화 k-겹 교차검증에서는 각 겹이 전체 자료와 대략 같은 반응변수 분포를 갖도록 겹을 구성한다. 분류 문제에서는 각 겹이 각 범주를 대략 같은 비율로 담는다는 뜻이다.
층화가 중요한 경우:
- 범주 불균형: 소수 범주가 관측값의 5%뿐이라면 무작위로 만든 겹에 소수 범주 사례가 하나도 없을 수 있어 검정오차 추정을 믿을 수 없게 된다.
- 작은 자료: 자료가 적을 때는 각 겹이 대표성을 가져야 교차검증 추정값의 분산이 커지지 않는다.
- 순서형이거나 묶인 반응변수: 각 겹이 결과변수의 범위를 고루 담도록 한다.
회귀에서는 \(Y\)를 구간으로 나눈 값을 기준으로 층화할 수 있다. 다만 scikit-learn의 StratifiedKFold는 이산 라벨을 요구하므로, 회귀에서는 먼저 \(Y\)를 직접 구간화하여 라벨을 만든 뒤 그 라벨로 StratifiedKFold를 써야 한다.
연습문제 4. 교차검증을 이용한 모형선택에서 "1 표준오차 규칙"과 그 근거를 설명하라.
풀이
1 표준오차 규칙은 교차검증 오차가 최소 교차검증 오차의 1 표준오차 안에 드는 가장 단순한 모형을 고른다. 곧
- 각 모형 \(d\)에 대해 평균 교차검증 오차 \(\overline{\text{CV}}_d\)와 그 표준오차 \(\text{SE}_d\)를 계산한다.
- \(\overline{\text{CV}}_{d^*}\)가 최소인 모형 \(d^*\)를 찾는다.
- \(\overline{\text{CV}}_d \leq \overline{\text{CV}}_{d^*} + \text{SE}_{d^*}\)를 만족하는 가장 단순한 모형 \(d\)를 고른다.
근거: 교차검증 오차 추정값은 잡음이 있고, 절대 최솟값을 갖는 모형이 필요 이상으로 복잡할 수 있다. 최솟값의 1 표준오차 안에 있는 모형들은 예측 성능에서 통계적으로 구별되지 않는다. 그중에서는 절약성, 해석 가능성, 로버스트성을 위해 가장 단순한 모형을 선호한다.
이 규칙은 Breiman 등(1984)이 CART의 맥락에서 널리 알렸으며 정칙화(예: LASSO 교차검증)에서도 널리 쓰인다.
정리하며¶
교차검증은 표본 밖 성능을 근사하지 않고 직접 잰다.
- 검증집합 방법이 가장 단순하다. 한 번 나누면 되지만 어떻게 나뉘었느냐에 따라 결과가 크게 흔들리고, 훈련자료가 줄어 성능이 비관적으로 나온다.
- LOOCV 는 편향이 작다. \(n-1\) 개로 훈련하므로 거의 전체 자료를 쓰지만, \(n\) 번 적합해야 하고 추정값의 분산이 크다(훈련집합들이 거의 같아 상관이 높다).
- \(k\)-겹이 실용적 균형이다. \(k=5\) 나 \(10\) 이 관례이며, 편향과 분산과 계산 비용 셋을 적당히 맞춘다.
- 선형회귀에서는 LOOCV 에 닫힌 형태가 있다. 모자값을 쓰면 한 번의 적합으로 계산되므로 비용 문제가 사라진다.
- 누출을 조심한다. 표준화·변수선택 같은 전처리를 각 겹 안에서 해야 하며, 전체 자료에서 먼저 하면 검증자료가 훈련에 새어든다. 가장 흔한 실수다.
다음 절 단계적·부분집합 선택으로 넘어간다.