[PYTHON] Wichtige Punkte von "Maschinelles Lernen mit Azure ML Studio"

Wichtige Punkte von "Maschinelles Lernen mit Azure ML Studio"

Dieses Buch → Überarbeitete Version für maschinelles Lernen ab der 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! Wichtig; Rand: 0px! Wichtig; "/> Der Punkt ist, dass es einfach, aber nicht zu schwierig und ordentlich organisiert ist. Zusammenfassen.

Numerische Prognose durch Regression (Stichprobe: Prognose des Neuwagenverkaufspreises)

Beispiel: Einzelhandelsumsatzprognose (prognostiziert zukünftige Umsätze durch Analyse anhand von Korrelationselementen wie Anzahl der Verkäufe im Vorjahr, Tag des Tages, Wetter, Treffer / Nicht-Treffer usw.

Lineare Regression

[Formel] image.png

y: Anzahl der Verkäufe am Prognosedatum x1 ~ xm: Variablen wie Leistung, Kraftstoffart, Kraftstoffverbrauch, Radstand, Markenwert usw. w1 ~ wm: Partieller Regressionskoeffizient (Gewicht. Merkmalsgewicht) c: Konstante Laufzeit (Bias)

Genauigkeitsbewertung

・ MAE (Mean Absolute Error) ・ ・ closer Je näher es an 0 liegt, desto besser Der Durchschnitt der Differenz zwischen dem vorhergesagten Wert und dem richtigen Antwortwert. ・ RMSE (Root Mean Squared Error):![Image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307441/f023e48a-386f -cb03-363a-b559a2c829a7.png) ・ Bestimmungskoeffizient Das Quadrat des Korrelationskoeffizienten zwischen dem vorhergesagten Wert und dem richtigen Antwortwert. Je näher es an 1 liegt, desto besser

Datenaufteilung

・ Holdout-Methode Teilen Sie die Trainingsdaten für Training und Auswertung nach dem Zufallsprinzip auf ・ Kreuzvalidierung Teilen Sie die Trainingsdaten in k Teile. Und k mal Auswertung

Verbesserte Genauigkeit

· Regulierung Fügen Sie einen Strafwert proportional zum Gewichtsparameter hinzu, um ein Übertraining aufgrund zu vieler Variablen und zu großer Gewichtsparameter zu vermeiden. [Formel] image.png Addieren Sie die Summe der Quadrate der Gewichtungsparameter zur Summe der Quadrate des Fehlers zwischen dem vorhergesagten Wert und dem korrekten Antwortwert als Parameter. image.png

Bayesianische lineare Regression

Die Formel entspricht der linearen Regression. Ein Modell, bei dem der Gewichtungsparameter nicht konstant ist, sondern eine Wahrscheinlichkeitsverteilung. In Anbetracht der Häufigkeit, mit der ein Ereignis aufgetreten ist, ist die Schätzung der maximalen Wahrscheinlichkeit (MLE: eine Methode zum Bestimmen des Gewichtsparameters, sodass der Fehler 0 wird) ungenau, wenn die Anzahl der Trainingsdaten nicht berücksichtigt wird. Werde es tun. (Vor- und Nachverteilung) image.png

Klassifizierung (Stichprobe: Positive / Negative Klassifizierung aus Brustkrebsdaten)

Beispiel: Prognostizieren Sie die Zahlungsfähigkeit, indem Sie Korrelationselemente wie Beruf, Jahreseinkommen, Einzahlungsbetrag und verspätete Zahlungsunfähigkeit bei der Kreditprüfung bei einer Bank analysieren.

Logistische Rückgabe

Sagen Sie die Wahrscheinlichkeit voraus, mit der ein bestimmtes Ereignis eintreten wird. [Formel] image.png

x1 ~ xm: Variablen wie Alter, Tumorgröße, Malignität des Tumors, nicht in den Wechseljahren usw. w1 ~ wm: Partieller Regressionskoeffizient (Gewicht. Merkmalsgewicht) c: Konstante Laufzeit (Bias) P: Wahrscheinlichkeit Schätzen Sie positiv oder negativ, indem Sie den Wahrscheinlichkeitsschwellenwert beispielsweise auf 0,5 setzen

One-vs.-Rest-Klassifikator

Wenn Klassen von A bis E erstellt werden, erstellen Sie für jede Klasse eine Unterscheidungsformel (die obige Formel) und weisen Sie die entsprechenden Daten der Klasse mit der höchsten Wahrscheinlichkeit zu.

Eins-zu-Eins-Klassifikator (Eins-gegen-Eins-Klassifikator)

Wenn Sie Klassen von A bis E machen, versuchen Sie alle Eins-zu-Eins-Kombinationen mit A-B, A-C, A-D ... Anzahl der Kombinationen k × (k-1) ÷ 2 mal. 10 mal für A ~ E. Die entsprechenden Daten werden der Klasse zugewiesen, die von den 10 Mal am meisten gewählt wurde.

Genauigkeitsbewertung

・ Genauigkeitsrate ・ ・ ・ Je näher es an 100% liegt, desto besser Wenn 90% der Sonne scheint, beträgt die korrekte Antwortrate 90%, selbst wenn alle dummen Antworten korrekt sind.

・ True Positive Rate (TPR) ・ closer closer Je näher es an 100% liegt, desto besser Wie gut es nur für positive Daten passt

・ False Positive Rate (FPR) ・ closer closer Je näher es an 0% liegt, desto besser Wie viel wurde fälschlicherweise nur für negative Daten positiv gemacht

・ AUC (Fläche unter der Kurve) ・ ・ closer Je näher es an 1,0 liegt, desto besser Es gibt einen Kompromiss zwischen falsch positiver und wahrer positiver Rate. Daher werden die falsch-positive Rate und die wahr-positive Rate auf der ROC-Kurve grafisch dargestellt, und der Bereich unter der Kurve ist AUC.

・ Präzision: Je näher es an 100% liegt, desto besser Wie positiv sind die richtigen Antwortdaten für die Daten, bei denen die Vermutung positiv ist?

・ Rückruf: Je näher es an 100% liegt, desto besser Inwieweit konnte beurteilt werden, ob die Schätzdaten für das Positiv der richtigen Antwortdaten korrekt waren?

・ F-Wert (F1-Punktzahl) ・ ・ ・ Je näher er an 1,0 liegt, desto besser Es gibt auch einen Kompromiss zwischen Rückruf und Präzision. Index, um dies umfassend zu beurteilen image.png

Verbesserte Genauigkeit

Probieren Sie andere Methoden als die logistische Regression aus. Support Vector Machine (SVM), Entscheidungswald, verstärkter Entscheidungsbaum usw. image.png

Clustering (Beispiel: Klassifizierung von Iris)

Beispiel: Wir klassifizieren die Kundenorientierung von Reisebüros in Gruppen wie Nahfeldorientierung, Überseeorientierung und Ausrichtung auf heiße Quellen und verteilen Verkaufsförderungsmaterialien basierend auf jeder Ausrichtung.

k-bedeutet Methode

Wählen Sie Mittelpunktdaten einer beliebigen Anzahl von Clustern aus und klassifizieren Sie andere Daten anhand des euklidischen Abstands oder der Kosinusähnlichkeit in jeden Cluster.

Euklidische Entfernung

Einfach. Der Abstand zwischen Punkt a und Punkt b in der Grafik. image.png Wenn es m Variablen gibt, [Formel] image.png

Kosinusähnlichkeit

Die Nähe der Richtung des Vektors. +1 für die gleiche Richtung, 0 für die Vertikale, -1 für die Gegenrichtung [Formel] image.png

k-means ++ Methode

Verbesserte k-means-Methode. Dies ist der Mainstream. Wählen Sie so weit wie möglich von der Mitte des Clusters. Außerdem ignoriert eine kleine Anzahl von Gruppen Daten, die weit voneinander entfernt sind.

Genauigkeitsbewertung

Da es ohne Lehrer lernt, hat der Analytiker keine andere Wahl, als genau hinzuschauen.

Verbesserte Genauigkeit

·Normalisierung Skalieren Sie die Variable x mit einer großen Werteskala, sodass der Mittelwert 0 und die Standardabweichung 1 beträgt. Es heißt Z-Score (Z-Score).

image.png

Abnormalitätserkennung (Beispiel: Erkennung abnormaler Zahlungen anhand von Kreditkartennutzungsdaten)

Beispiel: Erkennen Sie Katastrophenvorläufer wie Kanonenwasser von stromaufwärts, mittel- und stromabwärts gelegenen Wasserstandssensoren von Flüssen.

One-Class SVM Dichteschätzungsalgorithmus. Der normale Datenbereich wird durch einen Kreis dargestellt, und Daten, die nicht in diesen Kreis passen, werden als abnormal erkannt. Erfahren Sie, wie Sie den nach der folgenden Formel berechneten Wert minimieren. [Formel] image.png R: Kreisradius n: Anzahl der Daten ζ: Die Länge der Daten außerhalb des Kreises ν: Das Gewicht der vom Analysten angegebenen Strafe (je kleiner der Wert, desto mehr Trainingsdaten werden in den normalen Bereich aufgenommen. Wenn ν 0 ist, werden alle Trainingsdaten in einem Kreis enthalten).

Kernel-Trick

Wenn die dichten Datenbereiche weit voneinander entfernt sind, ist der normale Bereich von einer verzerrten Kurve umgeben.

Genauigkeitsbewertung

・ Präzision: Je größer der Wert, desto geringer die Erkennungsauslassung. Wie viele korrekte Daten sind auch "abnormal" für Daten, deren Anomalieerkennungsschätzung "abnormal" ist?

・ Rückruf: Je größer der Wert, desto geringer die Erkennungsauslassung. Wie viel wurden die Schätzdaten korrekt als "abnormal" für die "abnormal" der richtigen Antwortdaten beurteilt?

・ F-Wert (F1-Punktzahl) ・ ・ ・ Je näher er an 1,0 liegt, desto besser Es gibt auch einen Kompromiss zwischen Rückruf und Präzision. Index, um dies umfassend zu beurteilen image.png

Verbesserte Genauigkeit

Es gibt einen Kompromiss zwischen Präzision und Rückruf. Möchten Sie Auslassungen bei der Erkennung abnormaler Ereignisse reduzieren oder Fehlalarme reduzieren? Durch Erhöhen von ν wird der normale Bereich (z. B. 0,5) eingeengt. Im Gegenteil, wenn es auf 0,02 usw. eingestellt ist, liegt es im normalen Bereich. Stellen Sie in ML Studio η ein.

Versuchen Sie, die Kernelfunktion zu ändern

Kernelfunktion, die in Kernel-Tricks verwendet wird. RBF-Kernel (ML Studio Standard) ・ Polygonaler Kernel ・ Sigmaid-Kernel

Versuchen Sie, die Anomalieerkennungsmethode zu ändern

・ Erkennung von Anomalien durch Hauptkomponentenanalyse (PCA-basierte Anomalieerkennung) ・ Erkennung von Zeitreihenanomalien (für Zeitreihendaten wie Temperaturänderungen und Aktienkursänderungen) image.png

Empfehlung (Beispiel: Präsentieren Sie den Benutzern empfohlene Restaurants anhand von Restaurantbewertungsdaten.)

Beispiel: Amazon "Personen, die dieses Produkt gekauft haben, haben auch die folgenden Produkte gekauft"

Kooperative Filterung

Erraten Sie das empfohlene Produkt anhand der Bewertung, der von Ihnen angegebenen Präferenz und der Bewertung durch andere. Es gibt eine Artikelbasis und eine Benutzerbasis.

Artikelbasierte Empfehlungen

Wir empfehlen Produkte, die den Produkten, die der Benutzer mit einer hohen Punktzahl bewertet hat, sehr ähnlich sind.

Benutzerbasierte Empfehlungen

Wählen Sie mehrere Benutzer mit hoher Ähnlichkeit zu Benutzern aus und empfehlen Sie jeweils Produkte mit hohen Punktzahlen

MatchBox Durch die Betonungsfilterung werden Erstbenutzer und neue Produkte aus dem Moskito-Buch entfernt (Kaltstartproblem. Microsofts einzigartiger Algorithmus, der Informationen zu Produkt- und Benutzerattributen empfiehlt. Weitere schrittweise Anhäufung von Punktzahlen Wird auch zusammen verwendet. 【Formel】 image.png κ ist die Anzahl der Attribute

Daher werden drei Arten von Lerndaten vorbereitet: Bewertungsdaten, Benutzerattributdaten und Produktattributdaten.

Genauigkeitsbewertung

・ NDCG (Normarized Discounted Cumulative Gain) ・ closer closer Je näher es an 1,0 liegt, desto besser Standard ・ MAE (Mean Absolute Error) ・ ・ closer Je näher es an 0 liegt, desto besser Der Durchschnitt der Differenz zwischen dem vorhergesagten Wert und dem richtigen Antwortwert. ・ RMSE (Root Mean Squared Error):![Image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/307441/f023e48a-386f -cb03-363a-b559a2c829a7.png)

Verbesserte Genauigkeit

Passen Sie die Länge (κ) des Merkmalsvektors an. In MS Studio [Anzahl der Merkmale] von "Train Matchbox Recommender" image.png

Praktische Umsetzung

Wechseln Sie in den aktuellen Kampfmodus

  1. Ändern Sie [Empfohlene Elementauswahl] von Score Matchbox Recommender in [From All Items]. → Im aktuellen Kampfmodus.
  2. Da der Eingabeport nur Benutzer-IDs akzeptiert, fügen Sie unter Manipulation "Spalten im Datensatz auswählen" hinzu und legen Sie fest, dass nur Benutzer-IDs ausgegeben werden.
  3. RUN image.png

Ausgabe von Webdiensten

Im aktuellen Kampfmodus

  1. Klicken Sie unter [WEB-SERVICE EINRICHTEN] auf [Predictive Web Service].

  2. Die Module [Webdienst-Eingabe] und [Webdienst-Ausgabe] werden hinzugefügt. image.png

  3. Entfernen Sie [Spalten im Datensatz auswählen] und setzen Sie [Webdienst-Eingabe] auf den Eingabeport von [Score Matchbox Recommender].

  4. Klicken Sie auf Webdienst bereitstellen. Übergang zum folgenden Bildschirm. Ein API-Schlüssel wurde ausgegeben. image.png

  5. Klicken Sie auf ANFORDERN / ANTWORTEN, um ein weiteres Fenster mit Beispielcode am unteren Bildschirmrand zu öffnen. image.png

  6. Ändern Sie abc123 im Code api_key =" abc123 " in Ihren eigenen. Ändern Sie die Werte im folgenden Code beispielsweise in die Benutzer-ID "U1048".

#Vorher ändern
data =  {

        "Inputs": {

                "input1":
                {
                    "ColumnNames": ["userID"],
                    "Values": [ [ "value" ], [ "value" ], ]
                },        },
#Nach der veränderung
data =  {

        "Inputs": {

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

Speichern Sie es mit PythonApplication.py.

  1. Geben Sie "$ python PythonApplication.py" in den Befehl ein und das Ergebnis wird zurückgegeben.
$ 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. Ab November 2019 handelt es sich um einen Beispielcode der Python2-Serie. Im Fall der Python3-Serie ist dies wie folgt.
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 = '<API-Schlüssel>' # 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()))                 

Ändern Sie einfach "urllib2" in "urllib.request".


das ist alles.

Recommended Posts

Wichtige Punkte von "Maschinelles Lernen mit Azure ML Studio"
Versuchen Sie es mit dem Jupyter Notebook von Azure Machine Learning
Prognostizieren Sie das Geschlecht von Twitter-Nutzern durch maschinelles Lernen
Zusammenfassung des grundlegenden Ablaufs des maschinellen Lernens mit Python
Aufzeichnung der ersten Herausforderung des maschinellen Lernens mit Keras
Maschinelles Lernen mit Pokemon gelernt
Grundlagen des maschinellen Lernens (Denkmal)
Maschinelles Lernen mit Python! Vorbereitung
Maschinelles Lernen Minesweeper mit PyTorch
Bedeutung von Datensätzen für maschinelles Lernen
Beginnend mit maschinellem Python-Lernen
Versuchen Sie es mit Kaggle leicht maschinell
Eine Geschichte, die mit der Installation der maschinellen Lernbibliothek JAX zusammenhängt
Bedeutung des maschinellen Lernens und des Mini-Batch-Lernens
[Maschinelles Lernen] Überprüfen Sie die Leistung des Klassifikators anhand handgeschriebener Zeichendaten
Ich habe maschinelles Lernen mit liblinear versucht
Maschinelles Lernen mit Python (1) Gesamtklassifizierung
Maschinelles Lernen ③ Zusammenfassung des Entscheidungsbaums
SVM versucht maschinelles Lernen mit Scikit-Learn
Informationen zur Lernmethode mit Originaldaten von CenterNet (Objekte als Punkte)
[Einführung in Style GAN] Einzigartiges Lernen von Animation mit Ihrer eigenen Maschine ♬
Quanteninspiriertes maschinelles Lernen mit Tensornetzwerken
Beginnen Sie mit dem maschinellen Lernen mit SageMaker
"Scraping & maschinelles Lernen mit Python" Lernnotiz
Anwendungsentwicklung mit Azure Machine Learning
REST-API eines mit Python erstellten Modells mit Watson Machine Learning (CP4D-Edition)
Quellcode für die Trennung von Tonquellen (Übungsreihe zum maschinellen Lernen), der mit Python gelernt wurde
Bedeutet Memo, wenn versucht wird, maschinelles Lernen mit 50 Bildern durchzuführen
[Beispiel für eine Python-Verbesserung] Python mit Codecademy lernen
Algorithmus für maschinelles Lernen (Verallgemeinerung der linearen Regression)
Vorhersage des Strombedarfs durch maschinelles Lernen Teil 2
Verstärken Sie Bilder für maschinelles Lernen mit Python
Unausgeglichenes Datenlernen mit maschinellem Lernen k-NN
Maschinelles Lernen mit Python (2) Einfache Regressionsanalyse
Eine Geschichte über maschinelles Lernen mit Kyasuket
Hinweise zum lokalen Ausführen von Azure Machine Learning
2020 Empfohlen 20 Auswahlmöglichkeiten für einführende Bücher zum maschinellen Lernen
Versuchen Sie mit Kipoi tiefes Erlernen der Genomik
Algorithmus für maschinelles Lernen (Implementierung einer Klassifizierung mit mehreren Klassen)
[Shakyo] Begegnung mit Python zum maschinellen Lernen
Emotionale Analyse von Tweets mit Deep Learning
Maschinelles Lernen mit Pytorch in Google Colab
[Maschinelles Lernen] Liste der häufig verwendeten Pakete
Aufbau einer KI / maschinellen Lernumgebung mit Python
Maschinelles Lernen
Richten Sie die Anzahl der Stichproben zwischen Datenklassen für maschinelles Lernen mit Python aus
Maschinelles Lernen eines jungen Ingenieurs Teil 1
Die Geschichte des tiefen Lernens mit TPU
Maschinelles Lernen beginnend mit Python Personal Memorandum Part2
Beginn des maschinellen Lernens (empfohlene Unterrichtsmaterialien / Informationen)
Maschinelles Lernen des Sports - Analyse der J-League als Beispiel - ②
Python & Machine Learning Study Memo ⑤: Klassifikation von Ayame
Maschinelles Lernen beginnend mit Python Personal Memorandum Part1
Numerai Turnier-Fusion von traditionellen Quants und maschinellem Lernen-
Python & Machine Learning Study Memo Introduction: Einführung in die Bibliothek
Vollständige Offenlegung der beim maschinellen Lernen verwendeten Methoden