[PYTHON] Points clés de «Machine learning avec Azure ML Studio»

Points clés de «Machine learning avec Azure ML Studio»

Ce livre → Version révisée de l'apprentissage automatique à partir du cloud <img src =" // ir-jp.amazon-adsystem.com/e/ir?t=kokkahasan-22&l=am2&o=9&a=4865941622 "width =" 1 "height =" 1 "border =" 0 "alt =" "style =" border: none! Important; margin: 0px! Important; "/> Le fait est que c'est simple mais pas trop difficile et bien organisé. Résumer.

Prévision numérique par régression (Exemple: prévision du prix de vente des voitures neuves)

Exemple: prévision des ventes au détail (prédit les ventes futures en les analysant en fonction d'éléments de corrélation tels que le nombre de ventes de l'année précédente, le jour de la journée, la météo, le succès / non atteint, etc.

Régression linéaire

[Formule] image.png

y: Nombre de ventes à la date de prévision x1 ~ xm: variables telles que la puissance, le type de carburant, la consommation de carburant, l'empattement, la valeur de la marque, etc. w1 ~ wm: coefficient de régression partielle (poids. Poids de l'élément) c: terme constant (biais)

Évaluation de la précision

・ MAE (Erreur absolue moyenne) ・ ・ ・ Plus il est proche de 0, mieux c'est Moyenne de la différence entre la valeur prédite et la valeur de réponse correcte. ・ RMSE (erreur quadratique moyenne):![Image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307441/f023e48a-386f -cb03-363a-b559a2c829a7.png) ・ Coerfficient de détermination Le carré du coefficient de corrélation entre la valeur prédite et la valeur de réponse correcte. Plus il est proche de 1, mieux c'est

Répartition des données

・ Méthode Holdout Divisez aléatoirement les données d'entraînement pour l'entraînement et l'évaluation · Validation croisée Divisez les données d'entraînement en k morceaux. Et k fois l'évaluation

Amélioration de la précision

・ Régularisation Ajoutez une valeur de pénalité proportionnelle au paramètre de poids pour éviter le surentraînement dû à un trop grand nombre de variables et à un paramètre de poids trop important. [Formule] image.png Ajoutez la somme des carrés des paramètres de poids à la somme des carrés de l'erreur entre la valeur prédite et la valeur de réponse correcte en tant que paramètre. image.png

Régression linéaire bayésienne

La formule est la même que la régression linéaire. Cependant, un modèle dans lequel le paramètre de poids n'est pas constant mais une distribution de probabilité. Compte tenu du nombre de fois qu'un événement s'est produit, où seule l'estimation du maximum de vraisemblance (MLE: une méthode de détermination du paramètre de poids de sorte que l'erreur devienne 0) est inexacte si le nombre de données d'apprentissage n'est pas pris en compte. Le fera. (Pré-distribution et distribution postérieure) image.png

Classification (échantillon: classification positive / négative à partir des données sur le cancer du sein)

Exemple: prédire la capacité de paiement en analysant les éléments de corrélation tels que la profession, le revenu annuel, le montant du dépôt et les retards de paiement dans le cadre de la vérification du crédit dans une banque.

Retour logistique

Prédisez la probabilité qu'un événement particulier se produise. [Formule] image.png

x1 ~ xm: variables telles que l'âge, la taille de la tumeur, la tumeur maligne, non ménopausée, etc. w1 ~ wm: coefficient de régression partielle (poids. Poids de l'élément) c: terme constant (biais) P: Probabilité Estimer positif ou négatif en définissant le seuil de probabilité à, par exemple, 0,5

Classificateur un contre repos

Si des classes sont créées de A à E, préparez une formule de discrimination (la formule ci-dessus) pour chacune et attribuez les données correspondantes à la classe présentant la probabilité la plus élevée.

Classificateur un-à-un (classificateur un-contre-un)

Si vous faites des classes de A à E, essayez toutes les combinaisons un-à-un avec A-B, A-C, A-D ... Nombre de combinaisons «k × (k-1) ÷ 2» fois. 10 fois pour A ~ E. Les données correspondantes sont attribuées à la classe qui a été la plus votée sur 10 fois.

Évaluation de la précision

・ Taux de précision ・ ・ ・ Plus il est proche de 100%, mieux c'est S'il y a 90% du soleil, le taux de réponse correcte sera de 90% même si toutes les réponses stupides sont correctes.

・ True Positive Rate (TPR) ・ ・ ・ Plus il est proche de 100%, mieux c'est À quel point il convient uniquement aux données positives

・ Taux de faux positifs (FPR) ・ ・ ・ Plus il est proche de 0%, mieux c'est Combien a été rendu positif par erreur uniquement pour les données négatives

