Data Story

데이터 사이언스, 쉽게 설명하기

ML

ML - [Model Evaluation]

_data 2022. 12. 20. 23:27

Model Evaluation

높은 성능을 가진 모델로 '어떤 데이터'를 예측하고 그것을 일반화하기 위해 평가를 진행해야한다.

보통 train set을 train set과 valid set로 다시 나누고, valid set 예측 성능을 평가지표에 반영한 점수로 평가한다.

여기서 데이터를 적절히 나누고 일반화 성능을 평가하는 작업 자체를 '검증'이라고 한다.

검증 방법

  • 홀드아웃 검증
  • 교차검증

홀드아웃 검증

Image from https://jackyoon5737.tistory.com/80

train set의 일부를 학습에 사용하지 않고 valid set으로 남겨둔다. train set으로 모델 학습시키고, 남겨둔 valid set 데이터로 모델을 평가한다. 어느정도 나쁘지 않은 평가가 이루어지면 이후 test set을 예측하면된다.

단, 홀드아웃 검증은 train set과 test set 데이터들이 무작위로 분할 되었다는 전제 하에 성립되는 방법이다.

종종 데이터가 어떤 규칙에 따라서 나열된 경우에는 데이터를 섞어야 한다. 데이터를 섞지 않으면 올바른 학습 및 평가를 하기 어렵다.

 

다른 검증방법에서도 마찬가지인데, 무작위로 데이터가 있는 것처럼 보여도 데이터를 Shuffle 하는 것이 좋다. 

from sklearn.model_selection import train_test_split
train_test_split(X,y,test_szie=.3, random_state=42, shuffle=True)

그럼, 홀드아웃 검증은 강력한 검증 방법이라고 이야기 할 수 있을까?

홀드아웃 검증은 데이터를 효율적으로 사용하지 못한다는 단점이 있다. valid set 데이터가 적으면 평가를 신뢰하기 어려운데, valid set을 늘리면 train set 데이터가 줄어들어 예측 성능이 떨어진다.

물론 test set 데이터를 예측할 때 train set 데이터 전체에서 모델을 다시 구축할 수 있는데, 학습 시의 모델과 최종 모델의 데이터 수가 다르면 최적의 hyperparameter이나 특징이 달라질 수 있으므로, 검증에서도 train set은 어느 정도 확보하는 편이 바람직하다.

교차 검증

Image from https://towardsai.net/p/machine-learning/k-fold-cross-validation-for-machine-learning-models

train set을 분할하고 홀드아웃 검증 방법을 여러 번 반복하고 매 회 검증 학습에 이용할 데이터의 양을 유지하면서도 검증 평가에 필요한 데이터를 train set 데이터 전체를 할 수 있다. 이 검증 방법을 '교차 검증' 이라고 부르며 많이 사용되고 있습니다.

from sklearn.model_selection import KFold

교차 검증의 폴드 수는 n_splits 인수로 지정한다. fold 수를 늘릴수록 train set 데이터의 양을 더 확보할 수 있으므로 데이터 전체로 학습시켰을 때와 유사한 모델 성능으로 평가할 수 있다. 단, 연산 시간이 늘어난다.

 

fold수를 2에서 4로 늘리면 연산 횟수는 두 배가 되는데, train set 데이터는 전체의 50%에서 75%로 1.5배 증가한다..

train set 데이터가 1.5배가 증가하면 성능 개선을 기대해볼 수 있다.

교차 검증에서 알아두어야 할 세 가지가 있다.

하나, 교차 검증의 fold수를 늘린다고만 해서 연산 시간에 비해서 실제 개선으로 바로 이어지지는 않는다. 대회에서는 주로 fold 수를 4 또는 5로 설정하곤 한다.

최적의 fold 수를 위해 연산 시간과 train set 데이터의 비율, validation 점수의 관계를 살펴보아야 한다.

둘, 주어진 train set 데이터가 충분히 큰 상황에서 검증에 이용하는 train set 데이터의 비율을 변경해도 모델의 성능이 거의 변하지 않는 경우도 있다.

이렇게 데이터가 큰 경우 fold 수를 2~3으로 하거나, 앞서 말한 홀드아웃 검증 방법을 선택해볼 수 있다.

셋, 평가지표에 따라서는 각 fold의 점수의 평균과, 데이터 전체에서 target과 prediction 연산 점수가 서로 일치하지 않는다. MAE 또는 log loss에서는 일치하는데, RMSE에서는 각 fold 점수의 평균이 데이터 전체로 연산한 결과보다 낮아질 수 있다는 것이다.

이외에도 검증에는 층화 K-겹 검증, 그룹 K-겹 검증 등이 존재한다.

'ML' 카테고리의 다른 글

예측값 불확실성 측정 - [Conformal Prediction in TS]  (0) 2023.12.25