-
Notifications
You must be signed in to change notification settings - Fork 6
Description
경진대회에서 주어진 과제를 수행하기 위해 교수님께서 첨부해주신 코드를 쭉 살펴보다가 데이터를 valid_ds과 train_ds으로 데이터셋을 나누는 부분이 있는 것을 확인했습니다. 이를 통해 무엇을 하는지 알아보려 챗GPT에게 설명을 요청했는데, 데이터를 70%/30%로 나누어서 train_ds에서 랜덤 포레스트로 학습 실행, 이때 내부 검증은 OOB로 같은 부분 검증을 하고 나머지 학습에 쓰이지 않는 30% valid_ds은 외부 검증을 독립적인 일반화 성능을 확인하여 평가의 신뢰도를 높이는 것이라는 답변을 받았습니다. 즉 설명에 대한 답변으로 이루어 봤을 때 train_ds을 학습할 때는 전체 데이터의 70%를 학습, 랜덤 포레스트 내부적으로 OOB 평가를 통해 스스로 검증하고 나머지 30% valid_ds을 활용해 외부적인 검증을 한다는 뜻으로 이해했는데 데이터를 이렇게 쪼개서 학습했을 때보다 전체 데이터를 모두 train_ds에 쏟아부어 훈련을 진행했을 때가 더 나을 수도 있는 거 아닌지 알고싶습니다. 필요한 데이터를 쪼개서 학습한다는 것은 데이터 손실이 발생할 수 있다는 말 아닌가?같은 의문이 생겼기 때문에 이러한 경진대회를 수행할 때 70%/30%로 데이터를 나누어 교차 검증을 하는 방식과 전체 데이터를 전부 train에 쏟아부어 학습하는 방식 중 어떤 것이 성능 면에서 유리한 전략이라고 할 수 있는지 알고싶습니다.
그리고, 해당 과제를 수행하는 과정에서 저는 후자의 방식(데이터셋을 100% 모두 train_ds에 이용하는 방식)을 채택했습니다. 그냥 모든 데이터를 전부 train_ds에 쏟아부어 그를 바탕으로 학습하게끔 코드를 구성하였는데 교수님께서 보내주신 참고 자료 내에서 수행한 방식처럼 train_ds과valid_ds으로 나누어 학습을 진행하는 방식으로 바꿔야 할까요?
만약, 질문하는 과정 중 무언가 부족하거나 빼놓은 부분이 있다면 지적 부탁드립니다.