Existe-t-il des outils pour l'ingénierie des fonctionnalités?

29

Plus précisément, ce que je recherche, ce sont des outils avec des fonctionnalités spécifiques à l'ingénierie des fonctionnalités. Je voudrais pouvoir facilement lisser, visualiser, combler les lacunes, etc. Quelque chose de similaire à MS Excel, mais qui a R comme langue sous-jacente au lieu de VB.

John
la source

Réponses:

21

Question très intéressante (+1). Bien que je ne connaisse aucun outil logiciel qui offre actuellement des fonctionnalités complètes pour l' ingénierie des fonctionnalités , il existe certainement un large éventail d'options à cet égard. Actuellement, pour autant que je sache, l'ingénierie des fonctionnalités est encore en grande partie un processus laborieux et manuel (c.-à-d., Voir cet article de blog ). Parlant du domaine de l'ingénierie des fonctionnalités, cet excellent article de Jason Brownlee fournit un aperçu assez complet du sujet.

Ben Lorica, chef scientifique des données et directeur de la stratégie de contenu pour les données chez O'Reilly Media Inc., a écrit un très bel article , décrivant l'état de l'art (en juin 2014) les approches, méthodes, outils et startups dans le domaine de l' automatisation (ou, comme il le dit, la rationalisation ) de l'ingénierie des fonctionnalités.

J'ai jeté un bref coup d'œil à certaines startups auxquelles Ben a fait référence et un produit de Skytree semble en effet assez impressionnant, en particulier en ce qui concerne le sujet de cette question. Cela dit, certaines de leurs affirmations me semblent vraiment suspectes (c.-à-d. «Skytree accélère les méthodes d'apprentissage automatique jusqu'à 150 fois par rapport aux options open source» ). En continuant à parler des offres commerciales de science des données et d'apprentissage automatique, je dois mentionner les solutions de Microsoft, en particulier leur Azure Machine Learning Studio . Ce produit basé sur le Web est assez puissant et élégant et offre des fonctionnalités d'ingénierie des fonctionnalités (FEF). Pour un exemple de FEF simple, voir cette belle vidéo .

Pour revenir à la question, je pense que l'approche la plus simple que l'on puisse appliquer pour automatiser l'ingénierie des fonctionnalités consiste à utiliser les IDE correspondants . Puisque vous (moi aussi) êtes intéressé par le langage R en tant que backend de science des données, je suggère de vérifier, en plus de RStudio, un autre IDE open source similaire, appelé RKWard . L'un des avantages de RKWard vs RStudio est qu'il prend en charge l' écriture de plugins pour l'IDE, permettant ainsi aux scientifiques des données d'automatiser l'ingénierie des fonctionnalités et de rationaliser leur analyse des données basée sur R.

Enfin, de l'autre côté du spectre des solutions d'ingénierie des fonctionnalités, nous pouvons trouver des projets de recherche . Les deux plus notables semblent être le projet Columbus de l'Université de Stanford , décrit en détail dans le document de recherche correspondant , et Brainwash , décrit dans ce document .

Aleksandr Blekh
la source
5

Featuretools est une bibliothèque python récemment publiée pour l'ingénierie automatisée des fonctionnalités. Il est basé sur un algorithme appelé Deep Feature Synthesis développé à l'origine en 2015 MIT et testé sur des concours publics de science des données sur Kaggle.

Voici comment il s'intègre dans le processus commun de science des données.

entrez la description de l'image ici

L'objectif de la bibliothèque est non seulement d'aider les experts à construire de meilleurs modèles d'apprentissage automatique plus rapidement, mais aussi de rendre le processus de science des données moins intimidant pour les personnes qui essaient d'apprendre. Si vous possédez des données événementielles ou relationnelles, je vous recommande fortement de les vérifier!

Avertissement: je suis l'un des développeurs du projet.

Max Kanter
la source
2

