Table of Contents

ML

Validation set(검증 세트)

꼬꼬마코더 2024. 5. 30. 14:54
728x90

Validation set(검증 세트)는 모델의 성능을 평가하고 최적화하기 위해 데이터를 나누는 중요한 단계 중 하나입니다. 검증 세트를 만드는 이유는 다음과 같습니다:

1. 모델 튜닝

검증 세트는 하이퍼파라미터 튜닝에 사용됩니다. 모델의 성능을 최적화하기 위해 다양한 하이퍼파라미터 값을 시도할 때, 검증 세트를 사용하여 각 설정의 성능을 평가하고 가장 좋은 하이퍼파라미터를 선택할 수 있습니다.

2. 과적합 방지

훈련 세트만을 사용하여 모델을 학습하면 모델이 훈련 데이터에 과적합(overfitting)될 수 있습니다. 검증 세트를 사용하여 모델의 성능을 평가하면, 과적합을 방지하고 일반화 성능을 향상시킬 수 있습니다. 과적합된 모델은 훈련 데이터에서는 높은 성능을 보이지만, 새로운 데이터에서는 성능이 저하됩니다.

3. 모델 평가

검증 세트를 사용하여 모델의 초기 성능을 평가할 수 있습니다. 이는 테스트 세트를 사용하기 전에 모델의 성능을 확인하고 개선할 부분을 찾는 데 유용합니다.

4. 비교 및 선택

여러 모델을 비교할 때 검증 세트를 사용하여 각 모델의 성능을 평가할 수 있습니다. 이를 통해 가장 성능이 좋은 모델을 선택할 수 있습니다.

검증 세트의 사용 예제

다음은 Scikit-learn을 사용하여 검증 세트를 만드는 간단한 예제입니다.

import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score

# 예제 데이터 생성
X, y = make_classification(n_samples=1000, n_features=20, random_state=42)

# 데이터 분할: 60% 훈련 세트, 20% 검증 세트, 20% 테스트 세트
X_train, X_temp, y_train, y_temp = train_test_split(X, y, test_size=0.4, random_state=42)
X_val, X_test, y_val, y_test = train_test_split(X_temp, y_temp, test_size=0.5, random_state=42)

# 모델 학습
model = RandomForestClassifier(random_state=42)
model.fit(X_train, y_train)

# 검증 세트에서 성능 평가
y_val_pred = model.predict(X_val)
val_accuracy = accuracy_score(y_val, y_val_pred)
print(f'Validation Accuracy: {val_accuracy:.4f}')

# 하이퍼파라미터 튜닝 (간단한 예)
best_accuracy = 0
best_n_estimators = 0
for n in range(10, 101, 10):
    model = RandomForestClassifier(n_estimators=n, random_state=42)
    model.fit(X_train, y_train)
    y_val_pred = model.predict(X_val)
    val_accuracy = accuracy_score(y_val, y_val_pred)
    if val_accuracy > best_accuracy:
        best_accuracy = val_accuracy
        best_n_estimators = n

print(f'Best Validation Accuracy: {best_accuracy:.4f} with n_estimators={best_n_estimators}')

# 최적 모델을 테스트 세트에서 평가
model = RandomForestClassifier(n_estimators=best_n_estimators, random_state=42)
model.fit(X_train, y_train)
y_test_pred = model.predict(X_test)
test_accuracy = accuracy_score(y_test, y_test_pred)
print(f'Test Accuracy: {test_accuracy:.4f}')

설명

  1. 데이터를 훈련 세트(60%), 검증 세트(20%), 테스트 세트(20%)로 분할합니다.
  2. 훈련 세트를 사용하여 모델을 학습합니다.
  3. 검증 세트를 사용하여 모델의 성능을 평가하고, 하이퍼파라미터 튜닝을 수행합니다.
  4. 최적의 하이퍼파라미터를 찾은 후, 테스트 세트를 사용하여 최종 모델의 성능을 평가합니다.

이 과정을 통해 모델이 새로운 데이터에 대해 잘 일반화할 수 있도록 하고, 최적의 성능을 발휘하도록 할 수 있습니다.

'ML' 카테고리의 다른 글

Adaboost(Adaptive Boosting)  (0) 2024.05.30
Model Explanation 모델설명  (1) 2024.05.30
Optimal Binning  (0) 2024.05.30
클러스터링에서 거리 계산 방법  (1) 2024.05.29
클러스터링 Clustering  (0) 2024.05.29