LightGBM

2023. 5. 28. 21:00·DS & ML/Machine Learning

LightGBM

XGBoost 이후로 나온 최신 부스팅 모델

  • 리프 중심 트리 분할 방식 사용
  • 종속변수가 연속형 데이터인 경우든 범주형 데이터인 경우든 모두 사용할 수 있음
  • 이미지나 자연어가 아닌 표로 정리된 데이터라면 거의 모든 상황에서 활용할 수 있음
장점 단점
XGBoost보다도 빠르고 높은 정확도를 보여주는 경우가 많음 복잡한 모델인 만큼, 해석에 어려움이 있음
예측에 영향을 미친 변수의 중요도를 확인할 수 있음 하이퍼파라미터 튜닝이 까다로움
변수 종류가 많고 데이터가 클수록 상대적으로 뛰어난 성능을 보여줌  

 

코드

import lightgbm as lgb
model = lgb.LGBMClassifier(random_state=100)
model.fit(X_train, y_train)
pred = model.predict(X_test)

 

하이퍼파라미터

  • n_estimators: 반복 횟수
  • learning_rate: 러닝 레이트
  • lambda_l1: L1 정규화
  • lambda_l2: L2 정규화
  • max_depth: 최대 깊이
  •  subsample: 서브샘플 비율

 

LightGBM의 train() 함수

  lgb.train() lgb.LGBMRegressor.fit() / lgb.LGBMClassifier.fit()
검증셋 모델링 과정에 검증셋 지원 모델링에 검증셋 포함하지 않음
데이터셋 데이터프레임을 별도의 포맷으로 변환 필요 별도의 포맷 필요 없이 자동적으로 처리
하이퍼파라미터 무조건 지정해야 함 기본값으로도 모델링 가능
사이킷런과 연동(Gridsearch, CV 등) 불가 가능

train() 함수에서는 검증셋을 함께 사용

  • 트리를 계속해서 만들어나갈 때 훈련셋이 아닌 검증셋으로 평가를 해가며 모델을 개선해 나감
  • 모델링이 완료되면, 사용하지 않은 시험셋으로 최종 예측 및 평가를 진행
  • train() 함수로 학습하려면 LightGBM에서 제시하는 고유한 데이터셋 형태를 취해야 함 - Dataset() 함수
  • train() 함수는 하이퍼파라미터가 입력되지 않으면 에러가 나기 때문에 반드시 하이퍼파라미터를 입력해야 함

 

모델 이해

XGBoost와 LightGBM의 가장 큰 차이점: 트리의 가지를 어떤 식으로 뻗어나가는가

  • XGBoost는 균형 분할 방식으로, 각 노드에서 같은 깊이를 형성하도록 한층 한층 밑으로 내려옴
  • LightGBM은 리프 중심 트리 분할 방식으로, 특정 노드에서 뻗어나가는 가지가 모델의 개선에 더 도움이 된다면 좌우 노드 수가 균등하지 않고 가지가 깊게 펼쳐짐

LightGBM은 속도가 훨씬 빠르게 진행될 수 있으며, 복잡성은 더 증가하고, 오버피팅 문제를 야기할 가능성 또한 높음

  • 하이퍼파라미터 튜닝으로 극복 가능

XGBoost 대비 LightGBM의 장점

  • 빠른 학습 및 예측
  • 더 적은 메모리 사용
  • 데이터셋 자동 변환 및 최적 분할
 

 

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

 

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

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

github.com

 

저작자표시 (새창열림)
'DS & ML/Machine Learning' 카테고리의 다른 글
  • XGBoost
  • Random Forest
  • Decision Tree
  • Naive Bayes
dduniverse
dduniverse
  • dduniverse
    dduniverse
    dduniverse
  • 전체
    오늘
    어제
    • 분류 전체보기 (245)
      • 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 (46)
        • python (22)
        • javascript (3)
        • 오류해결 (10)
        • 기타 (10)
  • 블로그 메뉴

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

  • 인기 글

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

티스토리툴바