En este tutorial se explica cómo usar un modelo de clasificador de árboles de refuerzo para predecir el intervalo de ingresos de las personas en función de sus datos demográficos. El modelo predice si un valor se incluye en una de las dos categorías. En este caso, si los ingresos anuales de una persona son superiores o inferiores a 50.000 $.
En este tutorial se usa el conjunto de datos
bigquery-public-data.ml_datasets.census_adult_income
. Este conjunto de datos contiene información demográfica y sobre ingresos de residentes de EE. UU. de los años 2000 y 2010.
Crear conjunto de datos
Crea un conjunto de datos de BigQuery para almacenar tu modelo de aprendizaje automático.
Consola
En la Google Cloud consola, ve a la página BigQuery.
En el panel Explorador, haz clic en el nombre de tu proyecto.
Haga clic en
Ver acciones > Crear conjunto de datos.En la página Crear conjunto de datos, haz lo siguiente:
En ID del conjunto de datos, introduce
bqml_tutorial
.En Tipo de ubicación, selecciona Multirregión y, a continuación, EE. UU. (varias regiones de Estados Unidos).
Deje el resto de los ajustes predeterminados como están y haga clic en Crear conjunto de datos.
bq
Para crear un conjunto de datos, usa el comando
bq mk
con la marca --location
. Para ver una lista completa de los parámetros posibles, consulta la referencia del comando bq mk --dataset
.
Crea un conjunto de datos llamado
bqml_tutorial
con la ubicación de los datos definida comoUS
y la descripciónBigQuery ML tutorial dataset
:bq --location=US mk -d \ --description "BigQuery ML tutorial dataset." \ bqml_tutorial
En lugar de usar la marca
--dataset
, el comando usa el acceso directo-d
. Si omite-d
y--dataset
, el comando creará un conjunto de datos de forma predeterminada.Confirma que se ha creado el conjunto de datos:
bq ls
API
Llama al método datasets.insert
con un recurso de conjunto de datos definido.
{ "datasetReference": { "datasetId": "bqml_tutorial" } }
BigQuery DataFrames
Antes de probar este ejemplo, sigue las instrucciones de configuración de BigQuery DataFrames que se indican en la guía de inicio rápido de BigQuery con BigQuery DataFrames. Para obtener más información, consulta la documentación de referencia de los DataFrames de BigQuery.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configurar ADC en un entorno de desarrollo local.
Preparar los datos de muestra
El modelo que crearás en este tutorial predice el tramo de ingresos de los participantes del censo en función de las siguientes características:
- Edad
- Tipo de trabajo realizado
- Estado civil
- Nivel de estudios
- Profesión
- Horas trabajadas a la semana
La columna education
no se incluye en los datos de entrenamiento porque las columnas education
y education_num
expresan el nivel de formación de los participantes en formatos diferentes.
Para separar los datos en conjuntos de entrenamiento, evaluación y predicción, crea una columna dataframe
a partir de la columna functional_weight
.
El 80 % de los datos se usa para entrenar el modelo, y el 20 % restante se usa para la evaluación y la predicción.
SQL
Para preparar los datos de muestra, crea una vista que contenga los datos de entrenamiento. Esta vista se usa en la instrucción CREATE MODEL
más adelante en este tutorial.
Ejecuta la consulta que prepara los datos de muestra:
En la Google Cloud consola, ve a la página BigQuery.
En el editor de consultas, ejecuta la siguiente consulta:
CREATE OR REPLACE VIEW `bqml_tutorial.input_data` AS SELECT age, workclass, marital_status, education_num, occupation, hours_per_week, income_bracket, CASE WHEN MOD(functional_weight, 10) < 8 THEN 'training' WHEN MOD(functional_weight, 10) = 8 THEN 'evaluation' WHEN MOD(functional_weight, 10) = 9 THEN 'prediction' END AS dataframe FROM `bigquery-public-data.ml_datasets.census_adult_income`;
En el panel de la izquierda, haz clic en
Explorador:Si no ves el panel de la izquierda, haz clic en
Ampliar panel de la izquierda para abrirlo.En el panel Explorador, busca el conjunto de datos
bqml_tutorial
.Haga clic en el conjunto de datos y, a continuación, en Resumen > Tablas.
Haz clic en la vista
input_data
para abrir el panel de información. La vista de esquema aparece en la pestaña Esquema.
BigQuery DataFrames
Crea un DataFrame llamado input_data
. Más adelante en este tutorial, usarás input_data
para entrenar el modelo, evaluarlo y hacer predicciones.
Antes de probar este ejemplo, sigue las instrucciones de configuración de BigQuery DataFrames que se indican en la guía de inicio rápido de BigQuery con BigQuery DataFrames. Para obtener más información, consulta la documentación de referencia de los DataFrames de BigQuery.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configurar ADC en un entorno de desarrollo local.
Crear el modelo de árbol de refuerzo
Crea un modelo de árboles de refuerzo para predecir el tramo de ingresos de los encuestados del censo y entrénalo con los datos del censo. La consulta tarda unos 30 minutos en completarse.
SQL
Sigue estos pasos para crear el modelo:
En la Google Cloud consola, ve a la página BigQuery.
En el editor de consultas, pega la siguiente consulta y haz clic en Ejecutar:
CREATE MODEL `bqml_tutorial.tree_model` OPTIONS(MODEL_TYPE='BOOSTED_TREE_CLASSIFIER', BOOSTER_TYPE = 'GBTREE', NUM_PARALLEL_TREE = 1, MAX_ITERATIONS = 50, TREE_METHOD = 'HIST', EARLY_STOP = FALSE, SUBSAMPLE = 0.85, INPUT_LABEL_COLS = ['income_bracket']) AS SELECT * EXCEPT(dataframe) FROM `bqml_tutorial.input_data` WHERE dataframe = 'training';
Una vez que se haya completado la consulta, se podrá acceder al modelo
tree_model
a través del panel Explorador. Como la consulta usa una instrucciónCREATE MODEL
para crear un modelo, no se muestran resultados.
BigQuery DataFrames
Antes de probar este ejemplo, sigue las instrucciones de configuración de BigQuery DataFrames que se indican en la guía de inicio rápido de BigQuery con BigQuery DataFrames. Para obtener más información, consulta la documentación de referencia de los DataFrames de BigQuery.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configurar ADC en un entorno de desarrollo local.
Evaluar el modelo
SQL
Sigue estos pasos para evaluar el modelo:
En la Google Cloud consola, ve a la página BigQuery.
En el editor de consultas, pega la siguiente consulta y haz clic en Ejecutar:
SELECT * FROM ML.EVALUATE (MODEL `bqml_tutorial.tree_model`, ( SELECT * FROM `bqml_tutorial.input_data` WHERE dataframe = 'evaluation' ) );
Los resultados deberían ser similares a los siguientes:
+---------------------+---------------------+---------------------+-------------------+---------------------+---------------------+ | precision | recall | accuracy | f1_score | log_loss | roc_auc | +---------------------+---------------------+---------------------+-------------------+-------------------------------------------+ | 0.67192429022082023 | 0.57880434782608692 | 0.83942963422194672 | 0.621897810218978 | 0.34405456040833338 | 0.88733566433566435 | +---------------------+---------------------+ --------------------+-------------------+---------------------+---------------------+
BigQuery DataFrames
Antes de probar este ejemplo, sigue las instrucciones de configuración de BigQuery DataFrames que se indican en la guía de inicio rápido de BigQuery con BigQuery DataFrames. Para obtener más información, consulta la documentación de referencia de los DataFrames de BigQuery.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configurar ADC en un entorno de desarrollo local.
Las métricas de evaluación indican que el modelo tiene un buen rendimiento, en concreto, el hecho de que la puntuación roc_auc
sea superior a 0.8
.
Para obtener más información sobre las métricas de evaluación, consulta la sección Salida.
Usar el modelo para predecir clasificaciones
SQL
Sigue estos pasos para predecir datos con el modelo:
En la Google Cloud consola, ve a la página BigQuery.
En el editor de consultas, pega la siguiente consulta y haz clic en Ejecutar:
SELECT * FROM ML.PREDICT (MODEL `bqml_tutorial.tree_model`, ( SELECT * FROM `bqml_tutorial.input_data` WHERE dataframe = 'prediction' ) );
Las primeras columnas de los resultados deberían ser similares a las siguientes:
+---------------------------+--------------------------------------+-------------------------------------+ | predicted_income_bracket | predicted_income_bracket_probs.label | predicted_income_bracket_probs.prob | +---------------------------+--------------------------------------+-------------------------------------+ | <=50K | >50K | 0.05183430016040802 | +---------------------------+--------------------------------------+-------------------------------------+ | | <50K | 0.94816571474075317 | +---------------------------+--------------------------------------+-------------------------------------+ | <=50K | >50K | 0.00365859130397439 | +---------------------------+--------------------------------------+-------------------------------------+ | | <50K | 0.99634140729904175 | +---------------------------+--------------------------------------+-------------------------------------+ | <=50K | >50K | 0.037775970995426178 | +---------------------------+--------------------------------------+-------------------------------------+ | | <50K | 0.96222406625747681 | +---------------------------+--------------------------------------+-------------------------------------+
BigQuery DataFrames
Antes de probar este ejemplo, sigue las instrucciones de configuración de BigQuery DataFrames que se indican en la guía de inicio rápido de BigQuery con BigQuery DataFrames. Para obtener más información, consulta la documentación de referencia de los DataFrames de BigQuery.
Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta Configurar ADC en un entorno de desarrollo local.
predicted_income_bracket
contiene el valor predicho del modelo.
El predicted_income_bracket_probs.label
muestra las dos etiquetas entre las que tenía que elegir el modelo y la columna predicted_income_bracket_probs.prob
muestra la probabilidad de que la etiqueta dada sea la correcta.
Para obtener más información sobre las columnas de salida, consulta Modelos de clasificación.