L'ingénierie des fonctionnalités est-elle toujours utile lors de l'utilisation de XGBoost?

9

Je lisais le matériel lié à XGBoost. Il semble que cette méthode ne nécessite aucune mise à l'échelle variable car elle est basée sur des arbres et celle-ci peut capturer des interactions complexes de modèle de non-linéarité. Et il peut gérer à la fois des variables numériques et catégorielles et il semble également que les variables redondantes n'affectent pas trop cette méthode.

Habituellement, dans la modélisation prédictive, vous pouvez effectuer une sélection parmi toutes les fonctionnalités dont vous disposez et vous pouvez également créer de nouvelles fonctionnalités à partir de l'ensemble des fonctionnalités dont vous disposez. Donc, sélectionner un sous-ensemble de fonctionnalités signifie que vous pensez qu'il y a une redondance dans votre ensemble de fonctionnalités; créer de nouvelles fonctionnalités à partir du jeu de fonctionnalités actuel signifie que vous effectuez des transformations fonctionnelles sur vos fonctionnalités actuelles. Ensuite, ces deux points devraient être couverts dans XGBoost. Ensuite, cela signifie-t-il que pour utiliser XGBoost, il vous suffit de choisir judicieusement ces paramètres de réglage? Quelle est la valeur de l'ingénierie des fonctionnalités à l'aide de XGBoost?

KevinKim
la source
Si vous recherchez une petite amélioration des performances, il est préférable de modéliser les interactions entre les fonctionnalités de manière explicite car les arbres ne sont pas bons: stats.stackexchange.com/questions/147594/…
Anton Tarasenko

Réponses:

12

Définissons d'abord l'ingénierie des fonctionnalités:

  1. Sélection de fonctionnalité
  2. Extraction de caractéristiques
  3. Ajout de fonctionnalités grâce à l'expertise du domaine

XGBoost fait (1) pour vous. XGBoost ne fait pas (2) / (3) pour vous.

Il vous reste donc à faire vous-même l'ingénierie des fonctionnalités. Seul un modèle d'apprentissage en profondeur pourrait remplacer l'extraction de fonctionnalités pour vous.

FrancoSwiss
la source
7
  1. Sélection des fonctionnalités: XGBoost effectue la sélection des fonctionnalités jusqu'à un niveau. D'après mon expérience, je fais toujours la sélection des fonctionnalités par un tour de xgboost avec des paramètres différents de ce que j'utilise pour le modèle final. J'utilise généralement des nombres faibles pour l'échantillonnage de lignes et d'entités, et des arbres qui ne sont pas profonds et ne conservent que les entités qui entrent dans le modèle. Puis affinez avec un autre modèle. Cela a empêché le sur-ajustement pour moi lorsque le nombre de fonctionnalités était très élevé.
  2. Génération de fonctionnalités: XGBoost (classification, booster = gbtree) utilise des méthodes basées sur des arbres. Cela signifie que le modèle aurait du mal à choisir des relations telles que ab , a / b et a + b pour les entités a et b . J'ajoute généralement l'interaction entre les fonctionnalités à la main ou sélectionne les bonnes avec quelques heuristiques. Selon l'application, cela peut vraiment améliorer les performances.
Mortezaaa
la source
2

Quelle est la valeur de l'ingénierie des fonctionnalités à l'aide de XGBoost?

La performance peut-être?

(Notez que nous n'utilisons pas XGBoost, mais une autre bibliothèque de renforcement de gradient - bien que les performances de XGBoost dépendent probablement aussi de la dimensionnalité des données d'une certaine manière.)

Nous avons un ensemble de données où chaque élément se compose de 3 signaux, chacun de 6000 échantillons de long - c'est 18k fonctionnalités. L'utilisation directe de ces fonctionnalités prend du temps (jours), nous avons donc procédé à une ingénierie manuelle des fonctionnalités pour réduire le nombre de fonctionnalités à environ 200. Maintenant, la formation (y compris le réglage des paramètres) est une question de quelques heures.

À titre de comparaison: il y a peu de temps, nous avons également commencé à former des ConvNets avec les mêmes données et l'ensemble des fonctionnalités 18k (pas d'ingénierie des fonctionnalités). Ils atteignent la même précision que les modèles d'amplification de gradient après seulement environ 2 heures d'entraînement.

stmax
la source