Automatisches Erstellen eines Machine Learning-Modells

mit Amazon SageMaker Autopilot

Amazon SageMaker ist ein vollständig verwalteter Dienst, der jedem Entwickler und Daten-Wissenschaftler die Möglichkeit bietet, schnell Modelle für Machine Learning (ML) zu erstellen, zu trainieren und bereitzustellen.

In diesem Tutorial erstellen Sie Machine Learning-Modelle automatisch, ohne eine einzige Codezeile zu schreiben! Sie verwenden Amazon SageMaker Autopilot, eine AutoML-Funktion, die automatisch die besten Machine Learning-Modelle für Klassifizierung und Regression erstellt und gleichzeitig volle Kontrolle und Transparenz ermöglicht.

In diesem Tutorial lernen Sie Folgendes:

  1. Erstellen eines AWS-Kontos
  2. Einrichten von Amazon SageMaker Studio für den Zugriff auf Amazon SageMaker Autopilot
  3. Herunterladen eines öffentlichen Datensatzes mithilfe von Amazon SageMaker Studio
  4. Erstellen eines Trainingsexperiments mit Amazon SageMaker Autopilot
  5. Erkunden der verschiedenen Phasen des Trainingsexperiments
  6. Identifizieren und Bereitstellen des Modells mit der besten Leistung aus dem Trainingsexperiment
  7. Erstellen von Prognosen mit Ihrem bereitgestellten Modell

Für dieses Tutorial übernehmen Sie die Rolle eines Entwicklers, der für eine Bank tätig ist. Sie wurden gebeten, ein Machine-Learning-Modell zu entwickeln, mit dem vorhergesagt werden kann, ob ein Kunde ein Einlagenzertifikat zeichnen wird. Zum Trainieren des Modells wird der Marketingdatensatz verwendet, der Informationen zur Demographie des Kunden, seine Reaktionen auf Marketinginitiativen und externe Faktoren enthält.

Die Daten wurden für Sie bereits mit Kennzeichnungen versehen und in einer Spalte im Datensatz ist angegeben, ob der Kunde bereits ein von der Bank angebotenes Produkt gezeichnet hat. Eine Version dieses Datensatzes ist in dem von der University of California in Irvine (USA) zusammengestellten ML-Repository öffentlich verfügbar.
Über dieses Tutorial
Zeit 10 Minuten                                           
Kosten Weniger als 10 USD
Anwendungsfall Machine Learning
Produkte Amazon SageMaker
Zielgruppe Entwickler
Level Einsteiger
Letzte Aktualisierung 12. Mai 2020

Schritt 1: AWS-Konto erstellen

Die Kosten für diesen Workshop betragen weniger als 10 USD. Weitere Informationen finden Sie unter Amazon SageMaker Studio – Preise.

Sie haben bereits ein Konto? Anmelden

Schritt 2: Einrichten von Amazon SageMaker Studio

Schließen Sie die folgenden Schritte ab, um Amazon SageMaker Studio für den Zugriff auf Amazon SageMaker Autopilot einzurichten.

Hinweis: Weitere Informationen finden Sie unter Erste Schritte mit Amazon SageMaker Studio in der Amazon SageMaker-Dokumentation.


a. Melden Sie sich bei der Amazon SageMaker-Konsole an. 

Hinweis: Wählen Sie oben rechts unbedingt eine AWS-Region aus, in der Amazon SageMaker Studio verfügbar ist. Eine Liste der Regionen finden Sie im Thema zum Einrichten von Amazon SageMaker Studio.


b. Wählen Sie im Amazon SageMaker-Navigationsbereich Amazon SageMaker Studio aus.
 
Hinweis: Wenn Sie Amazon SageMaker Studio zum ersten Mal verwenden, müssen Sie den Studio-Einrichtungsprozess abschließen. Bei der Einrichtung können Sie als Authentifizierungsmethode entweder AWS Single Sign-On (AWS SSO) oder AWS Identity and Access Management (IAM) auswählen. Wenn Sie die IAM-Authentifizierung verwenden, können Sie entweder das Schnellstart- oder das Standard-Einrichtungsverfahren auswählen. Wenn Sie sich hier unsicher sind, finden Sie weitere Informationen unter Einrichtung von Amazon SageMaker Studio. Bitten Sie außerdem Ihren IT-Administrator um Unterstützung. Der Einfachheit halber wird in diesem Tutorial das Schnellstart-Verfahren verwendet.

c. Wählen Sie im Feld Get started die Option Quick start aus und geben Sie einen Benutzernamen an.

d. Wählen Sie für Execution role die Option Create an IAM role aus. Wählen Sie im eingeblendeten Dialogfeld Any S3 bucket und dann Create role aus.

