Vous n'avez pas besoin de connaissances de domaine (la connaissance de ce que signifient vos données ) pour faire de l'ingénierie des fonctionnalités (trouver des moyens plus expressifs d' encadrer vos données).
Comme l'a expliqué Tu N. , vous pouvez trouver des combinaisons de fonctionnalités «rapides et sales» qui pourraient être utiles assez facilement. Étant donné une sortie et une caractéristique individuelle , vous pouvez effectuer les transformations suivantes, . Une vérification rapide de l'utilité de la transformation consiste à déterminer si la corrélation entre est supérieure à la corrélation entre .yXX′∈ { eX, connectez-vous( x ) , x2, x3, tanh( x ) }{ y,x′}{y, x }
Avertissement sur la corrélation: la corrélation ne montre pas tout et selon le modèle que vous utilisez (hautement non linéaire comme NN ou RF) et l'interaction avec d'autres variables, un changement de corrélation pourrait ne rien signifier.
Cependant, si vous utilisez un modèle linéaire simple comme la régression logistique, c'est un indicateur OK de performance. La meilleure façon d'évaluer une telle transformation, cependant, comme l'a noté Fokhruz Zaman , serait de construire un modèle avec et sans votre fonctionnalité transformée, et de voir comment l'erreur de validation (sur vos plis de validation croisée) évolue.
Il est assez facile de repérer les transformations à fonction unique de cette façon. Celles-ci s'appliquent à de nombreuses données, où une relation plus expressive entre votre entrée et votre sortie pourrait être à une échelle différente. Par exemple, la relation entre le revenu et le «bonheur» semble être logarithmique, mais vous n'enregistreriez jamais directement le journal du revenu d'un participant.
Il est plus difficile de trouver des combinaisons de fonctionnalités. Pour commencer, si vous voulez tester chaque ajout de 2 fonctionnalités et que vous avez des fonctionnalités , vous devez tester un ordre de transformations . Afin de trouver de telles transformations, vous pouvez appliquer un modèle non linéaire (tel que NN ou RF) au problème et essayer de voir ce qu'il apprend. Si vous pouvez identifier ce que fait une couche intermédiaire dans un NN, vous pouvez pré-calculer son résultat et l'ajouter en tant que nouvelle fonctionnalité. Il n'aura pas besoin de le recalculer et il essaiera probablement d'apprendre quelque chose de nouveau.réré2
Il peut être difficile d'interpréter la représentation interne d'un NN, ou même d'interpréter l'importance d'une caractéristique dans une forêt aléatoire. Une méthode plus simple, et probablement plus adaptée à cette fin, serait de stimuler les arbres de décision. Il y a beaucoup de bibliothèques implémentant Boosting, et si vous êtes dans la compétition Kaggle comme votre post semble l'impliquer, XGBoost semble utilisé par beaucoup de participants, donc vous pourriez trouver de l'aide / tutoriels sur ce que je vais décrire.
Tout d'abord, exécutez votre algorithme de boosting en utilisant uniquement des souches , des arbres de décision à 1 niveau. Les souches sont très faibles, mais Boosting en fait un modèle raisonnable. Cela servira de référence. Selon la bibliothèque que vous utilisez, vous devriez pouvoir afficher assez facilement les fonctionnalités les plus utilisées et les tracer par rapport à la réponse (ou faire un histogramme si la réponse est catégorique) pour identifier un modèle. Cela pourrait vous donner une intuition sur ce qui serait une bonne transformation de fonctionnalité unique.
Ensuite, exécutez l'algorithme Boosting avec des arbres de décision à 2 niveaux. Ce modèle est beaucoup plus complexe que le précédent; si deux variables prises ensemble ont plus de puissance que prises individuellement, ce modèle devrait surpasser le précédent (encore une fois, pas en termes d'erreur d'apprentissage, mais en cas d'erreur de validation!). Sur cette base, vous devriez pouvoir extraire les variables qui sont souvent utilisées ensemble, ce qui devrait vous conduire à des transformations multifonctionnelles potentielles.
Sur le matériel connexe, je conseillerais les vidéos suivantes car elles sont faciles à suivre
Pourriez-vous s'il vous plaît expliquer plus avec des exemples spécifiques sur votre déclaration suivante?
Je ne sais pas comment faire de l'ingénierie des fonctionnalités sans une bonne compréhension de votre ensemble de données et des attributs donnés !!
Les données tabulaires sont décrites en termes d'observations ou d'instances (lignes) constituées de variables ou d'attributs (colonnes). Un attribut peut être une fonctionnalité.
"L'idée d'une caractéristique, distincte d'un attribut, a plus de sens dans le contexte d'un problème. Une caractéristique est un attribut utile ou significatif à votre problème. C'est une partie importante d'une observation pour en savoir plus sur la structure de le problème qui est modélisé. ... ... ...
En vision par ordinateur, une image est une observation, mais une caractéristique pourrait être une ligne dans l'image.
Dans le traitement du langage naturel, un document ou un tweet peut être une observation, et une phrase ou un décompte de mots peut être une caractéristique.
Dans la reconnaissance vocale, un énoncé peut être une observation, mais une caractéristique peut être un seul mot ou phonème. "
Veuillez visiter l'URL suivante pour en savoir plus:
Découvrez l'ingénierie des fonctionnalités, comment concevoir des fonctionnalités et comment vous perfectionner
la source