강의

멘토링

커뮤니티

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

sbrhim님의 프로필 이미지
sbrhim

작성한 질문수

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

교차검증 - K-Fold와 Stratified K-Fold의 이해 - 01

train_test_split, KFold, cross_val_score 관련 질문

작성

·

424

0

앞서 다른 분이 K-fold 질문을 올려주셨는데, 이와 관련해 추가 질문이 있습니다.

1. 권철민님 말씀대로 테스트 데이터셋의 분포가 학습 데이터 세트와 다르거나 할 경우, 평균 검증 정확도에 비해 테스트 세트 정확도가 매우 낮은 경우가 발생할 것 같은데, 이런 경우에도  테스트 세트의 정확도를 기준으로 모델을 평가하나요??

2. 또다른 질문을 보니, train_test_split()과 cross_val_score()를 같이 사용하지 않는 것 같은데, scores=cross_val_score() 할 경우 test 데이터에 대한 정확도는 따로 확인하지 않는 건가요?

(GridSearchCV 사용시에만 train_test_split을 사용하나요?)

답변 1

0

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

안녕하십니까,

1번 질문의 답변은 조금 내용이 길기도 하고, 방금전에 다른 질문의 답변과 동일하게 답변 드릴 수 있을 것 같습니다. https://www.inflearn.com/questions/80305 참조 부탁드립니다. 

2. scores=cross_val_score() 할 경우 test 데이터에 대한 정확도는 따로 확인하지 않는 건가요? 의 질문의도는 잘 이해했는데, 답변이 조금 애매할 수 있습니다.

train_test_split()은 API 이름이 train과 test를 분리하는 것으로 되어있어서 그렇지 실제로는 데이터 세트를 특정 비율로 (2등분) 분리하는 것입니다. 분리된 데이터를 편의상 학습, 테스트 데이터 세트로 부를 뿐입니다.

일반적으로 테스트 데이터는 학습 시 검증용으로 사용하지 않고, 아예 꽁꽁 감춰놓고 최종 테스트때만 성능 평가를 위해 사용합니다. 그리고 cross_val_score()는 주로 교차 검증용으로만 활용합니다.  cross_val_score()를 전체 데이터(학습 + 테스트 데이터) 에 적용을 못할 이유는 없지만 일반적으로 그렇게 적용하지는 않고 아래와 같은 프로세스로 적용합니다. 

가. train_test_split()로 학습/테스트 데이터 분리

나. 분리된 학습 데이터로 cross_val_score()나 GridSearchCV()로 교차 검증 수행.

다. 학습된 모델을 테스트 데이터로 테스트

GridSearchCV도 위와 마찬가지로 적용합니다.

감사합니다.

sbrhim님의 프로필 이미지
sbrhim

작성한 질문수

질문하기