Skip to content

(정*배) (Kaggle 경진대회) 데이터 분리를 통한 모델 학습과 검증의 필요성 #53

@Joungbae-Jung

Description

@Joungbae-Jung

경진대회에서 주어진 과제를 수행하기 위해 교수님께서 첨부해주신 코드를 쭉 살펴보다가 데이터를 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으로 나누어 학습을 진행하는 방식으로 바꿔야 할까요?

만약, 질문하는 과정 중 무언가 부족하거나 빼놓은 부분이 있다면 지적 부탁드립니다.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions