Capítulo 4. Utilizar AutoML para predecir las ventas del canal de medios publicitarios
Este trabajo se ha traducido utilizando IA. Agradecemos tus opiniones y comentarios: translation-feedback@oreilly.com
En este capítulo, construyes un modelo AutoML para predecir las ventas del canal de medios publicitarios. En primer lugar, exploras tus datos utilizando Pandas. Luego aprenderás a utilizar AutoML para construir, entrenar e implementar un modelo de ML para predecir las ventas. Obtendrás una comprensión general del rendimiento de tu modelo utilizando métricas de rendimiento y responderás a preguntas empresariales comunes. En el camino, aprenderás sobre el análisis de regresión, una técnica común utilizada para casos de uso de predicción.
El caso de uso empresarial: Predicción de ventas del canal de medios
Las empresas utilizan canales de medios publicitarios para promocionar sus productos, servicios o marca. Los responsables de marketing y los planificadores de medios crean campañas de marketing que pueden emitirse en medios digitales, televisión, radio o periódicos. En este escenario, trabajas como planificador de medios en el departamento de marketing de una empresa mediana de energía solar. Tu empresa tiene un presupuesto modesto para medios de comunicación y necesita evaluar qué canales ofrecen el mayor número de beneficios por el menor coste. Se trata de un problema de optimización del gasto.
Te han pedido que desarrolles un plan de marketing que aumente las ventas de productos del año que viene. Para lograr este objetivo, necesitas comprender el impacto de los presupuestos de publicidad del producto en los canales de medios sobre las ventas totales. El conjunto de datos de publicidad recoge los ingresos por ventas generados con respecto a los costes de publicidad en los canales de medios digital, TV, radio y periódico.
Normalmente, este tipo de petición del jefe de equipo iría dirigida a un científico de datos o a un analista de datos. Pero, aunque no tienes experiencia en codificación, el jefe del equipo de marketing te ha pedido que construyas un modelo predictivo de ventas utilizando AutoML, algo que quieren probar por primera vez en el equipo. El objetivo es construir un modelo ML para predecir cuánto volumen de ventas se generará en función del dinero gastado en cada uno de los canales de medios.
Las preguntas empresariales incluyen:
-
¿Puede el modelo predecir cuánto volumen de ventas se generará en función del dinero gastado en cada canal de medios?
-
¿Existe una relación entre el presupuesto publicitario y las ventas?
-
¿Qué canal de comunicación contribuye más a las ventas?
-
¿Puede utilizarse el modelo para prever las ventas futuras basándose en el presupuesto propuesto por el canal de medios?
-
¿Con qué precisión puede predecir el modelo las ventas futuras?
El caso práctico es un sencillo problema de regresión con sólo cinco variables que puedes utilizar para responder a las cinco preguntas anteriores.
Flujo de trabajo del proyecto
La Figura 4-1 muestra en la descripción general de alto nivel del flujo de trabajo sin código típico de AutoML del Capítulo 3. Este flujo de trabajo es adecuado para tu caso de uso.
Ahora que entiendes el caso de uso empresarial y el objetivo, puedes proceder a la extracción y el análisis de los datos. Ten en cuenta que este flujo de trabajo no incluye un paso de preprocesamiento de datos. Tendrás mucha experiencia práctica con el preprocesamiento de datos en capítulos posteriores. Tras la extracción y el análisis de los datos, cargarás el conjunto de datos en la plataforma AutoML. A continuación, introducirás en el modelo los presupuestos publicitarios de los datos digitales, de TV, de periódicos y de radio. A continuación, evaluarás los resultados de AutoML y luego implantarás el modelo para hacer predicciones. Tras el ejercicio práctico de este capítulo, podrás crear un plan estratégico de marketing para tu equipo.
Conjunto de datos del proyecto
El conjunto de datos se compone de datos históricos del canal de marketing que pueden aprovecharse para obtener información sobre la asignación del gasto y predecir las ventas. El conjunto de datos que se utiliza en este capítulo, el conjunto de datos advertising_2023, se basa en datos extraídos de An Introduction to Statistical Learning with Applications in R (Introducción al aprendizaje estadístico con aplicaciones en R ) de Daniela Witten, Gareth M. James, Trevor Hastie y Robert Tibshirani (Springer, 2021). El conjunto de datos de publicidad recoge los ingresos por ventas generados por la publicidad (en miles de unidades) para presupuestos publicitarios de productos concretos (en miles de dólares) para medios de TV, radio y prensa.
Para este libro, el conjunto de datos se ha actualizado para incluir una variable digital y se ha modificado para mostrar el impacto de los presupuestos digitales en las ventas. El número de mercados se ha aumentado de 200 a 1.200. Así, los datos consisten en los presupuestos publicitarios de cuatro canales de medios (digital, TV, radio y periódicos) y las ventas globales en 1.200 mercados diferentes. Deberías animarte a consultar otros ejemplos de cómo trabajar con este conjunto de datos para ampliar tus conocimientos después de completar los ejercicios de este capítulo.
Los datos se suministran inicialmente en un archivo CSV, por lo que tendrás que dedicar algún tiempo a cargar los datos en Pandas antes de poder explorarlos. El conjunto de datos sólo contiene variables numéricas.
Hay cinco columnas en el conjunto de datos. En la Tabla 4-1 se indican los nombres de las columnas, los tipos de datos y alguna información sobre los posibles valores de estas columnas.
Explorar el conjunto de datos utilizando Pandas, Matplotlib y Seaborn
Antes de que empiece a utilizar AutoML, sigue el flujo de trabajo comentado en capítulos anteriores sobre la comprensión y preparación de datos para ML. Esta sección te muestra cómo cargar datos en un cuaderno Google Colab utilizando Pandas, un paquete Python de código abierto que se utiliza ampliamente para la ciencia de datos y el análisis de datos. Una vez cargados los datos en un DataFrame, explorarás los datos. Afortunadamente, los datos ya se han limpiado: no hay valores perdidos ni caracteres extraños en el conjunto de datos. Tu análisis exploratorio de datos te ayudará a validar que los datos están limpios y a explorar las relaciones entre las variables para ayudarte a responder a las preguntas planteadas por el equipo. Como se ha señalado en capítulos anteriores, gran parte del trabajo de ML consiste en comprender y preparar los datos de entrenamiento -no en entrenar el modelo-, ya que confías en AutoML para construir el modelo.
Todo el código de esta sección, incluidos algunos ejemplos adicionales, se incluye en un cuaderno Jupyter titulado Chapter4_Media_Channel_Sales_Notebook en el repositorio low-code-ai de GitHub.
Cargar datos en un Pandas DataFrame en un Google Colab Notebook
En primer lugar, ve a https://colab.research.google.com y abre un cuaderno nuevo, siguiendo el proceso comentado en el Capítulo 2. Puedes cambiar el nombre de este cuaderno por otro más significativo haciendo clic en el nombre, como se muestra en la Figura 4-2, y sustituyendo el nombre actual por uno nuevo, por ejemplo Modelo_de_publicidad.ipynb.
Ahora escribe el siguiente código en el primer bloque de código para importar los paquetes necesarios para analizar y visualizar el conjunto de datos de publicidad:
import
pandas
as
pd
import
numpy
as
np
import
matplotlib.pyplot
as
plt
from
scipy
import
stats
import
seaborn
as
sns
%
matplotlib
inline
Ya viste algunos de estos paquetes en el Capítulo 2, cuando exploraste por primera vez el uso de los cuadernos Colab.
Ahora ejecuta la celda que contiene las sentencias de importación para importar los paquetes. Para ello, haz clic en el botón Ejecutar celda situado a la izquierda de la celda. También puedes pulsar Mayúsculas + Intro para ejecutar la celda.
Ahora estás listo para importar tus datos. Con Pandas, puedes importar directamente un archivo CSV a un DataFrame desde un lugar de Internet, sin tener que descargar primero el archivo. Para ello, copia el código del cuaderno de soluciones o escribe el siguiente código en una nueva celda y ejecútalo:
url
=
"https://github.com/maabel0712/low-code-ai/blob/main/advertising_2023.csv?raw=true"
advertising_df
=
pd
.
read_csv
(
url
,
index_col
=
0
)
En general, conviene mirar las primeras filas del Marco de datos. Utiliza advertising_df.head()
para explorar las primeras filas del DataFrame. El método head Pandas nos permite ver las cinco primeras filas de nuestros datos. Haciendo esto, puedes ver rápidamente las características, algunos de sus posibles valores y si son numéricos o no.
Un ejemplo de algunas de las columnas se muestra en en la Figura 4-3.
Explora el conjunto de datos sobre publicidad
Ahora que los datos se han cargado en el DataFrame advertising_df
, puedes empezar a explorarlos y comprenderlos. El objetivo inmediato es hacerte una idea de dónde podría haber problemas con los datos, para que puedas resolverlos antes de seguir adelante.
Análisis descriptivo: Comprueba los datos
Primero comprueba los datos utilizando los métodos estándar de Python. Para comprobar los tipos de datos de tu DataFrame, escribe advertising_df.info()
en una nueva celda y ejecútalo. La información contiene el número de columnas, las etiquetas de las columnas, los tipos de datos de las columnas, el uso de memoria, el índice de rango y el número de celdas de cada columna (valores no nulos).
La Figura 4-4 muestra un ejemplo de la salida del método info()
.
Ten en cuenta que con la información sobre el tipo de datos, puedes comprobar que los tipos inferidos por Pandas coinciden con lo que se esperaba de la Tabla 4-1.
En la Figura 4-5 se muestra el método describe()
, que calcula y muestra estadísticas resumidas del conjunto de datos. La función describe
muestra información sobre las variables numéricas de nuestro conjunto de datos. Puedes ver los valores medio, máximo y mínimo de cada una de estas variables, junto con su desviación típica. Escribe advertising_df.describe()
en una nueva celda y ejecútala.
En la Figura 4-6 se muestra el resultado del método .isnull()
. Escribe advertising_df.isnull().sum()
en una nueva celda y ejecútalo. La salida muestra todas las columnas del Marco de datos con ceros asociados. Si hubiera valores nulos, se mostraría el número de valores nulos de la columna .
Explora los datos
Análisis exploratorio de datos (AED) es el primer paso de cualquier proyecto de ML. Necesitas explorar tus datos antes de construir cualquier modelo de ML. El objetivo es echar un vistazo a los datos en bruto, explorarlos y recopilar información relevante a partir de la información derivada de los datos. Hacer esto también ayuda a mejorar los modelos, ya que podrás detectar cualquier problema de "datos sucios" -como valores omitidos, caracteres extraños en una columna, etc.- que pueda afectar al rendimiento.
Mapas de calor (correlaciones)
Un mapa de calor es una forma de representar los datos visualmente. Los valores de los datos se representan como colores en el gráfico. El objetivo del mapa de calor es proporcionar un resumen visual coloreado de la información. Los mapas de calor muestran tus relaciones (correlaciones) entre variables (características). Correlación es una medida estadística que muestra hasta qué punto dos o más variables se mueven juntas. En la Figura 4-7 se muestra la salida de un método de correlación que traza valores de correlación en la cuadrícula. Escribe el siguiente código en una nueva celda y ejecútalo:
plt
.
figure
(
figsize
=
(
10
,
5
))
sns
.
heatmap
(
advertising_df
.
corr
(),
annot
=
True
,
vmin
=
0
,
vmax
=
1
,
cmap
=
'viridis'
)
Los resultados de una matriz de correlaciones pueden utilizarse de varias formas, entre ellas:
- Identificar relaciones entre variables
-
El coeficiente de correlación entre dos variables puede indicarte hasta qué punto están relacionadas. Un coeficiente de correlación de 0 significa que no hay relación, mientras que un coeficiente de correlación de 1 significa que hay una relación positiva perfecta. Un coeficiente de correlación de -1 significa que existe una relación negativa perfecta. Observa que las relaciones más fuertes se dan entre las ventas y la televisión (0,78), seguidas de las ventas y la radio (0,58). Esta información puede utilizarse para desarrollar campañas de marketing específicas que tengan más probabilidades de mejorar las ventas.
- Seleccionar variables para incluirlas en un modelo
-
Cuando construyas un modelo predictivo, tienes que seleccionar las variables que tengan más probabilidades de predecir el resultado. Por ejemplo, ¿deberías incluir los periódicos (con una correlación de 0,23 con las ventas) como característica a incluir en el modelo para predecir las ventas?
- Detección de la multicolinealidad
-
Multicolinealidad se produce cuando dos o más variables predictoras de un modelo de regresión están altamente correlacionadas. Por ejemplo, si tanto la TV como la radio estuvieran muy correlacionadas (es decir, que ambas tuvieran un valor >0,7 en lugar de 0,056, como se muestra en la Figura 4-7), indicaría multicolinealidad. Como es más difícil distinguir numéricamente los predictores con una fuerte relación colineal entre sí, es más difícil para un algoritmo de regresión determinar el grado de influencia o peso que debe tener uno de ellos en las ventas.
Gráficos de dispersión
Gráficos de dispersión se utilizan para determinar las relaciones entre dos variables numéricas. Pueden ayudarte a ver si existe una relación directa (relación lineal positiva o relación lineal negativa, por ejemplo) entre dos variables. Además, pueden ayudarte a detectar si tus datos tienen valores atípicos o no. La Figura 4-8 muestra una dispersión de la característica digital y el objetivo de ventas. Escribe el siguiente código en una nueva celda y ejecútalo:
advertising_df
.
plot
(
kind
=
'scatter'
,
x
=
[
'digital'
],
y
=
'sales'
)
Quieres explorar los gráficos de dispersión de cada variable con la variable predicha sales
. Puedes trazar cada característica como un gráfico de dispersión por separado (como hiciste antes), o puedes trazarlas de forma que todas las relaciones se muestren en un solo gráfico. Escribe todo el código siguiente en una nueva celda y ejecútalo( laFigura 4-9 muestra el resultado):
plt
.
figure
(
figsize
=
(
18
,
18
))
for
i
,
col
in
enumerate
(
advertising_df
.
columns
[
0
:
13
]):
plt
.
subplot
(
5
,
3
,
i
+
1
)
# each row three figure
x
=
advertising_df
[
col
]
#x-axis
y
=
advertising_df
[
'sales'
]
#y-axis
plt
.
plot
(
x
,
y
,
'o'
)
# Create regression line
plt
.
plot
(
np
.
unique
(
x
),
np
.
poly1d
(
np
.
polyfit
(
x
,
y
,
1
))
(
np
.
unique
(
x
)),
color
=
'red'
)
plt
.
xlabel
(
col
)
# x-label
plt
.
ylabel
(
'sales'
)
# y-label
Observa que la TV y las ventas tienen una fuerte relación lineal, ya que parece demostrar que para un aumento del presupuesto de TV, hay un impacto positivo en el volumen de ventas. No parece existir una relación fuerte entre el periódico y las ventas. Recordemos los valores de correlación de 0,23 para esta relación. Esto es muy diferente de la relación entre la TV y las ventas de (0,78).
Diagrama de distribución del histograma
Un enfoque habitual para visualizar una distribución es el histograma. Un histograma es un gráfico de barras en el que el eje que representa la variable objetivo se divide en un conjunto de intervalos discretos, y el recuento de observaciones que caen dentro de cada intervalo se muestra utilizando la altura de la barra correspondiente.
Escribe este código en una nueva celda y ejecútala:
sns
.
displot
(
advertising_df
,
x
=
"sales"
)
La Figura 4-10 muestra los valores de los datos de la columna de ventas. El gráfico se parece a una curva en forma de campana ligeramente inclinada hacia la izquierda. El importe de ventas más común es de 11.000 dólares.
¿Qué pasa con las demás características: están sesgadas a la izquierda o a la derecha o tienen una "distribución normal", como una curva de campana? Puedes escribir el código anterior para cada característica individual o utilizar el código siguiente para ver todas las características juntas. Escribe el siguiente código en una nueva celda y ejecútalo( laFigura 4-11 muestra el resultado):
lis
=
[
'digital'
,
'newspaper'
,
'radio'
,
'TV'
]
plt
.
subplots
(
figsize
=
(
15
,
8
))
index
=
1
for
i
in
lis
:
plt
.
subplot
(
2
,
2
,
index
)
sns
.
distplot
(
advertising_df
[
i
])
index
+=
1
Como has visto en la Figura 4-10, las ventas tienen algo parecido a una distribución normal. Sin embargo, en la Figura 4-11, lo digital parece estar sesgado a la izquierda, y la TV, la radio y el periódico no tienen una distribución normal. Estandarizar estas características para que tengan una distribución normal antes de introducirlas en tu modelo ML generaría mejores resultados.
Nota
Sin embargo, tu papel no es el de un científico de datos. No te preocupes por comprender estos conceptos. Discutir cada transformación necesaria para las características está fuera del alcance de este capítulo. En el Capítulo 7 realizarás transformaciones en un conjunto de datos .
Exportar el conjunto de datos de publicidad
Después de que hayas comprobado y explorado el conjunto de datos, ha llegado el momento de exportar el archivo para poder cargarlo en tu marco AutoML. Escribe el siguiente código en una nueva celda y ejecútalo. La primera línea importa el sistema operativo que te permitirá crear un directorio llamado datos (líneas dos y tres):
import
os
if
not
os
.
path
.
isdir
(
"/content/data"
):
os
.
makedirs
(
"/content/data"
)
Una vez creado el directorio, escribe el siguiente código en una nueva celda y ejecútalo. La primera línea de código crea un archivo en formato CSV del DataFrame publicitario y lo coloca en el directorio de contenido/datos que creaste en el paso anterior:
advertising_df
.
to_csv
(
'/content/data/advertising.csv'
,
encoding
=
'utf-8'
,
index
=
False
)
La Figura 4-12 muestra el directorio recién creado llamado datos con el archivo publicidad.csv.
Como buena práctica, comprueba que puedes ver el contenido del archivo recién exportado en el directorio recién creado. Escribe !head /content/data/advertising.csv
en una nueva celda y ejecútala. Comprueba que la salida mostrada en la Figura 4-13 es la misma que la tuya.
Ahora que has comprobado que el archivo se ha exportado correctamente, puedes descargarlo a tu ordenador.
Haz clic con el botón derecho del ratón en el archivo publicidad.csv del directorio de datos recién creado y selecciona Descargar, como se muestra en la Figura 4-14. El archivo se descargará en tu escritorio. Ahora ya puedes cargar el archivo para utilizarlo con AutoML.
En la siguiente sección, construirás un modelo sin código basado en el archivo de datos de entrenamiento que acabas de exportar a .
Utiliza AutoML para entrenar un modelo de regresión lineal
Los proyectos de AutoML de para este libro se implementarán utilizando Vertex AI de Google, el marco de AutoML y entrenamiento personalizado basado en GUI con el que los autores están más familiarizados. Ten en cuenta que los tres principales proveedores de la nube (Google, Microsoft y AWS) ofrecen tutoriales de AutoML. Puedes encontrar las guías de cada uno de estos tres grandes proveedores de la nube en su documentación. Muchos proveedores de la nube ofrecen un periodo de prueba para explorar sus productos sin coste alguno.
Dado que Google ofrece un tutorial paso a paso sobre AutoML, se excluyen algunos pasos introductorios.
La Figura 4-15 muestra un resumen de alto nivel del flujo de trabajo AutoML sin código para tu caso de uso empresarial.
Sin código utilizando Vertex AI
La Figura 4-16 muestra el panel Vertex AI Dashboard. Para crear un modelo AutoML, activa la API Vertex AI haciendo clic en el botón Activar todas las API recomendadas. En el menú de navegación de la izquierda, desplázate hacia abajo desde Panel de control y selecciona Conjuntos de datos.
Crear un conjunto de datos gestionado en Vertex AI
Vertex AI ofrece diferentes modelos AutoML en función del tipo de datos y del objetivo que quieras conseguir con tu modelo. Cuando creas un conjunto de datos, eliges un objetivo inicial, pero una vez creado un conjunto de datos, puedes utilizarlo para entrenar modelos con objetivos diferentes. Mantén la región por defecto (us-central1), como se muestra en la Figura 4-17.
Selecciona el botón Crear en la parte superior de la página y, a continuación, introduce un nombre para el conjunto de datos. Por ejemplo, puedes llamar al conjunto de datos publicidad_automl.
Selecciona el objetivo del modelo
La Figura 4-18 muestra Regresión/clasificación seleccionada como objetivo del modelo en la pestaña Tabular. Dado que quieres predecir el valor de una columna objetivo (ventas), ésta es la selección adecuada.
Has seleccionado Regresión/clasificación como objetivo. Vamos a cubrir algunos conceptos básicos para ayudarte con futuros casos de uso. Laregresión es un proceso de ML supervisado de . Es similar a la clasificación, pero en lugar de predecir una etiqueta para una clasificación, como clasificar el spam de tu bandeja de entrada de correo electrónico, intentas predecir un valor continuo. La regresiónlineal define la relación entre una variable objetivo(y) y un conjunto de características predictivas(x). Si necesitas predecir un número, utiliza la regresión. En tu caso de uso, la regresión lineal predice un valor real (ventas) utilizando algunas variables independientes dadas en el conjunto de datos (digital, TV, radio y periódico).
Esencialmente, la regresión lineal supone una relación lineal con cada característica. Los valores predichos son los puntos de datos en la recta, y los valores verdaderos están en el diagrama de dispersión. El objetivo es encontrar la línea que mejor se ajuste, de modo que cuando se introduzcan nuevos datos, el modelo pueda predecir dónde estará el nuevo punto de datos en relación con la línea. La "evaluación" de lo bueno que es ese ajuste incluye un criterio de evaluación, que se trata en "Evaluar el rendimiento del modelo".
La Figura 4-19 muestra una línea de "mejor ajuste" basada en tu conjunto de datos, en la que el modelo intenta ajustar la línea a tus puntos de datos, que son las dispersiones oscuras.
Después de hacer la selección Regresión/clasificación, desplázate hacia abajo y pulsa el botón Crear. Ya estás listo para añadir datos a tu conjunto de datos. Los conjuntos de datos gestionados por Vertex AI están disponibles para diversos tipos de datos, como datos tabulares, de imagen, de texto y de vídeo.
La Figura 4-20 muestra las opciones de carga de fuentes de datos: carga CSV desde tu ordenador, selecciona archivos CSV del Almacenamiento en la Nube o selecciona una tabla o vista de BigQuery (el almacén de datos de Google).
Para cargar tu conjunto de datos de publicidad, selecciona "Cargar archivos CSV desde tu ordenador". Busca el archivo en tu ordenador local y cárgalo.
Desplázate hacia abajo en la página y revisa la sección Seleccionar una ruta de almacenamiento en la nube, que requiere que almacenes el archivo en un cubo de almacenamiento en la nube. ¿Por qué necesitas almacenar el archivo en un cubo de almacenamiento en la nube? Por dos razones: (1) cuando entrenes un modelo ML a gran escala, puede que necesites almacenar terabytes o incluso petabytes de datos; y (2) los cubos de almacenamiento en la nube son escalables, fiables y seguros.
La Figura 4-21 muestra que se ha subido el archivo Publicidad_automl.csv y se ha creado un bucket de almacenamiento en la nube para guardar el archivo subido. Para ver el proceso paso a paso de creación del bucket de almacenamiento y el ejercicio completo, consulta el PDF titulado Capítulo 4 Predicción de ventas AutoML en el repositorio.
Algunos marcos generan estadísticas después de cargar los datos. Otros marcos ayudan a minimizar la necesidad de limpiar manualmente los datos, detectando y limpiando automáticamente los valores que faltan, los valores anómalos y las filas y columnas duplicadas. Ten en cuenta que hay algunos pasos adicionales que puedes emplear, como revisar los datos después de que se hayan cargado para comprobar si faltan valores y ver las estadísticas de los datos.
La Figura 4-22 muestra la salida de la ventana Generar estadísticas. Observa que no hay valores perdidos y que se muestra el número de valores distintos de cada columna.
AutoML presenta un perfil de datos de cada característica. Para analizar una característica, haz clic en su nombre. Una página muestra los histogramas de distribución de características de esa característica.
La Figura 4-23 muestra el perfil de datos de las ventas. Observa que la media es 14,014, que se aproxima mucho al valor numérico que recibiste cuando tecleaste el código advertising_df.describe()
al principio del capítulo, mientras explorabas el conjunto de datos en.
Construye el modelo de formación
La Figura 4-24 muestra que el modelo ya está listo para entrenar. Selecciona Entrenar nuevo modelo en la sección "Trabajos y modelos de entrenamiento". Selecciona Otro y no AutoML en Pipelines. AutoML en Pipelines es una función que te permite especificar el tipo de modelo ML que quieres construir y otros parámetros. Está fuera del alcance de este libro.
Aparece la ventana "Entrenar nuevo modelo". Hay cuatro pasos:
-
Selecciona el método de entrenamiento
-
Configurar los detalles del modelo
-
Determinar las opciones de formación
-
Selecciona cálculo y precio
En el Paso 1, bajo el Objetivo, selecciona el desplegable y elige Regresión. En "Método de entrenamiento del modelo", selecciona AutoML (como se muestra en la Figura 4-25). Haz clic en Continuar.
En el Paso 2, en "Detalles del modelo", dale un nombre a tu modelo y una descripción. En "Columna de destino", selecciona ventas en el desplegable (como se muestra en la Figura 4-26). Haz clic en Continuar.
En el Paso 3, revisa las opciones de entrenamiento. Observa que cualquier transformación de datos (o procesamiento de datos), como la normalización, se gestiona automáticamente (como se muestra en la Figura 4-27). Haz clic en Continuar.
En el Paso 4, verás "Calcular y fijar precios" (como se muestra en la Figura 4-28). El tiempo necesario para entrenar tu modelo depende del tamaño y la complejidad de tus datos de entrenamiento. Una hora de nodo es una hora de uso de un nodo (piensa en una máquina virtual) en la nube, repartida entre todos los nodos. Introduce el valor 3
en el campo Presupuesto para el número máximo de horas de nodo: es sólo una estimación. Sólo pagas por las horas de computación utilizadas; si la formación fracasa por cualquier motivo que no sea una cancelación iniciada por el usuario, no se te facturará el tiempo. Se te cobrará el tiempo de formación si cancelas la operación.
También en "Cálculo y fijación de precios" está la parada anticipada. Si activas esta opción, significa que el entrenamiento finalizará cuando AutoML determine que no se pueden realizar más mejoras en el modelo. Si desactivas la parada anticipada, AutoML entrenará el modelo hasta que se agoten las horas presupuestadas.
Una vez introducidos todos los parámetros, inicia el trabajo de entrenamiento. Haz clic en Iniciar entrenamiento.
Tras el entrenamiento del modelo, éste se registra en el registro de modelos (como se muestra en la Figura 4-29).
Nota
Como ya se ha dicho, el entrenamiento puede llevar hasta varias horas, dependiendo del tamaño de tus datos y del tipo de objetivo del modelo que elijas. Los tipos de datos de imagen y vídeo pueden tardar mucho más en procesarse que un tipo de datos estructurados como un archivo CSV. El número de muestras de entrenamiento también influye en el tiempo de entrenamiento.
Además, AutoML requiere mucho tiempo. Los algoritmos AutoML necesitan entrenar diversos modelos, y este proceso de entrenamiento puede ser costoso desde el punto de vista informático. Esto se debe a que los algoritmos AutoML suelen probar un gran número de modelos e hiperparámetros diferentes, y cada modelo debe entrenarse en todo el conjunto de datos. Después, los algoritmos AutoML tienen que seleccionar el mejor modelo del conjunto de modelos entrenados, y este proceso de selección también puede llevar mucho tiempo. Esto se debe a que los algoritmos AutoML suelen tener que evaluar el rendimiento de cada modelo en un conjunto de datos retenido, y este proceso de evaluación puede ser costoso desde el punto de vista informático.
Evaluar el rendimiento del modelo
La Figura 4-30 muestra los resultados del entrenamiento del modelo .
Hay algunos factores que un profesional debe tener en cuenta al sopesar la importancia de las distintas métricas de evaluación de la regresión lineal:
- El objetivo del modelo
-
La finalidad del modelo determinará qué métricas de evaluación son más importantes. Por ejemplo, si el modelo se utiliza para hacer predicciones, es posible que el profesional quiera centrarse en métricas como el error cuadrático medio (ECM) o el error cuadrático medio radical (ECRM). Sin embargo, si el modelo se utiliza para comprender la relación entre variables, el profesional puede centrarse en métricas como R-cuadrado o R-cuadrado ajustado.
- Las características de los datos
-
Las características de los datos también afectarán a la importancia de las distintas métricas de evaluación. Por ejemplo, si los datos son ruidosos (por ejemplo, contienen información no deseada o errores), entonces el profesional puede querer centrarse en métricas que sean robustas al ruido, como el error medio absoluto (MAE). Sin embargo, si los datos no son ruidosos, entonces el profesional puede centrarse en métricas que sean más sensibles a los cambios en el modelo, como el MSE.
- Las preferencias del profesional
-
En última instancia, las preferencias del profesional también influirán a la hora de determinar la importancia de las distintas métricas de evaluación. Algunos profesionales pueden preferir métricas fáciles de entender, mientras que otros pueden preferir métricas más precisas. No hay una respuesta correcta o incorrecta, y el profesional debe elegir las métricas que sean más importantes para él.
Aquí tienes las métricas habituales de evaluación de la regresión lineal:
- R-cuadrado
-
R-cuadrado es una medida de lo bien que se ajusta el modelo a los datos. Es el cuadrado del coeficiente de correlación de Pearson entre los valores observados y los predichos. Se calcula dividiendo la suma de los residuos al cuadrado (la diferencia entre los valores predichos y los reales) por la suma total de cuadrados. Un valor de R-cuadrado más alto indica un mejor ajuste. R-cuadrado oscila entre 0 y 1, donde un valor más alto indica un modelo de mayor calidad. TuR2 debería estar en torno a 0,997.
- R-cuadrado ajustado
-
La R-cuadrado ajustada es una versión modificada de la R-cuadrado que tiene en cuenta el número de variables independientes del modelo. Se calcula dividiendo la suma de los residuos al cuadrado por la suma total de cuadrados menos los grados de libertad. Un valor de R-cuadrado ajustado más alto indica un mejor ajuste, pero es menos sensible al número de variables independientes que la R-cuadrado.
- Error cuadrático medio (ECM)
-
MSE es una medida del error cuadrático medio entre los valores predichos y los valores reales. Un valor de MSE más bajo indica un mejor ajuste. La Figura 4-31 muestra la pérdida visualizada en una tabla y un gráfico.
- Error cuadrático medio (RMSE)
-
RMSE es la raíz cuadrada del MSE. Es una versión más interpretable del MSE. Un valor de RMSE más bajo indica un mejor ajuste y un modelo de mayor calidad, donde 0 significa que el modelo no cometió errores. La interpretación del RMSE depende del rango de valores de la serie. Tu RMSE debería estar en torno a 0,345.
- Error logarítmico medio cuadrático (RMSLE)
-
La interpretación de RMSLE depende del rango de valores de la serie. El RMSLE es menos sensible a los valores atípicos que el RMSE, y tiende a penalizar ligeramente más las subestimaciones que las sobreestimaciones. Tu RMSLE debería estar en torno a 0,026.
- Error medio absoluto (MAE)
-
MAE es una medida del error absoluto medio entre los valores predichos y los valores reales. Un valor MAE más bajo indica un mejor ajuste. Tu MAE debería estar en torno a 0,304.
- Error porcentual absoluto medio (MAPE)
-
MAPE oscila entre 0% y 100%, donde un valor más bajo indica un modelo de mayor calidad. El MAPE es la media de los errores porcentuales absolutos. Tu MAPE debería estar en torno a 2,28.
Importancia de las características del modelo (atribución)
La importancia de las características del modelo te indica en qué medida influyó cada característica en el entrenamiento del modelo. La Figura 4-32 muestra los valores de atribución expresados en porcentaje; cuanto mayor sea el porcentaje, mayor será la correlación, es decir, mayor será el impacto de esa característica en el entrenamiento del modelo. La atribución de características te permite ver qué características contribuyeron en mayor medida al entrenamiento del modelo resultante que se muestra en la Figura 4-32.
Si pasaras el puntero del ratón por encima de la característica del periódico mostrada en la Figura 4-32, verías que su contribución al entrenamiento del modelo es del 0,2%. Esto corrobora lo que descubriste durante la fase EDA que completaste anteriormente: la relación entre las ventas y el gasto en publicidad en periódicos es la más débil. Estos resultados significan que la publicidad en radio, digital y TV es la que más contribuye a las ventas, y que los anuncios en periódicos tienen poco efecto enlas ventas de .
Obtén predicciones de tu modelo
Para desplegar tu modelo, necesitarás probarlo. Puedes desplegarlo en tu entorno para probar tu modelo sin crear una aplicación que necesitarías desplegar en la nube. Después de entrenar un modelo de ML, tienes que desplegar el modelo para que otros puedan utilizarlo para hacer inferencias. La inferencia en el aprendizaje automático es el proceso de utilizar un modelo ML entrenado para hacer predicciones sobre nuevos datos.
Hay cuatro pasos, pero para este capítulo sólo necesitarás los dos primeros. Para este ejercicio, no es necesario configurar el monitoreo del modelo ni los objetivos del modelo. El monitoreo del modelo añade un cargo adicional por el registro, mientras que los objetivos del modelo requieren que elijas entre una variedad de objetivos del modelo, dependiendo del tipo de modelo que estés entrenando y de la aplicación para la que lo estés utilizando. Estos son los cuatro pasos:
-
Define tu punto final.
-
Configura los ajustes del modelo.
-
Configura el monitoreo del modelo.
-
Configura los objetivos del modelo.
Nota
¿Qué son los puntos finales y las Implementaciones? En ML, unendpoint es un servicio que expone un modelo para la predicción en línea. Unaimplementación de es el proceso de hacer que un modelo esté disponible como punto final. Un punto final es una ruta HTTPS que proporciona una interfaz para que los clientes envíen solicitudes (datos de entrada) y reciban el resultado de la inferencia (puntuación) de un modelo entrenado. Los endpoints suelen utilizarse para hacer predicciones en tiempo real. Por ejemplo, podrías utilizar un endpoint para predecir la probabilidad de que un cliente haga clic en un anuncio o el riesgo de impago de un préstamo.
Las Implementaciones suelen utilizarse para poner un modelo a disposición de un público más amplio. Por ejemplo, puedes implementar un modelo en un entorno de producción para que puedan utilizarlo tus clientes o empleados.
LaFigura 4-33 muestra la página de implementación y prueba. Para implementar tu modelo, ve a Registro de modelos, selecciona Implementación y prueba, y selecciona tu modelo.
En el Paso 1, defines tu punto final. Seleccionas una región y determinas cómo se accederá a tu punto final.
En el Paso 2, añade el modelo y añade la división de tráfico. Una división de tráfico en Vertex AI es una forma de distribuir el tráfico entre varios modelos desplegados en el mismo punto final. Esto puede ser útil para diversos fines, como:
- Pruebas A/B
-
La división del tráfico puede utilizarse para Probar A/B diferentes modelos para ver cuál funciona mejor.
- Implementaciones canarias
-
La división del tráfico puede utilizarse para implementar un nuevo modelo en un pequeño porcentaje de usuarios antes de hacerlo en un público más amplio. Esto puede ayudar a detectar cualquier problema con el nuevo modelo antes de que afecte a demasiados usuarios.
- Rollouts
-
La división del tráfico puede utilizarse para desplegar un nuevo modelo a los usuarios de forma gradual. Esto puede ayudar a mitigar el impacto de cualquier problema con el nuevo modelo .
En el Paso 3, en eliges cómo los recursos informáticos servirán las predicciones a tu modelo (mostrado en la Figura 4-34). Para este ejercicio, utiliza el número mínimo de nodos de cálculo (servidores de máquinas virtuales). En "Tipo de máquina", selecciona Estándar.
Nota: Los "tipos de máquina" difieren en algunos aspectos: (1) número de unidades centrales de proceso virtuales (vCPU) por nodo, (2) cantidad de memoria por nodo y (3) precio.
Hay que tener en cuenta algunos factores a la hora de elegir los recursos informáticos para un modelo de predicción:
- Tamaño y complejidad del modelo
-
Cuanto mayor y más complejo sea el modelo, más recursos informáticos necesitará. (Esto es más aplicable a las redes neuronales de codificación personalizada).
- Número de predicciones que se harán
-
Si esperas hacer un gran número de predicciones, tendrás que elegir un recurso informático que pueda soportar la carga.
- Requisitos de latencia
-
Si necesitas hacer predicciones en tiempo real o con una latencia muy baja, tendrás que elegir un recurso informático que pueda proporcionar el rendimiento necesario. Nota: la baja latencia en el aprendizaje automático se refiere al tiempo que tarda un modelo ML en hacer una predicción una vez que recibe un nuevo punto de datos.
- Coste
-
Los recursos informáticos pueden variar de precio, por lo que tendrás que elegir uno que se ajuste a tu presupuesto.
Una vez que hayas considerado estos factores, puedes empezar a reducir tus opciones. He aquí algunos ejemplos de recursos informáticos que pueden utilizarse para servir modelos de predicción:
- CPUs
-
Unidades centrales de proceso (CPU) son el tipo más común de recurso informático y son una buena opción para modelos no demasiado grandes o complejos.
- GPUs
-
Unidades de procesamiento gráfico (GPU) son más potentes que las CPU y pueden utilizarse para acelerar el entrenamiento y la inferencia de modelos grandes y complejos.
- TPUs
-
Las unidades de procesamiento tensorial (TPU) son aceleradores de hardware especializados diseñados para cargas de trabajo de ML. Son la opción más potente y pueden utilizarse para entrenar y servir los modelos más exigentes.
Como parte del Paso 2, en "Ajustes del modelo", hay un ajuste de Registro. Si activas el registro de puntos finales, se aplicarán cargos. Por tanto, para este ejercicio, no lo habilites.
El siguiente ajuste son las opciones de explicabilidad, que no conllevan ningún cargo. Marca "Activar atribuciones de características para este modelo".
El paso 3 es "Monitoreo del modelo". No la actives para este proyecto (como se muestra en la Figura 4-35).
Una vez realizadas todas las configuraciones, el botón Implementación debería aparecer resaltado. Haz clic en Implementación para desplegar tu modelo en el punto final (como se muestra en la Figura 4-36).
Una vez creado el punto final y desplegado el modelo en el punto final, deberías recibir un correo electrónico sobre el estado de la implementación del punto final. Si la implementación se ha realizado correctamente, puedes empezar a hacer predicciones. Hay cuatro pasos:
-
Ir al Registro de Modelos.
-
Selecciona tu modelo.
-
Selecciona la versión del modelo.
-
Desplázate hacia abajo hasta que veas la página "Prueba tu modelo".
La Figura 4-37 muestra la página "Prueba tu modelo". Ten en cuenta que esta página podría ser una aplicación o una página web con este aspecto, en la que tú y tu equipo introducís los valores de los canales de medios y predecís el volumen de ventas.
Pulsa el botón Predecir.
Tras pulsar el botón Predecir, obtendrás una predicción para tu etiqueta (ventas), como se muestra en la Figura 4-38.
Los modelos de regresión devuelven un valor de predicción. La Figura 4-38 muestra un valor de resultado de predicción de ventas de 14,63, que está muy cerca de la media del histograma de ventas (mostrado en las Figuras 4-10 y 4-23). El intervalo de predicción proporciona un rango de valores que el modelo tiene un 95% de confianza en que contengan el resultado real. Así, como el resultado de la predicción de ventas es 14,63, y el intervalo de predicción es un rango entre 13,58 y 15,53, puedes estar seguro al 95% de que cualquier resultado de la predicción estará dentro de este rango.
Ahora, respondamos a esas preguntas empresariales.
El objetivo era construir un modelo ML para predecir cuánto volumen de ventas se generará en función del dinero gastado en cada uno de los canales de los medios de comunicación.
- ¿Puede el modelo predecir cuánto volumen de ventas se generará en función del dinero gastado en cada canal de medios?
-
Sí. Como Vertex AI te permite introducir valores para cada canal de medios, ahora puedes tomar decisiones sobre la futura asignación de presupuestos. Por ejemplo, el plan estratégico de medios de tu empresa puede incluir ahora aumentar el presupuesto del canal digital basándose en los resultados obtenidos de una predicción.
- ¿Existe una relación entre el gasto en publicidad y las ventas?
-
Sí. Existe una relación lineal positiva entre el gasto publicitario y las ventas en digital, TV y radio. El gasto en prensa tiene una relación débil con las ventas.
- ¿Qué canal de comunicación contribuye más a las ventas?
-
La televisión contribuye más a las ventas que los demás canales de comunicación. ¿Cómo? El diagrama de dispersión que construiste durante la sección EDA, y tu revisión del gráfico de barras de atribución de la función Vértice AI después de entrenar el modelo, muestran la contribución de la TV a las ventas.
- ¿Con qué precisión puede predecir el modelo las ventas futuras?
-
El modelo de regresión devuelve un valor de predicción cuando se introducen los valores del canal de medios en la ventana Predecir para predecir el volumen de ventas. Los resultados de la predicción muestran un valor de predicción de ventas y un intervalo de predicción. Los intervalos de predicción se pueden utilizar para tomar decisiones sobre observaciones futuras, de modo que puedes estar seguro al 95% de que cualquier resultado futuro de predicción de ventas caerá dentro de ese intervalo .
Advertencia
No olvides desinstalar tu modelo una vez que hayas terminado con este capítulo. Los modelos desplegados incurren en costes incluso cuando no se están utilizando, de modo que siempre están disponibles para devolver predicciones rápidas. Para desinstalar el modelo, ve a Vertex AI Endpoints, haz clic en el nombre del endpoint, luego haz clic en el menú de tres puntos "Más acciones" y, por último, haz clic en "Desinstalar modelo desde endpoint."
Resumen
En este capítulo, construiste un modelo AutoML para predecir las ventas del canal de medios publicitarios. Exploraste tus datos utilizando Pandas, creando mapas de calor, gráficos de dispersión e histogramas. Después de exportar el archivo de datos, lo cargaste en el marco Vertex AI de Google. A continuación, aprendiste a utilizar AutoML de Google Cloud para construir, entrenar e implementar un modelo ML para predecir las ventas. Obtuviste una comprensión general del rendimiento de tu modelo utilizando métricas de rendimiento y respondiste a preguntas empresariales comunes. Utilizaste el modelo para hacer predicciones en línea y hacer un poco de previsión presupuestaria. Ahora estás listo para presentarlo a tu equipo.
Get IA de bajo código now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.