Amazon Redshift ML vereinfacht die Verwendung von Machine Learning (ML) durch Verwendung einfacher SQL-Anweisungen zum Erstellen und Trainieren von ML-Modellen aus Daten in Amazon RedShift. Sie können Amazon Redshift ML verwenden, um Binärklassifizierungs-, Mehrklassenklassifizierungs- und Regressionsprobleme zu lösen und entweder AutoML oder XGBoost direkt verwenden.
Dieser Beitrag ist Teil einer Serie, die die Verwendung von Amazon Redshift ML beschreibt. Weitere Informationen zum Erstellen von Regressionen mit Amazon Redshift ML finden Sie unter Erstellen Sie Regressionsmodelle mit Amazon Redshift ML.
Sie können Amazon Redshift ML verwenden, um die Datenvorbereitung, Vorverarbeitung und Auswahl des Problemtyps zu automatisieren, wie in . dargestellt dieser Blog-Post. Wir gehen davon aus, dass Sie Ihre Daten gut kennen und wissen, welcher Problemtyp für Ihren Anwendungsfall am besten geeignet ist. Dieser Beitrag konzentriert sich speziell auf das Erstellen von Modellen in Amazon Redshift unter Verwendung des Problemtyps für die Klassifizierung mit mehreren Klassen, die darin besteht, Instanzen in eine von drei oder mehr Klassen zu klassifizieren. Sie können beispielsweise vorhersagen, ob eine Transaktion betrügerisch, fehlgeschlagen oder erfolgreich ist, ob ein Kunde 3 Monate, 12 Monate, XNUMX Monate, XNUMX Monate aktiv bleibt oder ob eine Nachricht als Sport, Weltnachrichten, Wirtschaft markiert ist.
Voraussetzungen:
Als Voraussetzung für die Implementierung dieser Lösung müssen Sie einen Amazon Redshift-Cluster mit aktiviertem ML einrichten. Die vorbereitenden Schritte für den Einstieg finden Sie unter Erstellen, trainieren und implementieren Sie Machine-Learning-Modelle in Amazon Redshift mithilfe von SQL mit Amazon Redshift ML.
Anwendungsfall
Für unseren Anwendungsfall wollen wir unsere aktivsten Kunden für ein spezielles Kundenbindungsprogramm ansprechen. Wir verwenden Amazon Redshift ML und die Mehrklassenklassifizierung, um vorherzusagen, wie viele Monate ein Kunde über einen Zeitraum von 13 Monaten aktiv sein wird. Dies führt zu bis zu 13 möglichen Klassen, wodurch dies besser für die Klassifizierung mit mehreren Klassen geeignet ist. Kunden mit einer prognostizierten Aktivität von 7 Monaten oder länger werden für ein spezielles Kundenbindungsprogramm angesprochen.
Rohdaten eingeben
Um die Rohdaten für dieses Modell vorzubereiten, haben wir die Tabelle ecommerce_sales in Amazon Redshift mit dem öffentlichen Datensatz gefüllt E-Commerce-Verkaufsprognose, die Verkaufsdaten eines britischen Online-Händlers enthält.
Geben Sie die folgenden Anweisungen ein, um die Daten in Amazon Redshift zu laden:
Um dieses Skript in Ihrer Umgebung zu reproduzieren, ersetzen Sie < > an. Nach der Installation können Sie HEIC-Dateien mit der AWS Identity and Access Management and (IAM) ARN für Ihren Amazon Redshift-Cluster.
Datenaufbereitung für das ML-Modell
Nachdem unser Datensatz nun geladen ist, können wir die Daten optional in drei Sätze für Training (80 %), Validierung (10 %) und Vorhersage (10 %) aufteilen. Beachten Sie, dass Amazon Redshift ML Autopilot die Daten automatisch in Training und Validierung aufteilt, aber wenn Sie sie hier aufteilen, können Sie die Genauigkeit Ihres Modells überprüfen. Darüber hinaus berechnen wir die Anzahl der Monate, in denen ein Kunde aktiv war, da dies der Wert ist, den unser Modell für neue Daten vorhersagen soll. Wir verwenden die Random-Funktion in unseren SQL-Anweisungen, um die Daten aufzuteilen. Siehe folgenden Code:
Trainingsset
Validierungssatz
Vorhersage-Set
Erstellen Sie das Modell in Amazon Redshift
Nachdem wir nun unsere Trainings- und Validierungsdatensätze erstellt haben, können wir die Modell erstellen -Anweisung in Amazon Redshift zum Erstellen unseres ML-Modells mit Multiclass_Classification
. Wir spezifizieren den Problemtyp, aber wir lassen AutoML sich um alles andere kümmern. In diesem Modell ist das Ziel, das wir vorhersagen wollen, nbr_months_active
. Amazon Sage Maker erstellt die Funktion predict_customer_activity
, die wir für die Inferenz in Amazon Redshift verwenden. Siehe folgenden Code:
Um dieses Skript in Ihrer Umgebung zu reproduzieren, ersetzen Sie < > mit dem IAM-Rollen-ARN Ihres Clusters.
Vorhersagen validieren
In diesem Schritt bewerten wir die Genauigkeit unseres ML-Modells anhand unserer Validierungsdaten.
Beim Erstellen des Modells Amazon SageMaker-Autopilot teilt die Eingabedaten automatisch in Trainings- und Validierungssätze auf und wählt das Modell mit der besten objektiven Metrik aus, das im Amazon Redshift-Cluster bereitgestellt wird. Sie können die Anweisung show model in Ihrem Cluster verwenden, um verschiedene Metriken anzuzeigen, einschließlich der Genauigkeitsbewertung. Wenn Sie dies nicht explizit angeben, verwendet SageMaker automatisch die Genauigkeit für den Zieltyp. Siehe folgenden Code:
Wie in der folgenden Ausgabe gezeigt, hat unser Modell einen Genauigkeitswert von 0.996580.
Wesentliche | Wert |
Modell | ecommerce_customer_activity |
Schemaname | Öffentliche |
Eigentümer | Demo |
Erstellungszeitpunkt | Mo, 22.03.2021 19:48:30 |
Modellstatus | BEREIT |
Ausbildungsjobstatus | MaxAutoMLJobRuntimeReached |
Validierung: Genauigkeit | 0.996580 |
Geschätzte Kosten | 4.260437 |
TRAININGSDATEN: | |
Abfrage | WÄHLEN SIE KUNDENID, LAND, STOCKCODE, BESCHREIBUNG, RECHNUNGSDATUM, SALES_AMT, NBR_MONTHS_ACTIVE |
VON ECOMMERCE_SALES_CLN_TRAINING | |
Zielspalte | NBR_MONTHS_ACTIVE |
PARAMETER: | |
Modelltyp | Auto |
Problemtyp | Multiklassifizierung |
Problemtyp | Genauigkeit |
AutoML-Auftragsname | 2021-03-07-19-48-30-960148-auto |
Funktionsname | Predict_customer_activity |
Funktionsparameter | Kunden-ID Land Lagercode Beschreibung Rechnungsdatum sales_amt |
Funktionsparametertypen | int8 varchar varchar varchar varchar float8 |
Lassen Sie uns Rückschlussabfragen für unsere Validierungsdaten ausführen, indem wir den folgenden SQL-Code für die Validierungsdaten verwenden:
Wir können sehen, dass wir in unserem Datensatz zu 99.74% richtig vorhergesagt haben, was unserem Genauigkeitswert aus dem Show-Modell entspricht.
vorhergesagte_matches | vorhergesagt_non_matches | total_predictions | pct_accuracy |
43489.00 | 132.00 | 43621.00 | 0.99697393 |
Lassen Sie uns nun eine Abfrage durchführen, um zu sehen, welche Kunden sich für unser Kundenbindungsprogramm qualifizieren, wenn sie mindestens 7 Monate aktiv sind:
Die folgende Tabelle zeigt unsere Ausgabe.
Kundennummer | vorhergesagt_monate_aktiv |
16895 | 8 |
18283 | 10 |
15044 | 11 |
16746 | 11 |
14702 | 11 |
16607 | 10 |
12901 | 10 |
15078 | 13 |
16393 | 10 |
15005 | 12 |
Problemlösung
Obwohl die Create Model
-Anweisung in Amazon Redshift automatisch den SageMaker Autopilot-Prozess einleitet, um das beste ML-Modell zu erstellen, zu trainieren und abzustimmen und dieses Modell in Amazon Redshift bereitzustellen, können Sie die in diesem Prozess durchgeführten Zwischenschritte anzeigen, die Ihnen auch bei der Fehlerbehebung helfen können Wenn etwas schief läuft. Sie können den AutoML-Auftragsnamen auch aus der Ausgabe des Befehls show model abrufen.
Beim Erstellen des Modells müssen Sie einen Amazon Simple Storage-Service (Amazon S3) Bucket-Name als Wert für Parameter, s3_bucket
. Sie verwenden diesen Bucket, um Trainingsdaten und Artefakte zwischen Amazon Redshift und SageMaker auszutauschen. Amazon Redshift erstellt in diesem Bucket einen Unterordner, bevor die Trainingsdaten entladen werden. Wenn das Training abgeschlossen ist, löscht es den Unterordner und seinen Inhalt, es sei denn, Sie legen den Parameter fest s3_garbage_collect
zu off
, die Sie zur Fehlerbehebung verwenden können. Weitere Informationen finden Sie unter MODELL ERSTELLEN.
Informationen zur Verwendung der SageMaker-Konsole und Amazon SageMaker-Studio, Siehe Erstellen Sie Regressionsmodelle mit Amazon Redshift ML.
Zusammenfassung
Amazon Redshift ML bietet Datenbankbenutzern die richtige Plattform zum Erstellen, Trainieren und Optimieren von Modellen mithilfe einer SQL-Schnittstelle. In diesem Beitrag haben wir Sie durch die Erstellung eines Klassifizierungsmodells mit mehreren Klassen geführt. Wir hoffen, dass Sie Amazon Redshift ML nutzen können, um wertvolle Erkenntnisse zu gewinnen.
Weitere Informationen zum Erstellen verschiedener Modelle mit Amazon Redshift ML finden Sie unter Erstellen Sie Regressionsmodelle mit Amazon Redshift ML und lesen Sie die Amazon RedShift ML-Dokumentation.
Anerkennungen
Laut UCI Machine Learning Repository wurden diese Daten von Dr. Daqing Chen, Direktor: Public Analytics Group, zur Verfügung gestellt. chend '@' lsbu.ac.uk, School of Engineering, London South Bank University, London SE1 0AA, UK.
Dua, D. und Graff, C. (2019). UCI-Repository für maschinelles Lernen [http://archive.ics.uci.edu/ml]. Irvine, CA: University of California, School of Information and Computer Science.
Über die Autoren
Phil Bates ist Senior Analytics Specialist Solutions Architect bei AWS mit über 25 Jahren Data Warehouse-Erfahrung.
Debu Panda, Principal Product Manager bei AWS, ist ein Branchenführer in den Bereichen Analyse-, Anwendungsplattform- und Datenbanktechnologien und verfügt über mehr als 25 Jahre Erfahrung in der IT-Welt.
NIkos Koulouris ist Softwareentwicklungsingenieur bei AWS. Er promovierte an der University of California, San Diego und arbeitete in den Bereichen Datenbanken und Analytik.
Enrico Sartorello ist Senior Software Development Engineer bei Amazon Web Services. Er unterstützt Kunden bei der Einführung von Lösungen für maschinelles Lernen, die ihren Anforderungen entsprechen, indem er neue Funktionen für Amazon SageMaker entwickelt. In seiner Freizeit folgt er leidenschaftlich seiner Fußballmannschaft und verbessert gerne seine Kochkünste.
Münzsmart. Beste Bitcoin-Börse in Europa
Quelle: https://aws.amazon.com/blogs/machine-learning/build-multi-class-classification-models-with-amazon-redshift-ml/