오늘 다룰 ExtraTreeClassifier와 XGBoost는 모두 ensemble model의 변형이다.

fig

bagging과 boosting에 대해서는 이전 글에 포스팅하였당

간단하게 요약하자면,

Boosting이란 약한 분류기를 결합하여 강한 분류기를 만드는 과정이고

Bagging이란 샘플을 여러 번 뽑아 각 모델을 학습시켜 결과를 aggregating 하는 방법이다.


ExtraTreesClassifier

random forest model의 변종으로, forest tree 의 각 후보 feature을 무작위로 분할하는 식으로 무작위성을 증가 시킨다.

공홈 문서에도 아래와 같이 extremely randomized tree classifier 이라고 설명되어 있다.

An extremely randomized tree classifier.

Extra-trees differ from classic decision trees in the way they are built. When looking for the best split to separate the samples of a node into two groups, random splits are drawn for each of the max_features randomly selected features and the best split among those is chosen. When max_features is set 1, this amounts to building a totally random decision tree.

Warning: Extra-trees should only be used within ensemble methods.

parameter인 splitter로 각 노드에서 분할을 random하게 선택할지 best인 것을 선택할지를 고를 수 있고,

min_samples_split으로 내부 노드를 분할하는 데 필요한 최소 샘플 수를 선택할 수 있다.

extra tree의 base tree인 ExtraTreeClassifierDecisionTreeClassifier를 상속한 것이며,

splitter=’best’가 아니고 splitter=’random’인 것과 max_features=’auto’인 것을 제외하고는 DecisionTreeClassifier와 동일하다.

accuracy 자체는 random forest와 거의 동일하지만, feature의 weight가 비교적 고른 편이다.


from sklearn.ensemble import ExtraTreesClassifier

ExtraTreeClassifier를 Decision Tree로 이용한다.


XGBoost

Extreme Gradient Boosting의 약자로, Gradient Boosting 알고리즘을 분산환경에서도 실행할 수 있도록 구현해놓은 라이브러리이다.

(gradient boosting 란 이전 예측기가 만든 residual error에 새로운 예측기를 학습시키는 것이다.)

훈련 속도가 매우 빠르며, cluster간의 parallelized / distributed가 가능하다.


from xgboost.sklearn import XGBModel


Discussion

현재 binary-class와 multi-class의 classification에 위 두 모델을 쓰고 있는데

binary-class에서는 두 모델의 성능이 거의 비슷한 반면 multi-class에서는 확연히 달랐다.

아마도 multiclass를 다루기 위해 OneVsRestClassifier를 진행하지 않았기 때문으로 보여진다.


Reference

  • https://swalloow.github.io/bagging-boosting/

  • ExtraTreesClassifier

    • https://tensorflow.blog/2017/11/30/%EB%8D%94%EC%9A%B1-%EB%9E%9C%EB%8D%A4%ED%95%9C-%ED%8F%AC%EB%A0%88%EC%8A%A4%ED%8A%B8-%EC%9D%B5%EC%8A%A4%ED%8A%B8%EB%A6%BC-%EB%9E%9C%EB%8D%A4-%ED%8A%B8%EB%A6%ACextratreesclassifier/
  • XGBoost

    • https://bcho.tistory.com/1354

    • https://3months.tistory.com/368

    • https://midannii.github.io/deeplearning/2021/01/30/ML7.html

    • https://www.shirin-glander.de/2018/11/ml_basics_gbm/

    • https://gabrielziegler3.medium.com/multiclass-multilabel-classification-with-xgboost-66195e4d9f2d