Mit BigQuery ML und AI Platform eine Propensity-to-Buy-Vorhersage für Kunden erstellen

Erfahren Sie, wie Sie mithilfe von BigQuery ML und AI Platform ein System erstellen, mit dem sich die Kundeneignung zum Kauf vorhersagen lässt.

Sie können ein System zur Kaufneigung nutzen, um Kunden vorherzusagen, die sehr wahrscheinlich etwas kaufen werden, sodass Sie die Kommunikation mit ihnen personalisieren können. Verwenden Sie Onlinevorhersagen, um Aktionen anhand des Nutzerverhaltens auf Ihrer Website in Echtzeit durchzuführen oder Batchvorhersagen so durchzuführen, um weniger zeitkritische Mitteilungen wie E-Mails zu unterstützen.

In dieser Anleitung erfahren Sie, wie Sie ein logistisches Regressionsmodell erstellen, um festzustellen, ob ein Kunde etwas kaufen wird. Diese Art von Modell wird verwendet, da es nützlich ist, um die Wahrscheinlichkeit eines Ergebnisses zu bewerten. Das Modell wertet Messwerte aus, die das Kundenverhalten auf einer Website widerspiegeln. Es weist auch dem Kunden anhand dieser Daten einen Wert für die Kaufwahrscheinlichkeit zwischen 0 und 1 zu. Das Modell legt dann ein Label für die Kaufwahrscheinlichkeit fest, das für jeden Kunden mit einer Wahrscheinlichkeit von mindestens 0,5 zu sehen ist.

In dieser Anleitung werden die Google Analytics-Beispiel- und E-Commerce-Datasets verwendet, um das Modell zu trainieren. Diese Datasets werden öffentlich in BigQuery gehostet. Die Datasets bieten verschleierte Analytics 360-Daten aus einem Zeitraum von 12 Monaten (August 2016 bis August 2017). Diese Daten stammen aus dem Google Merchandise Store, einem echten E-Commerce-Shop, in dem Merchandise-Artikel von Google verkauft werden.

Sie können Ihre eigenen Analytics 360-Daten oder Daten von einem ähnlichen System verwenden, um die Lektionen aus dieser Anleitung auf einen Anwendungsfall in der Produktion anzuwenden. So erhalten Sie Zugriff auf Messwerte zum Kundenverhalten auf Ihrer Website.

Ziele

Die Lösung umfasst folgende Schritte:

  • Beispieldaten in ein für das Training des Modells geeignetes Format verarbeiten.
  • Modell in BigQuery erstellen, trainieren und bereitstellen.
  • Modell bereitstellen, um seine Leistung zu verstehen.
  • Mit dem in BigQuery bereitgestellten trainierten Modell Batchvorhersagen erhalten.
  • Trainiertes Modell in AI Platform bereitstellen.
  • Das in AI Platform bereitgestellte trainierte Modell für Onlinevorhersagen verwenden.

Kosten

In dieser Anleitung werden die folgenden kostenpflichtigen Komponenten von Google Cloud verwendet:

  • AI Platform
  • BigQuery
  • BigQuery ML
  • Cloud Storage

Mit dem Preisrechner können Sie eine Kostenschätzung für Ihre voraussichtliche Nutzung vornehmen. Neuen Google Cloud-Nutzern steht möglicherweise eine kostenlose Testversion zur Verfügung.

Vorbereitung

  1. Melden Sie sich bei Ihrem Google Cloud-Konto an. Wenn Sie mit Google Cloud noch nicht vertraut sind, erstellen Sie ein Konto, um die Leistungsfähigkeit unserer Produkte in der Praxis sehen und bewerten zu können. Neukunden erhalten außerdem ein Guthaben von 300 $, um Arbeitslasten auszuführen, zu testen und bereitzustellen.
  2. Wählen Sie in der Google Cloud Console auf der Seite der Projektauswahl ein Google Cloud-Projekt aus oder erstellen Sie eines.

    Zur Projektauswahl

  3. Die Abrechnung für das Cloud-Projekt muss aktiviert sein. So prüfen Sie, ob die Abrechnung für Ihr Projekt aktiviert ist.

  4. Aktivieren Sie die AI Platform Training and Prediction API.

    Aktivieren Sie die API

Nach Abschluss dieser Anleitung können Sie weitere Kosten vermeiden, indem Sie die erstellten Ressourcen löschen. Weitere Informationen finden Sie unter Bereinigen.

Beispieldaten vorbereiten