・ AUC (zone sous la courbe) ・ ・ ・ Plus il est proche de 1,0, mieux c'est Il y a un compromis entre le taux de faux positifs et le taux de vrais positifs. Par conséquent, le taux de faux positifs et le taux de vrais positifs sont représentés graphiquement sur la courbe ROC, et la zone sous la courbe est AUC.

・ Précision: plus il est proche de 100%, mieux c'est Dans quelle mesure les données de réponse correctes sont-elles positives pour les données que la supposition est positive?

・ Rappel: plus il est proche de 100%, mieux c'est Dans quelle mesure était-il possible de juger que les données de supposition étaient correctes pour le positif des données de réponse correcte?

・ Valeur F (score F1) ・ ・ ・ Plus il est proche de 1,0, mieux c'est Il y a aussi un compromis entre le rappel et la précision. Index pour juger cela de manière exhaustive image.png

Amélioration de la précision

Essayez des méthodes autres que la régression logistique. Support Vector Machine (SVM), Decision Forest, Boosted Decision Tree, etc. image.png

Clustering (Exemple: Classification des iris)

Exemple: Nous classons l'orientation client des agences de voyages en groupes tels que l'orientation en champ proche, l'orientation à l'étranger et l'orientation des sources chaudes, et nous distribuons du matériel de promotion des ventes en fonction de chaque orientation.

méthode k-means

Sélectionnez les données de point central pour n'importe quel nombre de clusters et classez les autres données dans chaque cluster à l'aide de la distance euclidienne ou de la similitude cosinus.

Distance euclidienne

Facile. La distance entre le point a et le point b sur le graphique. image.png S'il y a m variables, [Formule] image.png

Similitude cosinus

La proximité de la direction du vecteur. +1 pour la même direction, 0 pour la verticale, -1 pour l'inverse [Formule] image.png

méthode k-means ++

Amélioration de la méthode k-means. C'est le courant dominant. Choisissez le plus loin possible du centre du cluster. En outre, un petit nombre de groupes ignorent les données éloignées.

Évaluation de la précision

Puisqu'il apprend sans enseignant, l'analyste n'a d'autre choix que de jeter un œil approprié.

Amélioration de la précision

·Normalisation Mettez la variable x à l'échelle avec une grande échelle de valeurs de sorte que la valeur moyenne soit 0 et l'écart type 1. Il est appelé score z (score z).

image.png

Détection d'anomalie (exemple: détection de paiement anormal à partir des données d'utilisation de la carte de crédit)

Exemple: Détectez les précurseurs de catastrophe tels que l'eau des canons à partir des capteurs de niveau d'eau en amont, au milieu et en aval des rivières.

One-Class SVM Algorithme d'estimation de la densité. La plage normale de données est représentée par un cercle et les données qui ne rentrent pas dans ce cercle sont détectées comme anormales. Apprenez à minimiser la valeur calculée par la formule suivante. [Formule] image.png R: rayon du cercle n: nombre de données ζ: La longueur des données en dehors du cercle ν: Le poids de la pénalité donnée par l'analyste (plus la valeur est petite, plus les données d'apprentissage seront incluses dans la plage normale. Si ν vaut 0, toutes les données d'apprentissage seront contenues dans un cercle).

Astuce du noyau

Lorsque les zones denses de données sont éloignées, la zone normale est entourée d'une courbe déformée.

Évaluation de la précision

・ Précision: plus la valeur est élevée, moins il y a d'omission de détection. La quantité de données correctes est également "anormale" pour les données dont la détection d'anomalie est "anormale"

・ Rappel: plus la valeur est élevée, moins il y a d'omission de détection. Dans quelle mesure les données de supposition ont-elles été correctement jugées "anormales" pour le "anormal" des données de réponse correctes?

・ Valeur F (score F1) ・ ・ ・ Plus il est proche de 1,0, mieux c'est Il y a aussi un compromis entre le rappel et la précision. Index pour juger cela de manière exhaustive image.png

Amélioration de la précision

Il y a un compromis entre précision et rappel. Voulez-vous réduire les omissions dans la détection d'événements anormaux ou réduire les faux positifs? L'augmentation de ν réduit la plage normale (telle que 0,5). Au contraire, s'il est réglé sur 0,02 etc., il sera dans la plage normale. Dans ML Studio, définissez avec η.

Essayez de changer la fonction du noyau

Fonction du noyau utilisée dans les astuces du noyau. Noyau RBF (ML Studio par défaut) ・ Noyau polygonal ・ Noyau Sigmaid

Essayez de changer la méthode de détection des anomalies

・ Détection d'anomalies par analyse des composants principaux (détection d'anomalies basée sur PCA) ・ Détection des anomalies des séries temporelles (pour les données de séries chronologiques telles que les changements de température et les changements de prix des actions) image.png

