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
Vous souhaitez consulter ce document en anglais de l'équipe Yandex sur l'unicité mathématique de CATBoost.
Je l'ai lu brièvement, et parmi les quelques choses que j'ai pu comprendre rapidement, il y a le fait qu'ils n'utilisent pas les résidus obtenus sur TRAIN pour faire TRAIN , car ces résidus créent un biais optimiste quant à la qualité de l'apprentissage. ( Mise à jour: cette nouveauté offre un moyen de lutter contre le surajustement, raison pour laquelle l’algorithme a mieux fonctionné par rapport à ses analogues, à l’exception de diverses façons de prétraiter les variables catégorielles).
Je suis désolé de ne pas vous donner une réponse précise et complète.
Différences mathématiques entre GBM et XGBoost
Tout d’abord, je vous suggère de lire un article de Friedman sur la machine de renforcement de gradient appliquée aux modèles de régresseurs linéaires, aux classificateurs et aux arbres de décision en particulier. https://statweb.stanford.edu/~jhf/ftp/trebst.pdf
Je ne voudrais pas entrer dans les détails ici. C'est juste une bonne lecture couvrant divers types de pertes (L) et en plus du concept d'importance variable. Bien entendu, il s’agit d’un document déterminant de la mise en œuvre de la méthode de descente dans l’espace des fonctions (modèles de bas niveau) plutôt que des paramètres visant à minimiser les pertes.
Si vous regardez ici: https://arxiv.org/pdf/1603.02754.pdf
Vous trouvez une vignette mathématique pour le modèle XGBoost de Tianqi Chen et al. Maintenant cela devient intéressant. Quelques écarts mathématiques de ce modèle forment le GBM classique de Friedman:
- Paramètres régularisés (pénalisés) (et nous nous rappelons que les paramètres du boossting sont la fonction, les arbres ou les modèles linéaires): L1 et L2 sont disponibles.
- Utiliser des dérivées secondes pour accélérer le processus (s'il a été utilisé auparavant, corrigez-moi).
À ce stade: regardez ici pour trouver une implémentation de la perte quantile dans CATBoost, ce qui est très pratique et fournit à la fois des dérivées première et seconde: 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;
} };
Bien que vous ne puissiez pas trouver cette fonction de perte L1 utile dans XGBoost, vous pouvez essayer de comparer la mise en œuvre de Yandex à certaines des fonctions de perte personnalisées écrites pour XGB.
- En outre, CATBoost fonctionne parfaitement avec des fonctionnalités catégoriques, tandis que XGBoost accepte uniquement les entrées numériques.
Considérez ce lien: https://tech.yandex.com/catboost/doc/dg/concepts/algorithm-main-stages_cat-to-numberic-docpage/#algorithm-main-stages_cat-to-numberic
Ils offrent une variété de façons d’intégrer des caractéristiques catégoriques à la formation de modèle en plus de l’utilisation d’une ancienne approche bien connue. La réduction des dimensions d'un espace d'entrée sans perdre beaucoup d'informations est l'une des raisons possibles pour lesquelles le modèle installé est moins suréquipé.
J'ai fini. Je n'utilise pas LightGBM, je ne peux donc pas y jeter de lumière.