GBM, XGBoost, LightGBM, CatBoost의 수학적 차이점은 무엇입니까?


33

다음과 같은 GBDT 모델 제품군에는 여러 가지 구현이 있습니다.

  • GBM
  • XGBoost
  • 라이트 GBM
  • Catboost.

이 다른 구현들 사이 의 수학적 차이점은 무엇입니까 ?

Catboost는 이 벤치 마크 에 따라 기본 매개 변수 만 사용하더라도 다른 구현보다 성능이 뛰어나지 만 여전히 느립니다.

내 생각에 catboost는 희미한 변수를 사용하지 않으므로 각 (범주 형) 변수에 주어진 가중치는 다른 구현에 비해 균형이 조정되어 높은 카디널리티 변수는 다른 변수보다 가중치가 높지 않습니다. 약한 범주 (카디널리티가 낮은)가 일부 나무에 들어갈 수 있으므로 성능이 향상됩니다. 그 외에는 더 이상의 설명이 없습니다.


기준 벤치 마크는 yandex / catboost 팀에 의해 독립적 인 것이 필요합니다.
mrgloom

답변:


27
My guess is that catboost doesn't use the dummified variables, so the weight given to each (categorical) variable is more balanced compared to the other implementations, so the high-cardinality variables don't have more weight than the others.

https://arxiv.org/abs/1706.09516

CATBoost 수학적 고유성에 대한 Yandex 팀의이 영어 문서를보고자합니다.

나는 잠시 읽고, 몇 가지 사이에 나는 빨리 이해할 수 그들은에서 얻은 잔류 사용하지 않는 것이 사실이었다 기차기차를 이러한 잔류 물은 학습 품질의 낙관적 편견을 만들 수 있기 때문에이. ( 업데이트 : 이 참신함은 오버 피팅에 대항 할 수있는 방법을 제공합니다. 이는 범주 형 변수를 전처리하는 다양한 방법과는 별도로 알고리즘이 알고리즘에 비해 더 잘 작동하는 이유 중 하나입니다).

구체적이고 완전한 답변을하지 않아서 죄송합니다.

GBM, XGBoost의 수학적 차이점

먼저 Friedman의 선형 회귀 모델, 분류 자 ​​및 의사 결정 트리에 적용되는 Gradient Boosting Machine에 대한 논문을 읽으십시오. https://statweb.stanford.edu/~jhf/ftp/trebst.pdf

자세한 내용은 여기에 없습니다. 다양한 유형의 손실 (L)을 다루고 가변적 중요성 개념 외에는 잘 읽습니다. 물론 이것은 손실 최소화를 추구하는 매개 변수가 아닌 기능 공간 (하위 모델)에서 하강 방법을 구현 한 이정표입니다.

여기를 보면 : https://arxiv.org/pdf/1603.02754.pdf

Tianqi Chen et al.의 XGBoost 모델에 대한 수학적 비 네트를 찾을 수 있습니다. 이제 재미있어집니다. 클래식 Friedman의 GBM을 구성하는이 모델의 수학적 편차는 다음과 같습니다.

  • 정규화 된 (벌칙 화 된) 매개 변수 (부스팅의 매개 변수는 함수, 트리 또는 선형 모델임을 기억하십시오) : L1 및 L2를 사용할 수 있습니다.

여기에 이미지 설명을 입력하십시오

  • 2 차 미분을 사용하여 프로세스 속도를 높입니다 (이전에 사용 된 경우 수정하십시오).

이 점에 : 여기 보면 편리 모두 제 1 및 제 2 파생 상품을 제공 CATBoost에 분위수 손실의 구현을 찾을 수 https://github.com/catboost/catboost/blob/master/catboost/libs/algo/을 error_functions.h

class TQuantileError : public IDerCalcer<TQuantileError, /*StoreExpApproxParam*/ false> { public:
    const double QUANTILE_DER2 = 0.0;

    double Alpha;
    SAVELOAD(Alpha);

    explicit TQuantileError(bool storeExpApprox)
        : Alpha(0.5)
    {
        CB_ENSURE(storeExpApprox == StoreExpApprox, "Approx format does not match");
    }

    TQuantileError(double alpha, bool storeExpApprox)
        : Alpha(alpha)
    {
        Y_ASSERT(Alpha > -1e-6 && Alpha < 1.0 + 1e-6);
        CB_ENSURE(storeExpApprox == StoreExpApprox, "Approx format does not match");
    }

    double CalcDer(double approx, float target) const {
        return (target - approx > 0) ? Alpha : -(1 - Alpha);
    }

    double CalcDer2(double = 0, float = 0) const {
        return QUANTILE_DER2;
    } };

XGBoost에서이 유용한 L1 손실 함수를 찾을 수 없지만 Yandex의 구현을 XGB 용으로 작성된 일부 사용자 정의 손실 함수와 비교할 수 있습니다.

  • 또한 CATBoost는 범주 형 기능으로 탁월하게 작동하는 반면 XGBoost는 숫자 입력 만 허용합니다.

이 링크를 고려하십시오 : https://tech.yandex.com/catboost/doc/dg/concepts/algorithm-main-stages_cat-to-numberic-docpage/#algorithm-main-stages_cat-to-numberic

기존의 잘 알려진 원-핫 방식을 사용하는 것 외에 모델 기능에 범주 형 기능을 제공하는 다양한 방법을 제공합니다. 많은 정보를 잃지 않고 입력 공간의 크기를 줄이는 것은 적합 모델이 과적 합되지 않은 가능한 이유 중 하나입니다.

끝났습니다. 나는 LightGBM을 사용하지 않으므로 빛을 발할 수 없습니다.


5
더 나은 답변을 제공하지 않고 왜 누군가가 답을 공감할 수 있을지 궁금합니다. 익명의 downvoting을 넘어서는 모든 의견을 환영합니다.
Alexey는

catboost에 대한 내 질문에 정확하게 응답합니다. LightGBM, XGBoost 및 GBM에 대한 보충 자료가 있습니까?
Metariat

그렇습니다, 나는 나의 대답을 자극 할 것입니다. 어려운 수학에 잘 대처하거나 직관적 인 설명을 선호합니까?
Alexey는 Reinstate Monica가

감사합니다. 두 가지 모두에 잘 대처할 수 있습니다. 직관적 인 설명이 더 빠르며 수학적 세부 사항은 더 많은 시간이 걸리지 만 더 많은 이해 / 구현을 위해 매우 유익합니다.
Metariat

1
답변이 풍부합니다.
Alexey는 Reinstate Monica가
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.