Ottenere approfondimenti sui dati da un modello di analisi del contributo utilizzando una metrica sommabile

In questo tutorial utilizzerai un modello di analisi del contributo per analizzare le variazioni delle tariffe dei taxi tra il 2011 e il 2012 a New York. Questo tutorial ti guiderà tramite le seguenti attività:

  • Creazione di una tabella di input basata sui dati dei taxi disponibili pubblicamente.
  • Creazione di un modello di analisi del contributo che utilizza una metrica sommabile. Questo tipo di modello riassume una determinata metrica per una combinazione di una o più dimensioni nei dati, per determinare il contributo di queste dimensioni al valore della metrica.
  • Ottieni informazioni sulle metriche del modello utilizzando la funzione ML.GET_INSIGHTS.

Prima di iniziare questo tutorial, devi conoscere il caso d'uso dell'analisi dei contributi.

Autorizzazioni obbligatorie

  • Per creare il set di dati, devi disporre dell'autorizzazione bigquery.datasets.create Identity and Access Management (IAM).

  • Per creare il modello, devi disporre delle seguenti autorizzazioni:

    • bigquery.jobs.create
    • bigquery.models.create
    • bigquery.models.getData
    • bigquery.models.updateData
  • Per eseguire l'inferenza, devi disporre delle seguenti autorizzazioni:

    • bigquery.models.getData
    • bigquery.jobs.create

Costi

In questo documento utilizzi i seguenti componenti fatturabili di Google Cloud:

  • BigQuery ML: You incur costs for the data that you process in BigQuery.

Per generare una stima dei costi in base all'utilizzo previsto, utilizza il Calcolatore prezzi. I nuovi utenti di Google Cloud potrebbero essere idonei per una prova gratuita.

Per ulteriori informazioni sui prezzi di BigQuery, consulta la sezione Prezzi di BigQuery della documentazione di BigQuery.

Prima di iniziare

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  2. Make sure that billing is enabled for your Google Cloud project.

  3. Enable the BigQuery API.

    Enable the API

Crea un set di dati

Crea un set di dati BigQuery per archiviare il tuo modello ML:

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai alla pagina BigQuery

  2. Nel riquadro Explorer, fai clic sul nome del progetto.

  3. Fai clic su Visualizza azioni > Crea set di dati.

    Crea il set di dati.

  4. Nella pagina Crea set di dati:

    • In ID set di dati, inserisci bqml_tutorial.

    • Per Tipo di località, seleziona Più regioni e poi Stati Uniti (più regioni negli Stati Uniti).

      I set di dati pubblici sono archiviati nella US multiregione. Per semplicità, archivia il set di dati nella stessa posizione.

    • Lascia invariate le restanti impostazioni predefinite e fai clic su Crea set di dati.

      Pagina Crea set di dati.

Crea una tabella di dati di input

Crea una tabella contenente i dati di test e di controllo da analizzare. La seguente query crea due tabelle intermedie, una tabella di test con i dati dei taxi del 2012 e una tabella di controllo con i dati dei taxi del 2011, quindi esegue l'unione delle tabelle intermedie per creare una tabella con righe di test e di controllo e lo stesso insieme di colonne.

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nell'editor di query, esegui la seguente istruzione:

    CREATE OR REPLACE TABLE bqml_tutorial.taxi_control_and_test
    AS (
      SELECT
        vendor_id,
        passenger_count,
        payment_type,
        pickup_location_id,
        EXTRACT(MONTH FROM pickup_datetime) AS month,
        AVG(total_amount) AS avg_total_fare,
        FALSE AS is_test
      FROM `bigquery-public-data.new_york_taxi_trips.tlc_yellow_trips_2011`
      WHERE total_amount > 0
      GROUP BY vendor_id, passenger_count, payment_type, pickup_location_id, month, is_test
    )
    UNION ALL
    (
      SELECT
        vendor_id,
        passenger_count,
        payment_type,
        pickup_location_id,
        EXTRACT(MONTH FROM pickup_datetime) AS month,
        AVG(total_amount) AS avg_total_fare,
        TRUE AS is_test
      FROM `bigquery-public-data.new_york_taxi_trips.tlc_yellow_trips_2012`
      WHERE total_amount > 0
      GROUP BY vendor_id, passenger_count, payment_type, pickup_location_id, month, is_test
    );

