[PYTHON] Automatisez les tâches de routine dans l'apprentissage automatique

Lors de l'utilisation de l'apprentissage automatique, il y a beaucoup de travail à faire, à commencer par le prétraitement des données, la sélection du modèle approprié, l'optimisation des paramètres, etc. Cependant, quelques parties de ce travail sont routinières. En parlant de prétraitement, un traitement tel que la normalisation des données numériques et la conversion de variables catégorielles en quantités de caractéristiques 0/1 (conversion de variable factice) est le traitement à exécuter pour le moment. Bien sûr, l'ingénierie avancée de la quantité d'entités est une autre histoire, mais il y a souvent des scènes dans lesquelles vous souhaitez effectuer rapidement un travail de routine lorsque vous avez des données et voyez à quel point le modèle de base est précis pour le moment. Il existe une.

Par conséquent, nous avons développé un mécanisme pour automatiser ce travail. Le nom est karura.

chakki-works/karura

karura_concept.png

Comme le montre cette figure, le concept consiste à automatiser une série de tâches de routine lors de la création d'un modèle. Comme le montre la figure, il est créé en utilisant pleinement les fonctions de scicit-learn. Je voudrais également présenter ce point dans cet article.

architecture karura

karura est un mécanisme permettant de créer un processus en empilant des processus appelés insight. Insight est un ensemble de deux processus, «quand» et «ce qu'il faut faire».

insight.png

Par exemple, dans NAFrequencyCheckInsight, "si NA est xx% ou plus" dans une colonne. Un processus tel que "supprimer une colonne" est mis en œuvre. Bien entendu, il est possible d'insérer ici de manière interactive le processus car c'est au cas par cas de laisser tomber la ligne ou non.

Insight est divisé en types tels que le prétraitement, la sélection des fonctionnalités et la construction du modèle, et l'ordre dans lequel ils sont appliqués change en fonction du type (dans le cas du même type de traitement, ils sont appliqués dans l'ordre dans lequel ils ont été ajoutés). Cet ordre est défini dans l'Insight Index (https://github.com/chakki-works/karura/blob/master/karura/core/insight.py#L61).

L'implémentation finale ressemblera à ceci.

stack_insights.png

Bien sûr, vous pouvez utiliser n'importe quel aperçu, et vous pouvez créer votre propre aperçu (Insight. Peut être créé par héritage).

Une fois qu'un processus est créé de cette manière, il peut être réutilisé pour diverses données. Comme le modèle créé peut être converti en modèle de prédiction, il peut être immédiatement converti en API.

Nous avons préparé un simple cahier Jupyter, donc si vous voulez savoir comment l'utiliser, veuillez vous y référer.

karura_notebook_demo

Incorporation dans les outils

karura est destiné à être intégré dans des applications métier et peut être lié aux plates-formes suivantes.

Coopération avec Slack

Vous pouvez utiliser karura comme bot Slack.

karura_as_slackbot.PNG (À propos, il prend en charge plusieurs langues, et il est actuellement possible de définir japonais / anglais)

