Obtén estadísticas de datos a partir de un modelo de análisis de contribuciones

En este instructivo, usarás un modelo de análisis de contribución para analizar los cambios en las tarifas de los taxis entre 2011 y 2012 en la ciudad de Nueva York. En este instructivo, se te guiará por las siguientes tareas:

  • Crear una tabla de entrada basada en datos de taxis disponibles públicamente.
  • Crear un modelo de análisis de contribución que use una métrica sumatoria. Este tipo de modelo resume una métrica determinada para una combinación de una o más dimensiones en los datos, para determinar cómo esas dimensiones contribuyen al valor de la métrica.
  • Obtén las estadísticas de las métricas del modelo con la función ML.GET_INSIGHTS.

Antes de comenzar este instructivo, debes familiarizarte con el caso de uso de análisis de contribuciones.

Permisos necesarios

  • Para crear el conjunto de datos, necesitas el permiso bigquery.datasets.create de Identity and Access Management (IAM).

  • Para crear el modelo, necesitas los siguientes permisos:

    • bigquery.jobs.create
    • bigquery.models.create
    • bigquery.models.getData
    • bigquery.models.updateData
  • Para ejecutar inferencias, necesitas los siguientes permisos:

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

Costos

En este documento, usarás los siguientes componentes facturables de Google Cloud:

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

Para generar una estimación de costos en función del uso previsto, usa la calculadora de precios. Es posible que los usuarios nuevos de Google Cloud califiquen para obtener una prueba gratuita.

Para obtener más información sobre los precios de BigQuery, consulta Precios de BigQuery en la documentación de BigQuery.

Antes de comenzar

  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 conjunto de datos

Crea un conjunto de datos de BigQuery para almacenar tu modelo de AA:

  1. En la consola de Google Cloud, ve a la página de BigQuery.

    Ir a la página de BigQuery

  2. En el panel Explorador, haz clic en el nombre de tu proyecto.

  3. Haz clic en Ver acciones > Crear conjunto de datos.

    Crea un conjunto de datos.

  4. En la página Crear conjunto de datos, haz lo siguiente:

    • En ID del conjunto de datos, ingresa bqml_tutorial.

    • En Tipo de ubicación, selecciona Multirregión y, luego, EE.UU. (varias regiones en Estados Unidos).

      Los conjuntos de datos públicos se almacenan en la multirregión US. Para que sea más simple, almacena tu conjunto de datos en la misma ubicación.

    • Deja la configuración predeterminada restante como está y haz clic en Crear conjunto de datos.

      Página Crear un conjunto de datos

Crea una tabla de datos de entrada

Crea una tabla que contenga datos de prueba y control para analizar. La siguiente consulta crea dos tablas intermedias, una tabla de prueba con datos de taxis de 2012 y una tabla de control con datos de taxis de 2011, y luego realiza una unión de las tablas intermedias para crear una tabla con filas de prueba y de control, y el mismo conjunto de columnas.

  1. En la consola de Google Cloud, ve a la página de BigQuery.

    Ir a BigQuery

  2. En el editor de consultas, ejecuta la siguiente declaración:

    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 el modelo

Crea un modelo de análisis de contribuciones:

  1. En la consola de Google Cloud, ve a la página de BigQuery.

    Ir a BigQuery

  2. En el editor de consultas, ejecuta la siguiente declaración:

    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;

La consulta tarda 20 segundos en completarse, después de eso, el modelo taxi_contribution_analysis_model aparece en el conjunto de datos bqml_tutorial en el panel Explorador. Debido a que la consulta usa una declaración CREATE MODEL para crear un modelo, no hay resultados de consultas.

Obtén estadísticas del modelo

Obtén estadísticas generadas por el modelo de análisis de contribuciones con la función ML.GET_INSIGHTS.

  1. En la consola de Google Cloud, ve a la página de BigQuery.

    Ir a BigQuery

  2. En el editor de consultas, ejecuta la siguiente declaración:

    SELECT
      contributors,
      metric_test,
      metric_control,
      difference,
      relative_difference,
      unexpected_difference,
      relative_unexpected_difference,
      apriori_support
    FROM
      ML.GET_INSIGHTS(
        MODEL `bqml_tutorial.taxi_contribution_analysis_model`)
    WHERE relative_difference IS NOT NULL
    ORDER BY unexpected_difference DESC;

    La cláusula WHERE excluye los resultados de los colaboradores que están presentes en el conjunto de prueba, pero no en el conjunto de control.

    Si hubieras usado SELECT * en lugar de especificar columnas en la sentencia SELECT para la función, el resultado también incluiría las columnas de dimensión especificadas en la opción DIMENSION_ID_COLS de la sentencia CREATE MODEL.

    Las primeras filas del resultado deberían ser similares a las siguientes:

    +-------------------------------------------------------------+------------------+------------------+------------------+---------------------+-----------------------+--------------------------------+-----------------+
    |                        contributors                         |   metric_test    |  metric_control  |    difference    | relative_difference | unexpected_difference | relative_unexpected_difference | apriori_support |
    +-------------------------------------------------------------+------------------+------------------+------------------+---------------------+-----------------------+--------------------------------+-----------------+
    | ["payment_type=5"]                                          |   82996.99307095 |           138.26 |   82858.73307095 |       599.296492629 |       82825.246757081 |                  482.253417818 |     0.063593301 |
    +-------------------------------------------------------------+------------------+------------------+------------------+---------------------+-----------------------+--------------------------------+-----------------+
    | ["vendor_id=1"]                                             | 651674.026105812 | 475749.798118647 | 175924.227987165 |         0.369783085 |        39985.82041025 |                    0.065369611 |     0.499320531 |
    +-------------------------------------------------------------+------------------+------------------+------------------+---------------------+-----------------------+--------------------------------+-----------------+
    | ["passenger_count=1"]                                       | 304615.252142054 | 214839.058249037 |  89776.193893017 |         0.417876501 |       25149.907437652 |                     0.08999294 |     0.233399895 |
    +-------------------------------------------------------------+------------------+------------------+------------------+---------------------+-----------------------+--------------------------------+-----------------+
    | ["passenger_count=6"]                                       | 106980.236314059 | 64751.247894565  |  42228.988419494 |          0.65217258 |       22582.018639759 |                    0.267565108 |     0.081969553 |
    +-------------------------------------------------------------+------------------+------------------+------------------+---------------------+-----------------------+--------------------------------+-----------------+
    | ["vendor_id=1","passenger_count=1"]                         |     169184.64374 | 114583.997774386 |  54600.645965614 |         0.476511965 |       19471.037967023 |                    0.130055237 |     0.129631323 |
    +-------------------------------------------------------------+------------------+------------------+------------------+---------------------+-----------------------+--------------------------------+-----------------+
    

    Debido a que realizaste un análisis de contribución en una métrica sumatoria, los resultados contienen las columnas de resultados de la métrica sumatoria.

Realiza una limpieza

  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.