[PYTHON] Prédiction des données en un clic pour le champ réalisée par apprentissage automatique entièrement automatique

Je pense que l'utilisation des données sur le terrain, y compris l'apprentissage automatique, fonctionne mieux. C'est parce que ce que vous faites de haut en bas est comme suit.

m_dq.gif

Alors ...

Et ...

gd_test.gif

Oui.

Cet article est une idée + une mise en œuvre pour pratiquer l'utilisation sur le terrain de l'apprentissage automatique. Plus précisément, nous insistons sur les trois points suivants.

En d'autres termes, il peut être facilement intégré dans le système d'entreprise que vous utilisez quotidiennement, et il est facile à utiliser, et même si vous faites une erreur, vous pouvez le refaire plusieurs fois. Cette fois, nous avons utilisé kintone comme système d'entreprise et l'avons implémenté en l'incorporant. J'expliquerai le mécanisme et la fonction ci-dessous.

Cet article est basé sur Annonce aux Cybozu Days 2016 kintone hack. Dans cet article, je vais aborder des points techniques que je n'ai pas pu aborder lors de la présentation.

Image d'utilisation: prédiction des données en un clic

Ce qui suit est l'application kintone pour la gestion immobilière. Le nom de la propriété et les différentes caractéristiques (temps de marche depuis la gare, âge, etc.) sont saisis ici. Lorsque vous vous demandez "Quel est le loyer pour une telle propriété?", Appuyez sur le bouton "Prédire". Ensuite, la valeur estimée du loyer sera saisie en fonction du résultat appris.

prediction.PNG

Tout ce que vous avez à faire est d'appuyer sur ce bouton. Nous avons développé un mécanisme pour y parvenir sous le nom de karura. Seules 3 étapes sont nécessaires pour utiliser la fonction de prédiction dans karura. Bien entendu, il n'y a pas de consultants à ce stade.

Utilisation: utilisation des données en 3 étapes

Les trois étapes sont nécessaires pour effectuer la prédiction de données en un clic ci-dessus.

Mettre un plug dans kintone

Insérez le plug-in dans l'application pour laquelle vous souhaitez utiliser la fonction de prédiction.

image

Préparez un champ pour mettre la valeur prévue

Préparez un champ pour saisir la valeur prévue. Ceci est préparé séparément car on suppose que la valeur saisie par une personne peut être comparée à la valeur prévue.

image

Pour que le champ saisisse la valeur prédite, donnez le nom du champ se terminant par "_prediction".

Apprendre

A partir de là, nous travaillerons côté application (karura) pour l'apprentissage. Entrez le numéro de l'application de gestion des propriétés à laquelle vous souhaitez inclure la fonction de prédiction et chargez les informations de l'application. Ensuite, définissez le "champ utilisé pour la prédiction" et le "champ que vous voulez prédire".

image

Après avoir réglé cela, appuyez sur le bouton d'apprentissage.

image

Lorsque la formation est terminée, la précision des prévisions et les conseils pour améliorer le modèle seront affichés comme indiqué ci-dessous.

image

Ceci termine la préparation. La fonction de prédiction peut désormais être utilisée côté application. Cette démonstration est une prédiction de valeur relativement simple, mais elle prend également en charge la classification et la prédiction non linéaire. Et l'utilisateur n'a pas à prendre en charge s'il s'agit d'une prédiction de valeur ou d'une classification. Il détermine et change automatiquement les modèles en interne.

Mécanisme de réalisation: apprentissage automatique entièrement automatique

Ce mécanisme, karura, coupe toutes les parties gênantes de l'apprentissage automatique.

image

Comme le montre la figure ci-dessus, les points suivants sont automatiquement exécutés.

«Automatiquement» semble faire quelque chose de génial, mais ils font tous ce qu'ils peuvent faire normalement. Plus précisément, cela ressemble à ce qui suit.

Un peu d'ingéniosité est la définition du montant de la fonctionnalité. Plus précisément, les opérations suivantes sont effectuées en interne.

Ci-dessous, je voudrais expliquer les points pour l'automatisation, y compris ce qui précède.

Jugement des variables quantitatives / catégorielles

