인프런 커뮤니티 질문&답변

stallon님의 프로필 이미지
stallon

작성한 질문수

[개정판] 파이썬 머신러닝 완벽 가이드

사이킷런으로 수행하는 타이타닉 생존자 예측 - 02

K-Fold 등의 교차 검증 이후 최종적인 best model은 어떻게 선택하나요?

작성

·

1.1K

0

K-Fold 교차 검증에 대하여 수업을 들었습니다. K-Fold의 목적, 특징, 수행 방법에 대해서는 설명이 이해가 다 되었는데요, 그렇게 해서 최종적으로 어떤 모델을 선택하는지에 대하여서는 전혀 설명이 되어있지 않아서 질문드립니다.

 

N개의 Fold로 데이터를 나누어서 N번의 교차 검증을 하면, N번의 fitting 결과와 각 Iteration에서의 accuracy가 나오게 됩니다. N번의 fitting을 수행하기 때문에 각 iteration에서는 결과적으로 다른 모델이 생성이 될 것입니다.

강의에서는 N번의 Iteration의 개별 accuracy를 모아서 평균을 내고, 이 평균값으로 모델의 성능을 평가하라고만 되어있습니다. 그럼 최종적으로 N번의 Iteration에서 나온 N개의 모델 중에 어떤 것을 실제 최적화된 모델로 사용하면 되는 것입니까?

 

GridSearchCV를 통한 하이퍼파라미터 튜닝에서는 수행의 결과로 best_estimator_를 리턴해주기 때문에 이것을 쓰면 되는 것을 알겠습니다만, 일반적인 K-Fold나 cross_val_score() 함수를 통한 교차 검증의 결과로는 best estimator를 얻는 방법을 설명해주지 않고 있습니다. 이 부분에 대한 답변 부탁드립니다.

답변 2

0

stallon님의 프로필 이미지
stallon
질문자

그렇다면 교차검증이란, 다양한 분류 모델을 동일한 데이터셋을 이용하여 '모델간 성능을 비교하는 것'만이 목적이라는 것으로 이해하면 되는 것일까요?

예를 들어 이진분류를 하고 싶은데,
로지스틱리그레션, 디지전트리, 랜덤포레스트 3가지 모델 중 어떤 것이 좋을까를 결정하기 위하여 3가지 모델에 대하여 KFold를 각각 돌려보고 그 중에 평균값이 좋은 분류 모델을 택하는 과정이다라고 생각하는게 좋겠군요.

저는 알고리즘은 정해진 상태에서 학습을 통하여 내부의 파라미터들 (중간 레이어의 weight 같은 것들)의 최적값을 더 잘 찾는 방법 중의 하나로 KFold를 생각했던 것 같습니다.

권 철민님의 프로필 이미지
권 철민
지식공유자

네, 맞습니다. 모델간 성능을 비교하거나, 만들어진 모델의 성능 평가를 단순하게 하나의 평가 데이터 세트가 아니라 여러개의 평가 데이터세트를 통해 평가하기 위해서 만들어진 것입니다.

0

권 철민님의 프로필 이미지
권 철민
지식공유자

안녕하십니까,

흥미로운 질문이군요.

교차 검증은 데이터가 제한되어 있는 상태에서 보다 효율적으로 모델을 검증하기 위한 방법입니다. 때문에 말씀하신대로 학습 데이터를 상당 수준 변경하는 방식으로 학습 모델을 변경해서 테스트하는 것이 목적이 아닙니다.

여러 다른 알고리즘이나 하이퍼 파라미터로 학습된 모델들 중 보다 성능이 좋은 모델을 찾아내기 위해서 적절한 검증 방법이 필요한데, 이를 위해 보다 다양한 검증 데이터 세트를 부여해서 검증을 수행하고자 하는것이 교차 검증의 목표 입니다.

GridSearchCV의 경우 서로 다른 하이퍼 파라미터로 모델 알고리즘을 학습하고, 이를 교차 검증으로 성능 검증을 하기 때문에 어떤 하이퍼 파라미터로 학습된 Estimator가 Best인지 제공해 주지만, KFold는 그런 개념과는 다릅니다.

감사합니다.

stallon님의 프로필 이미지
stallon

작성한 질문수

질문하기