Bias-Variance Decomposition
19 May 2017 | Bias-Variance Decomposition
이번 글에서는 Bias-Variance Decomposition에 대해 살펴보도록 하겠습니다. 이번 글 역시 고려대 강필성 교수님 강의를 정리했음을 먼저 밝힙니다. 그럼 시작하겠습니다.
수식적 이해
Bias-Variance Decomposition은 일반화(generalization) 성능을 높이는 정규화(Regularization), 앙상블(ensemble) 기법의 이론적 배경으로 널리 알려져 있습니다. 학습에 쓰지 않은 미래데이터에 대한 오차의 기대값을 모델의 Bias와 Variance로 분해하는 내용이 골자입니다.
우선 $F*$를 우리가 찾아야 할 궁극의 모델이라고 칩시다. 이를 확률모형으로 나타내면 아래와 같습니다. 여기에서 $σ^2$는 이론적인 오차, natural error를 의미하는데요. 궁극의 모델 $F$의 기대값은 0입니다.
\[y={ F }^{ * }(x)+\varepsilon ,\quad \varepsilon \sim N(0,{ \sigma }^{ 2 })\]
하지만 우리가 항상 $F*$를 찾아낼 수 있는 건 아닙니다. 데이터에 노이즈가 끼어있을 수 있는데다 모든 데이터를 가지고 모델을 만들어낼 수 있는 게 아니기 때문입니다. 우리가 가진 학습데이터에서 찾아낸 모델을 F-hat이라 두겠습니다. 그러면 F-hat은 구축할 때마다 다를 겁니다. 이를 그림으로 나타내면 아래와 같습니다.
우리는 이를 바탕으로 F-bar를 도출해낼 수 있습니다. 여러 모델의 평균치를 나타내는 함수입니다.
\[\overline { F } (x)=E\left[ \hat { { F }_{ i } } (x) \right]\]
우리는 학습데이터로부터 F-hat을 만들었고, 이를 바탕으로 미래데이터 $x_0$을 하나 예측해야 한다고 가정해 보겠습니다. 이 데이터에 대한 오차의 기대값을 수식으로 나타내면 아래와 같습니다.
\[\begin{align*}
Expected\quad MSE&=E\left[ { (y-\hat { F } (x)) }^{ 2 }|x={ x }_{ 0 } \right] \\ &=E\left[ { \left\{ { F }^{ * }({ x }_{ 0 })+\varepsilon -\hat { F } ({ x }_{ 0 }) \right\} }^{ 2 } \right] \\ &=E\left[ { \left\{ { F }^{ * }({ x }_{ 0 })-\hat { F } ({ x }_{ 0 }) \right\} }^{ 2 } \right] +2\left\{ { F }^{ * }({ x }_{ 0 })-\hat { F } ({ x }_{ 0 }) \right\} E\left[ \varepsilon \right] +E\left[ { \varepsilon }^{ 2 } \right]
\end{align*}\]
$E(ε)=0$이므로 $Var(ε)=E(ε^2)$입니다. 식을 아래와 같이 변형해 정리할 수 있습니다.
\[\begin{align*}
Expected\quad MSE&=E\left[ { \left\{ { F }^{ * }({ x }_{ 0 })-\hat { F } ({ x }_{ 0 }) \right\} }^{ 2 } \right] +{ \sigma }^{ 2 }\\ &=E\left[ { \left\{ { F }^{ * }({ x }_{ 0 })-\overline { F } ({ x }_{ 0 })+\overline { F } ({ x }_{ 0 })-\hat { F } ({ x }_{ 0 }) \right\} }^{ 2 } \right] +{ \sigma }^{ 2 }
\end{align*}\]
여기서 잠깐, 아래 식이 성립함을 알 수 있습니다.-
\[E\left[ \overline { F } ({ x }_{ 0 })-\hat { F } ({ x }_{ 0 }) \right] =\overline { F } ({ x }_{ 0 })-\overline { F } ({ x }_{ 0 })=0\]
이를 활용해 원래 식에 정리하면 다음과 같습니다.
\[\begin{align*}
Expected\quad MSE&=E\left[ { \left\{ { F }^{ * }({ x }_{ 0 })-\overline { F } ({ x }_{ 0 }) \right\} }^{ 2 } \right] +E\left[ { \left\{ \overline { F } ({ x }_{ 0 })-\hat { F } ({ x }_{ 0 }) \right\} }^{ 2 } \right] +{ \sigma }^{ 2 }\\ &={ \left\{ { F }^{ * }({ x }_{ 0 })-\overline { F } ({ x }_{ 0 }) \right\} }^{ 2 }+E\left[ { \left\{ \overline { F } ({ x }_{ 0 })-\hat { F } ({ x }_{ 0 }) \right\} }^{ 2 } \right] +{ \sigma }^{ 2 }\\ &={ Bias }^{ 2 }(\hat { F } ({ x }_{ 0 }))+Var(\hat { F } ({ x }_{ 0 }))+{ \sigma }^{ 2 }
\end{align*}\]
위 식의 의미는 이렇습니다. Bias는 여러 모델의 예측 평균(F-bar)과 실제 정답($y$)과의 편차입니다. $Var$는 개별모델의 예측값(F-hat)과 여러 모델의 예측 평균(F-bar)과의 편차 제곱의 기대값입니다. 요컨대 임의의 미래데이터 $x_0$의 오차 기대값은 모델의 Bias와 Variance, Natural Error 세 요소로 분해할 수 있습니다.
직관적 이해
Bias와 Variance를 직관적으로 나타낸 그림은 아래와 같습니다. 파란 원의 중심은 True Function $F^*$를 의미합니다. 파란 원은 실제값 $y$가 가질 수 있는 범위를 나타냅니다. 노란 원의 중심(빨간점)은 F-hat의 평균, 즉 F-bar를 의미합니다. 빨간 실선은 F-hat이 예측하는 값의 범위를 가리킵니다. 아래 그림에서도 알 수 있듯 Bias와 Variance가 작을 수록 True Function에 가까워집니다.
위 그림은 아래처럼 해석할 수도 있습니다. 먼저 표를 보시죠.
우선 왼쪽부터 첫번째 그림을 보면 예측값(파란색 엑스표)의 평균이 과녁(Truth)과 멀리 떨어져 있어 Bias가 크고, 예측값들이 서로 멀리 떨어져 있어 Variance 또한 큰 것을 확인할 수 있습니다. 반면 네번째 그림의 경우 Bias, Variance 모두 작습니다. 네번째 경우가 제일 이상적이라고 할 수 있죠.
두번째 그림의 경우 예측값 평균이 과녁과 그리 멀지 않아 Bias가 작은 걸 확인할 수 있습니다. 반면 세번째 그림은 예측값들이 서로 오밀조밀 모여 있어 Variance가 작은 걸 볼 수 있습니다.
위 그림에서 세번째 그림인 High Bias, Low Variance에 해당하는 사례는 로지스틱 회귀, LDA, K-NN(large k) 등 데이터 노이즈에 비교적 강건한 모델입니다.
위 그림에서 두번째 그림인 Low Bias, High variance에 해당하는 사례는 뉴럴네트워크, SVM, K-NN(small k) 등 튜닝만 잘하면 과녁을 제대로 맞출 수 있는 모델들입니다.
부스팅(boosting) 등이 Bias를 줄여 성능 향상을 꾀하는 기법입니다. 라쏘회귀(Lasso Regression) 등 정규화 기법들이 Variance를 줄여 성능 향상을 추구합니다.
이번 글에서는 Bias-Variance Decomposition에 대해 살펴보도록 하겠습니다. 이번 글 역시 고려대 강필성 교수님 강의를 정리했음을 먼저 밝힙니다. 그럼 시작하겠습니다.
수식적 이해
Bias-Variance Decomposition은 일반화(generalization) 성능을 높이는 정규화(Regularization), 앙상블(ensemble) 기법의 이론적 배경으로 널리 알려져 있습니다. 학습에 쓰지 않은 미래데이터에 대한 오차의 기대값을 모델의 Bias와 Variance로 분해하는 내용이 골자입니다.
우선 $F*$를 우리가 찾아야 할 궁극의 모델이라고 칩시다. 이를 확률모형으로 나타내면 아래와 같습니다. 여기에서 $σ^2$는 이론적인 오차, natural error를 의미하는데요. 궁극의 모델 $F$의 기대값은 0입니다.
\[y={ F }^{ * }(x)+\varepsilon ,\quad \varepsilon \sim N(0,{ \sigma }^{ 2 })\]하지만 우리가 항상 $F*$를 찾아낼 수 있는 건 아닙니다. 데이터에 노이즈가 끼어있을 수 있는데다 모든 데이터를 가지고 모델을 만들어낼 수 있는 게 아니기 때문입니다. 우리가 가진 학습데이터에서 찾아낸 모델을 F-hat이라 두겠습니다. 그러면 F-hat은 구축할 때마다 다를 겁니다. 이를 그림으로 나타내면 아래와 같습니다.
우리는 이를 바탕으로 F-bar를 도출해낼 수 있습니다. 여러 모델의 평균치를 나타내는 함수입니다.
\[\overline { F } (x)=E\left[ \hat { { F }_{ i } } (x) \right]\]우리는 학습데이터로부터 F-hat을 만들었고, 이를 바탕으로 미래데이터 $x_0$을 하나 예측해야 한다고 가정해 보겠습니다. 이 데이터에 대한 오차의 기대값을 수식으로 나타내면 아래와 같습니다.
\[\begin{align*} Expected\quad MSE&=E\left[ { (y-\hat { F } (x)) }^{ 2 }|x={ x }_{ 0 } \right] \\ &=E\left[ { \left\{ { F }^{ * }({ x }_{ 0 })+\varepsilon -\hat { F } ({ x }_{ 0 }) \right\} }^{ 2 } \right] \\ &=E\left[ { \left\{ { F }^{ * }({ x }_{ 0 })-\hat { F } ({ x }_{ 0 }) \right\} }^{ 2 } \right] +2\left\{ { F }^{ * }({ x }_{ 0 })-\hat { F } ({ x }_{ 0 }) \right\} E\left[ \varepsilon \right] +E\left[ { \varepsilon }^{ 2 } \right] \end{align*}\]$E(ε)=0$이므로 $Var(ε)=E(ε^2)$입니다. 식을 아래와 같이 변형해 정리할 수 있습니다.
\[\begin{align*} Expected\quad MSE&=E\left[ { \left\{ { F }^{ * }({ x }_{ 0 })-\hat { F } ({ x }_{ 0 }) \right\} }^{ 2 } \right] +{ \sigma }^{ 2 }\\ &=E\left[ { \left\{ { F }^{ * }({ x }_{ 0 })-\overline { F } ({ x }_{ 0 })+\overline { F } ({ x }_{ 0 })-\hat { F } ({ x }_{ 0 }) \right\} }^{ 2 } \right] +{ \sigma }^{ 2 } \end{align*}\]여기서 잠깐, 아래 식이 성립함을 알 수 있습니다.-
\[E\left[ \overline { F } ({ x }_{ 0 })-\hat { F } ({ x }_{ 0 }) \right] =\overline { F } ({ x }_{ 0 })-\overline { F } ({ x }_{ 0 })=0\]이를 활용해 원래 식에 정리하면 다음과 같습니다.
\[\begin{align*} Expected\quad MSE&=E\left[ { \left\{ { F }^{ * }({ x }_{ 0 })-\overline { F } ({ x }_{ 0 }) \right\} }^{ 2 } \right] +E\left[ { \left\{ \overline { F } ({ x }_{ 0 })-\hat { F } ({ x }_{ 0 }) \right\} }^{ 2 } \right] +{ \sigma }^{ 2 }\\ &={ \left\{ { F }^{ * }({ x }_{ 0 })-\overline { F } ({ x }_{ 0 }) \right\} }^{ 2 }+E\left[ { \left\{ \overline { F } ({ x }_{ 0 })-\hat { F } ({ x }_{ 0 }) \right\} }^{ 2 } \right] +{ \sigma }^{ 2 }\\ &={ Bias }^{ 2 }(\hat { F } ({ x }_{ 0 }))+Var(\hat { F } ({ x }_{ 0 }))+{ \sigma }^{ 2 } \end{align*}\]위 식의 의미는 이렇습니다. Bias는 여러 모델의 예측 평균(F-bar)과 실제 정답($y$)과의 편차입니다. $Var$는 개별모델의 예측값(F-hat)과 여러 모델의 예측 평균(F-bar)과의 편차 제곱의 기대값입니다. 요컨대 임의의 미래데이터 $x_0$의 오차 기대값은 모델의 Bias와 Variance, Natural Error 세 요소로 분해할 수 있습니다.
직관적 이해
Bias와 Variance를 직관적으로 나타낸 그림은 아래와 같습니다. 파란 원의 중심은 True Function $F^*$를 의미합니다. 파란 원은 실제값 $y$가 가질 수 있는 범위를 나타냅니다. 노란 원의 중심(빨간점)은 F-hat의 평균, 즉 F-bar를 의미합니다. 빨간 실선은 F-hat이 예측하는 값의 범위를 가리킵니다. 아래 그림에서도 알 수 있듯 Bias와 Variance가 작을 수록 True Function에 가까워집니다.
위 그림은 아래처럼 해석할 수도 있습니다. 먼저 표를 보시죠.
우선 왼쪽부터 첫번째 그림을 보면 예측값(파란색 엑스표)의 평균이 과녁(Truth)과 멀리 떨어져 있어 Bias가 크고, 예측값들이 서로 멀리 떨어져 있어 Variance 또한 큰 것을 확인할 수 있습니다. 반면 네번째 그림의 경우 Bias, Variance 모두 작습니다. 네번째 경우가 제일 이상적이라고 할 수 있죠.
두번째 그림의 경우 예측값 평균이 과녁과 그리 멀지 않아 Bias가 작은 걸 확인할 수 있습니다. 반면 세번째 그림은 예측값들이 서로 오밀조밀 모여 있어 Variance가 작은 걸 볼 수 있습니다.
위 그림에서 세번째 그림인 High Bias, Low Variance에 해당하는 사례는 로지스틱 회귀, LDA, K-NN(large k) 등 데이터 노이즈에 비교적 강건한 모델입니다.
위 그림에서 두번째 그림인 Low Bias, High variance에 해당하는 사례는 뉴럴네트워크, SVM, K-NN(small k) 등 튜닝만 잘하면 과녁을 제대로 맞출 수 있는 모델들입니다.
부스팅(boosting) 등이 Bias를 줄여 성능 향상을 꾀하는 기법입니다. 라쏘회귀(Lasso Regression) 등 정규화 기법들이 Variance를 줄여 성능 향상을 추구합니다.
Comments