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
Sie möchten dieses englischsprachige Papier des Yandex-Teams über die mathematische Einzigartigkeit von CATBoost lesen.
Ich las es kurz und konnte unter anderem schnell nachvollziehen, dass sie die in TRAIN erhaltenen Residuen nicht für TRAIN verwenden , da diese Residuen eine optimistische Tendenz zur Lernqualität hervorrufen . ( Update: Diese Neuheit bietet eine Möglichkeit, die Überanpassung zu bekämpfen. Dies ist einer der Gründe, warum der Algorithmus im Vergleich zu seinen Analoga besser funktioniert, abgesehen von einer Vielzahl von Möglichkeiten, kategoriale Variablen vorzuverarbeiten.)
Es tut mir leid, dass ich Ihnen keine genaue und vollständige Antwort gegeben habe.
Mathematische Unterschiede zwischen GBM, XGBoost
Ich schlage vor, Sie lesen einen Artikel von Friedman über Gradient Boosting Machine, der insbesondere auf lineare Regressormodelle, Klassifikatoren und Entscheidungsbäume angewendet wird. https://statweb.stanford.edu/~jhf/ftp/trebst.pdf
Ich würde hier nicht ins Detail gehen. Es ist nur eine gute Lektüre, die verschiedene Arten von Verlusten (L) und außerdem ein Konzept mit variabler Wichtigkeit abdeckt. Dies ist natürlich ein Meilenstein für die Implementierung der Methode des Abstiegs in den Funktionsraum (Low-Level-Modelle) anstelle von Parametern für das Streben nach Verlustminimierung.
Wenn Sie hier suchen: https://arxiv.org/pdf/1603.02754.pdf
Sie finden eine mathematische Vignette für das XGBoost-Modell von Tianqi Chen et al. Jetzt wird es interessant. Einige mathematische Abweichungen dieses Modells vom klassischen Friedman-GBM sind:
- Regularisierte (bestrafte) Parameter (und wir erinnern uns, dass Parameter im Boosting die Funktion, Bäume oder lineare Modelle sind): L1 und L2 sind verfügbar.
- Verwenden Sie zweite Ableitungen, um den Prozess zu beschleunigen (wenn es zuvor verwendet wurde, korrigieren Sie mich bitte).
Zu diesem Punkt: Hier finden Sie eine praktische Implementierung des Quantilverlusts in CATBoost, die sowohl die erste als auch die zweite Ableitung bereitstellt: 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;
} };
Während Sie diese nützliche L1-Verlustfunktion in XGBoost nicht finden können, können Sie versuchen, die Implementierung von Yandex mit einigen der benutzerdefinierten Verlustfunktionen zu vergleichen, die für XGB geschrieben wurden.
- Außerdem funktioniert CATBoost hervorragend mit kategorialen Funktionen, während XGBoost nur numerische Eingaben akzeptiert.
Betrachten Sie diesen Link: https://tech.yandex.com/catboost/doc/dg/concepts/algorithm-main-stages_cat-to-numberic-docpage/#algorithm-main-stages_cat-to-numberic
Sie bieten eine Vielzahl von Möglichkeiten, um das Modelltraining zusätzlich zu dem alten und bekannten One-Hot-Ansatz mit kategorialen Funktionen zu versorgen. Das Verringern der Abmessungen eines Eingaberaums, ohne viele Informationen zu verlieren, ist einer der möglichen Gründe dafür, dass das angepasste Modell weniger überladen ist.
Ich bin fertig. Ich benutze kein LightGBM, kann also kein Licht darauf werfen.