Zum Trainieren des Modells benötigen Sie eine Tabelle mit den folgenden Spalten:

  • fullVisitorId – Enthält die Kunden-ID.
  • bounces – Gibt an, wie oft ein Besucher auf eine Suchanzeige oder soziale Anzeige geklickt und eine Sitzung auf der Website gestartet, aber ohne Interaktion mit anderen Seiten wieder verlassen hat. Diese Spalte wird als eines der Features des Modells verwendet.
  • time_on_site – Ermittelt die Gesamtdauer der Sitzung des Kunden auf der Website in Sekunden. Diese Spalte wird als Feautures des Modells verwendet.
  • will_buy_on_return_visit – Ein Label, das die Kaufbereitschaft des Kunden angibt. Der Wert von 1 gibt an, dass der Kunde sehr wahrscheinlich etwas kauft. Der Wert 0 gibt an, dass der Kunde wahrscheinlich nichts kauft.

So erstellen Sie diese Tabelle mit Daten aus dem Google Analytics-Beispiel-Dataset:

  1. Öffnen Sie im Google Cloud Marketplace das Google Analytics-Beispiel-Dataset und klicken Sie auf Dataset aufrufen. Dadurch wird die BigQuery-Konsole mit dem ausgewählten Google Analytics-Beispiel-Dataset geöffnet.
  2. Wählen Sie im Abschnitt Ressourcen das Projekt aus, in dem Sie diese Anleitung durcharbeiten.
  3. Klicken Sie auf Dataset erstellen.

    Position der Schaltfläche "Dataset erstellen" anzeigen

  4. Führen Sie auf der Seite Dataset erstellen die folgenden Schritte aus:

    1. Geben Sie als Dataset-ID den String bqml ein.
    2. Wählen Sie für Speicherort der Daten den Speicherort aus, der Ihnen am nächsten ist.
    3. Klicken Sie auf Dataset erstellen.
  5. Führen Sie im Abfrageeditor die folgende SQL-Anweisung aus, um eine Tabelle mit den Trainingsdaten zu erstellen.

    # select initial features and label to feed into your model
    CREATE OR REPLACE TABLE bqml.propensity_data AS
      SELECT
        fullVisitorId,
        bounces,
        time_on_site,
        will_buy_on_return_visit
      FROM (
            # select features
            SELECT
              fullVisitorId,
              IFNULL(totals.bounces, 0) AS bounces,
              IFNULL(totals.timeOnSite, 0) AS time_on_site
            FROM
              `data-to-insights.ecommerce.web_analytics`
            WHERE
              totals.newVisits = 1
            AND date BETWEEN '20160801' # train on first 9 months of data
            AND '20170430'
           )
      JOIN (
            SELECT
              fullvisitorid,
              IF (
                  COUNTIF (
                           totals.transactions > 0
                           AND totals.newVisits IS NULL
                          ) > 0,
                  1,
                  0
                 ) AS will_buy_on_return_visit
            FROM
              `bigquery-public-data.google_analytics_sample.*`
            GROUP BY
              fullvisitorid
           )
      USING (fullVisitorId)
      ORDER BY time_on_site DESC;
    
  6. Führen Sie die folgende SQL-Anweisung aus, um ein Beispiel des Datums in der resultierenden Tabelle bqml.propensity_data anzusehen:

    SELECT
     *
    FROM
      bqml.propensity_data
    LIMIT
      10;
    

    Die Ergebnisse sollten in etwa so aussehen:

    Die ersten zehn Zeilen der verarbeiteten Trainingsdaten

Modell erstellen und trainieren

Erstellen Sie ein Modell, das anhand des Onlineverhaltens des Kunden gemäß den Daten von bounces und time_on_site Vorhersagen zur Kaufneigung des Kunden erstellt.

Führen Sie die SQL-Anweisung CREATE MODEL aus, um das logistische Regressionsmodell zu erstellen, zu trainieren und bereitzustellen:

CREATE OR REPLACE MODEL `bqml.rpm_bqml_model`
OPTIONS(MODEL_TYPE = 'logistic_reg',
        labels = [ 'will_buy_on_return_visit' ]
        )
AS
SELECT * EXCEPT (fullVisitorId)
FROM `bqml.propensity_data`;

Das Training kann einige Minuten dauern. Nach Abschluss des Trainings wird das trainierte Modell in BigQuery als bqml.rpm_bqml_model bereitgestellt.

Modell bewerten

Informieren Sie sich anhand des Leistungsmesswertes AUC: Area Under the RRO Curve über die Leistung des Modells. Der AUC-Wert eines Modells kann zwischen 0 (keine Vorhersagen waren richtig) und 1 (alle Vorhersagen waren richtig) liegen.

