본문 바로가기
데이터 분석

[머신러닝] 모델 성능 평가 및 지표-훈련,검증,테스트 데이터, 교차 검증(Cross-Validation)

by Data Lib 2023. 10. 18.

이번 포스팅에서는 모델의 성능 평가에 대해 알아보도록 하겠습니다. 여러 가지 성능지표가 있다 보니, 어떤 경우에 무슨 지표를 사용해야 하는지 헷갈리기도 합니다. 성능 평가 지표들의 원리를 이해한다면 내가 생성한 모델에 정확한 성능을 알기 위해서 적합한 성능 평가 방법을 적용할 수 있을 것입니다. 

 

 

모델 성능 평가 란?

모델 성능 평가하는 방법은 실제값과 예측값을 비교하여 두 값의 차이(오차)가 얼마나 되는지 구하는 방식입니다. 예를 들어, 실제값 – 예측값 = 0 이면, 오차가 없는 것으로 모델이 100% 정확하다고 볼 수 있겠습니다. 하지만 정확도가 100%라는 것은 현실적으로 힘듭니다. 그래서 어느 정도까지 오차를 허용할지 결정이 필요합니다. 


모델 평가 목적

모델을 평가하는 첫 번째 목적은 모델의 과적합(Overfitting)을 방지하기 위해서입니다. 모델이 Training Data에 너무 fit 되어 과적합 되는 경우 발생합니다. 그럴 경우는 만든 모델 다시 수정하기도 합니다. 두 번째는 여러 모델을 서로 비교해서 성능이 좋은 모델을 찾기 위해서 사용합니다. 

 

모델 성능 평가
모델 성능 평가

모델 평가 종류

모델 성능 평가는 답안지가 있어야 잘한 건지 아닌지 확인할 수 있기 때문에 일반적으로 지도학습에서만 평가가 진행됩니다. 가끔은 고객의 요청에 의해 비지도학습의 경우에도 평가를 원하기도 합니다. 그럴 경우는 만족도 조사와 같은 사용자 base의 평가를 하기도 합니다. 

 

모델 평가는 분석 모델의 목적 또는 목표 변수의 유형에 따라 다른 평가지표 사용합니다. 즉 알고리즘에 맞는 평가방법 선택해야 한다는 것입니다. 아래는 회귀와 분류 모델에 따라 평가 종류가 다르다고 생각하시면 됩니다. 

 

1. 예측/회귀

2. 분류

  • 목표 변수(결과 값)가 범주형이므로 값이 맞는지 틀린 지를 측정
  • Confusion metrix(정확도, 정밀도, 재현율, F1-score)
  • ROC, AUC

 

훈련(training) 데이터 vs 검증(validation) 데이터 vs 테스트(test) 데이터

 

모델 평가를 위해서는 훈련과 테스트 데이터 분리 또는 훈련, 검증, 테스트 데이터 분리가 필요합니다. 훈련 데이터는 모델을 학습하는 데 사용되고, 테스트 데이터는 모델의 일반화 성능을 평가하는 데 사용됩니다.

1. 훈련 데이터

  • 모델을 훈련시키는 데 사용됩니다. dataset의 feature들을 통해 모델의 답을 찾아가는 학습 하는 데 사용되는 데이터입니다. 검증, 테스트 데이터보다 많은 비율을 설정합니다. 

2. 검증 데이터

3. 테스트 데이터

  • 모델의 최종 성능 평가를 위한 데이터로 학습이나 검증 과정에 전혀 사용되지 않는 데이터를 이용해야 합니다. 비교되는 모델들을 평가하는 지표로 사용됩니다. 

보통 training:test 데이터 비율을 8:2로 설정하거나 training:validation:test를 6:2:2로 설정합니다. 아래 데이터 분리에 대한 그림을 참고하시기 바랍니다. 

훈련 vs 검증 vs 테스트 데이터
훈련 vs 검증 vs 테스트 데이터

 

훈련 데이터와 테스트 데이터 변형 가능여부?

앞에서 훈련 데이터와 테스트 데이터를 나눴습니다. 생각해 볼 부분이 만약 오버 샘플링 기법을 사용한다면 나눈 두 데이터 모두 해야 할까요? 정답은 훈련 데이터면 해야 합니다.

 

그렇다면 feature selection을 할 때 훈련 데이터와 테스트 데이터를 똑같이 적용해야 할까요? 일반적인 feature를 선택하는 방식은 훈련과 테스트의 feature 수를 맞춰줘야 하기 때문에 변형하는 것이 맞습니다. 그런데 PCA와 같은 방식은 모든 feature를 사용하기 때문에 테스트는 변형하지 않습니다. 

 

이제 알아차리셨을 것 같은데, 테스트 데이터는 그냥 앞으로 들어오게 될 실제 데이터와 같다고 보시면 이해가 쉽습니다. 훈련 데이터는 알고리즘 학습을 위해 다양한 방법을 시도할 수 있지만 테스트 데이터는 비즈니스에서 얻을 수 있는 데이터라고 생각하시면 됩니다.  

 

 

교차 검증(Cross-Validation)

교차 검증은 모델의 일반화 성능을 더 정확하게 측정하기 위한 기술입니다. K-fold 교차 검증 및 계층적 교차 검증과 같은 다양한 교차 검증 방법을 사용하여 모델의 안정성을 확인할 수 있습니다. 아래는 교차 검증을 하는 이유이자 이점입니다. 

1. 일반화 성능 측정

  • 모델이 훈련 데이터에 과적합되는 것을 방지하고, 새로운, 이전에 보지 못한 데이터에 대한 성능을 평가하기 위해 교차 검증이 사용됩니다. 데이터를 교차해서 사용해서 모델이 일반화할 수 있습니다.

2. 과적합 감지

  • 교차 검증은 모델이 훈련 데이터에 너무 맞춰져 있는지, 즉 과적합되었는지 여부를 판단하는 데 도움을 줍니다. 데이터를 교차해서 훈련 데이터에만 잘 작동되는 과적합이 되지 않게 하는 역할을 합니다. 

3. 신뢰성 있는 평가

  • 단일 데이터 분할로만 모델을 평가하면, 모델의 성능이 특정 분할에 의존하게 되어 평가 결과가 불안정할 수 있습니다. 교차 검증은 여러 번의 테스트 데이터 분할을 사용하므로 모델의 평가를 신뢰할 수 있는 장점이 있습니다. 

4. 데이터 활용 최적화

  • 교차 검증을 사용하면 주어진 데이터를 효과적으로 활용할 수 있습니다. 데이터를 훈련, 검증 및 테스트 셋으로 나누는 대신 교차 검증을 통해 데이터의 모든 부분을 모델 평가에 활용할 수 있습니다. 사실 훈련 데이터가 적을 때 효과적이라고 할 수 있습니다. 

 

교차 검증(Cross-Validation)
교차 검증(Cross-Validation)

마무리

훈련/검증/테스트 데이터에 각각의 역할에 대해 살펴보았습니다. 이제 그 역할에 맞게 데이터를 사용하고 변형할 수 있습니다. 또 교차 검증이라는 방법을 활용해 모델을 향상시킬 수 있습니다. 교차 검증은 보통 훈련할 데이터가 적어 데이터를 번갈라 썩어서 훈련할 수 있는 방법으로 단편적으로 생각할 수 있는데요. 살펴본바와 같이 일반화, 과적합 방지, 신뢰성 향상 등의 역할도 하는 기법입니다.