2017-06-21 2 views
1

J'ai un jeu de données ayant de grandes valeurs manquantes (plus de 40% manquant). Généré un modèle en boost de gradient xgboost et H2o - obtenu un modèle décent dans les deux cas. Cependant, le xgboost montre cette variable comme l'un des principaux contributeurs au modèle, mais selon H2o Gradient Boosting la variable n'est pas important. Est-ce que xgboost gère les variables avec des valeurs manquantes différemment. Toute la configuration des deux modèles est exactement la même.xgboost vs H2o Gradient Boosting

Répondre

4

La gestion des valeurs manquantes et les importances variables sont légèrement différentes entre les deux méthodes. Les deux traitent les valeurs manquantes comme des informations (c'est-à-dire qu'elles apprennent d'elles et ne se contentent pas d'imputer une constante simple). Les importances variables sont calculées à partir des gains de leurs fonctions de perte respectives pendant la construction de l'arbre. H2O utilise une erreur au carré, et XGBoost en utilise une plus compliquée basée sur le dégradé et le hessian. Une chose que vous pouvez vérifier est la variance des importances variables entre différentes séries avec des graines différentes, pour voir à quel point chaque méthode est stable en termes d'importances variables.

PS. Si vous avez des catégories, alors il vaut mieux laisser la colonne comme facteur pour H2O, pas besoin de faire votre propre encodage. Cela peut conduire à un nombre effectif différent de colonnes par rapport à l'ensemble de données de XGBoost, donc pour l'échantillonnage de colonnes, les choses seront différentes.