본문 바로가기
IT/ML

머신러닝 편향-분산 트레이드오프(Bias-variance tradeoff) 쉽게 이해하기

by 모던네이쳐 2020. 9. 22.
728x90

 머신러닝 모델을 만들고 고르는 데 있어, 편향(bias) 또는 분산(variance)의 영향을 받아 모델 성능이 떨어지는지 확인하는 과정은 매우 중요하다. 편향은 모델이 비교적 간단(underfitting)하여 평균적인 모델과 정답 차가 클 때 나타나며, 분산은 모델이 과적합(overfitting) 되어 평균적인 모델에 비해 변동이 큰 경우를 나타낸다. 자세한 내용은 다음 과정을 통해 찬찬히 살펴보자.

 

Bias, Variance

 

평균제곱오차(MSE, Mean Squared Error)

 

$ MSE = \frac{1}{n}\sum^n_{i=1}(y_i-\hat{f}(x_i))^2 $

 

 MSE는 나의 모델이 실제 데이터와 어느정도 오차가 있는지를 나타내는 여러 지표 중 하나이다. 나의 모델이 내놓은 예측치($\hat{f}(x_i)$)와 실제 데이터 값($y_i$) 간의 오차들을 제곱하여 평균을 냄으로써 모델의 성능을 평가할 수 있다. 오차가 작을수록 잘 예측했음을 의미하기 때문에 MSE 0에 가까울 수록 좋다.

 

 

Data set의 이해

 들어가기 앞서, Data set에 대한 정의가 필요하다. 우리는 실제 세상을 모델링하기 위해 샘플 데이터를 취득하여 모델을 생성하게 되는데, 이때전체가 아닌샘플데이터를 사용한다는 것에 주목해야 한다. 통계에서 자주 언급되는 모집단과 표본집단 개념을 떠올리면 된다.

 다음과 같은 예시를 생각해 볼 수 있다. 환자의 혈압 수치를 통해 기대 수명을 예측하는 모델을 만든다고 가정하자. 전세계 사람의 혈압과 수명을 조사하여 모델을 만들면 가장 좋겠지만 예산과 시간상의 이유로 우리는 병원에 있는 일부 환자 데이터만 사용할 수 있다. 이 때 특정 병원에서 얻은 데이터를 우리가 모델을 만드는 데 사용할 샘플 데이터라고 부른다.

 우리가 사용할 데이터는 특정 병원에서 얻은 샘플 데이터이지만, 누군가는 다른 병원에서도 혈압과 수명 데이터를 얻을 수 있다. 이렇게 샘플 데이터도 여러 경로 및 시간에 따라, 다른 환자들로 구성된 다양한 샘플 데이터가 있을 수 있다.

 

 

유연성과 해석력 (Flexibility and Interpretability)

 유연성(Flexibility)은 모델이 훈련데이터(Training data)에 잘 적합하는 정도, 구불구불한 정도를 의미한다. Flexibility가 높은 경우(flexible)는 자유도(degrees of freedom)가 높고 모델 자체가 복잡하여 해석력(Interpretability)이 떨어지는 경향이 있다. 반대로 flexibility가 낮은 경우(inflexible)는 모델이 비교적 심플하여 훈련 데이터가 바뀌어도 휘청거리지 않으며 해석력이 좋다.

 

 

편향(Bias)과 분산(Variance)의 정의

 머신러닝 모델은 훈련데이터(Training data) MSE를 최소화 하는 방식으로 적합(fit)시켜 생성된다.

 편향(Bias)이 높다는 것은, 나의샘플 데이터를 사용하여 적합된 모델’ $\hat{f}(x_o)$을 포함하여 (이론적으로) 다른 여러 샘플 데이터로도 적합하여 만들어진모델들의 평균’ $E[\hat{f}(x_o)]$이 ‘실제 정답’ $f(x_0)$ 과의 차이가 크다는 것을 의미한다. 모델의 flexibility가 낮고 모델이 단순한 경우, 훈련데이터를 잘 적합하지 못하며, 다른 샘플 데이터를 가지고 적합해 보더라도 평균적으로 실제 정답과 항상 차이가 나게 된다.

