STORY
MinJ is_

2022년/[멋쟁이 사자처럼] AI 회고

[9주차] 추가공부

KMinJis 2022. 11. 17. 17:40

# 오늘 코드 - 조은 강사님과 함께하는 수업💖

# 9주차 동안 진행한 3일의 수업 중 더 공부해보고싶거나 복습해보고 싶었던 내용 정리입니다.

 

Boosting


  • Boosting 이란?
    • 머신러닝 앙상블 기법 중 하나로 약한 학습기(weak learner)들을 순차적으로 여러개 결합하여 예측 혹은 분류 성능을 높이는 알고리즘
    • 여러 개의 알고리즘이 순차적으로 학습-예측을 하면서 이전에 학습한 알고리즘의 예측이 틀린 데이터를 올바르게 예측할 수 있도록, 다음 알고리즘에, 가중치를 부여하여 학습과 예측을 진행하는 방식
    • 앙상블(Ensemble) 아이디어에서 Sequential이 추가된 형태
  • Boosting Algorithm 종류
    • AdaBoost
    • GBM(Gradient Boosting Machine)
    • XGBoost
    • LightGBM
    • CatBoost

◆ XGBoost 

  • XGBoost 란?
    GBM은 residaul을 줄이는 방향으로 weak learner를 결합해 강력한 성능을 자랑하지만, 해당 train data에 residual을 계속 줄이니까 overfitting 되기 쉽다는 문제점이 있음
    => 이를 해결하기 위해 XGBoost는 GBM에 regularization term을 추가한 알고리즘

 

  • Regularization term
 

          #  T는 우리가 weak learner로 쓰는 tree의 최종 node의 개수
          #  w는 최종 node의 score인데 loss function에 의해 학습되는 값

          #  Regularization term은 tree 복잡도가 증가할수록 loss에 페널티를 주는 방식으로 overfitting을 막고 있음

 

  • 특징
    1) 다양한 loss function을 지원해 task에 따른 유연한 튜닝이 가능
    2) GBM보다 빠름
    3) CART(Classification And Regresstion Tree)를 기반으로 함 (= 분류와 회귀 모두 가능)
    4) 조기 종료(early stopping)을 제공한다
         (성능이 더이상 좋아지지 않을때 시간낭비를 하지 않고 최고의 모델을 뽑기 위함)
    5) Gradient Boost을 기반으로함

◆ LightGBM 

  • LightGBM의 특징
    • leaf wise tree 분할 방식 사용
      기존의 tree기반 알고리즘은 level wise(균형 트리 분할) 방식을 사용했음
      이는 tree의 깊이가 최소화될 수 있지만, 연산이 추가되고 시간이 오래걸림

      💡 leaf wise tree분할 방식 
          tree의 균형을 고려하지 않고 최대 손실 값(max data loss)를 가지는 leaf node를 지속적으로 분할하면서
          tree의 깊이가 깊어지고 비대칭적인 tree가 생성
          => 최대 손실값을 가지는 leaf node를 반복 분할하는 방식은
                 level wise tree분할 방식보다 예측 오류 손실을 최소화

    • 높은 cost 문제 해결
      부스팅 계열의 대부분 computational cost는 각 단계에서 weak learner인 best tree를 찾는데 쓰임
      즉, 백만 개의 데이터를 XGBoost로 iteration=1000을 학습시킨 경우, 각 단계에서 tree를 fitting 시키기위해 백만개 데이터를 전부 scan해야 함 => computational cost가 많이 들고 시간이 오래 걸림
      • 💡 histogram-based/GOSS/EFB 등의 알고리즘을 통해 tree를 구축하기 위한 scan 데이터 양을 줄임
        • 🔎 GOSS: 데이터셋의 샘플 (instance) 수를 줄이는 알고리즘
            기본가정은 instance의 gradient가 클수록 영향력이 크고 덜 학습된 instance라는 것
            => 이러한 instance를 포함하면서 데이터셋의 샘플 수를 줄이려고 시도
        • 🔎 EFB: 데이터셋의 Feature 수를 줄이는 알고리즘
            고차원의 데이터는 sparse하다는 가정 하에,
             상호배타적인 변수들을 하나의 bucket으로 묶어서 Feature 수를 줄이는 방식
             ( 여기서, 상호배타적인 변수들은 동시에 0이 아닌 값을 갖지 않는 변수들을 말함 )

    • Categorical feature들의 자동 변환과 최적 분할
    • GPU 학습 지원

◆ 참고 및 출처 

https://velog.io/@good159897/%EB%B6%80%EC%8A%A4%ED%8C%85-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-Boosting-Algorithm

 

부스팅 알고리즘 (Boosting Algorithm)

부스팅(Boosting) 부스팅은 머신러닝 앙상블 기법 중 하나로 약한 학습기(weak learner)들을 순차적으로 여러개 결합하여 예측 혹은 분류 성능을 높이는 알고리즘이다.

velog.io

https://lsjsj92.tistory.com/547

 

머신러닝 앙상블(ensemble) xgboost란? - Python 예제와 함께 살펴보기

머신러닝에서는 앙상블(ensemble) 모델을 빼놓을 수가 없습니다. 이 앙상블에는 배깅(bagging)과 부스팅(boosting) 그리고 보팅(voting) 방법이 있습니다. 크게 보면 말이죠 이 중 ensemble bagging에 대해서는

lsjsj92.tistory.com

https://mac-user-guide.tistory.com/79

 

[Machine Learning] LightGBM이란? ✔ 설명 및 장단점

📌 Remind LightGBM에 들어가기전에 복습 겸 reminding을 해보자. Light GBM의 GBM은 Gradient Boosting Model로, tree를 기반으로 하는 학습 알고리즘이다. 이 GBM의 학습방식을 쉽게말하면, 틀린부분에 가중치를

mac-user-guide.tistory.com

https://kicarussays.tistory.com/38

 

[논문리뷰/설명] LightGBM: A Highly efficient Gradient Boosting Decision Tree

LightGBM은 예전에 한 프로젝트에서 정형 데이터 (Table 형태의 데이터) 에 여러 머신러닝 기법들을 적용해보던 중에 발견한 방법이었습니다. CPU만 사용하면서도 GPU를 쓰는 XGBoost보다 훨씬 더 빠르

kicarussays.tistory.com

https://hyunlee103.tistory.com/25

 

[머신러닝] Boosting Algorithm

처음 머신러닝을 공부할 때, 가장 어려웠던 부스팅 계열 알고리즘, 보아즈에서 발표를 하게 되면서 다시 한번 내용을 정리해두려고 한다. 학부생의 철없는 질문을 받아주신 건국대학교 권성훈

hyunlee103.tistory.com

 

'2022년 > [멋쟁이 사자처럼] AI 회고' 카테고리의 다른 글

[12주차] 추가공부  (1) 2022.12.08
[10주차] 추가공부  (1) 2022.11.24
[8주차] 추가공부  (0) 2022.11.10
[7주차] 추가공부  (0) 2022.11.03
[2주차] 추가 공부  (1) 2022.09.29