[머신러닝] Bias-Variance Decomposition
데이터 생성 과정
어떤 $x$를 입력했을 때 완벽하게 $y$를 출력하는 이상적인 시스템 $F^*(x)$가 있다고 가정하더라도, 현실 세계에서 관측되는 $(x,y)$ 쌍에는 사람이 통제할 수 없는 노이즈 $\epsilon$이 포함된다.
\[y=F^*(x)+\epsilon~~,~~\epsilon\sim\mathcal{N}(0,\sigma^2)\]- $F^*(x)$는 우리가 학습을 통해 찾아야 하는 target function이지만, 실제로는 알 수 없는 경우가 많다.
- 노이즈 $\epsilon$은 모든 샘플에서 i.i.d. (Independent and Identically Distributed)하다고 가정한다.
예를 들어, 아래 그림에서 검은색 직선을 $F^*(x)=\beta_0+\beta_1 x$라고 해보자.
$F^*(x)$는 입력 $x$에 대해 항상 동일한 $y$값을 출력하는 시스템이다. 하지만 실제로 관측되는 $y$에는 노이즈 $\epsilon$가 포함되어 있기 때문에 파란색 점들처럼 같은 $x$에 대해서도 다른 $y$값이 관측될 수 있다. 따라서 노이즈에 의해, 특정 $x$에서의 $y$ 값은 단일 점이 아니라 분포의 형태를 띠게 된다.
출처: Deisenroth, Faisal, & Ong, Mathematics for Machine Learning
Bias-Variance Decomposition
노이즈가 어떻게 주어지냐에 따라서 데이터셋이 달라질 수 있다.
아래 그림에서 $\hat{F}(x)$는 특정 데이터셋에 대해서 학습한 함수를 의미하며, 여러 데이터셋에 대해 학습한 함수를 평균한 값을 $\bar{F}(x)$라고 표현한다.
\[\bar{F}(x)=\mathbb{E}\left[\hat{F}_D(x)\right]\]MSE (Mean Square Error)를 가정했을 때, 특정한 데이터 포인트에서의 에러는 아래와 같이 표현할 수 있다.
\[Err(x_0)=\mathbb{E}\vphantom{\Bigg(}\left[\left(y-\hat{F}(x_0)\right)^2\right]= \textcolor{red}{\text{Bias}^2\left(\hat{F}(x_0)\right)}+\textcolor{blue}{\text{Var}\left(\hat{F}(x_0)\right)}+\sigma^2\]이를 Bias-Variance Decomposition이라고 한다.
공식 유도
1. $y=F^*(x)+\epsilon$ 치환
\[\mathbb{E}\vphantom{\Bigg(}\left[\left(y-\hat{F}(x_0)\right)^2\right] =\mathbb{E}\left[\left(F^*(x_0)+\epsilon-\hat{F}(x_0)\right)^2\right]\]2. $\mathbb{E}\left[(A+B)^2\right]=\mathbb{E}\left[A^2\right]+\mathbb{E}\left[B^2\right]+2\mathbb{E}\left[AB\right]$ 공식 사용
$A=F^*(x_0)-\hat{F}(x_0)$ , $B=\epsilon$로 가정하고 전개
이때, $\epsilon\sim\mathcal{N}(0,\sigma)$이므로, $\mathbb{E}[\epsilon]=0$이다. 따라서 아래 식에서 $\mathbb{E}[AB]=0$이다.
\[\begin{aligned} \mathbb{E}\vphantom{\Bigg(}\left[\left(\underbrace{F^*(x_0)-\hat{F}(x_0)}_A+\underbrace{\epsilon}_B\right)^2\right] =\mathbb{E}\left[\underbrace{\left(F^*(x_0)-\hat{F}(x_0)\right)^2}_{A^2}\right] +\mathbb{E}\left[\underbrace{\epsilon^2}_{B^2}\right]\\ =\mathbb{E}\left[\left(F^*(x_0)-\hat{F}(x_0)\right)^2\right]+\sigma^2~~~~~~~~~~~~~ \end{aligned}\]3. $\bar{F}(x_0)$를 더하고 뺌
\[\mathbb{E}\left[\left(F^*(x_0)-\hat{F}(x_0)\right)^2\right] =\mathbb{E}\left[\left(F^*(x_0)-\bar{F}(x_0)+\bar{F}(x_0)-\hat{F}(x_0)\right)^2\right]+\sigma^2\]4. $\mathbb{E}\left[(A+B)^2\right]=\mathbb{E}\left[A^2\right]+\mathbb{E}\left[B^2\right]+2\mathbb{E}\left[AB\right]$ 공식 사용
$A=F^*(x_0)-\bar{F}(x_0)$ , $B=\bar{F}(x_0)-\hat{F}(x_0)$로 가정하고 전개
이때, $\mathbb{E}\left[\bar{F}(x_0)-\hat{F}(x_0)\right]=0$이다. 따라서 아래 식에서 $\mathbb{E}[AB]=0$이다.
\[\begin{aligned} \mathbb{E}\vphantom{\Bigg(}\left[\left(\underbrace{F^*(x_0)-\bar{F}(x_0)}_A+\underbrace{\bar{F}(x_0)-\hat{F}(x_0)}_B\right)^2\right]+\sigma^2~~~~~~~~~~~~~~~~~\\ =\mathbb{E}\vphantom{\Bigg(}\left[\underbrace{\left(F^*(x_0)-\bar{F}(x_0)\right)^2}_{A^2}\right] +\mathbb{E}\left[\underbrace{\left(\bar{F}(x_0)-\hat{F}(x_0)\right)^2}_{B^2}\right]+\sigma^2 \end{aligned}\]5. Bias와 Variance로 표현
\[\mathbb{E}\vphantom{\Bigg(}\left[\left(F^*(x_0)-\bar{F}(x_0)\right)^2\right] +\mathbb{E}\left[\left(\bar{F}(x_0)-\hat{F}(x_0)\right)^2\right]+\sigma^2 =\textcolor{red}{\text{Bias}^2\left(\hat{F}(x_0)\right)}+\textcolor{blue}{\text{Var}^2\left(\hat{F}(x_0)\right)}+\sigma^2\]편향 (Bias)
Bias는 모델이 예측한 평균값과 실제 정답 사이의 차이를 나타낸다.
Bias가 크다는 것은 모델이 잘못 학습해서, 데이터가 아무리 주어져도 정답에 근접하기 어렵다는 것을 의미한다. (High bias implies a poor match)
분산 (Variance)
Variance는 개별 값들이 그들의 평균으로부터 얼마나 떨어져 있는지를 나타낸다.
Variance가 크다는 것은 데이터셋이 조금만 달라져도 모델의 예측 결과가 크게 달라진다는 것을 의미한다. (High variance implies a weak match)
아래 그림에서 $F^*(x)$와 $\bar{F}(x)$의 차이가 bias에 해당하며, $\bar{F}(x)$ 주변에 퍼져있는 노란색 반경이 variance에 해당한다고 볼 수 있다.
Bias-Variance Dilemma
모델을 단순하게 만들면 variance는 작아지지만 bias가 커지고, 모델을 복잡하게 만들면 bias는 작아지지만 variance가 커진다.
즉, bias와 variance는 반비례 관계라서 항상 균형이 필요하다.
앙상블 (Ensemble)
앙상블은 개별 모델보다 더 높은 성능을 얻기 위해, 여러 개의 모델을 결합하여 하나의 최종 예측을 만드는 방법이다.
앙상블 기법은 주로 Bias와 Variance를 감소시키는 방법으로 나눌 수 있다.
- Bagging: 개별 모델의 변동성을 줄여 variance를 감소시킨다.
- Boosting: 약한 모델을 순차적으로 결합하면서 정답에 점점 더 가까워져 bias를 감소시킨다.
앙상블에서 중요한 것은 개별적인 모델이 충분한 다양성을 가지게 하는 것이다.
- Implicit diversity: 서로 다른 데이터셋을 사용하면 자연스럽게 모델 예측도 달라진다는 가정 (Bagging)
- Explicit diversity: 학습 과정에서 명시적으로 이전 모델과 다른 예측을 하도록 유도하는 방법 (Boosting)
아래 그림에서 왼쪽이 Bagging 계열의 알고리즘, 오른쪽이 Boosting 계열의 알고리즘을 나타낸다.
왼쪽은 병렬 처리가 가능하고, 오른쪽은 순차 처리만 가능하다.
하지만 개별 모델이 매우 클 수 있기 때문에, 반드시 병렬 처리를 하는 Bagging이 더 빠르다고 볼 수는 없다.
앙상블 사용 이유
앙상블에서 $m$번째 모델의 예측 결과를 $y_m(\mathbf{x})=f(\mathbf{x})+\epsilon_m(\mathbf{x})$으로 표현할 때, MSE는 아래와 같이 표현할 수 있다.
\[\vphantom{\Bigg(} \mathbb{E}_{\mathbf{x}}\left[\vphantom{\Big(}y_m(\mathbf{x})-f(\mathbf{x})\right]^2 =\mathbb{E}_{\mathbf{x}}\left[\epsilon_m(\mathbf{x})\right]^2\]$M$개의 개별 모델의 예측에 대한 MSE는 아래와 같이 표현할 수 있다.
\[E_{Avg}=\frac{1}{M}\sum_{m=1}^M\mathbb{E}_{\mathbf{x}}\left[\epsilon_m(\mathbf{x})\right]^2\]앙상블에서의 MSE는 아래와 같이 표현할 수 있다.
\[E_{Ensemble}=\mathbb{E}_{\mathbf{x}} \left[\left\{ \left(\frac{1}{M}\sum_{m=1}^My_m(\mathbf{x})\right)-f(\mathbf{x}) \right\}^2\right]_{\vphantom{\Bigg(}}\]이론적으로 개별 모델이 완전히 독립적이라면, 아래의 식이 성립한다.
\[E_{Ensemble}=\frac{1}{M}E_{Avg}\]즉, 앙상블의 에러는 개별 모델을 단독으로 사용할 때보다 항상 작거나 같다.
\[\vphantom{\Big(} E_{Ensemble}\leq E_{Avg}\]공식 유도
앙상블에서의 MSE 식을 아래와 같이 정리할 수 있다.
\[\begin{aligned} \left(\frac{1}{M}\sum_{m=1}^My_m(\mathbf{x})\right)-f(\mathbf{x}) =\frac{1}{M}\sum_{m=1}^M\left(f(\mathbf{x})+\epsilon_m(\mathbf{x})\right)-f(\mathbf{x})\\ =f(\mathbf{x})+\frac{1}{M}\sum_{m=1}^M\epsilon_m(\mathbf{x})-f(\mathbf{x})~~~\\ =\frac{1}{M}\sum_{m=1}^M\epsilon_m(\mathbf{x})~~~~~~~~~~~~~~~~~~~~~~~~~~~~ \end{aligned}\] \[E_{Ensemble}=\mathbb{E}_{\mathbf{x}} \left[\left( \frac{1}{M}\sum_{m=1}^M\epsilon_m(\mathbf{x}) \right)^2\right]_{\vphantom{\Bigg(}} =\frac{1}{M^2}\mathbb{E}_{\mathbf{x}} \left[\left( \sum_{m=1}^M\epsilon_m(\mathbf{x}) \right)^2\right]_{\vphantom{\Bigg(}}\]노이즈 $\epsilon$은 $\mathcal{N}(0,1)$을 따르고, i.i.d를 따른다고 가정했으므로, 아래의 식이 성립한다.
\[\begin{cases} \mathbb{E}_{\mathbf{x}}\left[\epsilon_m(\mathbf{x})\right]=0\\ \mathbb{E}_{\mathbf{x}}\left[\epsilon_m(\mathbf{x})\epsilon_l(\mathbf{x})\right]=0&,~~m\neq l \end{cases}\]위의 조건을 이용하면, 앙상블에서의 MSE 식을 아래와 같이 정리할 수 있다.
\[E_{Ensemble}=\frac{1}{M^2}\mathbb{E}_{\mathbf{x}} \left[ \sum_{m=1}^M\epsilon_m(\mathbf{x}) ^2\right]_{\vphantom{\Bigg(}} =\frac{1}{M^2} \sum_{m=1}^M\mathbb{E}_{\mathbf{x}}\left[\epsilon_m(\mathbf{x}) ^2\right]_{\vphantom{\Bigg(}}\]최종적으로 도출된 MSE는 각각 아래와 같다.
\[E_{Avg}=\frac{1}{M}\sum_{m=1}^M\mathbb{E}_{\mathbf{x}}\left[\epsilon_m(\mathbf{x})\right]^2~~,~~ E_{Ensemble}=\frac{1}{M^2} \sum_{m=1}^M\mathbb{E}_{\mathbf{x}}\left[\epsilon_m(\mathbf{x}) ^2\right]_{\vphantom{\Bigg(}}\]따라서, 아래의 관계가 성립하게 된다.
\[E_{Ensemble}=\frac{1}{M}E_{Avg}\]


