본문 바로가기
DATA SCIENCE_ 💻

GBM, LightGBM, NMF

by thisissilverline 2023. 11. 18.

About 앙상블

여러개의 다양한 모델의 예측 결과를 결합함으로써 단일 모델보다 신뢰성이 높은 예측값을 얻는 것

 

 

 

 

1. 배깅

Parallel Ensemble

 

독립된 모델들의 결과를 합산하여 다수결 투표(Voting)을 통해 결과를 산출하는 것.

위 그림의 왼쪽처럼 bootstrap된(=랜덤 복원샘플링) 데이터가 각 분류기에 input되고, 각각에 따른 결과물들을 한 데 결합하여(Aggregation) 중 다수가 추측한 결과대로 결과를 뽑는 것

 

 

2. 부스팅

Sequential Ensemble

 

특정 모델의 결과를 다른 모델의 input으로 사용하는 방식으로, 모델간 가중치를 부여하여 결과를 산출.

오차가 큰 데이터(=잘못 예측한 데이터)는 가중치를 크게 부여하고, 잘 예측한 데이터에 대해서는 낮은 가중치를 부여하여 다음 모델로 넘겨줌. 이 때 각 모델은 다른 정확도/성능을 지니고 있기 때문에 모델간 가중치도 부여하여 최종 결과를 산출

 

 

부스팅이 통상 성능이 더 좋지만, 소요되는 시간이 오래 걸리고 연산량도 많다.

 

 

 

 

 


 

GBM

Gradient Boosting Machine

부스팅 모델의 일종

 

연산량이 많아서 속도가 느림

따라서 효율적 처리를 위해 GBM을 개선한 모델 → XGBoost, lightGBM, CatBoost 등

  • tree 1이 예측하고 남은 잔차들을 tree 2, tree 3를 차례로 지나가면서 줄여가는 것
  • 각 tree들이 weak learner

 

*Weak learner : 편향이 높거나(과소적합되어 있음) 분산이 높은(과대적합되어 있음), 성능이 좋지 않은 모델

=편향-분산 트레이드오프

 

 

  • gradient descent + boosting을 합친 용어
  • 잔차(실제값과 예측값의 차이)에 대한 음의 경사도(기울기)를 이용하여 잔차가 줄어드는 방향으로 모델을 학습하는 기법
  • 그래서 잔차 적합(=residual fitting) 과정 이라고도 함.
  • 잘못 예측한 데이터에 가중치를 부여해서 오류를 개선해 나가는 방식
  • GBM은 가중치 업데이트에 경사하강법 즉, 손실함수를 최소화하는 방향성을 가지고 가중치 값을 업데이트하는 것
  • 잔차를 최적화할수록 오차는 적으나 과적합될 가능성이 있으므로
    → 정규화 알고리즘 사용, 학습률learning rate 설정으로 해결(보통 0.1 ~ 0.001 범위)

순차적으로 Tree n개 각 트리의 예측결과를 합산한 값을 D(x)로 정의하였을 때, 이 D(x)와 실제 함수 f(x)간의 차이를 줄여나가는 것.

 

 

Light GBM (LGBM)

 

  • 가장 큰 장점으로 학습에 걸리는 시간이 적다(GBM->XGBoost->LightGBM 순으로 빠름)
  • XGBoost와의 예측 성능 차이가 크게 안나는 편.
  • 반면 적은 데이터셋에 적용시 과적합이 발생하기 쉽다는 것이 단점
  • → 일반적으로 10,000건 이상의 데이터셋은 필요함.

 

 

 

  • 리프 중심 트리 분할(leaf wise) 방식 사용
  • level-wise 트리 분할: 균형 잡힌 트리 모양을 유지함으로써 트리의 깊이를 효과적으로 줄임 -> overfitting에 강함(대신 트리 균형을 맞추는 데에 시간이 소요됨)
  • leaf-wise 트리 분할: 트리의 균형을 맞추지 않고, 최대 손실값(max delta loss)을 가지는 리프 노드 분할 -> 예측 오류 손실을 최소화 할 수 있음(대신 트리의 깊이가 깊어지고 비대칭적임)

 

 

장점:

  • 카테고리형 피처의 자동 변환이 가능하고 최적 분할이 가능(원-핫 인코딩과 같은 범주형 변수->수치형 변수로 바꿔주는 과정을 사용하지 않고도 범주형 변수를 최적으로 변환하고 이에 따른 노드 분할 수행이 이루어짐)
  • 메모리 사용량이 작음

 

 

하이퍼 파라미터

  • num_leaves : [ default=31 ] 하나의 트리가 가질 수 있는 최대 리프 개수
  • max_depth : [ default=-1 ] 트리 최대 깊이
  • n_estimators : [ default=100 ] 반복 수행하려는 트리 개수를 지정. 크게 지정할수록 예측 성능이 높아질 수 있으나, 너무 크게 지정하면 overfitting을 유발.
  • min_child_samples : [ default=20 ] 최종 결정 클래스인 리프 노드가 되기 위해서 최소한으로 필요한 레코드 수
  • reg_alpha / reg_lambda : [ default=0.0 ] 각각 L1 정규화, L2 정규화를 위한 값이다.

 

→ 모델 복잡도 제어 (num_leaves 높이면 정확도가 높아지지만, 트리의 깊이가 깊어지고 모델이 복잡해짐)

→ Overfitting 제어 (min_child_samples 높이고 num_leaves와 max_depth 조정, reg_lambda와 reg_alpha 적용)

→ 성능 향상 (learning_rate 작게 하면서 n_estimators 크게 (오버피팅 주의))

 

 

 

참고

https://julie-tech.tistory.com/m/30

https://heeya-stupidbutstudying.tistory.com/m/entry/ML-GBM-알고리즘-및-LightGBM-소개-기본구조-parameters

실습 : https://hmkim312.github.io/posts/HAR_데이터로_해보는_GBM,_XGBoost,_LightGBM/

https://bkshin.tistory.com/entry/머신러닝-15-Gradient-Boost

 


 

 

 

NMF

음수 미포함 행렬 분해(Non-negative Matrix Factorization, NMF)

음수를 포함하지 않는 행렬 X 를 음수를 포함하지 않는 행렬 W와 H의 곱으로 분해하는 알고리즘

(수식)

 

  • 비지도학습 기반의 독립특성 추출을 위한 알고리즘
  • 음수가 아닌 특성과 가중치를 반환

 

 

  • 전체 원소가 양수인 행렬 V가 있을 때, V를 W*H=V인 두 행렬 W(가중치 행렬), H(특성 행렬)로 분해
  • 행렬 W의 각 열 ⇒ 행렬 H의 각 행 ⇒ 데이터의 특성
  • 행렬 W의 각 행 ⇒ 행렬 H의 각 열 ⇒ 특성에 대한 중요도

'DATA SCIENCE_ 💻' 카테고리의 다른 글

[SQL] 표준조인 ~ 서브쿼리 정리  (2) 2023.11.25
Linear Regression & GLM 정리  (1) 2023.11.11
NLP 개념 정리  (0) 2023.11.05
05 콜드스타트 문제 해결하기  (0) 2023.10.14
04 GNN 기반 추천 알고리즘  (1) 2023.10.07