Crea il modello

Crea un modello di analisi dei contributi:

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nell'editor di query, esegui la seguente istruzione:

    CREATE OR REPLACE MODEL `bqml_tutorial.taxi_contribution_analysis_model`
      OPTIONS (
        MODEL_TYPE = 'CONTRIBUTION_ANALYSIS',
        CONTRIBUTION_METRIC = 'SUM(avg_total_fare)',
        DIMENSION_ID_COLS =
          ['vendor_id', 'passenger_count', 'pickup_location_id', 'payment_type', 'month'],
        IS_TEST_COL = 'is_test',
        MIN_APRIORI_SUPPORT = 0.05)
    AS
    SELECT * FROM bqml_tutorial.taxi_control_and_test;

Il completamento della query richiede circa 20 secondi, dopodiché il modellotaxi_contribution_analysis_model viene visualizzato nel set di dati bqml_tutorial nel riquadro Explorer. Poiché la query utilizza un'istruzione CREATE MODEL per creare un modello, non ci sono risultati della query.

Ottenere approfondimenti dal modello

Ottieni approfondimenti generati dal modello di analisi dei contributi utilizzando la funzione ML.GET_INSIGHTS.

  1. Nella console Google Cloud, vai alla pagina BigQuery.

    Vai a BigQuery

  2. Nell'editor di query, esegui la seguente istruzione:

    SELECT
      *
    FROM
      ML.GET_INSIGHTS(
        MODEL `bqml_tutorial.taxi_contribution_analysis_model`)
    ORDER BY unexpected_difference DESC;

    Le prime righe dell'output dovrebbero essere simili al seguente:

    +----------------------------------+-----------+-----------------+--------------+--------------------+-------+-------------------+------------------+------------------+---------------------+-----------------------+--------------------------------+-----------------+
    |           contributors           | vendor_id | passenger_count | payment_type | pickup_location_id | month |    metric_test    |  metric_control  |    difference    | relative_difference | unexpected_difference | relative_unexpected_difference | apriori_support |
    +----------------------------------+-----------+-----------------+--------------+--------------------+-------+-------------------+------------------+------------------+---------------------+-----------------------+--------------------------------+-----------------+
    | ["all"]                          | NULL      |            NULL | NULL         | NULL               |  NULL | 1305121.630946658 | 983978.603443601 | 321143.027503057 |         0.326371962 |      321143.027503057 |                    0.326371962 |               1 |
    | ["payment_type=5","vendor_id=2"] | 2         |            NULL | 5            | NULL               |  NULL |    82996.99307095 |                0 |   82996.99307095 |                NULL |        82996.99307095 |                           NULL |     0.063593301 |
    | ["payment_type=5"]               | NULL      |            NULL | 5            | NULL               |  NULL |    82996.99307095 |           138.26 |   82858.73307095 |       599.296492629 |       82825.246757081 |                  482.253417818 |     0.063593301 |
    | ["payment_type=3","vendor_id=1"] | 1         |            NULL | 3            | NULL               |  NULL |   82167.169133767 |                0 |  82167.169133767 |                NULL |       82167.169133767 |                           NULL |      0.06295748 |
    | ["payment_type=3"]               | NULL      |            NULL | 3            | NULL               |  NULL |   82167.169133767 |                0 |  82167.169133767 |                NULL |       82167.169133767 |                           NULL |      0.06295748 |
    | ["payment_type=4","vendor_id=1"] | 1         |            NULL | 4            | NULL               |  NULL |   67418.589902631 |                0 |  67418.589902631 |                NULL |       67418.589902631 |                           NULL |      0.05165694 |
    +----------------------------------+-----------+-----------------+--------------+--------------------+-------+-------------------+------------------+------------------+---------------------+-----------------------+--------------------------------+-----------------+
    

    Poiché hai eseguito l'analisi del contributo su una metrica sommabile, i risultati contengono le colonne di output delle metriche sommabili.

Esegui la pulizia

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.