Allen's 데이터 맛집
교차검증(Cross Validation)이란? 본문
교차 검증은 모델의 성능을 더 정확하게 평가하기 위해 데이터를 여러 개의 폴드(fold)로 나누어 각각을 테스트 세트로 사용하고 나머지를 훈련 세트로 사용하는 방법입니다. 이를 통해 모델의 성능을 더 일반화된 방식으로 평가할 수 있습니다.
데이터가 충분하지 않을 경우 이전 포스팅의 Hold-out으로 나누면 많은 양의 분산 발생합니다.
이에 대한 해결책으로 교차검증을 사용할 수 있으나 클래스 불균형 데이터에는 적합하지 않습니다.
K 교차 검증은 데이터를 k개의 폴드로 나누고 각 폴드를 한 번씩 테스트 세트로 사용하여 총 k번 모델을 학습하고 평가하는 방법입니다.
from sklearn.model_selection import cross_val_score
from sklearn.linear_model import LogisticRegression
# 예시 데이터 생성 (X는 특성, y는 타겟)
X = [[1], [2], [3], [4], [5], [6]]
y = [0, 0, 0, 1, 1, 1]
# 로지스틱 회귀 모델 초기화
model = LogisticRegression()
# k-겹 교차 검증 수행 (k=5)
num_folds = 5
scores = cross_val_score(model, X, y, cv=num_folds)
# 각 폴드에서의 정확도 출력
for fold_idx, score in enumerate(scores):
print(f"Fold {fold_idx+1} Accuracy: {score}")
# 평균 정확도 계산
average_accuracy = sum(scores) / num_folds
print(f"Average Accuracy: {average_accuracy}")
위의 예시 코드에서는 데이터를 5개의 폴드로 나누어 k-겹 교차 검증을 수행합니다. 각 폴드에서 모델을 학습하고 나머지 폴드에서 평가하여 정확도를 계산하고 출력합니다. 마지막으로 모든 폴드의 정확도의 평균을 계산하여 모델의 최종 성능을 평가합니다.
교차 검증은 데이터를 더 효과적으로 활용하여 모델의 성능을 평가하는 데 도움을 줍니다. 데이터가 적을 때 특히 유용하며, 모델의 일반화 능력을 더 신뢰할 수 있도록 도와줍니다.