본문 바로가기
Data Science & AI Theories

XGBoost, LightGMB, CatBoost

by Oliver J 2023. 8. 14.
반응형
  • XGBoost
    • Subsample설정에 따라 비복원 SamplingSampling 한다는 점 외에는 부스팅은 랜덤포레스트와 동일하다
    • Subsample : 각 반복구간마다 샘플링할 입력 Data의 비율을 조정
    • Eta : 부스팅 알고리즘에서 αm에 적용되는 축소비율을 결정하는 것으로서 가중치변화량을 낮추어 overfitting 방지효과를 가진다.
    • 정규화 파라미터: L1정규화, L2정규화가 있으며 Parameter를 크게 할수록 Model이 복잡해지면 더 많은 Penalty부여로 트리의 크기가 작아진다.
    • n_estimator: 부스팅 라운드 횟수로서 eta가 작으면 학습속도가 떨어지므로 n_estimator를 늘려야 한다. overfitting방지 파라미터 설정을 포함할 경우 늘려도 무관~
    • max_depth: 최대 6 (Python default 3), 노이즈 많은 Data에 대해 Model이 복잡한 거짓 상호작용회피에 도움이 된다.
    • XGBClassifierscale_pos_weight = 10 일 경우 10배의 크기로 upsampling 한다.
    • (Python) XGBRegressor
      1. (booster=’dart’, rate_drop=0.5)
        • dart : Gradient Boosting Tree라는 점에서 GBTree와 유사하지만 dart는 부스팅의 단계별 트리를 dropout(삭제)하는 것이 주요 차이이다.
      2. gblinear + sigmoid로 분류에 사용 가능하다 è LogisticRegressor보다 성능이 좋음
      3. min_child_weight의 값을 올리거나 subsample 값을 줄일 경우 일반화 성능향상에 도움이 된다.
반응형
  • LightGBM
    • 히스토그램 기반의 Gradient Boosting
    • 기본 max_bin을 256개의 구간으로 나누고 하나의 구간을 누락값을 위해 사용.
      • , 누락값을 별도처리할 경우 누락값 구간에 대한 내용은 불필요하다
      • Max_bin을 조절하여 메모리 효율성을 올릴 수 있다.
    • Feature의 중요도를 시각화하는 plot_importance나 tree모양 시각화인 plot_tree 함수를 제공
      • XGBoost도 해당 함수들 사용가능 

LightGBM lib package

  • Joblib 라이브러리로 LGBRegressor나 LGBMClassifier 모델 저장 가능

Joblib 사용 예시

 

      • CatBoost
        • 범주형 처리에 특화되어 있으며 gradient boosting library에 있다
        • 범주형 특성을 OneHotEncoding이나 정수인코딩을 할 필요 없이 알려주기만 하면 된다.
        • 깊이 성장(Depthwise)과 리프별성장(Lossguide)을 grow_policy옵션으로 변경 가능
        • 범주형 특성의 경우 누락값을 처리하지 못하므로 따로 조작이 필요(kind ColumnTransformer)
        • Training 속도는 다소 느린 편
        • .get_feature_importance함수로 특성 중요도 호출 가능하다.(리턴값은 Numpy 배열 형식)

범주형 특성 알려주기 1
범주형 특성 알려주기 2
grow_policy옵션
catboost의 get_feature_importance함수

728x90
반응형