이 게시글은 팀블로그에서 참고했다.
딥러닝 머신러닝에서 underfitting과 overfitting의 트레이드 오프는 최종 성능에 중요한 역할을 한다. 이를 이해하기 위해선 Bias-Variance의 트레이드 오프 관계를 알아야 한다.
그럼 우선 Bias- variance를 알아보고 underfitting과 overfitting을 알아보자.
편향-분산
- 편향(Bias)
Bias는 정답을 맞추지 못한 정도(거리)이다.
즉, 정답에서 멀리 떨어진 경우 편향이 높기 때문에 underfitting의 경우 bias가 크다.
- 분산(Variance)
정답과 상관없이 predict값들이 얼마나 떨어져있냐를 나타낸 정도이다.
variance가 높다는 것은 feature가 조금만 달라져도 predict값이 크게 달라진다는 뜻이기에 민감도가 높다. 때문에 overfitting인 경우 variance가 높다.
이를 사진으로 설명해보겠다.
결과적으로, 1번 case인 bias, variance가 둘다 낮은 모델이 가장 좋은 모델이다.
편향과 분산을 수식으로 설명해보겠다.
위의 수식을 간단하게 설명하겠다.
맨앞의 노란부분이 Bias이다. 이는 예측값과 정답의 평균이 얼마나 다른가를 설명한다.
초록부분이 Variance인데, 이는 평균(예측값- 예측값의 평균)으로 예측값끼리 얼마나 흩어져있는지를 설명한다.
underfitting, overfitting
- underfitting
학습이 제대로 되지 않은 경우 underfitting이라 하며, 1번째 사진의 케이스와 같다. 사진을 보면 제대로 분류를 못하는것을 알 수있다.
- overfitting
학습이 너무 과도하게 된 경우이다. 3번째 케이스와 같으며, 사진처럼 너무 구불구불한경우 대부분 overfitting이 되었다고 본다. 그 이유는 학습 데이터는 사진처럼 잘맞출수 있지만, 정작 test data를 줬을때는 엉망으로 맞출 수 있기 때문이다.
2번째 사진이 가장 최적의 모델이다. 이 처럼 underfitting과 overfitting의 중간점을 잘 찾아야 한다.
1. training error, validation error가 높은 경우: underfitting이 되었으며, bias가 높다.
즉, predict와 정답이 거리가 먼 경우이며, 학습할수록 더 좋은 모델을 만들 수 있다는 뜻이다.
2. training error<<< validation error: overfitting이 되었으며, variance가 높다.
이 경우는 train data에 너무 과하게 학습되어서 새로운 데이터가 들어올때는 제대로 예측하지 못하는 경우이다. 학습할수록 overfitting이 더 심해지기 때문에 적절한 trade-off가 필요하다.
둘다 줄이는 방법이 좋겠지만, 동일한 데이터 안에서는 불가하다. 하지만 반대로 '데이터의 양'을 늘리면 편향과 분산이 모두 작아져 더 정확한 모델을 만들 수 있다.
- 공식으로 이해해보기
에러는 다음과 같다고 설명했다. 이를 증명해보자.
https://data-matzip.tistory.com/13?category=851534
이 블로그에서 설명한 내용에 조금만 덧붙이겠다.
Error(x)= $E[(y - \hat f)^2]$
= $E[y^2 + \hat {f^2} - 2y\hat f]$
*$Var[y] = E[x^{2}]-E[x]^{2}$ 이므로 다음과 같이 바꿀 수 있다.
$= Var[y] + E[y]^2 + Var[\hat f] + E[\hat {f}]^2 - 2fE[\hat f]$
$= Var[y] + Var[\hat f] + (E[y]-E[\hat f])^2$
인데, 여기서 $Var[y]$를 변경해보겠다.
$Var[y]= Var(f+\epsilon) = E[y-f]^2 = E[f+\epsilon -f]^2 = E[\epsilon]^2= \sigma^2 (\epsilon$은 상수니까 다음과 같은식이 가능)
따라서, $Var[y]= σ2+Var[^f] + (f-E[\hat f])$ 라고 정의할 수 있으며 다음과 같이 정리가 가능하다.
$= \sigma^2 + Var[\hat f] + Bias[\hat f]^2$
참고
'인공지능 > 스터디' 카테고리의 다른 글
KNN CF(Collaborative Filtering) 구현 (0) | 2020.04.14 |
---|---|
최대우도추정 (0) | 2020.04.14 |
[CB Filtering] 2. 키워드 수집 (0) | 2020.03.23 |
[Ensemble] 개요(Bagging, Boosting, Stacking) (0) | 2020.03.13 |
[CB Filtering] 1. 개요 (0) | 2020.03.13 |