본문으로 건너뛰기
실습하기

교차 검증이란?

교차 검증은 데이터셋을 여러 부분(폴드)으로 나누고 다양한 조합으로 학습/평가를 수행하여 모델 성능을 추정하는 기법입니다.

예를 들어, k-폴드 교차 검증은 다음과 같이 진행합니다.

  1. 데이터를 k개의 폴드로 나눕니다.
  2. 각 폴드에 대해:
    • k-1개의 폴드로 모델을 학습합니다.
    • 남은 1개의 폴드로 모델을 평가합니다.
  3. 각 반복의 결과를 평균 내어 더 신뢰할 수 있는 성능 추정치를 얻습니다.

흔한 교차 검증 종류

  • K-폴드 교차 검증: 가장 일반적이며 데이터를 k개의 동일한 크기의 폴드로 나눕니다.
  • 층화 K-폴드: 각 폴드에서 클래스 비율을 유지합니다(분류 문제에서 중요).
  • LOO(Leave-One-Out): 각 관측치를 하나씩 테스트로 사용합니다.
  • ShuffleSplit: 복원 추출로 임의 분할을 수행합니다.

예시: 교차 검증으로 모델 비교하기

다음 예시는 교차 검증으로 두 모델을 비교하고 평균 정확도가 가장 높은 모델을 선택하는 방법을 보여줍니다.

교차 검증 예제
from sklearn.datasets import load_iris
from sklearn.model_selection import cross_val_score
from sklearn.linear_model import LogisticRegression
from sklearn.neighbors import KNeighborsClassifier

# 데이터 불러오기
iris = load_iris()
X, y = iris.data, iris.target

# 모델 정의
log_reg = LogisticRegression(max_iter=200)
knn = KNeighborsClassifier(n_neighbors=5)

# 교차 검증
log_scores = cross_val_score(log_reg, X, y, cv=5)
knn_scores = cross_val_score(knn, X, y, cv=5)

print(f"로지스틱 회귀 평균 정확도: {log_scores.mean():.3f}")
print(f"KNN 평균 정확도: {knn_scores.mean():.3f}")

이 예제는 5-폴드 교차 검증을 사용해 두 모델을 비교하고, 평균 정확도가 더 높은 모델을 선택합니다.


핵심 정리

  • 모델 선택은 정확도와 효율성 모두에서 가장 적합한 모델을 고르는 과정입니다.
  • 교차 검증은 실제 환경에서의 성능을 더 견고하게 추정하게 해줍니다.
  • 공정한 비교를 위해 모델을 비교할 때는 항상 동일한 교차 검증 전략을 사용하세요.

다음 내용이 궁금하다면?

코드프렌즈 PLUS 멤버십 가입 or 강의를 등록해 주세요!