Pourquoi l'ingénierie des fonctionnalités fonctionne-t-elle?


20

Récemment, j'ai appris que la création de fonctionnalités est l'un des moyens de trouver de meilleures solutions aux problèmes de ML. On peut le faire en additionnant par exemple deux fonctionnalités.

Par exemple, nous possédons deux fonctionnalités "attaque" et "défense" d'une sorte de héros. Nous créons ensuite une fonctionnalité supplémentaire appelée «total» qui est une somme «d'attaque» et de «défense». Maintenant, ce qui me semble étrange, c'est que même une «attaque» et une «défense» difficiles sont presque parfaitement corrélées avec le «total», nous obtenons toujours des informations utiles.

Quel est le calcul derrière cela? Ou est-ce que je raisonne mal?

De plus, n'est-ce pas un problème, pour des classificateurs tels que kNN, que le "total" sera toujours plus grand que "l'attaque" ou la "défense"? Ainsi, même après la normalisation, nous aurons des fonctionnalités contenant des valeurs de différentes plages?


La pratique consistant à additionner deux fonctionnalités ne représente certainement pas «l'ingénierie des fonctionnalités» en général.
xji

Réponses:


21

Vous remettez en question le titre et le contenu me semble dépareillé. Si vous utilisez un modèle linéaire, ajoutez une fonctionnalité totale en plus de l'attaque et la défense aggravera les choses.

Je répondrais d'abord pourquoi l'ingénierie des fonctionnalités fonctionne en général.

Une image vaut mieux que mille mots. Cette figure peut vous donner quelques informations sur l'ingénierie des fonctionnalités et pourquoi elle fonctionne ( source d' image ):

entrez la description de l'image ici

  • Les données en coordonnées cartésiennes sont plus compliquées, et il est relativement difficile d'écrire une règle / construire un modèle pour classer deux types.

  • Les données en coordonnées polaires sont très simples: on peut écrire une règle simple sur pour classer deux types.r

Cela nous dit que la représentation des données est très importante. Dans certains espaces, il est beaucoup plus facile d'effectuer certaines tâches que dans d'autres espaces.

Ici, je réponds à la question mentionnée dans votre exemple (total en attaque et en défense)

En fait, l'ingénierie des fonctionnalités mentionnée dans cette somme d'exemples d'attaque et de défense ne fonctionnera pas bien pour de nombreux modèles tels que les modèles linéaires et entraînera des problèmes. Voir Multicolinéarité . D'un autre côté, une telle ingénierie des fonctionnalités peut fonctionner sur d'autres modèles, tels que l'arbre de décision / forêt aléatoire. Voir la réponse de @ Imran pour plus de détails.

Ainsi, la réponse est que, selon le modèle que vous utilisez, une certaine ingénierie des fonctionnalités vous aidera sur certains modèles, mais pas pour d'autres modèles.


La somme n'a pas besoin d'être colinéaire avec les addends. Voir par exemple ma réponse.
Kodiologist

15

Le type de modèle que nous utilisons n'est peut-être pas très efficace pour apprendre certaines combinaisons de fonctionnalités existantes.

Par exemple, considérez votre exemple où les fonctionnalités sont aet d, et nous utilisons un arbre de décision pour prédire un résultat binaire qui se trouve être si et si .0une+<01une+0

Étant donné que les arbres de décision ne peuvent être divisés que le long d'axes d'entités individuels, notre modèle finira par essayer de construire un escalier pour s'adapter à une ligne, qui ressemblera à ceci:

entrez la description de l'image ici

Comme vous pouvez le voir, cela ne se généralisera pas parfaitement aux nouvelles données. Nous pouvons avoir des cercles au-dessus de la vraie ligne de décision qui sont sous notre frontière de décision et vice versa pour les croix.

Cependant, si nous ajoutons en a+dtant que fonctionnalité, le problème devient trivial pour un arbre de décision. Il peut ignorer l'individu aet les dfonctionnalités et résoudre le problème avec une seule a+d<0souche de décision.

entrez la description de l'image ici

une+

