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을 사용하지 않으므로 빛을 발할 수 없습니다.