- k 교차 검증
- k 교차 검증은 머신러닝 모델의 성능을 평가하기 위해 사용되는 방법 중 하나로, 데이터를 k개의 부분집합으로 나눈 뒤, k번의 실험을 수행하여 모델을 평가하는 방법입니다.
- k 교차 검증은 다음과 같은 방법으로 활용할 수 있습니다.
- 전체 데이터셋을 k개의 부분집합으로 나눕니다.
- k번의 실험을 수행하며, 각 실험마다 하나의 부분집합을 테스트셋으로, 나머지 부분집합을 훈련셋으로 사용합니다.
- k번의 실험을 수행하여 얻은 성능 지표들의 평균을 모델의 최종 성능으로 평가합니다.
- k 교차 검증의 특징은 다음과 같습니다.
- 데이터셋을 여러 개의 부분집합으로 나누어 실험을 수행하기 때문에, 모델의 성능을 더 정확하게 평가할 수 있습니다.
- 과적합을 방지할 수 있습니다. 모델이 특정 데이터셋에 대해서만 잘 동작하는 경우가 있을 수 있는데, 이를 방지할 수 있습니다.
- 실험을 k번 수행하기 때문에, 학습 시간이 늘어날 수 있습니다.
- k 교차 검증을 적용한 모델 학습과 평가
- 아래 코드는 k 교차 검증을 적용하여 모델을 학습하고 평가하는 코드입니다.
from sklearn.model_selection import cross_val_score
# k=5 인 k 교차 검증을 수행합니다.
k = 5
scores = cross_val_score(LogisticRegression(), X, y, cv=k)
# k번 실험한 성능 지표의 평균을 계산합니다.
avg_score = sum(scores) / k
print(f'{k}-fold Cross Validation 평균 정확도: {avg_score:.4f}')
- cross_val_score() 함수를 사용하여 k 교차 검증을 수행할 수 있습니다. 이 함수는 모델, 피처 데이터, 레이블 데이터, 그리고 cv 인자로 k를 전달하여 실행됩니다.
- k 교차 검증에서는 k번의 실험을 수행하므로, scores 변수에는 k개의 성능 지표가 저장됩니다. 이를 평균내어 최종 성능 지표를 구할 수 있습니다.
- k 교차 검증을 적용하여 모델을 학습하고 평가한 결과를 아래와 같이 코드로 나타낼 수 있습니다.
from sklearn.model_selection import cross_val_score
# k=5 인 k 교차 검증을 수행합니다.
k = 5
scores = cross_val_score(LogisticRegression(), X, y, cv=k)
# k번 실험한 성능 지표의 평균을 계산합니다.
avg_score = sum(scores) / k
print(f'{k}-fold Cross Validation 평균 정확도: {avg_score:.4f}')
- cross_val_score() 함수를 사용하여 k 교차 검증을 수행합니다. 이 함수는 모델, 피처 데이터, 레이블 데이터, 그리고 cv 인자로 k를 전달하여 실행됩니다.
- k 교차 검증에서는 k번의 실험을 수행하므로, scores 변수에는 k개의 성능 지표가 저장됩니다. 이를 평균내어 최종 성능 지표를 구할 수 있습니다.
- k 교차 검증을 적용하여 평가한 결과는, 단순히 훈련셋과 테스트셋으로만 나누어 학습한 경우보다 더 정확한 모델 성능을 나타냅니다. 이는 데이터를 여러 개의 부분집합으로 나누어 실험을 수행하기 때문입니다.
- 따라서, 모델의 최종 성능을 정확하게 평가하고자 할 때는 k 교차 검증을 사용하여 모델을 학습하고 평가하는 것이 좋습니다.