• 카테고리

    질문 & 답변
  • 세부 분야

    딥러닝 · 머신러닝

  • 해결 여부

    해결됨

사이킷런 래퍼 XGBoost

21.01.30 22:03 작성 조회수 326

0

파이썬 래퍼 XGBoost에서는 objective라는 파라미터를 train의 인자로 넣어주었습니다.

1) 그렇다면 사이킷런 래퍼 XGBoost에서는 objective에 해당하는 인자가 없는건가요? 만약 default값으로 설정이 되어있다면, 어떤 값으로 설정되어있나요?

2) 책에서는(232pg) XGBoost의 objective는 최솟값을 가져야할 손실 함수를 정의한다고 하는데, 손실함수는 eval_metric에 사용되는 함수들이고 objective는 다르게 해석해야 하지 않을까 헷갈립니다.

답변 2

·

답변을 작성해보세요.

2

안녕하십니까,

1. 사이킷런 XGBoost에서도 생성시에 objective='reg:squarederror' 와 같이 objective function(목적함수 또는 손실함수)를 선언해 주실 수 있습니다. default는 XGBRegressor(즉 regression)의 경우 reg:squarederror 로 RMSE입니다. XGBClassifier(즉 classification의 경우) binary:logistic 로짓 결과 값입니다.

2.  objective function, loss function, cost function 다 동일한 얘기입니다. 목적함수, 손실함수, 비용함수 모두 estimator가 최적의 값을 찾을 기반 함수를 의미합니다. eval_metric은 검증 데이터 세트에 적용할 성능 지표 입니다. regression의 경우 보통 objective와 동일하게 설정해 줍니다(물론 다르게 설정해도 됩니다). classification의 경우 모델이 추구하는 성능 지표에 따라 달라질 수 있습니다. 정확도, 재현율, roc-auc 등이 될 수 있습니다.

머신러닝 모델은 objective function을 train시에 최소값을 반환하는 방향성을 가지도록 계속 학습해 줍니다.  eval_set는 학습을 수행하는 estimator가 제대로 검증 데이터에서 성능이 향상되는 지 확인하는데 사용됩니다. 학습 데이터에서 손실 값이 계속 감소하지만 검증 데이터에서 더 이상 성능이 향상되지 않으면 early stop으로 학습을 중지할 수 있습니다. 더 이상 학습 해봐야 오버피팅이 되기 때문입니다.

감사합니다.

0

sonysame님의 프로필

sonysame

질문자

2021.02.11

제가 헷갈렸던 부분에 많은 도움이 되었습니다! 감사합니다!!