High bias

 분산(Variance)이 높다는 것은 나의 '샘플 데이터에 적합된 모델' $\hat {f}(x_o)$이 여러 샘플 데이터로도 적합하여 만들어진모델들의 평균’ $E [\hat {f}(x_o)]$과 차이가 큰 경우를 뜻한다. 모델의 flexibility가 높고 복잡한 경우, 각 훈련 데이터에 과적합(overfitting) 되는 경향이 있어 나의 샘플 데이터로 만든 모델 또한 과적합 되었을 가능성이 높다. 반면, flexibility가 높기에 이렇게 과적합 된 모델들의 평균을 구하면 결국 모수에 가까운 크기의 샘플 데이터를 표현하게 되어 실제 정답에 유사한 결과가 나타난다. 때문에 모델들의 평균 자체는 실제 정답에 가깝지만 나의 샘플 데이터로 만든 개별 모델과는 오차가 있으며 이를 분산이라 부른다.

High variance

 

$y=f(x)+\varepsilon$

 

$E(y_0-\hat{f}(x_o))^2 $ $= E((f(x_0)-E[\hat{f}(x_o)])+(E[\hat{f}(x_o)]-\hat{f}(x_o)) + \varepsilon )^2$

$= [Bias(\hat{f}(x_o))]^2 + Var(\hat{f}(x_o)) + Var(\varepsilon)$

여기서 $Var(\varepsilon)$ 는 줄일 수 없는 오차(irreducible error)를 의미한다. 

 

편향-분산의 트레이드오프(Bias-variance tradeoff)

 다음 예시를 보면 모델 flexibility에 따라 training set, test set 각각의 MSE가 변화하는 것을 확인할 수 있다. 실제 모델(True function)은 검은색으로 나타나 있으며, 이를 맞추는 것을 목표로 한다고 가정하자. Flexibility가2 정도로 낮은 단순한 선형 회귀를 사용하면 주황색 선과 같이 실제 모델인과 오차가 큰 단순한 선을 그리게 되며, training set test set 모두에서 MSE가 큰 것을 볼 수 있다. 적당한 flexibility를 준 경우 하늘색 선과 같이 실제 모델과 매우 유사한 결과가 나오며 training set test set MSE가 적절히 낮아짐을 확인할 수 있다. Flexibility 20 이상인 복잡한 모델을 사용하게 되면 training set 하나하나에 민감하게 반응하는 구불구불한 초록색 선이 나오게 된다. 이 경우, training set에서는 MSE가 낮게 나오지만 반면 unknown test set에서는 MSE가 높아지는 것을 볼 수 있다.

 실제 모델이 심플한 경우 flexibility가 낮은 모델이 적합 하기에, 모델이 복잡함에 따라 variance 문제가 심해지는 것을 확인할 수 있다.

 실제 모델이 비선형이며 뚜렷한 경향성을 보이는 경우, 아무리 데이터를 많이 수집하더라도 낮은 flexibility로는 MSE를 개선할 수 없으며 bias 문제가 심하다는 것을 확인할 수 있다.

 

 

정리

 주어진 하나의 샘플 데이터로 모델을 생성해야 하는 우리의 입장에서는, 여러 샘플데이터로 구성된모델들의 평균을 알 수는 없다. 때문에 bias variance를 독립적으로 구할 수는 없지만 flexibility를 다양하게 구성함으로써 아래와 같은 빨간색 선을 그려 나의 모델이 어떤 문제가 있는지 추측해볼 수 있다.

 

 


- 참고하면 좋은 사이트:

https://faculty.marshall.usc.edu/gareth-james/ISL/

https://www.learnopencv.com/bias-variance-tradeoff-in-machine-learning/

 

- 이미지 출처:

http://rasbt.github.io/mlxtend/user_guide/evaluate/bias_variance_decomp/