Machine Learning/Algorithm

Ensemble model - XGBoost

고슴군 2022. 7. 9. 10:25
  • XGBoost : A Scalable Tree Boosting System
    • XGBoost는 Gradient Boosting Machine 인데, 어떻게 하면 제한된 computing resource 하에서 좀더 빠르게 더 많은 데이터를 활용할 수 있을까 고민해낸 technique 이라고 보면 된다.
    • GBM이 가지고 있는 장점을 다 흡수했기 때문에, XGBoost를 더 많이 사용한다. 

 

  • XGBoost : An optimized versioni of GBM enabling
    • GBM에 대한 opimized version. 소프트웨어적인 부분 뿐만 아니라 하드웨어적인 부분도 최적화.

 

 

  • Split Finding Algorithm

 

  • Decision tree는 위와 같이 각 변수를 오름차순 정렬한 후에, 하나씩 분기를 지정해보면서 Information gain을 계산한다. 그래서 가장 information gain이 큰 분기를 찾는다.
    • 항상 최적의 분기점 찾아냄. 하지만 계산복잡도 매우 높음
    • 위의 단점들을 극복하기 위해 XGBoost는 Approximate algorithm 사용

 

 

  • 즉, 전체를 한번에 쭉 훑는 것이 아니라, 부분부분 잘라서 그 부분마다 훑어간다. 그렇기 때문에 병렬처리 가능하다. 하지만 무조건 최적의 해를 찾는다는 보장은 사라진다. 일어한 보장을 희생하는 대신에 빠르게 근사해를 찾는다.

 

 

  • Global variant : 기존의 부분집합을 최대한 같은 개수를 유지하면서 depth가 깊어진다. 
  • Local variant : split이 진행되면 진행될수록, 전체 부분집합 개수를 유지한다. 그렇기 때문에 depth가 깊어질수록 조금더 촘촘하게 부분집합이 구분된다. 

 

 

  • exact geedy는 best case이고, global eps=0.3은, 30%씩 듬성듬성 부분집합 잡은 것 --> 성능 상당히 낮아짐
  • local eps=0.3 은 정확도가 높음.
  • global eps=0.05 는 애초에 bucket을 20개로 한다. 

 

  • 정리하면, 분산 처리를 통해 빠르게 split을 해갈 수 있는 장치가 위의 장치였다.

 

  • Sparsity-Aware Split Finding
    • 분기의 기본방향인 default direction을 설정. 즉 결측치가 있는 그런 상황에서는 무조건 처음부터 그 데이터에 대해서는 어느 쪽으로 가라 하는 것을 학습 과정에서 설정해준다.

 

  • missing value를 왼쪽으로 몰았을 때 최적의 split을 찾아냈다
    • 이렇게 학습이 되고 나면, 나중에 이 변수에 대해서 missing value가 나타났을 때는 missing value를 무조건 왼쪽으로 넘긴다. 즉, 변수마다 missing value일 때 어느 분기로 갈지가 결정되는 것.

 

 

 

  • 시간이 줄어듬. 시간을 효율적으로 사용할 수 있다. 

 

 

  • 데이터를 각 변수값으로 정렬한 후에, 분기값을 정하고 split을 한다. 정렬하는 과정에 가장 오래 시간이 소요되기 때문에, 처음에 정렬한 데이터를 미리 저장해놓고, 필요할 때마다 불러와서 쓴다.  --> 시간 훨씬 줄어듬

 

 

 

  • GBM보다 일반적으로 XGBoost를 더 많이 사용한다. 알고리즘에 대한 개념은 GBM으로 이해하면 좋고, 실질적으로 사용할 때는 XGBoost 사용하면 된다. 
반응형

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

Ensemble model - CatBoost  (0) 2022.07.22
Ensemble model - LightGBM  (0) 2022.07.22
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