데이브리/머신러닝
XGBoost와 하이퍼파라미터
수스리
2025. 4. 16. 15:48
XGBoost 하이퍼파라미터 쉽게 이해하기
XGBoost는 강력한 머신러닝 알고리즘이지만, 많은 하이퍼파라미터 때문에 초보자에게는 복잡해 보일 수 있습니다. 주요 하이퍼파라미터를 쉽게 설명해드리겠습니다.
learning_rate (학습률)
- 쉬운 설명: 새로운 트리가 만들어질 때마다 이전 트리의 결과를 얼마나 반영할지 결정하는 값입니다.
- 낮은 값(0.01): 이전 트리의 결과를 조금만 반영하므로 학습이 천천히 진행됩니다. 과적합 위험이 줄어들지만 더 많은 트리가 필요합니다.
- 높은 값(0.2): 이전 트리의 결과를 많이 반영하므로 학습이 빠르게 진행됩니다. 과적합 위험이 있지만 더 적은 트리가 필요합니다.
- 비유: 등산을 할 때 큰 걸음으로 빨리 올라가면(높은 learning_rate) 정상에 빨리 도달할 수 있지만 길을 놓칠 수 있고, 작은 걸음으로 천천히 올라가면(낮은 learning_rate) 더 정확하게 정상에 도달할 수 있습니다.
max_depth (최대 깊이)
- 쉬운 설명: 각 트리가 얼마나 복잡해질 수 있는지를 결정합니다.
- 낮은 값(3-5): 단순한 트리를 만들어 과적합을 방지합니다.
- 높은 값(8-10): 복잡한 트리를 만들어 훈련 데이터에 더 잘 맞출 수 있지만 과적합 위험이 있습니다.
- 비유: 의사결정 과정에서 얼마나 많은 질문을 연속해서 할 수 있는지와 같습니다. 많은 질문(깊은 트리)은 자세한 진단이 가능하지만 너무 구체적인 상황에만 맞는 진단을 내릴 수 있습니다.
gamma (감마)
- 쉬운 설명: 트리가 새로운 가지를 만들기 위해 필요한 최소한의 개선 정도입니다.
- 낮은 값(0): 쉽게 새 가지를 만들어 복잡한 트리가 됩니다.
- 높은 값: 새 가지를 만들기 어려워져서 단순한 트리가 됩니다.
- 비유: 가게를 새로 열 때 필요한 최소 수익 기준입니다. 높은 기준(높은 gamma)을 설정하면 가게를 적게 열게 되고, 낮은 기준(낮은 gamma)은 많은 가게를 열게 만듭니다.
min_child_weight (최소 자식 가중치)
- 쉬운 설명: 새로운 가지를 만들기 위해 필요한 최소한의 데이터 수입니다.
- 낮은 값(1): 적은 데이터로도 새 가지를 만들 수 있어 복잡한 트리가 됩니다.
- 높은 값: 많은 데이터가 있어야 새 가지를 만들 수 있어 단순한 트리가 됩니다.
- 비유: 학급을 나누기 위한 최소 학생 수와 같습니다. 최소 인원이 적으면(낮은 min_child_weight) 많은 학급이 생기고, 최소 인원이 많으면(높은 min_child_weight) 적은 학급이 생깁니다.
subsample (서브샘플)
- 쉬운 설명: 각 트리를 만들 때 전체 훈련 데이터 중 몇 %를 사용할지 결정합니다.
- 낮은 값(0.5): 전체 데이터의 절반만 사용하여 다양한 트리를 만듭니다.
- 높은 값(1.0): 모든 데이터를 사용하여 안정적인 트리를 만듭니다.
- 비유: 설문조사에서 전체 인구 중 몇 %에게 물어볼지 결정하는 것과 같습니다. 적은 비율(낮은 subsample)로도 다양한 의견을 수집할 수 있고, 높은 비율(높은 subsample)은 더 정확한 결과를 얻지만 비용이 더 듭니다.
colsample_bytree (트리별 컬럼 샘플)
- 쉬운 설명: 각 트리를 만들 때 전체 특성(컬럼) 중 몇 %를 사용할지 결정합니다.
- 낮은 값(0.5): 절반의 특성만 사용하여 다양한 트리를 만듭니다.
- 높은 값(1.0): 모든 특성을 사용하여 안정적인 트리를 만듭니다.
- 비유: 의사가 진단할 때 모든 검사를 다 할지(높은 colsample_bytree), 아니면 일부 중요한 검사만 할지(낮은 colsample_bytree) 결정하는 것과 같습니다. 일부 검사만 하면 다양한 관점에서 볼 수 있지만, 모든 검사를 하면 더 정확할 수 있습니다.
reg_alpha와 reg_lambda (정규화 파라미터)
- 쉬운 설명: 모델이 너무 복잡해지는 것을 방지하는 패널티 값입니다.
- reg_alpha: L1 정규화로, 불필요한 특성을 완전히 제거하는 경향이 있습니다.
- reg_lambda: L2 정규화로, 모든 특성의 영향력을 골고루 줄이는 경향이 있습니다.
- 비유: 학생들에게 과제를 내줄 때, reg_alpha는 불필요한 내용을 아예 안 쓰게 하는 룰이고, reg_lambda는 모든 내용을 간결하게 쓰도록 하는 룰입니다.
실용적인 튜닝 순서
- learning_rate을 낮게 설정하고(0.01-0.1) n_estimators를 높게 설정합니다
- max_depth와 min_child_weight를 먼저 튜닝합니다 (과적합 방지의 핵심)
- gamma 값을 튜닝합니다
- subsample과 colsample_bytree를 튜닝합니다 (무작위성 추가)
- reg_alpha와 reg_lambda를 마지막으로 튜닝합니다
이렇게 단계적으로 접근하면 효율적으로 최적의 모델을 찾을 수 있습니다.