Data Science/통계이론

Bias - Variance Trade-off(편향-분산 트레이드 오프) 이해 그리고 머신러닝 학습 정도 이해 :: Data 쿡북

_쿡북_ 2017. 8. 21. 21:08
반응형

| 들어가며

오늘은 Bias(편향), Variance(분산)의 Trade-off를 알아보고 이를 바탕으로 머신러닝은 얼마나 학습을 시켜야 할지 생각해 볼까 한다.

 

머신런닝을 공부하다보면 Bias(편향)와 Variance(분산)를 꼭 마주하게 된다. 

그렇다면 Bias와 Variance란 무엇일까? 

 

우리가 무언가를 학습시킨 뒤 예측할때 그로 인한 오차가 발생하기 마련인데 이때 발생하는 세 가지 두 가지 오차가 바로 Bias와 Variance 이다.

쉽게 말해 그냥 오차의 유형이다.  Bias에러 Variance에러... 

그리고 이 둘은 trade-off 관계가 있어서 시소처럼 한쪽이 올라가면 한쪽이 내려가는 관계다.

이를 증명하는 수식은 아래에서 보기로 하고 그에 앞서 아래 그림을 먼저 보자

 

그림은 Bias(편향) 오차와 Variance(분산) 오차를 표현해 주고 있다.

반응형

타겟의 한 가운데를 실제 값이라고 한다면 우리가 점을 찍은 부분은 예측을 한 부분이다.

Bias 오차가 높다는 것은 실측치와 예측치간의 오차가 크게 벌어진 상황을 말하고,

Variance 오차가 높다는 것은 예측의 범위가 넓다는 것을 말한다.

 

다른말로 표현하면 

Bias 오차가 높다는 것은 과소적합한 상황이고(=꾸준히 틀리는 상황)

Variance 오차가 높다는 것은 과대적합한 상황이다.(= 예측 분포가 큰 상황)

 

그런데 사실 필자는 위에 그림과 설명을 들을 때 더 혼동스러웠다.

자, 이해를 돕기 위해 한 가지 그림을 더 보자

 

모델을 학습을 시킬수록 모델 복잡도는 더 올라간다. 

이를 X축 model complexity로 표현하면,

학습을 시킬수록 (=모델 복잡도가 올라갈 수록) Bias(편향)은 줄어드나(↓)  Variance(분산)는 올라가는(↑) 것을 말하고

학습이 덜될수록 (=모델 복잡도가 낮을수록) Bias(편향)은 올라가나(↑) Variance(분산)는 내려가는(↓) 것을 말한다.

 

처음 들으면 참 어렵다.

이를 표로도 표현해보자

 

 구분  모델 복잡도  적합성
 Bias 오차가 낮은 &
 Variance 오차가 높은
 복잡  과대적합(over fitting)
 Bias 오차가 높은
 Variance 오차가 낮은
 단순  과소적합(under fitting)

 

다시 풀어 말하자면 

* Bias(편향) 에러가 높아지는 것은  많은 데이터를 고려하지 않아 (=모델이 너무 단순해)  정확한 예측을 하지 못하는 경우를 말하고,

* Variance(분산) 에러는 노이즈까지 전부 학습해(=모델이 너무 복잡해) 약간의 input에도 예측 Y 값이 크게 흔들리는 것을 말한다.

이 두가지 에러가 상호 Trade-off 관계에 있어서 이 둘을 모두 잡는 것은 불가능 한 딜레마가 생긴다.

 

 

| 수식을 통한 이해

왜 그런지는 다음의 식을 보자 

 

출처 : http://rfriend.tistory.com/search/bias

전체 Error에 대한 합은 Variance와 Bias 그리고 Noise로 표현된다.

1번은 Variance이고 2번은 Bias이다. 이 둘은 reducible error 로 불린다.  우리가 학습을 통해 줄일 수 있는 영역이다. 

반면 3번의 noise는 본질적인 한계치로 irreducible error라 하며 어찌 할 수 없는 오차다

 

그런데 가만 수식을 보면 1번과 2번의 공식에 E[f(hat)(X) 가 부호가 반대로 같이 들어가있다.

결국 예측 기대치를 올릴 수록 둘은 trade-off 관계에 빠질 수 밖에 없어 보인다. ( 이 부분은 수식을 좀 더 살펴봐야 할것 같다. )

 

복잡하니 결론만 기억하자. 

결국 기대되는 MSE(Mean Squared Error)의 값은 Variance와 Bias간의 Trade-off 때문에 

계속 학습 시킨다고 해서 전체 Error가 줄어드는 것은 아니다.

때문에 Training을 시킨다고 해도 Bias와 Variance를 고려해 가장 낮은 저 지점을 찾아 최적의 모델을 만들어야 한다.

 

 

| 그렇다면 머신러닝은 언제까지 학습을?

그러면 어떻게 해야 이 지점을 찾을 수 있을까? 

결론부터 얘기하면 Validation set이라고 하는 데이터 set이 하나더 필요하다.

 

다음 그림을 보자

학습시킨 모델을 Test Sample에 놓고 조금씩 비교하다보면 초반 Error는 떨어지나 시간이 지날수록 Error가 증가하는 것을 보인다.

결국 Training 을 무조건 지속 하기보다 두 가지의 Test Sample의 에러가 증가하는 시점에 학습을 중단 하는 것이 좋다.

Test Sampe이라고 표현되어 있지만 실제는 Validation Set으로 이해하면 된다. 

즉 모델을 한번 학습을 시켰다면 그것을 Validatioin Set으로 에러율이 얼마나 내려가는지 한번 더 확인해 보는 것이다.

Validation Set이 최적의 Error율을 보인다면 그 지점이 가장 학습이 잘 된 지점으로 생각하고 학습을 중단 시키면 된다.

그리고 Test Set으로 실제 모델의 평가를 하면 된다. 

 

사실 Training, Validation, Test Data Set에 대한 분리/선정도 방법론이 따로 있으나 이는 다른 블로깅에서 언급하기로 한다. 

 

| 결론

지금까지 Bias와 Variance 를 알아보았다.

결론은 완벽한 모델은 있을 수 없고 적당히 오차를 허용하라는 인생의 진리 아닐까? ^^a

 

 

| 참고 site

Training / Test / Validation Set : 오버피팅을 피하는 방법 : https://www.youtube.com/watch?v=GtLe9Z2No28&list=PL0oFI08O71gKEXITQ7OG2SCCXkrtid7Fq&index=7

 

과적합(Over-fitting), Bias-Variance Trade-off (Delimma) http://rfriend.tistory.com/search/bias

 

 

도움되셨다면 공감 버튼을 꾸욱~

반응형