Machine Learning/Algorithm

Ensemble model - LightGBM

고슴군 2022. 7. 22. 14:56
  • Microsoft 에서 개발 되었고, XGBoost 보다 나중에 제안된 모델
  • Category 변수가 많은 데이터에 대해서 상당한 효과를 보는 알고리즘이다. 데이터의 특성을 잘 살펴서, 범주형 변수가 많을 경우 LightGBM을 우선순위로 염두에 두는 것도 좋다. 

 

 

 

  • 그래서 XGBoost에서도 모든 데이터를 스캔하지 않고, 부분부분으로 나누어서 스캔했었다. 
  • Gradient-based One-Side Sampling (GOSS)
    • 상대적으로 gradient가 클 수록, 많이 틀렸다는 의미이니까 걔네들에 대한 정보를 많이 반영해야함
    • graidnet가 작을수록 틀린 정도가 크지 않기 때문에 해당 데이터 포인트들은 다음 모델을 구축할 때 덜 중요하게 생각되어도 된다. 
    • 따라서, Large gradient를 가진 데이터는 keep하고, small gradient를 가지면 randomly drop하자.
    • 즉, 스캔을 해야하는 데이터의 총량을 좀 줄이자!
  • Exclusive Feature Bundling (EFB)
    • 변수 길이를 줄이자
    • 모든 변수에 대해서 모든 개체를 scan해서 split point를 찾아야 하니, GOSS는 관측치 수 줄이는거고, EFB는 변수의 수 줄이는거다.
    • sparse한 변수는 좀 줄이자!

 

  • GOSS

 

 

  • 알파(a)와 베타(b) 하이퍼파라미터 사용한다.
    • (1-a)/b = 1 보다 크도록 조절한다.
    • a가 작을수록, b가 작을수록 실제 탐색하는 데이터의 수가 줄어들기 때문에 효율성은 증가하지만 정확도에 대해서 손실을 볼 수 있는 잠재적인 risk 가 있다.
    •  Top a * 100% 데이터는 모두 남겨놓는다. 
    • a=0.2, b=0.5, (1-a)/b=1.6>1
      • Gradient 상위 20%는 split 포인트 찾는데에 모두 사용하겠다.
      • Gradinet 하위 80%에 대해서는, 50%만 sampling 해서 얘네들만 사용해서 split 포인트 찾는데에 사용하겠다. 

 

  • EFB

 

  •  차례로, 4가지 색깔만 있으면 인접한 노드끼리 다른 색이면서 연결시킬 수 있다. 

 

 

 

  • 둘 다 0이 아니었던 데이터의 수를 계산한다.
  • 그러고나서, 각 변수마다 그 값을 더해서, 각 변수의 conflict를 계산한다. 
    • 즉, conflict가 작다는 것은, 둘다 0이거나 하나의 값이 0인 데이터가 많다는 뜻이므로 묶을 수 있다. 
    • conflict가 크면 그 변수는 묶으면 안될 것이다. 

 

  • 그래프를 coloring을 하기 위해서 edge를 끊어내는 작업을 한다. 
    • cut-off=0.2 라면, 2번 이상 conflict가 있다면 잘라내는 것이다.
    • 즉 conflict가 크면 묶지 말고 잘라내자.

 

  • 3개 색을 칠했기 때문에, 3개 변수로 bundling된 것

 

 

  • 기준이 되는 변수가 가지고 있는 최대값을 두 번째 변수 값에 더해준다. 
    • 이렇게 하다보니, exclusive 하지 않는 경우(둘다 0이거나, 둘다 값 가지지 않는 경우)는 약간의 왜곡이 발생하기 때문에, 성능이 저하될 가능성도 있다. 실제적으로 해봤을 때는 상황에 따라 다르지만 category 데이터가 많을 경우 현실에서 작동 잘하는게 lightgbm이다. 

 

 

  • LightGBM 도 XGBoost 처럼 GBM의 대표적인 variant 중 하나이다.
    • 데이터에 따라서 속도나 성능 비등비등하다. 
  • LightGBM을 더 효과적인 상황은 cagegorical 변수가 많아서 binding이 잘 될 수 있는 환경이다.

 

 

 

 

 

 

반응형

'Machine Learning > Algorithm' 카테고리의 다른 글

Ensemble model - CatBoost  (0) 2022.07.22
Ensemble model - XGBoost  (0) 2022.07.09
Ensemble model - GBM (Gradient Boosting Machine)  (0) 2022.07.07
Ensemble model - Adaboost (Adaptive Boosting)  (0) 2022.07.07
Ensemble model - Bagging  (0) 2022.07.05