• 카테고리

    질문 & 답변
  • 세부 분야

    딥러닝 · 머신러닝

  • 해결 여부

    미해결

파이썬래퍼XGBoost에서도 실제 업무에서는

21.02.25 13:16 작성 조회수 357

0

선생님~xgb.train의 인자에서 evals=wlist 이렇게 넣어주셨는데요~

wlist = [(dtrain,'train'),(dtest,'eval') ]에서 

원래 실제 업무에서는 dtest가 아니라, 

(dtrain에서 다시 학습데이터를 학습-검증 나눈 다음에) 검증데이터를  넣어줘야 하는 것이지요?

그렇다면, 파이썬래퍼에서 evals에 검증데이터를 넣어주기 위해서는 (사이킷래퍼에서는 eval_set에서 검증데이터 넣어주기 위해서는)
학습데이터를 train_test_split으로 나눠야 하는 건가요? 

cross_val_socre에서는 그냥 학습데이터만 넣어주면 자체에서 학습-검정으로 나눠주지만..

파이썬래퍼 xgboost에서 볼때,  dtrain에 학습을 넣고 eval에 학습, 검증데이터를 넣어줘야 하니..

매번 강의마다 데이터가 적어서 이렇게 하시는 건 이해하지만..

좀 처음 배울 때에는

실제업무에서와는 다른 방식이 굉장히 헷갈립니다..ㅠㅠㅠ ..

데이터가 적더라도 실제로 하는 방식으로 보여주는 예제도 있었으면 좋겠습니다..ㅠㅠ 

혹시 강의 뒷부분에서는 실제업무처럼 제대로 잘 이루어지는 강의내용이 있나요~? ㅜㅜ

항상 좋은 강의 정말 잘 듣고 있고 답변도 매번 자세히 잘 해주셔서 선생님께 정말 감사합니다..ㅠㅠ 

그런데 학습-검증-테스트 이런 부분만 나오면.. 데이터가 적어서 ㅠㅠ

계속 이렇게 하셔서 이 부분이 굉장히 좀 헷갈리고 그렇습니다..ㅠㅠ

답변 3

·

답변을 작성해보세요.

1

그  wlist = [(dtrain,'train'),(dtest,'eval') ]에서 
원래 실제 업무에서는 dtest가 아니라, (dtrain에서 다시 학습데이터를 학습-검증 나눈 다음에) 검증데이터를  넣어줘야 하는 것이지요? (1번질문)

=> 네 맞습니다.

그게 맞다면,
학습데이터를 학습-검증으로 나눌 때, train_test_split으로 나눠야 하는 건가요?(2번질문)

=> 네 맞습니다. 다만 꼭 train_test_split()함수를 쓰실 필요는 없고, 나눌 수 있는 다른 함수가 있다면 아무거나 가능합니다.

freedom07님의 프로필

freedom07

질문자

2021.02.26

답변 정말 감사합니다 선생님^^

0

freedom07님의 프로필

freedom07

질문자

2021.02.26

그렇군요..ㅠ 처음 배우다 보니 계속 헷갈리고..조금 더 정확한 걸 원하게 되는 습관이 있어서 ..ㅠㅠ고쳐야겠네요..ㅠㅠ

그럼 이것만 확인 답변 꼭 부탁드릴게요..ㅠㅠ ..!!

데이터가 많은 것을 전제로 해서, 

파이썬래퍼 XGBoost에서

xgb.train( )의 인자중  evals=wlist 로 넣었는데 

그  wlist = [(dtrain,'train'),(dtest,'eval') ]에서 
원래 실제 업무에서는 dtest가 아니라, (dtrain에서 다시 학습데이터를 학습-검증 나눈 다음에) 검증데이터를  넣어줘야 하는 것이지요? (1번질문)

그게 맞다면,
학습데이터를 학습-검증으로 나눌 때, train_test_split으로 나눠야 하는 건가요?(2번질문)
(cross_val_score나 GridSearchCV에서는 학습데이터만 넣어주면 자체적으로 학습-검증데이터로 나눠줘서  train_test_split으로 나눌 필요가 없었지만,  xgb.train() 함수 인자에서는 dtrain인자와  evals 인자가 따로 나뉘어져 있기에..)

1번 질문과 2번질문 답변 꼭 부탁드릴게요 ㅠㅠ..!

매번 답변 정말 감사하고..좋은강의 정말 감사합니다..ㅠ!!

0

질문의 요지가 헷갈리는 군요.

암튼, 실무에서도 학습 -> 검증 -> 테스트로 합니다.

단 데이터가 적으면 학습->Fold 검증만 수행하고 배포합니다. 데이터도 적은데 테스트 용으로 따로 쪼개서 학습할 데이터를 부족하게 만들지는 않습니다.

지난번에도 비슷한 답변을 드린것 같습니다만, 너무 기계적으로 학습->검증->테스트로 접근하지 않으셨으면 합니다.

다시 말씀 드리지만 학습할 데이터도 적은데, 굳이 전체 데이터를 쪼개서 학습/테스트 만들고, 다시 학습 데이터 쪼개서 검증 만들고 하면서 까지 학습 할 데이터를 줄일 필요는 없습니다.