머신러닝/AI 엔지니어가 되어보자

머신러닝 기본

망나 2021. 10. 17. 16:59

데이터 준비

모델을 학습시키기 위해선 좋은 데이터 셋이 필요합니다. 좋은 데이터 셋을 확보한 뒤 여러 feature engineering을 거쳐 최종 데이터 셋 준비가 됬다면 이제 데이터 셋을 학습 / 검증 / 평가 3 그룹으로 나누어야 합니다.

 

https://wikidocs.net/60021

여기서 학습 세트 (Training Set)이 모델이 직접 학습하는데 사용될 데이터이며 검증 세트 (Validation Set)은 모델의 학습 과정에서 하이퍼 파라미터 등 모델의 성능 향상 및 최적화를 위해 검증용으로 사용됩니다. 마지막으로 평가 세트 (Test Set)은 학습이 완료된 모델의 최종 성능을 평가하는데 사용됩니다.

총 데이터 셋의 양에 의해서 3 그룹의 비율을 정하게 되는데 보통 아래의 기준으로 나누어 사용되고 있습니다.

 

  • 작은 데이터 셋 (몇 만개) - 학습 : 검증 : 평가 = 6 : 2 : 2
  • 큰 데이터 셋 (백만개 이상) - 학습 : 검증 : 평가 = 98 : 1 : 1 

 

위와 같이 나누는 이유는 너무 작은 데이터 셋에 대해서 학습 데이터의 비중이 클 경우 모델이 학습 데이터에만 심하게 맞춰져서 (overfitting 문제) 이후 새로운 데이터에 대한 예측 정확도가 낮을 수 있기 때문입니다.

 

만약, 검증 데이터와 테스트 데이터를 나눌 만큼 데이터가 충분하지 않다면 이를 보완하기 위해 k-fold cross validation이라는 또 다른 방법을 사용하기도 합니다.

 

 

k-fold cross validation은, 데이터가 충분하지 않을 때 전체 프로세스를 N번 수행하고 모든 수행에서 나온 정확도의 평균을 구하는 방법입니다. 예를 들어 위의 그림에서 볼 수 있듯이 전체 데이터셋을 N으로 나누어 총 N번 전체 프로세스가 반복되는데 이 과정에서 모든 데이터 셋이 학습과 평가에 모두 이용될 수 있다는 장점이 있습니다.

 

[참조] K-Fold Corss Validation

 

 

머신러닝의 목적

머신러닝 모델의 최종 목표는 관측되지 않은 데이터에 대한 정확한 예측을 하는 것 입니다.

이를 위해서 우리는 모델을 학습 시키며 Generalization error가 0으로 되도록 모델을 평가하고 학습을 시키게 됩니다. 하지만 Generalization error를 측정하는 방법이 마땅치 않아 이를 아래 2가지 목표로 다시 나누게 됩니다.

 

1. Training Error를 0으로 만들기

- 학습 데이터 셋을 활용하여 모델을 학습

- 모델 최적화 (optimization)에 집중

- 전체 데이터의 특징을 모두 학습하기 위한 충분히 복잡한 모델을 사용 (underfitting 방지)

 

2. Test Error를 Training Error와 같게 만들기

- Generalization error를 줄이기 위해 모델의 복잡도를 줄이는 regularization (overfitting 방지)

- 학습 모델에 너무 의존하지 않도록 더 많은 트레이닝 데이터 셋 추가 

 

[참조] Understanding the 3 Primary Types of Gradient Descent

[참조] Regularization: An important concept in Machine Learning

 

'머신러닝 > AI 엔지니어가 되어보자' 카테고리의 다른 글

AI / 머신러닝 / 딥러닝  (0) 2021.10.14
1 2