Certaines fonctionnalités, c'est-à-dire les éléments de l'application sur kintone, ont des valeurs numériques, tandis que d'autres ont des catégories telles que les jours. Il n'est pas approprié de simplement convertir les éléments avec des classifications (lundi, mardi, mercredi, etc. le dimanche) en valeurs numériques. Par exemple, si 0 = lundi, 1 = mardi, 2 = mercredi, est-ce mercredi deux fois plus que mardi? Est-ce mardi + mardi = mercredi? Cela n'a pas de sens. Par conséquent, chaque valeur doit être traitée indépendamment. Les variables qui représentent ces catégories sont appelées variables catégorielles, et chaque valeur est considérée comme un élément lorsqu'elle est utilisée comme une quantité de caractéristiques (lundi = Vrai / Faux, Mardi = Vrai / Faux, etc., et chaque valeur est un élément. Faire). Au contraire, celles qui peuvent être traitées comme des valeurs numériques et qui ne posent aucun problème (température, quantité, etc.) sont appelées variables quantitatives.

Comme c'est un fardeau de faire réfléchir l'utilisateur à ce sujet, nous estimons cette fois la variable quantitative / variable catégorielle par le type d'item de champ. Plus précisément, s'il s'agit d'une liste déroulante ou d'un élément de bouton radio, il est considéré comme une variable catégorielle. Il s'agit de l '[API de conception de formulaires] de kintone (https://cybozudev.zendesk.com/hc/ja/articles/201941834-%E3%83%95%E3%82%A9%E3%83%BC% E3% 83% A0% E8% A8% AD% E8% A8% 88% E6% 83% 85% E5% A0% B1% E5% 8F% 96% E5% BE% 97) Ne doit pas être spécifié.

De même, le champ spécifié comme valeur à prédire est une variable catégorielle ou une variable quantitative, et il est identifié s'il s'agit d'un problème de classification ou d'un problème de prédiction de valeur.

Cependant, nous ne sommes actuellement pas en mesure de gérer les champs qui contiennent du langage naturel (en particulier, les champs qui contiennent du texte comme des commentaires et des titres). Je pense que ce serait bien si ces champs pouvaient être automatiquement présentés à l'aide de représentations distribuées.

Normalisation pour chaque fonctionnalité et stockage de ses paramètres

Il est de notoriété publique que les données doivent être normalisées, mais nous sauvegardons les paramètres (moyenne / distribution) pour cette normalisation et cette normalisation. La raison de la sauvegarde des paramètres pour la normalisation est que la normalisation est également nécessaire lors de la réalisation de prévisions.

Sélection de la quantité de fonctionnalités

Sélection des fonctionnalités de scikit-learn est utilisé pour sélectionner le montant des fonctionnalités. L'utilisation est la suivante.

from sklearn.feature_selection import SelectKBest
from sklearn.feature_selection import chi2

X, y = iris.data, iris.target

X_new = SelectKBest(chi2, k=2).fit_transform(X, y)  # choose best 2 feature
print(X_new.shape)

En bref, il s'agit de classer / prédire chaque quantité d'entités indépendamment, de mesurer sa précision, puis d'examiner la contribution de chaque quantité d'entités. Cela supprime les fonctionnalités inutiles et en fait un modèle simple. En même temps, il conserve en interne "quel élément fonctionne et combien" afin qu'il puisse être utilisé pour conseiller les utilisateurs.

Cependant, comme le nombre maximum de fonctionnalités et le seuil des fonctionnalités à couper sont désormais définis de manière appropriée (pour le moment, le nombre d'éléments dans l'application Kintone est à ce sujet), voilà. Cependant, l'ajustement est un problème futur.

Sélection du modèle / réglage des paramètres