L'ingénierie des fonctionnalités est au cœur de l'apprentissage automatique et est plutôt laborieuse et prend du temps. Il y a eu diverses tentatives d'automatisation de l'ingénierie des fonctionnalités dans l'espoir de sortir l'humain de la boucle. Une implémentation spécifique qui le fait pour les problèmes de classification est l' auto-apprentissage . Il utilise une procédure d'optimisation appelée SMAC sous le capot pour choisir l'ensemble approprié de transformations et d'algorithme (et de paramètres d'algorithme).

Notez que Trifacta offre un outil vraiment facile à utiliser pour la transformation des données. Il possède une interface graphique hautement intuitive qui permet de configurer des cartes d'ingénierie de transformation / fonctionnalité. Il existe également une version d'essai gratuite qui peut être utilisée pour des problèmes de taille raisonnable.

Nitesh
la source
2

Scikit-learn a récemment publié de nouveaux transformateurs qui abordent de nombreux aspects de l'ingénierie des fonctionnalités. Par exemple:

  1. Vous pouvez effectuer plusieurs techniques d'imputation de données manquantes avec SimpleImputer( http://scikit-learn.org/stable/modules/generated/sklearn.impute.SimpleImputer.html ), y compris l'imputation de la valeur moyenne, médiane et arbitraire dans les variables numériques et catégorielles .

  2. Vous pouvez effectuer une imputation multivariée à l'aide de plusieurs estimateurs, comme Bayes, la forêt aléatoire et d'autres (équivalents à MICE de R, Amelia et MissForest) avec le IterativeImputer( https://scikit-learn.org/stable/modules/generated/sklearn.impute.IterativeImputer .html # sklearn.impute.IterativeImputer )

  3. Vous pouvez faire un encodage à chaud catégorique avec OneHotEncoder()Scikit-learn

  4. Vous pouvez encoder des variables catégorielles par des nombres avec le LabelEncoder.

  5. Vous pouvez effectuer la transformation de variable Yeo-Johnson avec le PowerTransformer( http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.PowerTransformer.html )

  6. Vous pouvez faire de la discrétisation avec le KBinsDiscretiser( https://scikit-learn.org/stable/auto_examples/preprocessing/plot_discretization.html )

Il existe potentiellement d'autres transformateurs d'ingénierie des fonctionnalités dans Scikit-learn et les développeurs mettent à jour la bibliothèque assez régulièrement.

Comme alternative à la bibliothèque Scikit-learn bien connue, il existe une nouvelle bibliothèque open source récemment nommée Feature-Engine . Avec le moteur de fonctionnalités, vous pouvez:

  1. Ne signifie, médiane, arbitraire, fin de queue et imputation aléatoire dans les variables numériques et catégorielles
  2. Effectuez différents types de codage catégoriel, y compris un codage à chaud, entier, ordinal, moyen et le poids de la preuve.
  3. Faire diverses transformations variables, y compris log, réciproque, exp et box cox
  4. Différents types de discrétisation, y compris à fréquence égale, à distance égale et à base d'arbre
  5. Manipulation aberrante.

Plus de détails dans le référentiel github et les documents ( https://feature-engine.readthedocs.io/en/latest/ )

Avertissement: j'ai créé le moteur de fonctionnalités et l'ai rendu open source.

Un autre package python open source permet différents types d'encodage de variables catégorielles: https://contrib.scikit-learn.org/categorical-encoding/

Enfin, les outils de fonctionnalité sont une bonne bibliothèque open source pour les données transactionnelles.

Sole G
la source
1

Vous devriez envisager de vérifier la plateforme Azure Machine Learning . Il est en ligne et vous pouvez l'utiliser avec un compte gratuit.

Azure ML vous fournit un flux de travail en utilisant des modules dans une interface utilisateur graphique. Beaucoup d'entre eux sont liés à Data Munging et vous pouvez facilement nettoyer vos données. S'il y a quelque chose que vous ne pouvez pas faire dans l'interface graphique, vous pouvez simplement ajouter un module qui vous permet d'exécuter un script R ou Python personnalisé pour manipuler vos données.

La bonne partie de cela, c'est que vous pouvez facilement visualiser vos données à tout moment et vérifier des statistiques simples comme celles dataframe.describe()du R.

Tasos
la source
1

Amazon Machine Learning est un outil que j'utilise parfois pour l'ingénierie des fonctionnalités.

Comme les services Amazon AWS ont montré beaucoup de promesses et de normes, je compterais certainement sur Amazon ML, avec ses perspectives et ses promesses pour simplifier le flux de travail des scientifiques des données. Mais pour l'instant, c'est encore petit.

Mais, comme vous avez demandé un outil pour l'ingénierie des fonctionnalités, c'est l'un d'eux.

Quelques FAQ sur / pour l'utilisation d'Amazon ML.

Dawny33
la source