인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

cool so님의 프로필 이미지
cool so

작성한 질문수

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

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

kfold 관련 질문

작성

·

197

2

안녕하세요, 강의 청취하며 열심히 열공중에 있습니다.

kfold관련 궁금한 사항이 있어 질문 드립니다. 

별도의 테스트 값 없이 iris.data 150개를 5번 교차 검증을 할 경우 테스트 값도 이미 학습이 된거 아닌가요?

실제 좀더 정확한 accuracy_score를 구하기 위해서는 아래 예와 같이 학습 과정에 사용 되지 않는 별도의 테스트 데이터를 가지고 accuracy_score를 구해야 되는게 맞지 않나요?

예) iris.data 200개라 가정

1. 테스트 데이터 50개 분리

2. 학습데이터 150개 분리

3. 학습테이서 150개를 kfold=5로 해서 5번 교차 검증

4.  학습데이터 120개, 검증(validation)를 하기 위한 validation test set 30개로 분리됨

5. 5번 교차 검증이 될때 마다  validation test set의 accuracy_score 확인, 테스트 셋 50개 accuracy_score를 같이 확인 해야 되지 않나요?   

답변 1

1

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

안녕하십니까,

네 맞습니다. 일반적으로 테스트 데이터는 별도로 분리하고, 학습 데이터를 학습/검증용 데이터로 나누어서 교차검증합니다.

적어주신 1~4번 스텝 다 맞지만, 5번 스텝과 같이 교차 검증 할 때마다 굳이 테스트 셋을 같이 확인할 필요 없습니다. 말 그대로 교차 검증은 테스트 데이터 셋 대신 여러번 검증을 하면서 어느정도 평가 지표가 나올지 평균적으로 판단하는 것입니다. 

테스트 데이터 셋은 최종 테스트를 위해 사용됩니다만, 데이터 세트의 분포도가 학습 데이터 세트와 다르거나 할 경우 학습 시에는 성능이 잘 나오다가 테스트 데이터 세트에서는 잘 안나오는 경우가 있습니다. 교차 검증을 통해서 다양하게 사전 검증을 해보면서 학습과 검증 데이터 세트의 예측 성능을 어느정도 편차가 있는지 확인하면서 먼저 검증을 해보는게 보다 효율적이기 때문에 교차 검증을 사용합니다.

테스트 데이터 셋은 최종 테스트 할 때만 적용하셔도 됩니다.

cool so님의 프로필 이미지
cool so

작성한 질문수

질문하기