[GridSearchCV] de Scikit-learn (http://scikit-learn.org/stable/modules/generated/sklearn.model_selection.GridSearchCV.html) est utilisé pour la sélection du modèle et le réglage des paramètres. L'utilisation est la suivante.

from sklearn.grid_search import GridSearchCV
from sklearn.svm import SVC


candidates = [{'kernel': ['rbf'], 'gamma': [1e-3, 1e-4], 'C': [1, 10, 100]},
              {'kernel': ['linear'], 'C': [1, 10, 100]}]

clf = GridSearchCV(SVC(C=1), candidates, cv=5, scoring="f1")
clf.fit(digits.data, digits.target)

print(clf.best_estimator_)

for params, mean_score, scores in clf.grid_scores_:
    print("%0.3f (+/-%0.03f) for %r" % (mean_score, scores.std() / 2, params))

Ici, si vous passez un modèle (estimateur) et sa plage de paramètres, il recherchera toute la plage (combinaison) de cette plage (super pratique). Vous pouvez désormais obtenir facilement la combinaison de paramètres la plus précise. Effectuez cette opération pour chaque modèle candidat et enregistrez enfin le modèle le plus précis et ses paramètres.

Ce modèle candidat est basé sur la carte de sélection de modèle fournie par scikit-learn. Ce n'est pas si compliqué, mais j'ai envie d'essayer ElasticNet et SVR pour la prédiction de valeur et SVM pour la classification tout en changeant le noyau.

De cette façon, Karura réalise un apprentissage automatique entièrement automatique, mais il n'y a pas de technologie avancée dans le passé. Tous sont l'accumulation de savoir-faire et de fonctions existants. Il n'y a pas d'élément d'apprentissage en profondeur ici. Je l'ai implémenté avec un corps qui effectue tranquillement un travail que l'on peut appeler une plaque de fer. Cependant, nous pensons qu’elle peut à elle seule couvrir la plupart des prétendues «prédictions de données».

La zone dite de l'intelligence artificielle a aujourd'hui le goût de rivaliser pour les ramen transcendantaux (chers) avec une ingéniosité ridicule. Au lieu de cela, je pense qu'il est également important de fournir fermement la fonction "Oh ouais, c'est bien" comme un magasin de ramen dans la ville.

L'implémentation de karura est publiée sur GitHub, et si vous avez kintone, vous pouvez l'essayer (si vous l'utilisez individuellement, vous devez réécrire le contenu du plug-in et la personnalisation JavaScript, qui seront corrigés dans le futur est). Si vous êtes intéressé, essayez-le.

icoxfog417/karura

icon.PNG

Recommended Posts

Prédiction des données en un clic pour le champ réalisée par apprentissage automatique entièrement automatique
Prédiction de données chronologiques par AutoML (apprentissage automatique automatique)
Mémo d'apprentissage Python pour l'apprentissage automatique par Chainer jusqu'à la fin du chapitre 2
Déterminez l'authenticité des articles publiés par machine learning (API Google Prediction).
Division des données de formation en apprentissage automatique et apprentissage / prédiction / vérification
J'ai essayé de prédire l'évolution de la quantité de neige pendant 2 ans par apprentissage automatique
J'ai essayé de traiter et de transformer l'image et d'élargir les données pour l'apprentissage automatique
Alignez le nombre d'échantillons entre les classes de données pour l'apprentissage automatique avec Python
Histoire de l'analyse de données par apprentissage automatique
Mémo d'apprentissage Python pour l'apprentissage automatique par Chainer du chapitre 2
Mémo d'apprentissage Python pour l'apprentissage automatique par Chainer chapitres 1 et 2
xgboost: modèle d'apprentissage automatique efficace pour les données de table
Apprentissage automatique à tour de rôle (analyse de régression) -Cela réduit considérablement le temps de réglage des paramètres-
Un exemple de mécanisme qui renvoie une prédiction par HTTP à partir du résultat de l'apprentissage automatique
Vérification des performances du prétraitement des données pour l'apprentissage automatique (données numériques) (partie 2)
J'ai installé la bibliothèque de machine learning automatique auto-sklearn sur centos7
Prédire la présence ou l'absence d'infidélité par l'apprentissage automatique
Utilisation d'icrawler plus simple pour la collecte de données d'apprentissage automatique
Mémo d'apprentissage Python pour l'apprentissage automatique par Chainer Chapitre 7 Analyse de régression
Vérification des performances du prétraitement des données pour l'apprentissage automatique (données numériques) (partie 1)
Prétraitement japonais pour l'apprentissage automatique
4 [/] Quatre arithmétiques par apprentissage automatique
Avant l'introduction à l'apprentissage automatique. ~ Technologie requise pour l'apprentissage automatique autre que l'apprentissage automatique ~
Mémo d'apprentissage Python pour l'apprentissage automatique par Chainer Chapitre 10 Introduction à Cupy
Effectuer une analyse morphologique dans l'environnement d'apprentissage automatique lancé par GCE
Apprentissage automatique avec docker (42) Programmation PyTorch pour l'apprentissage en profondeur par Ian Pointer
Comment utiliser l'apprentissage automatique pour le travail? 01_ Comprendre l'objectif de l'apprentissage automatique
kintone x Gestion simple des cartes de visite réalisée par machine learning @kintone Café
Mémo d'apprentissage Python pour l'apprentissage automatique par Chainer Chapitre 9 Introduction à scikit-learn
Ingénierie des fonctionnalités pour l'apprentissage automatique à partir de la partie 1 Google Colaboratory - Validation et discrimination des données de comptage
Introduction au Deep Learning pour la première fois (Chainer) Reconnaissance de caractères japonais Chapitre 2 [Génération de modèles par apprentissage automatique]
Essayez de prédire la valeur de la jauge de niveau d'eau par apprentissage automatique en utilisant les données ouvertes de Data City Sabae