ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 분류 - 5
    Python Machine Learning/분류 2020. 8. 12. 16:17

    Light GBM

    - XGBoost보다 학습에 걸리는 시간이 훨씬 적은 것이 장점이며 또한 메모리 사용량도 상대적으로 적습니다. 하지만

      적은 데이터 세트에 적용할 경우 과적합이 쉽게 발생하는 단점이 있습니다. ( 대략 10,000건 이하의 데이터 세트? )

    - GBM 계열의 트리 분할 방법과 다르게 리프 중심 트리 분할 ( Leaf Wise ) 방식을 사용하며 이러한 방식은 트리의

      균형을 맞추지 않고, 최대손실 값을 가지는 리프 노드를 지속적으로 분할하면서 트리의 깊이가 깊어지고 비대칭적인

      규칙 트리가 생성됩니다. 

    - 파이썬 패키지명은 lightgbm

    - 파이썬 래퍼용 , 사이킷런 래퍼용이 있으며 사이킷런 래퍼 LightGBM 클래스는 분류를 위한 LGBMClassifier 클래스와

      회귀를 위한 LGBMRegressor 클래스 입니다.

    - 사이킷런 LightGBM 클래스는 사이킷런의 기반 Estimator를 상속받아 작성됐기 때문에 fit( ), predict( ) 기반의 학습 및

      예측이 가능합니다.

     

    Light GBM의 XGBoost 대비 장점

    - 더 빠른 학습과 예측 수행 시간.

    - 더 작은 메모리 사용량.

    - 카테고리형 피처의 자동 변환과 최적 분할.

     

    Light GBM 하이퍼 파라미터

    - 리프 노드를 계속 분할하면서 트리의 깊이가 깊어지는 특성에 맞는 하이퍼 파라미터 설정이 필요합니다.

     

    1. num_iterations [ default = 100 ] :

    - 반복 수행하는 트리의 개수를 지정하며 사이킷런 GBM과 XGBoost의 사이킷런

      호환 클래스의 n_estimators와 같은 파라미터로 LightGBM의 사이킷런 호환클래스에서는 n_estimator로 이름이 변경.

    2. learning_rate[ default = 0.1 ]

    - 반복적으로 수행할 때 업데이트되는 학습률값이며 GBM, XGBoost의 learning rate와 같은 파라미터.

    3. max_depth [ default = -1 ]

    - 트리 기반 알고리즘의 max_depth와 같은 파라미터.

    4. min_data_in_leaf [ default = 20 ]

    - 최종 결정 클래스인 리프 노드가 되기 위해서 최소한으로 필요한 레코드 수이며, 결정 트리의 min_samples_leaf와

      같은 파라미터. LightGBMClassifier에서는 min_child_samples 파라미터로 이름이 변경.

    5. num_leaves [ default = 31 ]

    - 하나의 트리가 가질 수 있는 최대 리프 개수.

    6. boosting [ default = gbdt ]

    - 부스팅의 트리를 생성하는 알고리즘을 기술. gbdt : 그래디언트 부스팅 결정 트리, rf : 랜덤 포레스트

    7. bagging_fraction [ default = 1.0 ]

    - 과적합을 제어하기 위해 데이터를 샘플링하는 비율을 지정하며 사이킷런 래퍼 LightGBMClassifier에서는 sub_sample

      로 동일하게 파라미터 이름이 변경.

    8. feature_fraction [ default = 1.0 ]

     - 개별 트리를 학습할 때마다 무작위로 선택하는 피처의 비율을 말하며, 과적합을 막기 위해 사용되고

       LightGBMClassifier에서는 colsample_bytree로 변경.

    9. lambda_l2 [ default = 0.0 ]

     - L2 regulation 제어를 위한 값으로 피처 개수가 많을 경우 적용을 검토하며 값이 클수록 과적합 감소 효과가 있음

       LightGBMClassifier에서는 reg_lambda로 변경.

    10. lambda_l1 [ default = 0.0 ]

     - L1 regulation 제어를 위한 값으로 L2와 같이 과적합 제어를 위한 것. LightGBMClassifier에서는 reg_alpha로 변경.

     

    LightGBM 적용한 위스콘신 유방암 예측 예제

    조기 중단으로 147번 반복까지만 수행하고 학습을 종료
    예측 성능 평가
    중요피처 시각화

    'Python Machine Learning > 분류' 카테고리의 다른 글

    분류 - 7  (0) 2020.08.12
    분류 - 6  (0) 2020.08.12
    분류 - 4  (0) 2020.08.11
    분류 - 3  (0) 2020.08.11
    분류 - 2  (0) 2020.08.10
Designed by Tistory.