In einer solchen Anleitung mit einem nicht optimierten Modell erhalten Sie wahrscheinlich gute, aber keine sehr guten Ergebnisse durch das Modell. Für einen Anwendungsfall in der Produktion sollten Sie das Modell mit Hyperparameter-Feinabstimmung, Feature Engineering und anderen Techniken optimieren, um eine Punktzahl von 0,9 oder höher zu erreichen.

Führen Sie die SQL-Anweisung ML.EVALUATE aus, um das Modell zu bewerten:

SELECT
  roc_auc,
  # evaluating the auc value based on the scale at http://gim.unmc.edu/dxtests/roc3.htm
  CASE WHEN roc_auc >.9 THEN 'excellent' WHEN roc_auc >.8 THEN 'good'
  WHEN roc_auc >.7 THEN 'fair' WHEN roc_auc >.6 THEN 'poor' ELSE 'fail' END
  AS modelquality
FROM ML.EVALUATE(MODEL `bqml.rpm_bqml_model`);

Die Ergebnisse sollten in etwa so aussehen:

Die ersten zehn Zeilen der verarbeiteten Trainingsdaten

Trainiertes Modell für Batchvorhersagen verwenden

Verwenden Sie Batchvorhersagen, um Daten für eine E-Mail-Kampagne oder ein anderes Nicht-Echtzeit-Szenario abzurufen.

Führen Sie die SQL-Anweisung ML.PREDICT aus, um Batchvorhersagen für die Beispieldaten in der Tabelle bqml.propensity_data zu erhalten:

# predict the inputs (rows) from the input table
SELECT
  fullVisitorId,
  predicted_will_buy_on_return_visit
FROM ML.PREDICT(MODEL bqml.rpm_bqml_model,
(
   SELECT
   fullVisitorId,
   bounces,
   time_on_site
   from bqml.propensity_data
))

Die Ergebnisse sollten in etwa so aussehen:

Die ersten zehn Zeilen der verarbeiteten Trainingsdaten

Die obige ML.PREDICT-Anweisung verwendet die Standardebene threshold von 0,5. Der Wert threshold bestimmt die Begrenzung zwischen den beiden möglichen Labelwerten, wobei Vorhersagen über dem Wert threshold als positiv gekennzeichnet werden. Bei einem Produktionsmodell können Sie den threshold-Wert in Verbindung mit anderen Techniken wie der Hyperparameter-Feinabstimmung anpassen, um das Modell zu optimieren.

Trainiertes Modell für Onlinevorhersagen verwenden

Verwenden Sie Onlinevorhersagen, um Aktionen anhand des Nutzerverhaltens auf Ihrer Website in Echtzeit auszuführen. Wenn Sie Onlinevorhersagen abrufen möchten, müssen Sie das Modell aus BigQuery nach Cloud Storage exportieren und dann in AI Platform bereitstellen. Anschließend können Sie Vorhersageanfragen an das bereitgestellte Modell senden.

Führen Sie die folgenden Schritte aus, um das Modell zu exportieren und bereitzustellen:

  1. Cloud Shell aktivieren
  2. Führen Sie in Cloud Shell den folgenden Befehl aus, um einen Cloud Storage-Bucket zum Speichern des exportierten Modells zu erstellen. Ersetzen Sie myProject durch die ID des Projekts, das Sie für diese Anleitung verwenden.

    gsutil mb 'gs://myProject-bucket'
    
  3. Exportieren Sie das Modell in einen Cloud Storage-Bucket und ersetzen Sie myBucket durch den Namen des Buckets, den Sie in Schritt 2 erstellt haben:

     bq extract -m bqml.rpm_bqml_model gs://myBucket/V_1
    
  4. Erstellen Sie das Modell in AI Platform:

    gcloud ai-platform models create rpm_bqml_model
    
  5. Stellen Sie das exportierte Modell in AI Platform bereit und ersetzen Sie myBucket durch den Namen des Buckets, den Sie in Schritt 2 erstellt haben:

    gcloud ai-platform versions create --model=rpm_bqml_model V_1 --framework=tensorflow --python-version=3.7 --runtime-version=1.15 --origin=gs://myBucket/V_1/ --staging-bucket=gs://myBucket
    
  6. Erstellen Sie eine input.json-Datei mit Beispielkundendaten:

    echo "{\"bounces\": 0, \"time_on_site\": 7363}" > input.json
    
  7. Fordern Sie die Vorhersagen an:

    gcloud ai-platform predict --model rpm_bqml_model --version V_1 --json-instances input.json
    

    Die Ausgabe dieses Befehls sieht in etwa so aus:

    PREDICTED_WILL_BUY_ON_RETURN_VISIT  WILL_BUY_ON_RETURN_VISIT_PROBS            WILL_BUY_ON_RETURN_VISIT_VALUES
    ['1']                               [0.661069205638202, 0.33893079436179796]  ['1', '0']
    

    Das Modell gibt 1 für PREDICTED_WILL_BUY_ON_RETURN_VISIT zurück und sagt vorher, dass dieser Beispielkunde eine Kaufwahrscheinlichkeit von 66 % hat.

    Sie können den Wahrscheinlichkeitswert eines Kunden mit einer positiven Vorhersage verwenden, um zu entscheiden, ob Sie einen Gutschein oder ein anderes Incentive anbieten möchten. Kunden mit einer Wahrscheinlichkeit von mehr als 80 % werden wahrscheinlich ohne Incentives etwas kaufen. Daher sollten Sie Incentives für Kunden mit Wahrscheinlichkeiten zwischen 50 % und 80 % anbieten.

