[PYTHON] Ich habe versucht, BigQuery ML zu verwenden

Einführung

In Grundlegendes maschinelles Lernverfahren: (1) Klassifizierungsmodell werden Daten aus BigQuery in die Python-Umgebung importiert und durch Scicit-Learn analysiert.

In letzter Zeit ist es jedoch wie bei BigQueryML möglich geworden, maschinelles Lernen nur in BigQuery durchzuführen. Dieses Mal werde ich BigQuery ML ausprobieren.

Analytische Umgebung

Google BigQuery Google Colaboratory

Referenzierte Seite

Zieldaten

Erstellen Sie ähnlich wie bei Zurück das Ergebnis als Antwort der Kampagne und das Produkt1 ~ als Kaufpreis des Produkts.

id result product1 product2 product3 product4 product5
001 1 2500 1200 1890 530 null
002 0 750 3300 null 1250 2000

1. Erstellen Sie ein Modell

Bisher hatte BigQuery nur TABLE und VIEW, kann aber auch im MODEL-Format gespeichert werden. (Es gibt andere Formate wie FUNCTION)

from google.cloud import bigquery

query=f"""CREATE OR REPLACE MODEL `myproject.mydataset.mymodel`
OPTIONS
  (model_type='logistic_reg', labels = ['result']) AS #Zielvariable (erwartete Variable)

#Vorhersage mit den folgenden Variablen
SELECT result, product1, product2, product3, product4, product5
FROM `myproject.mydataset.mytable_training`
"""

job = client.query(query)
result = job.result()

Die folgenden drei können für model_type ausgewählt werden. (Es scheint, dass Sie das Tensorflow-Modell verwenden können, aber ich werde es hier weglassen.)

--logistic_reg: Logistische Regressionsanalyse (Zielvariable ist kategoriale Variable) --linear_reg: Lineare Regressionsanalyse (Zielvariable ist eine numerische Variable) --kmeans: Clusteranalyse

Dieses Mal wird logistic_reg verwendet, da festgelegt wird, ob auf die Aktion reagiert werden soll oder nicht.

2. Bewerten Sie das Modell

Rufen Sie das von ML.EVALUATE erstellte Modell auf und überprüfen Sie es anhand der Testdaten.

query=f"""
SELECT
  roc_auc, precision, recall
FROM
  ML.EVALUATE(MODEL `myproject.mydataset.mymodel`,  ( #Rufen Sie das erstellte Modell auf

#Validieren Sie mit verschiedenen Testdaten
SELECT result, product1, product2, product3, product4, product5
FROM `myproject.mydataset.mytable_test`
))
"""

job = client.query(query)
result = job.result()

Genauigkeit, Präzision und Rückruf werden verwendet, um die Genauigkeit der Testdaten zu bewerten.

3. Wenden Sie das Modell an

Rufen Sie das von ML.PREDICT erstellte Modell auf und wenden Sie das Modell auf die neuen Daten an.

query=f"""
SELECT
*
FROM
  ML.PREDICT(MODEL `myproject.mydataset.mymodel`,  ( #Rufen Sie das erstellte Modell auf

#Wenden Sie das Modell auf die neuen Daten an
SELECT product1, product2, product3, product4, product5
FROM `myproject.mydataset.mytable`)
);
"""

#Name der auszugebenden Projektdatensatztabelle
project = "myproject"
client = bigquery.Client(project=project)
dataset = "mydataset"
ds = client.dataset(dataset)
table = "mytable_predict"

job_config = bigquery.QueryJobConfig()
job_config.destination = ds.table(table)
job = client.query(query, job_config=job_config)

result = job.result()

ML.EVALUATE bei der Bewertung eines Modells. Um sich zu bewerben, rufen Sie einfach jedes von ML.PREDICT erstellte Modell auf. Es ist ziemlich einfach zu bedienen.

abschließend

