Erste Schritte mit Amazon Redshift ML - Amazon Redshift

Amazon Redshift unterstützt ab dem 1. November 2025 nicht mehr die Erstellung neuer Python-UDFs. Wenn Sie Python-UDFs verwenden möchten, erstellen Sie die UDFs vor diesem Datum. Bestehende Python-UDFs funktionieren weiterhin wie gewohnt. Weitere Informationen finden Sie im Blog-Posting.

Erste Schritte mit Amazon Redshift ML

Amazon Redshift ML erleichtert SQL-Benutzern das Erstellen, Trainieren und Bereitstellen von Machine-Learning-Modellen mit vertrauten SQL-Befehlen. Mit Amazon Redshift ML können Sie Ihre Daten im Redshift-Cluster verwenden, um Modelle mit Amazon SageMaker AI zu trainieren. Danach können Sie die Modelle lokalisieren und Prognosen innerhalb einer Amazon-Redshift-Datenbank erstellen. Amazon Redshift ML unterstützt derzeit die Machine-Learning-Algorithmen XGBoost (AUTO ON und OFF), Multi-Layer-Perceptron (AUTO ON), K-Means (AUTO OFF) und den Algorithmus für lineares Lernen.

Einrichtung für die Amazon-Redshift-ML-Administration in Cluster aufteilen und konfigurieren

Bevor Sie mit Amazon Redshift ML arbeiten, schließen Sie die Cluster-Einrichtung ab und konfigurieren Sie die Berechtigungen für die Verwendung von Amazon Redshift ML.

Cluster-Einrichtung für die Verwendung von Amazon Redshift ML

Bevor Sie mit Amazon Redshift ML arbeiten können, müssen die folgenden Voraussetzungen erfüllt sein.

Führen Sie als Amazon-Redshift-Administrator die folgende einmalige Einrichtung für die Verwendung von durch Amazon Redshift bereitgestellten Clustern durch. Informationen zur Verwendung von Amazon Redshift ML mit Amazon Redshift Serverless finden Sie unter Erste Schritte mit Amazon Redshift Serverless.