Optionale nächste Schritte

Lösung in ein CRM-System einbinden

Sie können diese Lösung optional erweitern. Sie können dazu Vorhersagen zu Kaufneigungen mit CRM-Systemdaten (Customer-Relationship-Management) wie E-Mail-Adressen einbinden, um den Kundenkontakt zu vereinfachen. Ein Beispiel für diese Art der Integration finden Sie unter Salesforce Marketing Cloud audience integration. In diesem Artikel wird beschrieben, wie Sie Google Analytics 360 in Salesforce Marketing Cloud einbinden, damit Sie Analytics 360-Zielgruppen in Salesforce-E-Mail- und SMS-Marketing-Kampagnen verwenden können.

Workflow mit einer Pipeline automatisieren

Optional können Sie den in dieser Anleitung gezeigten Workflow für die Datenvorbereitung -> Modellerstellung und -training -> Anfragen automatisieren, indem Sie eine AI Platform-Pipeline erstellen. Mit dem Notebook bqml_kfp_retail_propensity_to_purchase erhalten Sie eine Schritt-für-Schritt-Anleitung zur Automatisierung eines ML-Workflows zur Kaufneigung.

Bereinigen

Damit Ihrem Google Cloud-Konto die in dieser Anleitung verwendeten Ressourcen nicht in Rechnung gestellt werden, löschen Sie entweder das Projekt, das die Ressourcen enthält, oder behalten Sie das Projekt bei und löschen Sie nur diese Ressourcen.

In beiden Fällen sollten Sie diese Ressourcen entfernen, damit sie Ihnen nicht weiter in Rechnung gestellt werden. In den folgenden Abschnitten erfahren Sie, wie Sie diese Ressourcen löschen.

Projekt löschen

Am einfachsten vermeiden Sie weitere Kosten, wenn Sie das für die Anleitung erstellte Projekt löschen.

  1. Wechseln Sie in der Cloud Console zur Seite Ressourcen verwalten.

    Zur Seite „Ressourcen verwalten“

  2. Wählen Sie in der Projektliste das Projekt aus, das Sie löschen möchten, und klicken Sie dann auf Löschen.
  3. Geben Sie im Dialogfeld die Projekt-ID ein und klicken Sie auf Shut down (Beenden), um das Projekt zu löschen.

Komponenten löschen

Wenn Sie das Projekt nicht löschen möchten, verwenden Sie die folgenden Abschnitte, um die abrechenbaren Komponenten dieser Anleitung zu löschen.

BigQuery-Dataset löschen

  1. Öffnen Sie die BigQuery Console.
  2. Maximieren Sie im Abschnitt Ressourcen das Projekt, in dem Sie diese Anleitung durcharbeiten, und wählen Sie das Dataset bqml aus.
  3. Klicken Sie im Header-Bereich des Datasets auf Dataset löschen.
  4. Geben Sie im eingeblendeten Fenster bqml ein und klicken Sie dann auf Löschen.

AI Platform-Modell löschen

  1. Öffnen Sie die Seite mit den AI Platform-Modellen.
  2. Klicken Sie in der Modellliste auf rpm_bqml_model.
  3. Klicken Sie auf der Seite Modelldetails das Kästchen für die Version V_1 (default) an.
  4. Klicken Sie auf Mehr und anschließend auf Löschen.
  5. Klicken Sie nach dem Löschen der Version auf Zurück, um zur Modellliste zurückzukehren.
  6. Klicken Sie auf das Kästchen für das Modell rpm_bqml_model.
  7. Klicken Sie auf Mehr und anschließend auf Löschen.

Cloud Storage-Bucket löschen

  1. Zur Seite "Storage-Browser"
  2. Klicken Sie auf das Kästchen des Buckets <myProject>-bucket.
  3. Klicken Sie auf Löschen.
  4. Geben Sie im eingeblendeten Fenster DELETE ein und klicken Sie dann auf Bestätigen.

Nächste Schritte