• 카테고리

    질문 & 답변
  • 세부 분야

    딥러닝 · 머신러닝

  • 해결 여부

    미해결

기존 질문답변에 대한 질문_학습(학습+검증)-테스트

21.02.16 17:58 작성 조회수 88

0

선생님~

기존질문에 대한 선생님의 답변에서

'요약하자면 학습/검증 데이터를 포함하여 테스트 데이터 역시 전체 데이터의 target 값 데이터 분포를 유지하면서 분리해 주는게 좋습니다.  먼저 학습/테스트 데이터 세트를 target 값 데이터 분포를 유지하며 분리해주고 학습 데이터의 경우 Cross-validation을 위해서는 stratified k-fold로 수행해주는 게 좋습니다. '

이렇게 말씀하신 부분이 있는데요~

답변내용은 잘 이해가 되었는데.. 

그러면 제가 궁금한 것이..

(교차검증을 배우기 전에) 이전 강의에서 배웠던 

학습데이터와 테스트데이터 나누는

train_test_split() 이 메소드(함수?) 에서는~ 

StratifiedKFold의 split() 기능처럼,

이미 레이블값의 분포도를  유사하게 해주는 기능이 있는 건가요~?

그리고 제가 또 하나 궁금증이 있는 것은

현재 교차검증 파트 부분에서 150개 데이터를 다 갖고와서 학습+검증을 했는데

일반적으로는

150개의 데이터에서 

학습용 120개 / 테스트용 30개 를 먼저 나누고,

120개 중에서 3개폴드로 교차검증 한다면
학습 80개 /검증 40개 

하고 이렇게 진행하는건가요..?

좀 헷갈리네요..ㅠ.ㅠ 

마지막으로,

검증을 하는 의미가 '정확성'이 잘 나오는지 확인하는 거 맞나요~? 

제일 헷갈리는 부분이 교차검증이 테스트데이터와는 무슨 연관이 있는지..

'정확성'인거  같은데.. 제가 강의를 좀 더 들어봐야 하는데 너무 이른 질문인가요..? ㅜㅜ

답변 1

답변을 작성해보세요.

0

1. train_test_split() 이 메소드(함수?) 에서는~ 

StratifiedKFold의 split() 기능처럼,

이미 레이블값의 분포도를  유사하게 해주는 기능이 있는 건가요~?

=> train_test_split() 함수에 인자로 stratify가 있습니다. stratify 값으로 타겟값을 넣어주면 됩니다.

2. 150개의 데이터에서 

학습용 120개 / 테스트용 30개 를 먼저 나누고,

120개 중에서 3개폴드로 교차검증 한다면
학습 80개 /검증 40개 

하고 이렇게 진행하는건가요..?

=> 네 , 맞습니다.

3. 마지막으로,

검증을 하는 의미가 '정확성'이 잘 나오는지 확인하는 거 맞나요~?

=> 검증을 하는 이유는 말 그대로 해당 데이터가 여러번 성능 평가 검증을 수행하는 것입니다. 한번 시험보지 않고, 여러번 시험을 보는 것입니다.  다만 테스트 데이터로 검증을 하지 않는 이유는 모델을 여러번 테스트/검증하고 하이퍼 파라미터도 튜닝해보면서 완전하게 성능이 올라온다고 판단될 경우 그동안 오픈 되지 않는 데이터 세트로 테스트를 해보는 것입니다.

너무 교차 검증과 테스트 데이터에 대한 개념적인 사항에 집중하실 필요는 없습니다. 실전에서는 교차 검증으로 여러번 테스트 하고, 가능하면, 테스트 데이터는 모델이 튜닝/성숙이 완료 될 때까지 기다린 다음에 최종 테스트를 해보기 위해 숨겨놓는 것 뿐입니다.