Die Methoden, die verwendet werden können, sind noch begrenzt, aber einfacher zu verwenden als bei der Erstellung mit Grundlegendes maschinelles Lernverfahren: ① Klassifizierungsmodell. ..

Wenn Sie es jedoch so einfach machen können, werden Sie sich fragen, was Sie tun sollen, wenn Sie versuchen, das Modell zu verbessern. Ich frage mich, ob es sich verbessern wird, je nachdem welche Variable verwendet wird.

Recommended Posts

Ich habe versucht, BigQuery ML zu verwenden
Ich habe versucht, parametrisiert zu verwenden
Ich habe versucht, Argparse zu verwenden
Ich habe versucht, Mimesis zu verwenden
Ich habe versucht, anytree zu verwenden
Ich habe versucht, aiomysql zu verwenden
Ich habe versucht, Coturn zu verwenden
Ich habe versucht, Pipenv zu verwenden
Ich habe versucht, Matplotlib zu verwenden
Ich habe versucht, "Anvil" zu verwenden.
Ich habe versucht, Hubot zu verwenden
Ich habe versucht, ESPCN zu verwenden
Ich habe versucht, openpyxl zu verwenden
Ich habe versucht, Ipython zu verwenden
Ich habe versucht, PyCaret zu verwenden
Ich habe versucht, Cron zu verwenden
Ich habe versucht, ngrok zu verwenden
Ich habe versucht, face_recognition zu verwenden
Ich habe versucht, Jupyter zu verwenden
Ich habe versucht, doctest zu verwenden
Ich habe versucht, Folium zu verwenden
Ich habe versucht, jinja2 zu verwenden
Ich habe versucht, Folium zu verwenden
Ich habe versucht, das Zeitfenster zu verwenden
Ich habe versucht, die BigQuery-Speicher-API zu verwenden
[Ich habe versucht, Pythonista 3 zu verwenden] Einführung
Ich habe versucht, easydict (Memo) zu verwenden.
Ich habe versucht, das Gesicht mit Face ++ zu erkennen
Ich habe versucht, RandomForest zu verwenden
Ich habe versucht, Amazon Glacier zu verwenden
Ich habe versucht, Git Inspector zu verwenden
Ich habe versucht, Magenta / TensorFlow zu verwenden
Ich habe versucht, AWS Chalice zu verwenden
Ich habe versucht, Slack Emojinator zu verwenden
Ich habe versucht, Rotrics Dex Arm # 2 zu verwenden
Ich habe versucht, Rotrics Dex Arm zu verwenden
Ich habe versucht, GrabCut von OpenCV zu verwenden
Ich habe versucht, Thonny (Python / IDE) zu verwenden.
Ich habe versucht, mit dem Server-Client über tmux zu kommunizieren
Ich habe versucht, mit PyBrain verstärkt zu lernen
Ich habe versucht, mit Theano tief zu lernen
Ich habe irgendwie versucht, ein Jupyter-Notebook zu verwenden
[Kaggle] Ich habe versucht, mit unausgeglichenem Lernen zu unterabtasten
Ich habe versucht, mit OpenPose eine Schildkrötenwelle zu schießen
Ich habe versucht, die checkio-API zu verwenden
Ich habe versucht, asynchrone Verarbeitung mit Asyncio
Ich habe versucht, Azure Speech to Text zu verwenden.
Ich habe versucht zu kratzen
Ich habe PyQ ausprobiert
Ich habe versucht, ○ ✕ mit TensorFlow zu spielen
Ich habe versucht, YOUTUBE Data API V3 zu verwenden
[Kaggle] Ich habe versucht, Ensemble mit LightGBM zu lernen
Ich habe versucht, PyEZ und JSNAPy zu verwenden. Teil 2: Ich habe versucht, PyEZ zu verwenden
Ich habe versucht, die Bayes'sche Optimierung von Python zu verwenden
Ich habe versucht, Text mit TensorFlow zu klassifizieren
Ich habe versucht, die selektive Suche als R-CNN zu verwenden