인프런 커뮤니티 질문&답변

sonysame님의 프로필 이미지

작성한 질문수

[개정판] 파이썬 머신러닝 완벽 가이드

XGBoost를 이용한 위스콘신 유방암 예측(파이썬 Native XGBoost 사용)

사이킷런 래퍼 XGBoost

해결된 질문

작성

·

475

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
질문자

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

sonysame님의 프로필 이미지

작성한 질문수

질문하기