인공지능/Machine & Deep Learning

Train data | Test data | Validation data 차이

해리누나 2023. 4. 19. 00:42
728x90
반응형

 

평가 데이터(Test data)의 필요성

 

기계도 사람이 학습과정을 거쳐 능력이 향상되듯이, 반드시 훈련(Training) 과정을 거쳐 성능을 쌓아 올린 후, 그것을 평가하는 단계로 모델 완성을 해줘야 한다. Train set 와 Test set이 필요한 이유가 여기에 있다. '학습/훈련 평가' 는 필수적이다.

 

위 데이터셋은 여러 증상에 따른 코로나 감염여부에 관한 것이다. 우리는 사람들의 증상에 따라 코로나 감염 여부를 예측하는 모델을 만들고 싶은 거니 맨 오른쪽 초록부분이 우리가 알고 싶은(예측하고 싶은) 목표가 된다. 이 목표에 영향을 미치는 기침, 발열 등의 특징들은 피처(feature)다. 위 데이터는 해당 증상을 가지고 있으면 1, 없으면 0으로 표기하고 있으며 코로나 양성여부의 경우 양성일 시 1, 음성일 시 0으로 표기한다.

 

이 5개의 데이터가 전체 데이터라고 가정한다면, 학습을 위해 이 데이터를 모두 사용해 기계를 학습시켜서는 안된다. 이럴 경우, 모델의 정확도를 파악해 줄 평가과정을 진행할 수 없게 되기 때문이다. 따라서, 본격적으로 학습이 시작되기 전에, 데이터를 학습할 때 사용할 부분과 모델의 정확도를 평가하기 위해 사용될 부분으로 나눠야 한다. (보통은 80%를 학습 데이터에, 20%를 훈련 데이터에 사용한다.)

 

자, 위처럼 학습 시작 전에 전체 데이터를 Train data와 Test data 로 나눈다. Train data 로 충분히 학습을 시킨 후, Test data로 기계가 처음 접할 데이터인(학습과정에서 보지 못한), data5의 코로나 양성여부를 맞게 예측할지를 테스트 해보는 것이다. 테스트 과정에서 기계가 답을 내놓으면 실제 답과 비교한다.

 

 

[ 우리가 기계학습에서 원하는 건 범용적으로(광범위하게) 사용할 수 있는 모델이다. 이는, 우리가 가지고 있는 정보들로 아직 일어나지 않은 혹은 아직 접하지 않은 일에 대해 예측 또는 분류를 해야하니 data 를 Train와 Test 둘로 나눠서 학습을 진행하는 것이다. (Test data가 Unseen data의 역할을 하게 되는 것.) 이렇게 훈련과정에서 최적의 매개변수를 찾고, Test 과정에서 모델의 실력을 평가하는 것이다. ]

 

 

 

요약

 

  • 입력된 데이터는 학습/훈련 데이터(Train data)와 평가 데이터(Test data)로 나뉜다
  • 학습 데이터는 모델 학습에 사용되는 모든 데이터셋
  • 평가 데이터는 오직 모델의 평가만을 위해 사용되는 데이터셋
  • 평가 데이터는 절대로 모델 학습에 사용되선 안된다

 

 

검증 데이터(Validation data)의 필요성

 

하지만 전체 데이터셋을 훈련 데이터와 평가 데이터로만 나눠, 하나의 데이터셋으로만 매개변수의 평가를 진행한다면 문제가 생긴다.

위와 같이 전체 데이터가 100개라면, 4등분을 해 1번 부터 75번 까지는 훈련데이터(Train data), 76번 부터 100번 까지는 평가 데이터라고 해보자. [ 1번: 1~25, 2번: 26~50, 3번: 51~75, 4번 76~100 ]

 

1번 부터 3번까지의 훈련 데이터를 가지고 학습시킨 모델A 가 있다.

