본문 바로가기
멋쟁이사자처럼 AI School 8기(fin)/TIL(Today I Learn)

[멋쟁이사자처럼 AI스쿨] TIL(23.3.21) XGBoost, LightBGM

by #FF0000 2023. 3. 21.

 

portable

  • 이식성이 높다
  • 다른 프로그래밍 언어를 지원하기 적합한 구조로 설계, 여러 언어 지원.

 

 

배깅

  • 병렬트리를 여러 개 생성, 오버피팅에 좀 더 덜 취약.
  • 랜덤포레스트, ExtraTree

 

부스팅

  • 순차적으로 트리를 생성, 오버피팅에 좀 더 취약하며, 개별 트리의 성능이 중요할 때 사용.
  • GBM, XGBoost, LightGBM, CatBoost

 

 

 

XGBoost

  • xgboost는 GBT에서 병렬 학습을 지원하여 학습 속도가 빨라진 모델.
  • 기본 GBT에 비해 더 효율적이고, 다양한 종류의 데이터에 대응할 수 있으며 이식성이 높음.
  • 모든 가능한 트리를 나열하여 최적 트리를 찾는 것은 거의 불가능
  • 2차 근사식을 바탕으로 한 손실함수를 토대로 매 iteration마다 하나의 leaf로부터 가지를 늘려나가는 것이 효율적
  • 손실 함수가 최대한 감소하도록 하는 split point(분할점)를 찾는 것이 XGBoost의 목표

 

XGBoost

장점

- GBM 대비 빠른 수행시간

- 병렬 처리로 학습, 분류 속도가 빠름.

- 과적합 규제(Regularization)

- 표준 GBM 경우 과적합 규제기능이 없으나, XGBoost는 자체에 과적합 규제 기능으로 강한 내구성을 가진다.

- Early Stopping(조기 종료) 기능이 있다. - 다양한 옵션을 제공하며 Customizing이 용이하다.

 

단점

- XGBoost는 GBM에 비해 좋은 성능을 보여주고 비교적 빠르지만 그래도 여전히 학습시간이 느림

- Hyper Parameter 수가 많아 Hyper Parameter 튜닝을 하게되면 시간이 더욱 오래 걸림

- 모델의 Overfitting

 

 

 

 

LightGBM(Light Gradient Boosting Machine)

  • GOSS(Gradient based One Side Sampling)와 EFB(Exclusive Feature Bundling) 적용
  • XGBoost와 비교해 정확도는 유지, 학습 시간을 상당히 단축시킨 모델
  • 트리 기준 분할이 아닌 리프 기준 (leaf wise tree) 분할 방식을 사용.
  • 학습에 소요되는 시간이 짧고 메모리 사용량도 절약할 수 있어 대용량 데이터 처리가 가능.
  • 적은 데이터셋에서 과적합 발생 우려.

 

1) GOSS => 행을 줄입니다.

  • 기울기 기반 단측 표본 추출법
  • “모델의 학습에 많은 도움이 되는 샘플” 모두 학습에 사용,
  • "학습에 별 도움이 안 되는 샘플”은 일부만 학습에 사용.
  • 틀린 문제 위주로 다시 샘플을 구성 -> 트리를 시각화시 한쪽 방향으로 트리가 만들어지는 것 확인

2) EFB => 열을 줄입니다.

  • 변수 개수를 줄여 차원을 효과적으로 감소
  • 트리의 가지를 뻗어나가면서 사용되는 feature의 가짓수를 줄여 트리가 overfitting되는 것을 방지.
  • 인코딩이 되어있는 데이터는 밀도가 낮은데, 낮은 밀도의 데이터끼리 합칠 수 있는 것은 합침.
  • ex) 바이너리 값인 연장자 여부를 주니어, 시니어 각각 인코딩했다면 불필요한 인코딩. (서로 배타적)
  • 이런 피처를 합쳐서 사용 >  EFB 기법입니다.
  • 알고리즘 내부에서 서로 배타적인 특징을 갖는 피처를 찾아 합칩니다.

 

=> 행(틀린 문제 위주로 샘플링)과 열을 줄여서 학습시간을 더 빠르게 합니다.

 

 

 

 

Quiz

Q. 성능에 고려 없이 GBM 에서 훈련시간을 줄이려면?

A. learning_rate 를 올리면 학습시간은 줄어들지만 발산(제대로 된 loss(손실)가 0이 되는 지점을 제대로 찾지 못할 수도) 

 

Q. GBM 에서 훈련시간에 상관없이 성능을  높이려면?

A. learning_rate 를 작게 하면 오차가 최소가 되는 지점을 찾아가지만, 속도는 오래 걸림.

 

Q. 주어진 데이터가 충분하지 않아 랜덤 샘플링을 통해 training data를 늘리는 방법

A. Bootstrapping