Amazon SageMaker erstellt eine Rolle mit den erforderlichen Berechtigungen und weist sie Ihrer Instance zu.  


e. Klicken Sie auf Submit.

Schritt 3: Herunterladen des Datensatzes

Schließen Sie die folgenden Schritte ab, um den Datensatz herunterzuladen und zu erkunden.

Hinweis: Weitere Informationen finden Sie unter Amazon SageMaker Studio-Tour in der Amazon SageMaker-Dokumentation.


a. Wählen Sie im Amazon SageMaker Studio-Steuerungsbereich die Option Open Studio aus.

b. Wählen Sie unter JupyterLab im Menü File die Option New und dann Notebook aus. Wählen Sie im Feld Select Kernel die Option Python 3 (Data Science) aus.
 

c. Um den Code herunterzuladen und zu extrahieren, kopieren Sie den folgenden Code in die Codezelle und wählen Run aus.
 
Hinweis: Während der Codeausführung wird ein * zwischen den eckigen Klammern eingeblendet. Nach einigen Sekunden ist die Codeausführung abgeschlossen. Der * wird durch eine Zahl ersetzt.
%%sh
apt-get install -y unzip
wget https://sagemaker-sample-data-us-west-2.s3-us-west-2.amazonaws.com/autopilot/direct_marketing/bank-additional.zip
unzip -o bank-additional.zip

d. Kopieren Sie den folgenden Code in eine neue Codezelle und wählen Sie Run aus.

Der CSV-Datensatz wird geladen und die ersten zehn Zeilen werden angezeigt.

import pandas as pd
data = pd.read_csv('./bank-additional/bank-additional-full.csv')
data[:10]

Eine der Datensatzspalten hat den Namen y und stellt die Bezeichnung für die einzelnen Beispiele dar: Hat dieser Kunde das Angebot akzeptiert oder nicht?

In diesem Schritt würden Daten-Wissenschaftler mit dem Erforschen der Daten, dem Erstellen neuer Funktionen usw. beginnen. Mit Amazon SageMaker Autopilot sind diese zusätzlichen Schritte nicht erforderlich. Sie laden Tabellendaten einfach in eine Datei mit durch Kommata getrennten Werten hoch (z. B. aus einem Spreadsheet oder einer Datenbank) und wählen die Zielspalte für die Prognose aus. Autopilot erstellt dann ein Prognosemodell.


d. Kopieren Sie den folgenden Code in eine neue Codezelle und wählen Sie Run aus.

In diesem Schritt wird der CSV-Datensatz in einen Amazon S3-Bucket hochgeladen. Sie müssen keinen Amazon S3-Bucket erstellen; Amazon SageMaker erstellt automatisch einen Standard-Bucket in Ihrem Konto, wenn Sie die Daten hochladen.

import sagemaker

prefix = 'sagemaker/tutorial-autopilot/input'
sess   = sagemaker.Session()

uri = sess.upload_data(path="./bank-additional/bank-additional-full.csv", key_prefix=prefix)
print(uri)

Fertig! Die Codeausgabe zeigt den URI des S3-Buckets wie im folgenden Beispiel an:

s3://sagemaker-us-east-2-ACCOUNT_NUMBER/sagemaker/tutorial-autopilot/input/bank-additional-full.csv

Notieren Sie sich den S3-URI, der in Ihrem eigenen Notebook angegeben wird. Sie benötigen ihn im nächsten Schritt.

Schritt 4: Erstellen eines SageMaker Autopilot-Experiments

Da Sie Ihren Datensatz jetzt heruntergeladen und in Amazon S3 bereitgestellt haben, können Sie ein Amazon SageMaker Autopilot-Experiment erstellen. Eine Experiment ist eine Sammlung aus Verarbeitungs- und Trainingsaufgaben für ein- und dasselbe Machine Learning-Projekt.

Schließen Sie die folgenden Schritte ab, um ein neues Experiment zu erstellen.

Hinweis: Weitere Informationen finden Sie unter Erstellen eines Amazon SageMaker Autopilot-Experiments in SageMaker Studio in der Amazon SageMaker-Dokumentation.


a. Wählen Sie im linken Navigationsbereich von Amazon SageMaker Studio die Option Experiments (Flaschen- bzw. Kolbensymbol) und dann Create Experiment aus.