So führen Sie eine einmalige ClusterEinrichtung für Amazon Redshift ML durch

  1. Erstellen Sie einen Redshift-Cluster mit der AWS-Managementkonsole oder der AWS Command Line Interface (AWS CLI). Weisen Sie bei der Erstellung des Clusters die IAM-Richtlinie (AWS Identity and Access Management) zu. Weitere Informationen zu den erforderlichen Berechtigungen für die Verwendung von Amazon Redshift ML mit Amazon SageMaker AI finden Sie unter Für die Verwendung von Amazon Redshift Machine Learning (ML) erforderliche Berechtigungen.

  2. Erstellen Sie die IAM-Rolle, die für die Nutzung von Amazon Redshift ML erforderlich ist, mit einer der folgenden Methoden:

    • Erstellen Sie eine IAM-Rolle mit AmazonS3FullAccess- und AmazonSageMakerFullAccess-Richtlinien, um SageMaker AI mit Amazon Redshift ML zu nutzen. Wenn Sie planen, auch Prognosemodelle zu erstellen, fügen Sie die Richtlinie AmazonForecastFullAccess ebenfalls Ihrer Rolle hinzu.

    • Erstellen Sie eine IAM-Rolle mit AmazonS3FullAccess- und AmazonBedrockFullAccess-Richtlinien, um Amazon Bedrock mit Amazon Redshift ML zu nutzen.

    • Wir empfehlen, dass Sie eine IAM-Rolle über die Amazon-Redshift-Konsole erstellen, die über die AmazonRedshiftAllCommandsFullAccess-Richtlinie mit Berechtigungen zum Ausführen von SQL-Befehlen wie z. B. CREATE MODEL verfügt. Amazon Redshift nutzt einen nahtlosen API-basierten Mechanismus, um programmatisch IAM-Rollen in Ihrem AWS-Konto und Namen zu erstellen. Amazon Redshift fügt automatisch vorhandene von AWS verwaltete Richtlinien für die IAM-Rolle an. Bei dieser Methode können Sie in der Amazon-Redshift-Konsole bleiben und müssen zur Rollenerstellung nicht zur IAM-Konsole wechseln. Weitere Informationen finden Sie unter Erstellen einer IAM-Rolle als Standard für Amazon Redshift.

      Wenn eine IAM-Rolle als Standard für Ihren Cluster erstellt wird, schließen Sie redshift als Teil des Ressourcennamens ein oder verwenden Sie ein Redshift-spezifisches Tag, um diese Ressourcen zu kennzeichnen.

      Um Amazon-Bedrock-Basismodelle zu verwenden, fügen Sie den folgenden Abschnitt hinzu:

      // Required section if you use Bedrock models. { "Effect": "Allow", "Action": "bedrock:InvokeModel", "Resource": [ "arn:aws:bedrock:<region>::foundation-model/*" ] }
    • Wenn Sie eine IAM-Rolle mit einer restriktiveren Richtlinie erstellen möchten, können Sie die folgende Richtlinie verwenden. Sie können diese Richtlinie auch entsprechend Ihren Anforderungen anpassen.

      Der Amazon-S3-Bucket redshift-downloads/redshift-ml/ ist der Ort, an dem die Beispieldaten für andere Schritte und Beispiele gespeichert werden. Sie können ihn entfernen, wenn Sie keine Daten aus Amazon S3 laden müssen. Sie können ihn auch durch andere Amazon-S3-Buckets ersetzen, die Sie zum Laden von Daten in Amazon Redshift verwenden.

      Bei den Werten your-account-id, your-role und amzn-s3-demo-bucket handelt es sich um die Werte, die Sie als Teil Ihres Befehls CREATE MODEL angeben.

      (Optional) Verwenden Sie den Abschnitt AWS KMS-Schlüssel der Beispielrichtlinie, wenn Sie bei der Verwendung von Amazon Redshift ML einen AWS KMS-Schlüssel angeben möchten. Der Wert your-kms-key ist der Schlüssel, den Sie als Teil Ihres CREATE-MODEL-Befehls verwenden.

      JSON
      { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "cloudwatch:PutMetricData", "ecr:BatchCheckLayerAvailability", "ecr:BatchGetImage", "ecr:GetAuthorizationToken", "ecr:GetDownloadUrlForLayer", "logs:CreateLogGroup", "logs:CreateLogStream", "logs:DescribeLogStreams", "logs:PutLogEvents", "sagemaker:*Job*", "sagemaker:AddTags", "sagemaker:CreateModel", "sagemaker:CreateEndpoint", "sagemaker:CreateEndpointConfig", "sagemaker:DeleteEndpoint", "sagemaker:DeleteEndpointConfig", "sagemaker:DeleteModel" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:PassRole", "s3:AbortMultipartUpload", "s3:GetObject", "s3:DeleteObject", "s3:PutObject" ], "Resource": [ "arn:aws:iam::111122223333:role/<your-role>", "arn:aws:s3:::amzn-s3-demo-bucket/*", "arn:aws:s3:::redshift-downloads/*" ] }, { "Effect": "Allow", "Action": [ "s3:GetBucketLocation", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket", "arn:aws:s3:::redshift-downloads" ] }, { "Effect": "Allow", "Action": [ "kms:CreateGrant", "kms:Decrypt", "kms:DescribeKey", "kms:Encrypt", "kms:GenerateDataKey*" ], "Resource": [ "arn:aws:kms:us-east-1:111122223333:key/<your-kms-key>" ] } ] }
  3. Fügen Sie der IAM-Rolle die folgende Vertrauensrichtlinie hinzu, damit Amazon Redshift und SageMaker AI die Rolle zur Interaktion mit anderen Services übernehmen können.

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": [ "redshift.amazonaws.com", "sagemaker.amazonaws.com", "forecast.amazonaws.com" ] }, "Action": "sts:AssumeRole" } ] }
  4. (Optional) Erstellen Sie einen Amazon S3 Bucket und einen AWS KMS-Schlüssel. Diese kann Amazon Redshift verwenden, um die an Amazon SageMaker AI gesendeten Trainingsdaten zu speichern und das trainierte Modell von Amazon SageMaker AI zu erhalten.

  5. (Optional) Erstellen Sie verschiedene Kombinationen von IAM-Rollen und Amazon-S3-Buckets, um den Zugriff auf verschiedene Benutzergruppen zu steuern.

  6. Wenn Sie das erweiterte VPC-Routing aktivieren, wird der Datenverkehr zwischen Redshift ML und Ihrem S3-Bucket über Ihre private VPC geleitet. Weitere Informationen zum VPC-Routing finden Sie unter Enhanced VPC Routing in Amazon Redshift.

    Weitere Informationen zu den Berechtigungen, die zum Angeben einer privaten VPC für die Optimierung von Hyperparametern erforderlich sind, finden Sie unter Für die Verwendung von Amazon Redshift ML mit Amazon SageMaker AI erforderliche Berechtigungen.

    Anmerkung

    Inferenzrufe an Remote-Modelle von SageMaker AI werden nicht über Ihre VPC geleitet.

Informationen zur Verwendung der CREATE-MODEL-Anweisung zum Erstellen von Modellen für verschiedene Anwendungsfälle finden Sie unter CREATE MODEL.

Verwalten von Berechtigungen und Eigentümerschaft

Wie bei anderen Datenbankobjekten wie z. B. Tabellen oder Funktionen bindet Amazon Redshift das Erstellen und Verwenden von ML-Modellen an Mechanismen für die Zugriffssteuerung. Für die Erstellung eines Modells, das Prognosefunktionen ausführt, sind separate Berechtigungen erforderlich.

In den folgenden Beispielen werden zwei Benutzergruppen verwendet: retention_analyst_grp (Modellersteller) und marketing_analyst_grp (Modellbenutzer), um zu veranschaulichen, wie Amazon Redshift die Zugriffskontrolle verwaltet. Der Retention Analyst erstellt Machine-Learning-Modelle, die andere Benutzer verwenden können, wenn sie über entsprechende Berechtigungen verfügen.

Ein Superuser kann GRANT USER- oder GROUP-Berechtigungen für die Erstellung von Machine-Learning-Anweisungen erteilen. Dafür wird die folgende Anweisung verwendet.

GRANT CREATE MODEL TO GROUP retention_analyst_grp;

Benutzer oder Gruppen mit dieser Berechtigung können ein Modell in einem beliebigen Schema im Cluster erstellen, wenn ein Benutzer über die übliche CREATE-Berechtigung für das SCHEMA verfügt. Das Machine-Learning-Modell ist Teil der Schemahierarchie, ähnlich wie bei Tabellen, Ansichten, Prozeduren und benutzerdefinierte Funktionen.

Wenn beispielsweise das Schema demo_ml bereits vorhanden ist, können Sie zwei Benutzergruppen Berechtigungen für das Schema erteilten. Dies sieht so aus:

GRANT CREATE, USAGE ON SCHEMA demo_ml TO GROUP retention_analyst_grp;
GRANT USAGE ON SCHEMA demo_ml TO GROUP marketing_analyst_grp;

Um anderen Benutzern die Verwendung der Machine-Learning-Inferenzfunktion zu ermöglichen, erteilen Sie die EXECUTE-Berechtigung. Im folgenden Beispiel wird die EXECUTE-Berechtigung verwendet, um der marketing_analyst_grp GROUP die Berechtigung zur Verwendung des Modells zu erteilen.

GRANT EXECUTE ON MODEL demo_ml.customer_churn_auto_model TO GROUP marketing_analyst_grp;

Verwenden Sie die REVOKE-Anweisung mit CREATE MODEL und EXECUTE, um Benutzern oder Gruppen diese Berechtigungen wieder zu entziehen. Weitere Informationen zu Befehlen für die Berechtigung finden Sie unter GRANT und REVOKE.

Verwenden der Modellerklärbarkeit mit Amazon Redshift ML

Mit der Modellerklärbarkeit in Amazon Redshift ML verstehen Sie anhand von Werten für die Funktionsbedeutung, wie jedes Attribut in Ihren Trainingsdaten zum prognostizierten Ergebnis beiträgt.

Die Erklärbarkeit von Modellen hilft dabei, Ihre Machine-Learning-Modelle (ML) zu verbessern, indem die von den Modellen getätigten Prognosen näher erläutert werden. Die Erklärbarkeit des Modells hilft mit der Zuordnung von Funktionen zu erläutern, wie diese Modelle Prognosen erstellen.

Amazon Redshift ML nutzt die Erklärbarkeit von Modellen, um Amazon-Redshift-ML-Benutzern Funktionen zur Modellerklärung bereitzustellen. Weitere Informationen zur Erklärbarkeit von Modellen finden Sie unter Was ist Fairness und Modellerklärbarkeit bei Machine-Learning-Prognosen? im Entwicklerhandbuch zu Amazon SageMaker AI.

Die Modellerklärbarkeit überwacht auch die Inferenzen, zu denen es bei in der Produktion eingesetzten Modellen kommt, auf eine Drift der Funktionszuordnung. Sie bietet auch Tools, mit denen Sie Modell-Governance-Berichte zur Information von Risiko- und Compliance-Teams sowie externer Aufsichtsbehörden erstellen können.

Wenn Sie bei Verwendung der Anweisung CREATE MODEL die Option AUTO ON oder AUTO OFF angeben, gibt SageMaker AI nach Abschluss des Modelltrainings die Erklärung aus. Sie können mithilfe der Funktion EXPLAIN_MODEL den Erklärbarkeitsbericht in einem JSON-Format abfragen. Weitere Informationen finden Sie unter Machine-Learning-Funktionen.

Wahrscheinlichkeitsmetriken von Amazon Redshift ML

Bei Supervised-Learning-Problemen sind Klassen-Labels die Ergebnisse von Vorhersagen, die Eingabedaten verwenden. Wenn Sie beispielsweise ein Modell verwenden, um vorherzusagen, ob ein Kunde einen Streaming-Dienst erneut abonnieren wird, sind mögliche Labels „likely“ (wahrscheinlich) und „unlikely“ (unwahrscheinlich). Redshift ML bietet die Möglichkeit zur Verwendung von Wahrscheinlichkeitsmetriken, die jedem Label eine Wahrscheinlichkeit zuweisen, um die Wahrscheinlichkeit seines Eintretens anzugeben. Dies hilft Ihnen, fundiertere Entscheidungen auf der Grundlage der prognostizierten Ergebnisse zu treffen. In Amazon Redshift ML sind Wahrscheinlichkeitsmetriken verfügbar, wenn AUTO-ON-Modelle mit dem Problemtyp binäre Klassifikation oder Mehrklassen-Klassifizierung erstellt werden. Wenn Sie den Parameter AUTO ON weglassen, geht Redshift ML davon aus, dass für das Modell AUTO ON gelten sollte.

Erstellen des Modells

Beim Erstellen eines Modells erkennt Amazon Redshift automatisch den Modelltyp und den Problemtyp. Wenn es sich um ein Klassifizierungsproblem handelt, erstellt Redshift automatisch eine zweite Inferenzfunktion, mit deren Hilfe Sie Wahrscheinlichkeiten in Relation zu den einzelnen Labels ausgeben können. Der Name dieser zweiten Inferenzfunktion ist der Name Ihrer angegebenen Inferenzfunktion, gefolgt von der Zeichenfolge _probabilities. Wenn Sie beispielsweise Ihre Inferenzfunktion als customer_churn_predict bezeichnen, lautet der Name der zweiten Inferenzfunktion customer_churn_predict_probabilities. Sie können diese Funktion dann abfragen, um die Wahrscheinlichkeiten der einzelnen Labels zu erhalten.

CREATE MODEL customer_churn_model FROM customer_activity PROBLEM_TYPE BINARY_CLASSIFICATION TARGET churn FUNCTION customer_churn_predict IAM_ROLE {default} AUTO ON SETTINGS ( S3_BUCKET 'amzn-s3-demo-bucket'

Abrufen von Wahrscheinlichkeiten

Wenn die Wahrscheinlichkeitsfunktion einsatzbereit ist, wird bei Ausführung des Befehls ein SUPER-Typ zurückgegeben, der Arrays der zurückgegebenen Wahrscheinlichkeiten und der zugehörigen Labels enthält. Das Ergebnis "probabilities" : [0.7, 0.3], "labels" : ["False.", "True."] bedeutet beispielsweise, dass das Label „False“ (Falsch) eine Wahrscheinlichkeit von 0,7 und das Label „True“ (Wahr) eine Wahrscheinlichkeit von 0,3 aufweist.

SELECT customer_churn_predict_probabilities(Account_length, Area_code, VMail_message, Day_mins, Day_calls, Day_charge,Eve_mins, Eve_calls, Eve_charge, Night_mins, Night_calls, Night_charge,Intl_mins, Intl_calls, Intl_charge, Cust_serv_calls) FROM customer_activity; customer_churn_predict_probabilities -------------------- {"probabilities" : [0.7, 0.3], "labels" : ["False.", "True."]} {"probabilities" : [0.8, 0.2], "labels" : ["False.", "True."]} {"probabilities" : [0.75, 0.25], "labels" : ["True.", "False"]}

Die Arrays der Wahrscheinlichkeiten und Labels sind immer in absteigender Reihenfolge nach ihren Wahrscheinlichkeiten sortiert. Sie können eine Abfrage schreiben, die nur das prognostizierte Label mit der höchsten Wahrscheinlichkeit zurückgibt, indem Sie die Verschachtelung der von SUPER zurückgegebenen Ergebnisse der Wahrscheinlichkeitsfunktion aufheben.

SELECT prediction.labels[0], prediction.probabilities[0] FROM (SELECT customer_churn_predict_probabilities(Account_length, Area_code, VMail_message, Day_mins, Day_calls, Day_charge,Eve_mins, Eve_calls, Eve_charge, Night_mins, Night_calls, Night_charge,Intl_mins, Intl_calls, Intl_charge, Cust_serv_calls) AS prediction FROM customer_activity); labels | probabilities -----------+-------------- "False." | 0.7 "False." | 0.8 "True." | 0.75

Um die Abfragen zu vereinfachen, können Sie die Ergebnisse der Vorhersagefunktion in einer Tabelle speichern.

CREATE TABLE churn_auto_predict_probabilities AS (SELECT customer_churn_predict_probabilities(Account_length, Area_code, VMail_message, Day_mins, Day_calls, Day_charge,Eve_mins, Eve_calls, Eve_charge, Night_mins, Night_calls, Night_charge,Intl_mins, Intl_calls, Intl_charge, Cust_serv_calls) AS prediction FROM customer_activity);

Sie können die Tabelle mit den Ergebnissen abfragen, um nur Vorhersagen mit einer Wahrscheinlichkeit von mehr als 0,7 zurückzugeben.

SELECT prediction.labels[0], prediction.probabilities[0] FROM churn_auto_predict_probabilities WHERE prediction.probabilities[0] > 0.7; labels | probabilities -----------+-------------- "False." | 0.8 "True." | 0.75

Mithilfe der Indexnotation können Sie die Wahrscheinlichkeit eines bestimmten Labels ermitteln. Im folgenden Beispiel werden die Wahrscheinlichkeiten aller True.-Labels zurückgegeben.

SELECT label, index, p.prediction.probabilities[index] FROM churn_auto_predict_probabilities p, p.prediction.labels AS label AT index WHERE label='True.'; label | index | probabilities ---------+-------+--------------- "True." | 0 | 0.3 "True." | 0 | 0.2 "True." | 0 | 0.75

Im folgenden Beispiel werden alle Zeilen mit einem True-Label mit einer Wahrscheinlichkeit von mehr als 0,7 zurückgegeben, einem Hinweis dafür, dass der Kunde wahrscheinlich abwandern wird.

SELECT prediction.labels[0], prediction.probabilities[0] FROM churn_auto_predict_probabilities WHERE prediction.probabilities[0] > 0.7 AND prediction.labels[0] = "True."; labels | probabilities -----------+-------------- "True." | 0.75