XGBoost 파라미터
XGBoost 파라미터 (Parameters)
XGBoost를 실행하기 전에 세 종류의 파라미터를 설정해야 해요: 일반 파라미터, 부스터 파라미터, 학습 태스크 파라미터예요. 일반 파라미터는 부스팅에 어떤 부스터를 쓸지(주로 트리 또는 선형 모델), 부스터 파라미터는 선택한 부스터에 의존하며, 학습 태스크 파라미터는 학습 시나리오(회귀 vs 랭킹 등)를 정해요.
일반 파라미터 (General Parameters)
booster[default=gbtree]: 사용할 부스터.gbtree,gblinear,dart중 하나.gbtree와dart는 트리 기반 모델,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, aliaslearning_rate]: 업데이트에 쓰이는 스텝 크기 축소. 각 부스팅 단계 뒤 새 피처 가중치를 얻고,eta가 그 가중치를 줄여 보수적으로 만듦. 범위 [0,1].gamma[default=0, aliasmin_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, aliasreg_lambda]: 가중치에 대한 L2 정규화. 늘리면 보수적.alpha[default=0, aliasreg_alpha]: 가중치에 대한 L1 정규화. 늘리면 보수적.tree_method[default=auto]: 트리 구성 알고리즘.auto,exact,approx,hist중 하나.auto는hist와 동일.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가 더 나은 정확도를 주지만 계산이 느릴 수 있어요.
더 알아보기
- Tree Methods — 트리 구성 알고리즘
- 파라미터 튜닝 — 튜닝 지침
- Python API — API 참조