| 들어가며
오늘은 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
도움되셨다면 공감 버튼을 꾸욱~
'Data Science > 통계이론' 카테고리의 다른 글
카이제곱 분포(chi-squared distribution) 이해하기 :: Data 쿡북 (0) | 2017.09.07 |
---|---|
정규분포(Nomal distribution) 이해하기 :: Data 쿡북 (0) | 2017.09.05 |
아주 잘 정리된 공공데이터 포털 모음 공유 :: Data 쿡북 (0) | 2017.08.20 |
각종 통계 정보 및 데이터를 얻을 수 있는 Site 정리 :: Data 쿡북 (0) | 2017.01.07 |
그리스 문자 / 표기 정리 :: Data 쿡북 (0) | 2017.01.05 |
댓글