본문 바로가기
데이터사이언티스트 Data Scientist

Train Data 와 Test Data 를 나누는 이유

by 루시달 2024. 11. 7.

테스트 데이터(Test Data)와 트레인 데이터(Train Data)는 머신러닝 모델을 학습하고 평가하기 위해 데이터를 나눌 때 사용하는 두 가지 중요한 데이터셋입니다. 이들의 역할과 차이점은 다음과 같습니다.

 

 

1. 트레인 데이터(Train Data)

정의:

  • 트레인 데이터모델을 학습시키기 위해 사용하는 데이터입니다.
  • 모델이 입력 변수(features)목표 변수(target) 간의 관계를 파악하도록 학습합니다.

역할:

  • 모델의 가중치파라미터를 조정하는 데 사용됩니다.
  • 데이터를 통해 모델이 패턴과 규칙을 학습하게 합니다.

특징:

  • 모델이 트레인 데이터를 통해 학습하면, 모델의 성능이 이 데이터에 최적화됩니다.
  • 단, 트레인 데이터만으로 평가하면 모델의 일반화 성능을 알 수 없습니다.

2. 테스트 데이터(Test Data)

정의:

  • 테스트 데이터모델의 성능을 평가하기 위해 사용됩니다.
  • 학습 과정에서 전혀 사용되지 않은 데이터로 모델의 일반화 능력을 검증합니다.

역할:

  • 모델이 학습하지 않은 데이터를 예측하여 실제 상황에서의 성능을 평가.
  • 과적합(overfitting)을 방지하고, 모델이 새로운 데이터에서 얼마나 잘 작동하는지 확인.

특징:

  • 모델 평가에만 사용되며, 학습 과정에 절대 포함되지 않습니다.
  • 테스트 데이터에서 높은 성능을 보여야 모델이 실제 환경에서도 좋은 성능을 발휘할 가능성이 높습니다.

3. 차이점 요약

구분 트레인 데이터(Train Data) 테스트 데이터(Test Data)
역할 모델 학습에 사용 모델 평가에 사용
사용 목적 입력 데이터와 목표 변수 간 관계 학습 학습되지 않은 데이터로 모델의 일반화 성능 평가
데이터 포함 여부 학습 과정에 포함 학습 과정에 포함되지 않음
데이터 크기 비율 보통 70~80% 보통 20~30%

 


4. 왜 데이터를 나누어야 할까?

  • 모델의 일반화 성능을 평가하기 위해 데이터를 분리합니다.
    • 트레인 데이터에 과적합된 모델은 학습 데이터에서는 높은 성능을 보이지만, 새로운 데이터(테스트 데이터)에서는 성능이 저하될 수 있습니다.
  • 테스트 데이터를 통해 실제 데이터 환경에서의 성능을 예측할 수 있습니다.

5. 추가: 검증 데이터(Validation Data)

  • 검증 데이터하이퍼파라미터 튜닝모델 선택을 위해 사용되는 별도의 데이터셋입니다.
  • 데이터셋을 3개로 나누는 경우:
    1. Train Data: 모델 학습.
    2. Validation Data: 모델 튜닝 및 성능 검증.
    3. Test Data: 최종 모델 평가.

 

6. 데이터 분할 예시

Scikit-learn의 train_test_split을 사용한 데이터 분할 예시:

from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris

# 데이터 로드
iris = load_iris()
X = iris.data  # 입력 변수
y = iris.target  # 목표 변수

# Train-Test Split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

print("Train Data Size:", X_train.shape)
print("Test Data Size:", X_test.shape)

 

결론

  • 트레인 데이터는 모델 학습에 사용.
  • 테스트 데이터는 모델 평가에 사용.
  • 데이터를 나누는 이유는 모델의 일반화 성능을 평가하고, 과적합을 방지하기 위함입니다.
반응형