b. Füllen Sie die Job Settings-Felder wie folgt aus:

  • Experiment Name: tutorial-autopilot
  • S3 location of input data: S3-URI, den Sie sich weiter oben notiert haben
    (z. B. s3://sagemaker-us-east-2-123456789012/sagemaker/tutorial-autopilot/input/bank-additional-full.csv)
  • Target attribute name: y
  • S3 location for output data: s3://sagemaker-us-east-2-[KONTONUMMER]/sagemaker/tutorial-autopilot/output
    (Verwenden Sie für [KONTONUMMER] Ihre eigene Kontonummer.)

c. Behalten Sie sonst alle Standardeinstellungen bei und wählen Sie Create Experiment aus.

Erfolg! Auf diese Weise wird das Amazon SageMaker Autopilot-Experiment gestartet! Der Prozess generiert ein Modell und Statistiken, die Sie in Echtzeit anzeigen können, während das Experiment ausgeführt wird. Nach Abschluss des Experiments können Sie die Tests anzeigen, sie nach objektiven Metriken sortieren und das Modell per Rechtsklick für die Verwendung in anderen Umgebungen bereitstellen.

Schritt 5: Erkunden der SageMaker Autopilot-Experimentphasen

Während Ihr Experiment ausgeführt wird, können Sie die unterschiedlichen Phasen des SageMaker Autopilot-Experiments erkunden und zugehörige Informationen erhalten.  

In diesem Abschnitt werden weitere Details zu den SageMaker Autopilot-Experimentphasen bereitgestellt:

  1. Datenanalyse
  2. Funktions-Engineering
  3. Modelloptimierung

Hinweis: Weitere Informationen finden Sie in der SageMaker Autopilot-Notebook-Ausgabe.


Datenanalyse

In der Phase der Datenanalyse wird der zu lösende Problemtyp identifiziert (lineare Regression, binäre Klassifizierung, Multiklassen-Klassifizierung). Dann werden zehn Kandidatenpipelines generiert. Eine Pipeline kombiniert einen Datenverarbeitungsschritt (Verarbeitung fehlender Werte, Entwickeln neuer Funktionen usw.) mithilfe eines ML-Algorithmus, der zum Problemtyp passt, mit einem Modelltrainingsschritt. Nach Abschluss dieses Schrittes wird die Aufgabe zum Funktions-Engineering weitergegeben.  


Funktions-Engineering

In der Phase des Funktions-Engineerings erstellt das Experiment Trainings- und Validierungsdatensätze für die einzelnen Kandidatenpipelines und speichert alle Artefakte in Ihrem S3-Bucket. In der Funktions-Engineering-Phase können Sie zwei automatisch generierte Notebooks öffnen und anzeigen:

  • Das Data Exploration Notebook enthält Informationen und Statistiken zum Datensatz.
  • Das Candidate Generation Notebook enthält die Definitionen der zehn Pipelines. Hierbei handelt es sich um ein ausführbares Notebook: Sie können genau reproduzieren, was die AutoPilot-Aufgabe macht, nachvollziehen, wie die unterschiedlichen Modelle erstellt werden, und diese auf Wunsch sogar optimieren.

Mithilfe dieser zwei Notebooks können Sie detailliert nachvollziehen, wie Daten vorverarbeitet und wie Modelle erstellt und optimiert werden. Diese Transparenz ist eine wichtige Funktion von Amazon SageMaker Autopilot.


Modelloptimierung

In der Phase der Modelloptimierung startet SageMaker Autopilot für jede Kandidatenpipeline und die entsprechenden vorverarbeiteten Datensätze eine Hyperparameter-Optimierungsaufgabe. Die zugehörigen Trainingsaufgaben untersuchen ganz verschiedene Hyperparameter-Werte und laufen schnell zu Hochleistungsmodellen zusammen.

Nach Abschluss dieser Phase ist auch die SageMaker Autopilot-Aufgabe abgeschlossen. Sie können alle Aufgaben in SageMaker Studio anzeigen und erforschen.

Schritt 6: Bereitstellen des besten Modells

Da Ihr Experiment jetzt abgeschlossen ist, können Sie die beste Optimierungsaufgabe auswählen und das Modell auf einem von Amazon SageMaker verwalteten Endpunkt bereitstellen.

Folgen Sie diesen Schritten, um die beste Optimierungsaufgabe auszuwählen und das Modell bereitzustellen.

Hinweis: Weitere Informationen finden Sie unter Auswählen und Bereitstellen des besten Modells.


a. Wählen Sie in der Liste Trials Ihres Experiments die Karotte neben Objective aus, um die Optimierungsaufgaben in absteigender Reihenfolge zu sortieren. Die beste Optimierungsaufgabe wird durch einen Stern gekennzeichnet.


b. Wählen Sie die beste Optimierungsaufgabe (durch einen Stern gekennzeichnet) und dann Deploy model aus. 


c. Geben Sie im Feld Deploy model den Namen Ihres Endpunkts an (z. B. tutorial-autopilot-best-model) und behalten Sie alle Standardeinstellungen bei. Wählen Sie Deploy model aus.

Ihr Modell wird auf einem von Amazon SageMaker verwalteten HTTPS-Endpunkt bereitgestellt.


d. Wählen Sie in der linken Symbolleiste das Symbol Endpoints aus. Sie sehen, dass Ihr Modell erstellt wird. Das kann einige Minuten dauern. Sobald der Endpunktstatus InService lautet, können Sie Daten senden und Prognosen erhalten!

Schritt 7: Erstellen von Prognosen mit Ihrem Modell

Da das Modell jetzt bereitgestellt ist, können Sie die ersten 2 000 Beispiele des Datensatzes prognostizieren. Zu diesem Zweck verwenden Sie die invoke_endpoint-API aus dem boto3-SDK. In diesem Vorgang berechnen Sie wichtige Machine Learning-Metriken: Genauigkeit, Präzision, Widerruf und den F1-Score.

Folgen Sie diesen Schritten, um mit Ihrem Modell Prognosen zu erstellen.

Hinweis: Weitere Informationen finden Sie unter Verwalten von Machine Learning mit Amazon SageMaker-Experimenten.


Kopieren Sie den folgenden Code in Ihr Jupyter-Notebook und wählen Sie Run aus.

import boto3, sys

ep_name = 'tutorial-autopilot-best-model'
sm_rt = boto3.Session().client('runtime.sagemaker')

tn=tp=fn=fp=count=0

with open('bank-additional/bank-additional-full.csv') as f:
    lines = f.readlines()
    for l in lines[1:2000]:   # Skip header
        l = l.split(',')      # Split CSV line into features
        label = l[-1]         # Store 'yes'/'no' label
        l = l[:-1]            # Remove label
        l = ','.join(l)       # Rebuild CSV line without label
                
        response = sm_rt.invoke_endpoint(EndpointName=ep_name, 
                                         ContentType='text/csv',       
                                         Accept='text/csv', Body=l)

        response = response['Body'].read().decode("utf-8")
        #print ("label %s response %s" %(label,response))

        if 'yes' in label:
            # Sample is positive
            if 'yes' in response:
                # True positive
                tp=tp+1
            else:
                # False negative
                fn=fn+1
        else:
            # Sample is negative
            if 'no' in response:
                # True negative
                tn=tn+1
            else:
                # False positive
                fp=fp+1
        count = count+1
        if (count % 100 == 0):   
            sys.stdout.write(str(count)+' ')
            
print ("Done")

accuracy  = (tp+tn)/(tp+tn+fp+fn)
precision = tp/(tp+fp)
recall    = tn/(tn+fn)
f1        = (2*precision*recall)/(precision+recall)

print ("%.4f %.4f %.4f %.4f" % (accuracy, precision, recall, f1))

Sie sollten die folgende Ausgabe sehen:

100 200 300 400 500 600 700 800 900 1000 1100 1200 1300 1400 1500 1600 1700 1800 1900 Done
0.9830 0.6538 0.9873 0.7867

Diese Ausgabe ist eine Fortschrittsanzeige, die die Anzahl der prognostizierten Beispiele zeigt.

Schritt 8: Bereinigen

In diesem Schritt beenden Sie die in dieser Übung verwendeten Ressourcen.

Wichtig: Die Beendigung von Ressourcen, die nicht aktiv genutzt werden, senkt die Kosten und ist eine bewährte Methode. Wenn Sie Ihre Ressourcen nicht beenden, fallen Gebühren für Ihr Konto an.


Löschen Sie Ihren Endpunkt: Kopieren Sie den folgenden Code in Ihr Jupyter-Notebook und wählen Sie Run aus.

sess.delete_endpoint(endpoint_name=ep_name)

Wenn Sie alle Trainingsartefakte (Modelle, vorverarbeitete Datensätze usw.) bereinigen möchten, kopieren Sie den folgenden Code in Ihre Codezelle. Wählen Sie dann Run aus.

Hinweis: Verwenden Sie für [KONTONUMMER] Ihre eigene Kontonummer.

%%sh
aws s3 rm --recursive s3://sagemaker-us-east-2-ACCOUNT_NUMBER/sagemaker/tutorial-autopilot/

Herzlichen Glückwunsch!

Sie haben ein Machine Learning-Modell mit der höchsten Genauigkeit automatisch mithilfe von Amazon SageMaker Autopilot erstellt.

War dieses Tutorial hilfreich?

Unternehmen Sie eine Tour durch Amazon SageMaker Studio

Erhalt weiterer Informationen zu Amazon SageMaker Autopilot

Falls Sie weitere Informationen benötigen, lesen Sie den Blog-Beitrag oder sehen Sie sich die Autopilot-Videoreihe an.