• 카테고리

    질문 & 답변
  • 세부 분야

    딥러닝 · 머신러닝

  • 해결 여부

    해결됨

XGBoost 관련 질문입니다

21.03.17 20:51 작성 조회수 166

0

안녕하세요 강사님, XGBoost관련 질문이 몇가지 생겨 여쭤봅니다!

1. 답변해주신 질문 중, early_stoppings와 early_stopping_rounds의 차이가 없다고 하셨는데, 파이썬 래퍼 xgboost에서 실행을 해보면 early_stopping 파라미터만 설정한 경우 조기중단이 수행이 안되고, early_stopping_rounds를 설정해야만  조기중단이 수행되는데 이 부분이 잘 이해되지 않습니다.

2. xbg.train()에서 evals라는 파라미터에 wlist를 할당하는데 wlist=[(dtrain,'train'),(dtest,'eval')] 입니다. 이 부분에서 evals는 성능평가 데이터셋을 받는 파라미터인데 훈련데이터를 넣어도 되는지 궁금합니다. 

3. Tree pruning 기능이 장점으로 적혀있는데 어떤 파라미터에 의한 기능인지, 아니면 xgboost를 실행하기만 하면 자동적으로 실행되는 시스템적인 장점인지 모르겠습니다..!

4. 교차검증과 결손값이 자체처리된다고 하셨는데 교차검증은 cv() API로 처리되는 것이고, 결손값 자체처리는 데이터 전처리가 필요하지 않다는 이야기로 이해했는데 맞을까요..?

5. XGBoost나 LightGBM을 약한 학습기로 다시 배깅이나 보팅을 하는 것이 가능하지만 수행시간이 너무 오래 걸려 잘 사용되지 않는 것인지 궁금합니다!

6. 책에서 p.231에서는 파라미터명이 num_boost_rounds인데 뒤에서 train()의 파라미터는 num_boost_round인데 어떤 것이 맞는건가요? 둘다 맞다면 num_boost_rounds는 어디서 쓰이는 것인지 궁금합니다.

질문이 많은데 미리 죄송합니다..! 구글링해봐도 원하는 답이 잘안나와서 여쭙습니다! 항상 감사합니다

답변 1

답변을 작성해보세요.

1

안녕하십니까,

1. scikit learn xgboost는 파이썬 wrapper xgboost 를 기반으로 하고 있어서 파이썬 wrapper xgboost 의 파라미터에 호환성을 주지만, 반대의 경우는 아닌것 같습니다.

early_stopping_rounds는 파이썬  wrapper xgboost 용, early_stoppings는 사이킷런 wrapper용이라 파이썬 wrapper에서는 early_stopping_rounds 만 동작하는 것 같습니다.  사이킷런 xgboost는 둘다 동작할 것 입니다.

2. 네, evals의 첫번째 tuple은 학습데이터, 두번째 tuple을 검증 데이터이므로 가능합니다.

3.  Tree pruning은 xgboost 내부 동작입니다. 별도의 하이퍼 파라미터가 없습니다.

4. 특별히 Null값을 바꾸지 않아도  xgboost는 Null값을 인지하여 자체적으로 처리합니다.

5. 성능적으로 약간 떨어져서 xgboost는 보통 배깅을 적용하지는 않습니다.

6. 음, num_boost_round가 맞군요.

감사합니다.