¿Cómo predecir múltiples variables con un modelo? ¡Y por qué! – Hacia la IA

Estás leyendo la publicación: ¿Cómo predecir múltiples variables con un modelo? ¡Y por qué! – Hacia la IA

Publicado originalmente en Hacia la IA, la empresa líder mundial en noticias y medios de IA y tecnología. Si está creando un producto o servicio relacionado con la IA, lo invitamos a considerar convertirse en patrocinador de la IA. En Hacia la IA, ayudamos a escalar las empresas emergentes de IA y tecnología. Permítanos ayudarlo a dar rienda suelta a su tecnología a las masas.

¿Quieres ahorrar tiempo y costes? Tan sencillo como crear un modelo capaz de predecir múltiples variables con el mismo entrenamiento y en el mismo proceso de predicción.

En el artículo, voy a mostrar un código, pero si desea verificar el código completo, está disponible en Kaggle y GitHub. Donde puede bifurcarlo, modificarlo y ejecutarlo.

Guía: salidas múltiples con la API funcional de Keras

Cuando empezamos a trabajar con TensorFlow, solemos utilizar el formato secuencial para crear Modelos con la librería Keras.

Con modelos secuenciales, podemos resolver muchos problemas en todos los campos del aprendizaje profundo. Ya sean de reconocimiento o clasificación de imágenes, Procesamiento del Lenguaje Natural o Pronóstico de Series… son modelos lo suficientemente potentes como para ser utilizados en la gran mayoría de problemas.

Pero hay momentos en los que necesitamos ir un poco más allá al usar Keras con TensorFlow. Entonces, podemos usar la API para la creación de modelos.lo que abre un amplio mundo con muchas más posibilidades que no teníamos al utilizar modelos secuenciales.

En este articulo, vamos a ver la creación de un modelo capaz de predecir dos variables diferentes utilizando los mismos datos y el mismo proceso de aprendizaje, compartiendo gran parte de las capas.

🔥 Recomendado:  Picazón en la mano derecha: ¿qué significa?

Es decir, crearemos un modelo Multi-Output con ramas de dos capas. Como podemos ver en la imagen:

El modelo se compone de una capa de entrada, seguida de dos capas densas. Estas tres capas son la parte común del modelo. A partir de aquí, el modelo se divide en dos ramas diferentes. En una de las ramas encontramos la capa de salida de la variable de clasificación. La otra rama está compuesta por una capa densa y la capa de salida que predice la variable de regresión.

Tenga en cuenta que en la rama derecha, el modelo predice una variable de clasificación, mientras que en la rama izquierda, la variable a predecir es una variable de regresión.

En este artículo, vamos a ver solo cómo generar y ejecutar el modelo. El tratamiento de datos y posterior evaluación del modelo, así como ideas para mejorarlo, se pueden encontrar en el Cuaderno Kaggle.

Una breve introducción a los Datos y problema resuelto.

He usado un Kaggle Dataset que contiene información sobre vinos. Son datos en formato tabular, con 11 columnas que se pueden considerar características y dos que serán nuestras etiquetas.

Como primera etiqueta he seleccionado la calidad del vino (calidad), que va de 0 a 9. He decidido tratarla como si fuera una variable de regresión y no de clasificación. Ya que es una variable que muestra que el vino está mejorando.

La segunda etiqueta es el tipo de vino (type), que indica si el vino es blanco o tinto. Esta es claramente una variable de clasificación.

Entonces, tenemos dos variables de diferentes tipos para predecir en un solo modelo.

🔥 Recomendado:  Cómo unir 2 mesas en Magento 2

Después de ver el Dataset, comenzamos la construcción del modelo.

Como ves, crear un modelo de este tipo no es nada complicado y abre un mundo de nuevas posibilidades si lo comparamos con los modelos secuenciales.

Tienes toda la información en los comentarios del código, pero me gustaría señalar un par de cosas.

Usualmente uso el mismo nombre para el nombre interno de las capas y el nombre de las variables que contienen las capas. No solo para que quede más claro el código sino que cuando indicamos la función de pérdida y las métricas hay que indicar el nombre interno de la capa. Al informar los resultados del modelo, debemos indicar el nombre de las variables que contienen las capas. Es más fácil para mí usar siempre el mismo nombre.

Se pueden usar diferentes funciones de pérdida y métricas para cada variable de salida.

Realmente tenemos que indicarlos en dos listas. Una para las funciones de pérdida y otra para las métricas, donde las relacionaremos con el nombre de la capa.

modelo.compilar(optimizador=optimizador,
pérdida = {‘y_t_layer’ : ‘binary_crossentropy’,
‘y_q_layer’: ‘mse’
},
métricas = {‘y_t_layer’: ‘precisión’,
‘y_q_layer’: tf.keras.metrics.RootMeanSquaredError()
}
)

¿Para qué pueden ser útiles los modelos de resultados múltiples?

No pretendo dar una respuesta completa ya que es solo mi visión, y los científicos de datos más experimentados pueden encontrar más usos para ellos.

Este tipo de modelo es muy útil en entornos donde se deben realizar entrenamientos periódicos con un gran volumen de datos para predecir más de una variable. El tiempo ahorrado si lo comparamos con entrenar dos o tres modelos diferentes puede ser muy significativo, no solo en tiempo sino también en coste.

🔥 Recomendado:  Cómo desactivar o eliminar una cuenta de Telegram rápidamente

También pueden ahorrar mucho tiempo y proceso en entornos donde se deben ejecutar numerosas predicciones repetidamente y el resultado de estas es más de una variable.

Por otro lado, cuestan más afinar ya que, por ejemplo, es más difícil encontrar una tasa de aprendizaje que pueda ser óptima para todas las variables.

Este artículo es parte de una serie sobre temas avanzados en TensorFlow y Keras, si te gustó, considera seguirme en Medio para recibir actualizaciones sobre nuevos artículos. Y por supuesto, eres bienvenido a conéctate conmigo en LinkedIn.

TensorFlow más allá de lo básico


¿Cómo predecir múltiples variables con un modelo? ¡Y por qué! se publicó originalmente en Hacia la IA en Medium, donde las personas continúan la conversación destacando y respondiendo a esta historia.

Publicado a través de Hacia la IA