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 source
Réponses:
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 ):
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 source
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 sont0 a +d< 0 1 a +d≥ 0
a
etd
, et nous utilisons un arbre de décision pour prédire un résultat binaire qui se trouve être si et si .É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:
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+d
tant que fonctionnalité, le problème devient trivial pour un arbre de décision. Il peut ignorer l'individua
et lesd
fonctionnalités et résoudre le problème avec une seulea+d<0
souche de décision.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.
la source
a
etd
suffirait et l'ajout ena+d
tant que fonctionnalité ne ferait aucune différence.total
total
attack
defense
attack
defense
total
attack
total
defense
Si vous souhaitez standardiser vos prédicteurs, vous devez le faire après qu'ils ont tous été construits.
la source
[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 siattack
etdefense
ne sont pas fortement corrélés avectotal
(ce qui arrive quandattack
etdefense
sont fortement corrélés négativement), pourquoitotal
peut être utile?total
n'a pas besoin d'être fortement corrélée avecattack
oudefense
, 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.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 «[email protected]». 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?
la source
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.
la source