지난 포스팅까지 저희는 이미 주변우도가 "적절한 복잡도"의 모델을 선택하는 데 도음이 된다는 사실을 확인하였습니다. 그렇다면 베이지안 방식이 아닐 때는 어떤 식으로 모델을 선택하는 게 좋을까요? 이를 위해 주로 사용되는 기법이 바로 교차검증(cross-validation), 특히 K-fold나 Leave-One-Out(LOO-CV)를 자주 사용합니다. 정말 재미있는 사실은 주변우도는 사실 LOO-CV와 매우 밀접한 관련이 있습니다.
모델 $m$에 대한 주변우도는 다음과 같이 순차적인 형태로 작성할 수 있습니다.
$$p(\mathcal{D} \mid m) = \prod_{n = 1}^{N} p(y_{n} \mid y_{1:n - 1}, x_{1:N}, m) = \prod_{n = 1}^{N} p(y_{n} \mid x_{n}, \mathcal{D}_{1:n-1}, m)$$
여기서 바뀐 부분은 조건부로 $x_{1:n} = \{ x_{1}, \dots, x_{n} \}$과 $y_{1:n - 1} = \{ y_{1}, \dots, y_{n - 1} \}$이 있기 때문에 이를 쌍으로 데이터로 보아 $x_{n}$을 제외하고 하나로 묶어 $\mathcal{D}_{1:n - 1} = \{ (x_{1}, y_{1}), \dots, (x_{n - 1}, y_{n - 1}) \}$라고 쓴 것입니다. 여기서 $p(y_{n} \mid x_{n}, \mathcal{D}_{1:n - 1}, m)$을 다음과 같이 다시 쓸 수 있습니다. 편의를 위해 아랫첨자는 빼고 쓰도록 하겠습니다.
$$p(y \mid x, \mathcal{D}_{1:n - 1}, m) = \int p(y \mid x, \theta) p(\theta \mid \mathcal{D}_{1:n - 1}, m) \; d\theta$$
이 식은 이전 데이터 $\mathcal{D}_{1 : n - 1}$로 업데이트된 사후분포를 사용해 예측하는 확률입니다. 이때, 사후분포 대신 $\mathcal{D}_{1:n - 1}$에서 얻은 점 추정치 $\hat{\theta}_{m}(\mathcal{D}_{1:n - 1})$을 사용한다고 가정하겠습니다. 즉, 플러그인 근사를 적용하는 것이죠.
$$\begin{align} p(y \mid x, \mathcal{D}_{1:n - 1}, m) &\approx \int p(y \mid x, \theta) \delta (\theta - \hat{\theta}_{m}(\mathcal{D}_{1:n-1})) \; d\theta \\ &= p(y \mid x, \hat{\theta}_{m}(\mathcal{D}_{1:n - 1})) \; d\theta \end{align}$$
이 경우 최종적으로 주변우도의 로그는 다음과 같이 근사됩니다.
$$\log p(\mathcal{D} \mid m) \approx \sum_{n = 1}^{N} \log p(y_{n} \mid x_{n}, \hat{\theta}_{m}(\mathcal{D}_{1:n - 1}))$$
그런데 이 식은 사실 LOO-CV의 로그 우도 추정치와 매우 유사한 모습을 보입니다. LOO-CV의 경우 다음과 같이 계산됩니다.
$$\frac{1}{N} \sum_{n = 1}^{N} \log p(y_{n} \mid x_{n}, \hat{\theta}_{m}(\mathcal{D}_{1:n - 1} \cup \mathcal{D}_{n + 1: N})$$
이는 현재 예측 대상 데이터 포인트를 제외한 나머지 전부로 모델을 학습하게 되죠. 여기서 차이점은 주변우도 근사식에서 앞쪽 데이터 $\mathcal{D}_{1:n - 1}$만 사용하고 뒤쪽 데이터는 $\mathcal{D}_{n + 1:N}$을 무시한다는 점이죠. 따라서, LOO-CV와 주변우도 모두, 적절한 복잡도의 모델을 선택하도록 작용합니다.