Evaluation
만든 모델이 잘 학습되었는지 평가하는 것은 중요하다.
지도학습에서 평가는 예측값과 실제 정답을 비교해서 이뤄지는데
평가시에 학습에 사용한 데이터를 가지고 예측을 진행하고 평가를 하는 것은 조금 이상할 수 있다.
모의고사로 치면 모의고사 답을 미리 알려주고 난 후 시험을 보는 느낌??
그래서 머신러닝에서는 데이터셋을 나누어 사용을 한다.
원래 가지고 있는 Original Data Set을 train set, test set으로 나눈다.
train set은 모델 학습에 이용하면 test set은 모델의 최종 평가에 사용한다.
- Test Data Set : 모델의 최종 성능을 평가하기 위해 사용
세 번째 줄에 Training set이 또 다시 Training set과 Validatation set으로 나뉘었다.
validation 데이터는 학습 중 내부적으로 모델을 평가하여 모델의 parameter, epoch 등을 조절하는 데 사용된다.
- Validation Data Set : 모델의 수정, 자체 평가를 위해 사용
kaggle에서 데이터셋을 다운받을때 test, train을 다운받게 되는데 이때 test가 모델의 최종 성능을 평가하기 위해 사용하는 test data set이고,
모델학습 시 내부적으로 sklean의 train_test_split 등을 이용해 data split을 하는 경우 나뉘는 것이 validation set이라고 할 수 있겠다.
이와 같이 validation set을 따로 분리하는 방식을 hold out validation 방식이라고 한다.
hold out validation 방식은 training data set이 작아진다는 단점과 data의 편향이 생길 수 있다는 것이다.
데이터 편향은 비교적 쉽게 극복할 수 있다.
먼저 데이터의 편향은 데이터를 나눌 때 타겟 값이 골고루 분포하지 않게 나뉘는 현상을 말한다.
만약에 pass/fail을 구분하는 문제에서 전체 데이터 100개 중에 pass가 80개, fail 20개 있는 상황을 가정해보자.
테스트 사이즈를 0.2로 잡고 나눌 때 최악의 경우 test set에는 pass데이터만, validation set에는 fail 20개만 들어가 있을 수 있다.
이를 방지하기 위해 데이터를 나눌 때 타겟 값의 비율을 유지하면서 나누는 것이 필요하다.
train_test_split을 이용할 경우 stratify 옵션으로 데이터 편향을 해결할 수 있다.
from sklearn.model_selection import train_test_split
train_x, test_x, train_y, test_y = train_test_split(x, y, test_size = 0.2, stratify = y)
데이터셋이 줄어드는 것을 해결하기는 어렵다.
데이터분야에서는 항상 데이터가 부족하기 때문이다.
이를 보완할 수 있는 K-Fold Cross Validation 방식이 있다.
training data set을 정해진 fold의 수 만큼 나누어 traing, validation에 이용하고 평균을 낸다.
위의 그림은 fold가 5개인 경우이다.
데이터셋을 5개로 나누어 파란색은 validation, 초록색은 training에 이용한다.
이 방식을 이용하면 hold out 방식과 달리 validation set으로 따로 빠져서 학습에 이용하지 못하는 데이터가 없어진다.
대신 학습이 오래 걸린다는 단점이 있다.
Metrics 평가지표
데이터 셋을 나누어 학습을 했으면
실제 평가를 하여 수치적으로 모델을 평가하는 것이 필요하다.
회귀문제이냐 분류문제이냐에 따라 다른 지표를 사용하게 된다.
Regression 회귀의 Metrics
1. MAE (Mean Absolute Error)
예측값과 정답의 차이의 절댓값의 평균.
직관적이며 정답과 단위가 같다.
2. MSE (Mean Squared Error)
예측값과 정답의 차이 제곱의평균.
MAE보다 error에 제곱으로 가중치를 주는 평가지표로 이상치에 민감하다.
3. RMSE (Root Mean Squared Error)
MSE에 제곱근
4. MAPE (Mean Absolute Percentage Error)
MAE를 비율로 표시한 평가지표.
5. R squared
결정 계수 coefficient of determination이라고도 한다.
분산을 기반으로 한 평가지표로 1과 가까울수록 좋은 모델이다.
'AI' 카테고리의 다른 글
Computer vision에 들어가기 전 - Digital Image와 처리 (0) | 2022.04.13 |
---|---|
[ML] Classification Metrics (0) | 2022.04.12 |
[ML] Linear Regression 구현, sklearn과 비교 (0) | 2022.03.29 |
[ML] Linear Regression (0) | 2022.03.28 |
파이썬으로 수치미분 구현하기 - 중앙차분 (0) | 2022.03.25 |