[XGBoost Study] Appendix

Smiling Sammy·2022년 11월 23일
0

xgboost-study

목록 보기
7/7

출처: 코리 웨이드.(2022). XGBoost와 사이킷런을 활용한 그레이디언트 부스팅. 서울:한빛미디어

LightGBM

  • MicroSoft에서 만든 그레디언트 부스팅 library
  • leaf-wise 트리 성장 방식을 사용
  • 히스토그램 기반 그레디언트 부스팅 사용
    • 특성 값을 구간(bin)으로 나누어 노드를 분할
    • 속도가 빠름
    • 메모리 사용량도 적음
    • XGBoost도 0.7 version부터 사용 가능
      • tree_method('hist'), grow_policy('Lossguide')로 설정하면됨
  • 'category' type 설정 시, 범주형 특성을 자동으로 인식하여 처리함
    • categorical_features에 특성의 column index or column name을 전달해도 가능
    • XGBoost의 경우, 1.5 version에서 tree_method('gpu_hist')로 지정하면 사용 가능
  • Hyper parameter
    • num_leaves: 리프 노드의 최대 개수 지정 (모델 복잡도 결정, default 31)
    • min_child_samples: 리프 노드의 최소 샘플 개수 지정 (과대적합 방지)
    • max_depth: 트리 최대 깊이 (default -1)
    • n_estimators: 부스팅 횟수 (default 100)
    • learning_rate: 학습률 (default 0.1)
    • subsample: 트리 생성 시, 랜덤하게 추출할 샘플 비율 (default 1)
    • subsample_freq: 부스팅 횟수 몇 번마다 subsampling할지 지정
  • Feature importance: plot_importance 함수 사용
  • Tree Graph: plot_tree 함수 사용
    • 부스팅 각 단계에서 추가된 트리 시각화
    • show_info: 노드 안에 포함될 정보 지정
      • internal_count: 노드에 포함되는 샘플 수
      • leaf_count: 리프 수
      • split_again: 노드 분할로 얻는 이익
    • orientation: 그래프 방향 ('vertical': 루트 노드가 맨 위에서 시작)

CatBoost

  • 범주형 특성을 잘 처리함
  • depth-wise 트리 성장 방식을 사용 (XGBoost와 유사)
  • 대칭적인 구조를 가짐
    • 깊이가 같은 노드는 모두 동일한 특성을 사용하여 분할
    • 속도를 높이고 과대적합을 방지함
  • Missing Value
    • 수치형 특성의 경우 특성의 최솟값으로 대체
      • nan_mode 매개변수에서 변경 가능
    • 범주형 변수는 처리 못함 -> 별도의 작업 필요
  • Hyper paramter
    • cat_features: 범주형 특성 -> 특성의 인덱스로 전달해야함
    • n_estimators: 부스팅 횟수
    • max_depth: 트리 최대 깊이
    • learning_rate: 학습률
    • min_child_samples: 리프 노드의 샘플 개수 지정
    • grow_policy: 트리 성장 방식 지정
      • Depthwise(깊이별), Lossguid(리프별), SymmetricTree(대칭트리)

Reference

profile
Data Scientist, Data Analyst

0개의 댓글