Ensemble

민성철·2022년 8월 21일
0

Gradient Boosting Emsemble 모델에도 여러 하이퍼 파라미터가 있습니다. 각 하이퍼 파라미터들이 어떤 역할을 하는지 정리해 보세요. 또한 아래 문장에 대해 답변해 주시기 바랍니다.
사이킷런의 공식 도큐먼트에 Gradient boost 모델이 잘 정리되어 있으니 참고해도 좋겠습니다.
[ 훈련 데이터에 overfitting되었다면 학습률을 높여야 할까요, 낮춰야 할까요? ]

  • learning_rate : float, default=0.1
    학습률은 learning_rate만큼 각 트리의 기여도를 관여합니다. 값을 크게 잡을 경우, 업데이트되는 값이 실제값을 지나칠 수 있으며, 반대로 작게 잡을 경우, 없데이트되는 값이 실제값에 다가가기 수월하나 학습하는데 오랜 시간이 걸립니다.
    때문에 learning_rate와 n_estimators 사이에는 절충점이 있습니다.
  • n_estimators : int, default=100
    수행할 부스팅 단계의 수입니다. 그라디언트 부스팅은 과적합에 대해 상당히 강력하므로 일반적으로 숫자가 많을수록 성능이 향상됩니다.
    다만, 많을수록 학습하는 데에 있어 오랜 시간이 걸립니다.
  • subsample : float, default=1.0
    전체 data set에서 어느 정도를 가지고 학습할지를 정할 수 있으며, 과적합이 우려될 경우 1보다 작은 [0.5(전체 data set에서 50%)]를 할 수도 있습니다.
    n_estimators 매개변수와 상호작용합니다.
  • min_samples_split : int or float, default=2
    노드에서 분할을 고려하는 데 필요한 최소 샘플(또는 관찰) 수를 정의합니다.
    과적합을 제어하는 데 사용됩니다. 값이 높을수록 모델이 트리에 대해 선택된 특정 샘플에 매우 특정한 관계를 학습하지 못하게 됩니다.
    값이 너무 높으면 under-fitting이 발생할 수 있으므로 CV를 사용하여 조정해야 합니다.
  • max_depth : int, default=3
    학습할 때 Tree의 최대 깊이를 나타내며, 값이 높을 경우 과적합 우려가 높아집니다.
  • random_state : int, RandomState instance or None, default=None
    각 부스팅 반복에서 트리 추정기에 제공되는 무작위 시드를 제어합니다.
    이를 고정하지 않을 경우, 어떨 때는 좋은 성능을, 어떨 때는 좋지 않은 성능, 즉 비교하지 못하고 랜덤 하게 결괏값이 도출됩니다.

출처 : https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.GradientBoostingClassifier.html

참고 : https://www.analyticsvidhya.com/blog/2016/02/complete-guide-parameter-tuning-gradient-boosting-gbm-python/

[ 훈련 데이터에 overfitting되었다면 학습률을 높여야 할까요, 낮춰야 할까요? ]

낮출 경우, traing data set에 fit해진 model이 되기 때문에 높여야 됩니다.

profile
ENTJ-A

0개의 댓글