Recommandation (Exemple: présenter les restaurants recommandés aux utilisateurs à partir des données d'évaluation des restaurants)

Exemple: "Les personnes qui ont acheté ce produit ont également acheté les produits suivants" d'Amazon

Filtrage coopératif

Devinez le produit recommandé en utilisant la note, la préférence donnée par vous et la note donnée par les autres. Il existe une base d'articles et une base d'utilisateurs.

Recommandations basées sur les articles

Nous recommandons des produits très similaires aux produits auxquels l'utilisateur a attribué un score élevé.

Recommandations basées sur l'utilisateur

Sélectionnez plusieurs utilisateurs avec une forte similitude avec les utilisateurs et recommandez des produits avec des scores élevés pour chacun

MatchBox Le filtrage d'accentuation exclut les nouveaux utilisateurs et les nouveaux produits de la moustiquaire (problème de démarrage à froid. Algorithme unique de Microsoft qui fait des recommandations basées sur les informations sur les produits et les attributs des utilisateurs. Les scores s'accumulent progressivement. Également utilisé ensemble. 【formule】 image.png κ est le nombre d'attributs

Par conséquent, trois types de données d'apprentissage sont préparés: les données de score, les données d'attribut utilisateur et les données d'attribut de produit.

Évaluation de la précision

・ NDCG (gain cumulatif réduit normalisé) ・ ・ ・ Plus il est proche de 1,0, mieux c'est Défaut ・ MAE (Erreur absolue moyenne) ・ ・ ・ Plus il est proche de 0, mieux c'est Moyenne de la différence entre la valeur prédite et la valeur de réponse correcte. ・ RMSE (erreur quadratique moyenne):![Image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307441/f023e48a-386f -cb03-363a-b559a2c829a7.png)

Amélioration de la précision

Ajustez la longueur (κ) du vecteur d'entités. Dans MS Studio, [Nombre de traits] de "Train Matchbox Recommender" image.png

Réalisation pratique

Passer en mode combat réel

  1. Remplacez [Sélection d'élément recommandée] de Score Matchbox Recommender par [From All Items]. → En mode combat réel.
  2. Étant donné que le port d'entrée n'accepte que les ID utilisateur, ajoutez "Sélectionner les colonnes dans l'ensemble de données" dans Manipulation et définissez pour afficher uniquement les ID utilisateur.
  3. RUN image.png

Émission de services Web

En mode combat réel

  1. Cliquez sur [Predictive Web Service] dans [SET UP WEB SERVICE]

  2. Les modules [Entrée de service Web] et [Sortie de service Web] sont ajoutés. image.png

  3. Supprimez [Sélectionner les colonnes dans l'ensemble de données] et définissez [Entrée du service Web] sur le port d'entrée de [Score Matchbox Recommender].

  4. Cliquez sur Déployer le service Web. Passez à l'écran suivant. Une clé API a été émise. image.png

  5. Cliquez sur DEMANDE / RÉPONSE pour ouvrir une autre fenêtre avec un exemple de code au bas de l'écran. image.png

  6. Remplacez abc123 dans le code ʻapi_key = "abc123" `par le vôtre. Modifiez les valeurs dans le code ci-dessous en, par exemple, UserID "U1048".

#Changer avant
data =  {

        "Inputs": {

                "input1":
                {
                    "ColumnNames": ["userID"],
                    "Values": [ [ "value" ], [ "value" ], ]
                },        },
#Après le changement
data =  {

        "Inputs": {

                "input1":
                {
                    "ColumnNames": ["userID"],
                    "Values": [ [ "U1048" ] ]
                },        },

Enregistrez-le avec PythonApplication.py.

  1. Tapez $ python PythonApplication.py dans la commande et le résultat sera renvoyé.
$ python PythonApplication.py 
{"Results":{"output1":{"type":"table","value":{"ColumnNames":["User","Item 1","Item 2","Item 3","Item 4","Item 5"],"ColumnTypes":["String","String","String","String","String","String"],"Values":[["U1048","134986","135030","135052","135045","135025"]]}}}}

  1. Depuis novembre 2019, il s'agit d'un exemple de code de la série Python2. Dans le cas de la série Python3, c'est comme suit.
import urllib.request
# If you are using Python 3+, import urllib instead of urllib2

import json 


data =  {

        "Inputs": {

                "input1":
                {
                    "ColumnNames": ["userID"],
                    "Values": [ [ "U1048" ] ]
                },        },
            "GlobalParameters": {
}
    }

body = str.encode(json.dumps(data))

url = 'https://japaneast.services.azureml.net/workspaces/0e3c5988af4b43d7ac14fa55244b9f9d/services/53da3266168a4c8a8814e3adac2a6821/execute?api-version=2.0&details=true'
api_key = '<Clé API>' # Replace this with the API key for the web service
headers = {'Content-Type':'application/json', 'Authorization':('Bearer '+ api_key)}

req = urllib.Request(url, body, headers) 

try:
    response = urllib.urlopen(req)

    # If you are using Python 3+, replace urllib2 with urllib.request in the above code:
    # req = urllib.request.Request(url, body, headers) 
    # response = urllib.request.urlopen(req)

    result = response.read()
    print(result) 
except urllib.request.HTTPError, error:
    print("The request failed with status code: " + str(error.code))

    # Print the headers - they include the requert ID and the timestamp, which are useful for debugging the failure
    print(error.info())

    print(json.loads(error.read()))                 

Changez simplement ʻurllib2 en ʻurllib.request.


c'est tout.

Recommended Posts

Points clés de «Machine learning avec Azure ML Studio»
Essayez d'utiliser le bloc-notes Jupyter à partir d'Azure Machine Learning
Prédire le sexe des utilisateurs de Twitter grâce à l'apprentissage automatique
Résumé du flux de base de l'apprentissage automatique avec Python
Bilan du premier défi du machine learning avec Keras
L'apprentissage automatique appris avec Pokemon
Bases de l'apprentissage automatique (mémoire)
Apprentissage automatique avec Python! Préparation
Démineur d'apprentissage automatique avec PyTorch
Importance des ensembles de données d'apprentissage automatique
Commencer avec l'apprentissage automatique Python
Essayez le machine learning à la légère avec Kaggle
Une histoire coincée avec l'installation de la bibliothèque de machine learning JAX
Importance de l'apprentissage automatique et de l'apprentissage par mini-lots
[Apprentissage automatique] Vérifiez les performances du classificateur à l'aide de données de caractères manuscrites
J'ai essayé l'apprentissage automatique avec liblinear
Apprentissage automatique par python (1) Classification générale
Apprentissage automatique ③ Résumé de l'arbre de décision
SVM essayant l'apprentissage automatique avec scikit-learn
À propos de la méthode d'apprentissage avec les données originales de CenterNet (Objects as Points)
[Introduction au style GAN] Apprentissage unique de l'animation avec votre propre machine ♬
Machine learning d'inspiration quantique avec des réseaux de tenseurs
Démarrez avec l'apprentissage automatique avec SageMaker
Mémo d'apprentissage "Scraping & Machine Learning avec Python"
Développement d'applications à l'aide d'Azure Machine Learning
API REST du modèle réalisé avec Python avec Watson Machine Learning (édition CP4D)
Code source pour la séparation des sources sonores (série de pratiques d'apprentissage automatique) appris avec Python
Signifie mémo lorsque vous essayez de faire de l'apprentissage automatique avec 50 images
[Exemple d'amélioration de Python] Apprentissage de Python avec Codecademy
Algorithme d'apprentissage automatique (généralisation de la régression linéaire)
Prédire la demande de puissance avec l'apprentissage automatique, partie 2
Amplifiez les images pour l'apprentissage automatique avec Python
Sklearn de données déséquilibrées avec apprentissage automatique k-NN
Apprentissage automatique avec python (2) Analyse de régression simple
Une histoire sur l'apprentissage automatique avec Kyasuket
Remarques sur l'exécution locale d'Azure Machine Learning
20 sélections recommandées en 2020 de livres d'introduction à l'apprentissage automatique
Essayez l'apprentissage profond de la génomique avec Kipoi
Algorithme d'apprentissage automatique (implémentation de la classification multi-classes)
[Shakyo] Rencontre avec Python pour l'apprentissage automatique
Analyse émotionnelle des tweets avec apprentissage en profondeur
Apprentissage automatique avec Pytorch sur Google Colab
[Apprentissage automatique] Liste des packages fréquemment utilisés
Construction d'environnement AI / Machine Learning avec Python
Apprentissage automatique
Alignez le nombre d'échantillons entre les classes de données pour l'apprentissage automatique avec Python
Mémo d'apprentissage automatique d'un ingénieur débutant Partie 1
L'histoire de l'apprentissage profond avec TPU
Apprentissage automatique à partir de Python Personal Memorandum Part2
Début de l'apprentissage automatique (matériel didactique / informations recommandés)
Apprentissage automatique du sport-Analyse de la J-League à titre d'exemple-②
Mémo d'étude Python & Machine Learning ⑤: Classification d'Ayame
Apprentissage automatique à partir de Python Personal Memorandum Part1
Tournoi Numerai - Fusion de quants traditionnels et apprentissage automatique -
Mémo d'étude Python & Machine Learning ②: Introduction de la bibliothèque
Divulgation complète des méthodes utilisées dans l'apprentissage automatique