XGBoost

2023. 5. 28. 20:36·DS & ML/Machine Learning

XGBoost

  • 가장 먼저 개발된 부스팅 알고리즘
  • 손실 함수뿐만 아니라 모형 복잡도까지 고려함
  • 캐글 컴피티션 우승자가 많이 사용하는 성능이 검증된 부스팅 모델
  • 종속변수가 연속형 데이터인 경우든 범주형 데이터인 경우든 모두 사용 가능
  • 이미지나 자연어가 아닌 표로 정리된 데이터의 경우, 거의 모든 상황에 활용할 수 있음
장점 단점
예측 속도가 상당히 빠르며, 예측력 또한 좋음 복잡한 모델인 만큼, 해석이 어려움
변수 종류가 많고 데이터가 클수록 상대적으로 뛰어난 성능을 보여줌 더 나은 성능을 위한 하이퍼파라미터 튜닝이 까다로움

부스팅: 순차적으로 트리를 만들어 이전 트리로부터 더 나은 트리를 만들어내는 알고리즘

  • 트리 모델을 기반으로 한 최신 알고리즘 중 하나
  • XGBoost, LightGBM, CatBoost 등

 

코드

import xgboost as xgb
model = xgb.XGBClassifier(n_estimators=500, max_depth=5, random_state=100)
model.fit(X_train, y_train)
pred = model.predict(X_test)

model.feature_importances_  # 변수 중요도 확인

 

하이퍼파라미터

  • learning_rate: 경사하강법에서 매개변수를 얼마큼씩 이동해 가면서 최소 오차를 찾을지 그 보폭을 결정
  • max_depth: 각 트리의 깊이
  • subsample: 모델을 학습시킬 때 사용할 데이터의 비율(0.5이면 데이터의 절반 사용)
  • n_estimators: 전체 나무의 개수

 

모델 이해

트리 모델의 진화 과정

  • 결정 트리: 가장 기본적인 트리 모델
  • 배깅: 부트스트랩 훈련 셋을 사용하는 트리 모델
  • 랜덤 포레스트: 데이터와 변수의 일부를 사용하여 여러 트리를 만드는 모델
  • 부스팅: 이전 트리의 학습 내용을 다음 틜에 반영하려 여러 트리를 만드는 방법
  • 경사 부스팅: 부스팅에 경사 하강법을 적용한 모델
  • XG 부스팅: 경사 부스팅에서 계산속도와 알고리즘 효율을 개선한 모델

1. 배깅

부트스트랩(bootstrap) 훈련 셋을 사용하는 트리 모델

  • 부트스트랩: 데이터의 일부분을 무작위로 반복 추출하는 방법

2. 부스팅과 에이다부스트

부스팅(Boosting): 랜덤 포레스트에서 한 단계 더 발전한 방법으로 역시 여러 트리를 만드는 모델

  • 랜덤 포레스트에서 각 트리는 독립적이나, 부스팅에서는 그렇지 않음
  • 부스팅은 각 트리를 순차적으로 만들면서 이전 트리의 정보를 이용함
  • 부분집합을 이용해 첫 트리를 만들고 난 후, 해당 트리의 예측 결과를 반영하여 두 번재 트리를 만들어서 첫 번재 트리와의 시너지 효과를 키움
  • 트리를 계속하여 만들 때마다 이런 식으로 이전 트리의 정보를 이용한다는 점이 랜덤포레스트와 다음

에이다부스트(AdaBoost): 단계적으로 트리를 만들 때 이전 단계에서의 분류 결과에 따라 각 데이터에 가중치를 부여/수정함

  • 이전 트리에서 가중치가 덜 부여되고 잘못 분류된 데이터들에 더 높은 가중치를 부여하고
  • 후속 트리에서는 가중치가 높은 데이터를 분류하는데 우선순위를 둠
  • 이런 방식으로 트리 여러 개를 만들면 분류가 복잡한 데이터셋도 세부적으로 나눌 수 있는 모델이 만들어짐

3. 경사 부스팅과 XGBoost

경사 부스팅(Gradient boosting): 경사하강법을 이용하여, 이전 모델의 에러를 기반으로 다음 트리를 만들어감

  • XGBoost, LightGBM, Catboost

XGBoost(Extreme Gradient Boosting): 계산 성능 최적화와 알고리즘 개선을 함께 이룸

  • 순차적으로 트리를 만들지만, 병렬화, 분산 컴퓨팅, 캐시 최적화 등을 활용해 계산 속도가 이전 부스팅 모델보다 훨씬 빠름
  • 2차 도함수를 활용해 더 적절한 이동 방향과 이동 크기를 찾아내어 더 빠른 시간에 전역 최솟값에 도달함
  • 정규화 하이퍼 파라미터 Lasso, Ridge 지원

 

 

참고: 데싸노트의 실전에서 통하는 머신러닝

 

GitHub - dduniverse/ML-study: <데싸노트의 실전에서 통하는 머신러닝> 실습 노트북

<데싸노트의 실전에서 통하는 머신러닝> 실습 노트북. Contribute to dduniverse/ML-study development by creating an account on GitHub.

github.com

 

 

 

반응형
저작자표시
'DS & ML/Machine Learning' 카테고리의 다른 글
  • LightGBM
  • Random Forest
  • Decision Tree
  • Naive Bayes
dduniverse
dduniverse
  • dduniverse
    dduniverse
    dduniverse
  • 전체
    오늘
    어제
    • 분류 전체보기 (242)
      • Algorithm (123)
        • 알고리즘 이론 (8)
        • 백준 (19)
        • 프로그래머스 (83)
        • 구름 알고리즘 먼데이 챌린지 (13)
      • 빅데이터분석기사 (10)
        • 통계 (4)
        • 실기 (6)
      • KT에이블스쿨 (26)
      • FrontEnd (11)
        • React (5)
        • 기타 (6)
      • BackEnd (18)
        • Django (15)
        • Spring (3)
      • DS & ML (11)
        • Machine Learning (9)
        • Kaggle (2)
      • TIL (43)
        • python (22)
        • javascript (3)
        • 오류해결 (10)
        • 기타 (7)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 관리
    • 글쓰기
  • 링크

  • 인기 글

  • hELLO· Designed By정상우.v4.10.0
dduniverse
XGBoost
상단으로

티스토리툴바