Lorsqu'il est utilisé comme bot Slack, télécharger un fichier de données tel que csv et karura lancera l'analyse (le processus d'analyse est prédéfini comme décrit ci-dessus). Lorsque la confirmation est requise pour l'analyse, la confirmation est effectuée de manière interactive ([lors de la définition de ʻInsight, définissez ʻautomatic sur False pour attendre la confirmation](https :: //github.com/chakki-works/karura/blob/master/karura/core/insight.py#L13)).

De plus, Karura le positionne comme une fonction importante pour enseigner aux utilisateurs les points qui doivent être confirmés lors de l'analyse de ces données. En effet, la connaissance des données est indispensable pour interpréter les résultats de prédiction du modèle construit.

Par conséquent, en karura, nous utilisons un modèle qui garantit un pouvoir explicatif. Nous utilisons également un modèle légèrement formé pour assurer le cycle d'amélioration le plus rapide possible. Pour faire simple, je n'utilise pas de modèle profond. Puisque le but de karura est "d'automatiser le travail de routine et de le vérifier rapidement", le point de prendre le temps de créer un modèle de haute précision est abandonné en tant que fonction en premier lieu. En créant un modèle «facile et rapide», je l'utilise comme un outil pour me rendre compte que la précision ne sera pas atteinte telle qu'elle est, et que je dois ajouter des éléments de données et saisir correctement des données vierges.

Pour en savoir plus sur ces fonctions, veuillez vous reporter aux documents suivants si vous êtes intéressé.

Trois piliers pour utiliser l'apprentissage automatique ~ Nécessité d'outils pédagogiques d'apprentissage automatique ~

Coopération avec kintone

Il peut également être intégré dans kintone, qui est une plate-forme qui facilite la création d'applications métier. Vous pouvez facilement essayer de créer un modèle à l'aide des données de l'application créée avec kintone.

karura_on_kintone.PNG

Ceci termine l'analyse. Si vous installez le plug-in sur l'application analysée, vous pouvez également saisir la valeur prévue pour karura. J'ai déjà fait des travaux pratiques sur ce point auparavant, donc si vous êtes intéressé, essayez-le.

De plus, il est rare que les données de l'application métier puissent être analysées telles quelles et cela ne fonctionnera pas. En fait, la précision n'est pas si élevée, et nous procéderons à un examen afin de déterminer quels types d'articles sont mauvais et quels types d'articles devraient être ajoutés.

Comme il est difficile d'effectuer un tel travail sur l'application kintone, elle est équipée d'une fonction de téléchargement par lots pour les valeurs réelles et les résultats de prédiction, et d'une fonction de réapprentissage en téléchargeant des fichiers.

image_720.png

Cela vous permet de tester diverses hypothèses sur vos données.

mise en œuvre de karura

Le contenu de karura est créé en utilisant pleinement scikit-learn.

Et tout le traitement est résumé dans Pipeline pour en faire une API prédictive.

L'apprentissage automatique ne s'arrête pas à un modèle avec une bonne précision, et il n'a aucun sens sans l'utiliser. Et, bien sûr, il est nécessaire d'entrer des données prétraitées dans le modèle créé, et comme les valeurs prédites sont normalisées et indexées, il est nécessaire d'effectuer une conversion inverse.

En d'autres termes, il devient une API qui ne peut être utilisée qu'en prenant en sandwich le modèle avec "tout le prétraitement" et "conversion inverse d'étiquette". Le modèle est précis! Même si j'y pense, il est souvent intimidant de voir le prétraitement accumulé jusqu'à ce point et de se demander: "Est-il possible de mettre en œuvre tout cela et de le transmettre au modèle?"

Dans Karura, en implémentant le processus de conversion de l'insight utilisé au moment de l'analyse en un Transformer pour la prédiction, si le processus de construction du modèle (application séquentielle de l'insight) est décidé, le processus de prédiction (Transformer) Est appliqué séquentiellement).

Dans Numerical Scaling Insight, qui est un aperçu qui normalise les nombres, [get_transformer](https: // github.com/chakki-works/karura/blob/master/karura/core/insights/numerical_scaling_insight.py#L48) est implémenté, et les paramètres tels que la moyenne et la variance pour la normalisation trouvés pendant l'analyse sont pour la prédiction. Il est maintenant repris par Transformer (bien qu'il soit en fait géré par StandardScaler / MinMaxScaler).

Sklearn.feature_extraction n'est pas encore utilisé car il ne prend actuellement pas en charge les éléments en langage naturel / image. Cependant, cela peut être utilisé à l'avenir.

karura est en cours de développement sur GitHub, donc j'espère que vous en profiterez!

chakki-works/karura (Ce sera encourageant si vous me donnez une étoile m (_ _) m)

Recommended Posts

Automatisez les tâches de routine dans l'apprentissage automatique
Apprentissage automatique dans Delemas (s'entraîner)
Utilisé en EDA pour l'apprentissage automatique
Classification et régression dans l'apprentissage automatique
Apprentissage automatique
Apprentissage automatique dans Delemas (acquisition de données)
Python: prétraitement dans l'apprentissage automatique: présentation
Prétraitement dans l'apprentissage automatique 2 Acquisition de données
Recherche de semences aléatoires dans l'apprentissage automatique
Prétraitement dans l'apprentissage automatique 4 Conversion de données
[python] Techniques souvent utilisées dans l'apprentissage automatique
Python: prétraitement en machine learning: acquisition de données
[Python] Enregistrement des résultats d'apprentissage (modèles) dans l'apprentissage automatique
Python: prétraitement dans l'apprentissage automatique: conversion de données
Prétraitement dans l'apprentissage automatique 1 Processus d'analyse des données
[Memo] Apprentissage automatique
Classification de l'apprentissage automatique
Exemple d'apprentissage automatique
Astuces de fourniture de données utilisant deque dans l'apprentissage automatique
Divulgation complète des méthodes utilisées dans l'apprentissage automatique
Résumé des fonctions d'évaluation utilisées dans l'apprentissage automatique
Touchons une partie de l'apprentissage automatique avec Python
[Pour les débutants] Introduction à la vectorisation dans l'apprentissage automatique
Résumé du didacticiel d'apprentissage automatique
Apprentissage automatique sur le surapprentissage
Créez un environnement interactif pour l'apprentissage automatique avec Python
Apprentissage automatique ⑤ Résumé AdaBoost
Apprentissage automatique: supervisé - AdaBoost
Outil MALSS (application) qui prend en charge l'apprentissage automatique en Python
Régression logistique d'apprentissage automatique
Défis d'apprentissage automatique de Coursera en Python: ex2 (retour logistique)
Outil MALSS (basique) qui prend en charge l'apprentissage automatique en Python
Machine de vecteur de support d'apprentissage automatique
À propos des tests dans la mise en œuvre de modèles d'apprentissage automatique
Étudier l'apprentissage automatique ~ matplotlib ~
Régression linéaire d'apprentissage automatique
Mémo du cours d'apprentissage automatique
Bibliothèque d'apprentissage automatique dlib
Apprentissage automatique (TensorFlow) + Lotto 6
Coursera Machine Learning Challenge en Python: ex1 (régression linéaire)
Apprenez en quelque sorte le machine learning
Tentative d'inclusion du modèle d'apprentissage automatique dans le package python
Entropie croisée à revoir dans les devoirs de la semaine 2 de Coursera Machine Learning
Bibliothèque d'apprentissage automatique Shogun
Défi de lapin d'apprentissage automatique
Introduction à l'apprentissage automatique
Apprentissage automatique: k-voisins les plus proches
MALSS (introduction), un outil qui prend en charge l'apprentissage automatique en Python
Qu'est-ce que l'apprentissage automatique?
[Apprentissage automatique] Résumons la forêt aléatoire de manière simple à comprendre
Comment adapter plusieurs bibliothèques d'apprentissage automatique en une seule fois
Le résultat de l'apprentissage automatique des ingénieurs Java avec Python www
Enquête sur l'utilisation du machine learning dans les services réels
Prétraitement dans l'apprentissage automatique 3 Données de valeur manquante / aberrante / de déséquilibre
Défis d'apprentissage automatique de Coursera en Python: ex7-2 (analyse principale)
Modèle d'apprentissage automatique prenant en compte la maintenabilité
L'apprentissage automatique appris avec Pokemon
Ensemble de données pour l'apprentissage automatique
Prétraitement japonais pour l'apprentissage automatique
Une introduction à l'apprentissage automatique
Techniques liées à l'apprentissage automatique / à la classification