이 모델을 평가 데이터인 4번에 적용시켜 보니 정확도가 95%가 나온다면 이는 좋은 모델이라고 말할 수 있을까?

좋은 모델일 가능성이 좀 높을 뿐, 그렇다 라고 확정 지을 수 없다.

평가 데이터가 모델A 에 적합한 데이터일 가능성이 있기 때문이다. 이는 달리 말하면, 이 모델A를 다른 데이터에 적용시키면 정확도가 낮아질 수 있다는 얘기다.

 

 

이제 2~4번을 훈련 데이터로, 1번을 평가데이터로 학습 시킨 모델B 가 있다 해보자.

테스트를 진행해보니 정확도가 모델A보다 많이 낮은 73%가 나왔다.

단순히 초기처럼 한 번만 잘라서 평가를 진행했다면, (더 좋은 모델을 찾을 기회없이) 모델A를 택했을 것이다.

 

즉, 데이터를 어떻게 나누냐에 따라 모델이 달라질 수 있다는 거다.

 

그래서 필요한 개념이 검증 데이터(Validation data)다.

검증 데이터없이 훈련과 평가 데이터로만 분리하게 되면, 모델을 검증 할 때, 평가 데이터만을 사용하게 된다. 기계는 평가 데이터를 통해 오차를 인지하고, 모델의 성능 향상을 위해 매개변수를 계속 수정하고 확인하고 수정하는 과정을 거치게 되는데, 이 과정이 고정된 평가 데이터만을 가지고 진행된다는 것이다. 그러면 결국 최종 모델은 이 평가 데이터에만 성능이 좋은 모델이 되버릴것이다. 이렇게 될 시, 평가 데이터에 과적합(Overfitting) 되어, 다른 접해 보지 않은 데이터(Unseen data)가 들어왔을 때는, 예측력이 떨어져버리게 될 수 있다.

 

 

검증 데이터(Validation data)

 

출처: https://modern-manual.tistory.com/19

 

검증 데이터(Validation data)는 훈련 데이터로 만들어진 모델의 성능을 검증하기 위해 사용된다. 보통 기계를 학습 시킬때, 가장 데이터에 적합한 모델을 찾기 위해, 다양한 파라미터와 모델을 사용하게 되는데, 검증 데이터셋을 통해, 그 모델들 각각의 성능을 측정한 후, 그 중에서 가장 성능이 좋았던 모델을 선택한다.

 

 

 

요약

 

 

훈련 데이터 | Train data

  • 학습 데이터는 모델 학습에 사용되는 모든 데이터셋
  • (학습: 최적의 매개변수 값을 찾는 것)

 

검증 데이터 | Validation data

  • 모델 학습의 정도를 검증하기 위한 데이터셋
  • 모델 학습에 직접적으로 참여하지 못한다
  • 학습 중간에 계속해서 평가를 하고, 가장 좋은 성능의 파라미터를 저장해 둔다
  • 학습이 된 여러 가지 모델 중 가장 좋은 하나의 모델을 고르기 위한 데이터셋

 

평가 데이터셋 | Test data

  • 평가 데이터는 오직 모델의 최종 성능을 평가하기 위해 사용되는 데이터셋
  • 평가 데이터는 절대로 모델 학습에 사용되선 안된다

오늘날 같이 데이터가 백만개처엄 매우 많다면 valid test는 그 중 만개 정도의 아주 작은 데이터로 나눠도 충분하다.

 

"훈련 데이터로 학습하고, 검증 데이터로 모델의 성능을 검증하고 평가 데이터로 최종 성능를 평가한다."

 

 

 

 

 

 

 

참고

https://modern-manual.tistory.com/19

https://wkddmswh99.tistory.com/10

https://davincilabs.ai/blog/?q=YToxOntzOjEyOiJrZXl3b3JkX3R5cGUiO3M6MzoiYWxsIjt9&bmode=view&idx=10640969&t=board 

 

 

 

 

 

728x90
반응형