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.
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.
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».
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.
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 est destiné à être intégré dans des applications métier et peut être lié aux plates-formes suivantes.
Vous pouvez utiliser karura comme bot Slack.
(À 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é.
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.
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.
Cela vous permet de tester diverses hypothèses sur vos données.
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