En résumé, certaines fonctionnalités supplémentaires peuvent aider en fonction du type de modèle que vous utilisez, et vous devez faire attention à prendre en compte les données et le modèle lors de la conception des fonctionnalités.


1
C'est exactement le point. Le choix des fonctionnalités et le choix du modèle doivent être considérés ensemble. C'est un écueil courant d'essayer de raisonner sur la sélection des fonctionnalités sans tenir compte du type de modèle utilisé.
Imran

1
Par exemple, si vous avez essayé la même chose avec une régression linéaire, alors aet dsuffirait et l'ajout en a+dtant que fonctionnalité ne ferait aucune différence.
Imran

J'ai mis à jour ma réponse pour la rendre plus explicite.
Imran

1
En outre, la division sur la ligne diagonale nécessite une division. L'escalier que vous avez dessiné "utilise" sept divisions.
Accumulation

3

totaltotalattackdefenseattackdefensetotalattacktotaldefense1sept

De plus, n'est-ce pas un problème, pour des classificateurs tels que kNN, que le "total" sera toujours plus grand que "l'attaque" ou la "défense"? Ainsi, même après la normalisation, nous aurons des fonctionnalités contenant des valeurs de différentes plages?

Si vous souhaitez standardiser vos prédicteurs, vous devez le faire après qu'ils ont tous été construits.


1
est-ce vraiment vrai? Certes, dans un modèle linéaire simple, ce n'est pas le cas: la matrice [attack, defense, total]est bien sûr de rang 2. Je pourrais imaginer dans quelque chose comme un modèle linéaire pénalisé, cela pourrait faire une différence, mais cela est basé sur l'intuition plutôt que de travailler pleinement à travers. Pouvez-vous expliquer pourquoi si attacket defensene sont pas fortement corrélés avec total(ce qui arrive quand attacket defensesont fortement corrélés négativement), pourquoi totalpeut être utile?
Cliff AB

1
@CliffAB Avec le recul, j'étais un peu glib ici. J'avais raison de dire qu'une caractéristique construite peut être utile lorsqu'elle n'est pas fortement corrélée avec d'autres prédicteurs, et qu'elle totaln'a pas besoin d'être fortement corrélée avec attackou defense, mais vous n'utiliseriez jamais deux prédicteurs et leur somme dans le même modèle, en raison de la linéarité la dépendance, avec implique une forte corrélation entre certains deux des trois.
Kodiologist

1

Pour donner une réponse générale, l'ingénierie des fonctionnalités consiste dans la plupart des cas à extraire des fonctionnalités significatives de vos données, donc si vous donnez plus d'informations à votre modèle, cela devrait évidemment se comporter mieux. Supposons que vos données consistent en des adresses e-mail sous la forme «nom.nom@domaine.country-code». Si vous les utilisiez tels quels dans votre modèle, chaque personne serait caractérisée par un e-mail unique, donc cela ne nous en dirait pas beaucoup. Cela nous dirait seulement qu'un e-mail appartient éventuellement à une personne différente puis à une autre. Grâce à l'ingénierie des fonctionnalités, à partir de ces adresses, vous pouvez extraire des informations sur le sexe (nom), les antécédents familiaux et l'origine ethnique (nom de famille), la nationalité (domaine) et bien d'autres - cela vous donne à peu près des informations, n'est-ce pas?


1

Qu'essayez-vous d'accomplir avec votre total de «fonctionnalités» ? Si vous comparez simplement des héros, l' attaque et la défense pourraient être plus utiles. Si vous trouviez que le type de build (comment orienté offensivement versus comment défensivement) était utile, l' attaque / défense serait peut-être plus utile. Ou peut-être MyAttack - YourDefense est plus utile.

Cela dépend vraiment de votre objectif et cela se résume à vous injecter des connaissances supplémentaires dans le problème afin que vous puissiez obtenir de meilleures réponses. Vous avez peut-être entendu des gens lancer des journaux et des carrés et des ratios et toutes sortes de façons de créer des fonctionnalités, mais l'essentiel est que "utile" dépend de la tâche à accomplir et implique de transformer les données que vous avez en un domaine où les décisions sont plus simple.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.