XGBoost 파라미터

XGBoost 파라미터 (Parameters)

XGBoost를 실행하기 전에 세 종류의 파라미터를 설정해야 해요: 일반 파라미터, 부스터 파라미터, 학습 태스크 파라미터예요. 일반 파라미터는 부스팅에 어떤 부스터를 쓸지(주로 트리 또는 선형 모델), 부스터 파라미터는 선택한 부스터에 의존하며, 학습 태스크 파라미터는 학습 시나리오(회귀 vs 랭킹 등)를 정해요.

출처: XGBoost Parameters

일반 파라미터 (General Parameters)

  • booster [default=gbtree]: 사용할 부스터. gbtree, gblinear, dart 중 하나. gbtreedart는 트리 기반 모델, gblinear은 선형 함수를 사용해요. booster=gblinear은 deprecated라 향후 제거될 예정이에요.
  • device [default=cpu]: XGBoost가 실행될 장치. cpu, cuda, cuda:<ordinal>, gpu, gpu:<ordinal> 중 하나.
  • verbosity [default=1]: 출력 메시지의 상세도. 0(조용), 1(경고), 2(정보), 3(디버그).
  • nthread: XGBoost를 실행하는 병렬 스레드 수. 설정하지 않으면 사용 가능한 최대 스레드 수.
  • validate_parameters [default=false]: True면 입력 파라미터가 사용되는지 검증하고, 알 수 없는 파라미터에 경고를 냄.

트리 부스터 파라미터 (Tree Booster Parameters)

  • eta [default=0.3, alias learning_rate]: 업데이트에 쓰이는 스텝 크기 축소. 각 부스팅 단계 뒤 새 피처 가중치를 얻고, eta가 그 가중치를 줄여 보수적으로 만듦. 범위 [0,1].
  • gamma [default=0, alias min_split_loss]: 트리 리프 노드에서 추가 분할에 필요한 최소 손실 감소량. 클수록 알고리즘이 보수적. 범위 [0,∞].
  • max_depth [default=6]: 트리의 최대 깊이. 늘리면 모델이 복잡해지고 과적합 가능성이 커짐. 0은 깊이 제한 없음. exact 트리 메서드는 0 아닌 값 필요. 범위 [0,∞].
  • min_child_weight [default=1]: 자식 노드에 필요한 인스턴스 가중치(hessian) 합의 최소값. 이 값보다 작으면 더 분할하지 않음. 클수록 보수적.
  • max_delta_step [default=0]: 각 리프 출력에 허용하는 최대 델타 스텝. 0이면 제약 없음. 극단적으로 불균형한 로지스틱 회귀에서 1~10 정도로 설정하면 업데이트 제어에 도움.
  • subsample [default=1]: 학습 인스턴스의 서브샘플 비율. 0.5면 트리를 키우기 전에 학습 데이터의 절반을 무작위 샘플링. 과적합 방지. 범위 (0,1].
  • colsample_bytree, colsample_bylevel, colsample_bynode [default=1]: 컬럼 서브샘플링 파라미터 패밀리. 각각 트리·레벨·노드 단위로 컬럼을 서브샘플링. 모든 값은 누적적으로 작용해요.
  • lambda [default=1, alias reg_lambda]: 가중치에 대한 L2 정규화. 늘리면 보수적.
  • alpha [default=0, alias reg_alpha]: 가중치에 대한 L1 정규화. 늘리면 보수적.
  • tree_method [default=auto]: 트리 구성 알고리즘. auto, exact, approx, hist 중 하나. autohist와 동일.
  • scale_pos_weight [default=1]: 양성·음성 가중치 균형 제어. 불균형 클래스에 유용. 일반적으로 sum(negative instances)/sum(positive instances).

트리 메서드 종류

  • auto: hist 트리 메서드와 동일.
  • exact: 정확한 탐욕 알고리즘. 모든 분할 후보를 열거.
  • approx: 분위수 스케치와 그라디언트 히스토그램을 이용한 근사 탐욕 알고리즘.
  • hist: 더 빠른 히스토그램 최적화 근사 탐욕 알고리즘.

학습 태스크 파라미터 (Learning Task Parameters)

  • objective: 학습할 태스크를 정함. reg:squarederror(회귀), binary:logistic(이진 분류), multi:softmax(다중 분류), rank:ndcg(랭킹) 등.
  • eval_metric: 검증 메트릭. AUC, logloss 등.
  • base_score: 모든 인스턴스의 초기 예측 점수.

일부 목적 함수는 상수 hessian을 가지는데, 이 경우 hist 트리 메서드가 선호돼요. 비상수 hessian 목적 함수에서는 때로 approx가 더 나은 정확도를 주지만 계산이 느릴 수 있어요.

더 알아보기