TensorFlow

TensorFlow

Tutorial TensorFlow: Redes neuronales densas de regresión

Descubre cómo construir redes neuronales densas para regresión con Keras. Aprende configuraciones clave, métricas como MAE y MSE, y aplícalas en predicciones continuas.

Aprende TensorFlow GRATIS y certifícate

Introducción a la regresión

La regresión es una técnica clave en el aprendizaje automático que permite predecir valores continuos a partir de un conjunto de variables independientes. A diferencia de la clasificación, que asigna categorías discretas, la regresión se centra en modelar relaciones donde la salida es un valor numérico. Por ejemplo:

  • Predecir el precio de una vivienda considerando características como tamaño, ubicación y número de habitaciones.
  • Estimar la temperatura futura con base en datos históricos.

Regresión con redes neuronales densas

En redes neuronales densas, la regresión implica:

  • Arquitectura adecuada: Las capas ocultas capturan relaciones no lineales entre las entradas y salidas.
  • Capa de salida: Utiliza una función de activación lineal, ideal para predecir valores continuos.

Entrenamiento del modelo

El entrenamiento de un modelo de regresión en Keras requiere:

  • Función de pérdida adecuada:
    • El error cuadrático medio (MSE) es una elección común, ya que penaliza las diferencias al cuadrado entre predicciones y valores reales.
  • Optimizador eficiente:
    • Adam es ampliamente utilizado para ajustar los pesos del modelo y minimizar la pérdida.

Ejemplo práctico: Regresión en Keras

import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
import numpy as np


rng = np.random.default_rng(seed=42)

# Ejemplo de datos simulados
X_train = rng.random((1000, 10))  
y_train = rng.random(1000)      

# Definición del modelo secuencial
modelo = keras.Sequential([
     layers.Dense(64, activation='relu', input_shape=(X_train.shape[1],)),
    layers.Dense(64, activation='relu'),
    layers.Dense(1)  # Capa de salida para regresión
])

# Compilación del modelo con optimizador y función de pérdida
modelo.compile(optimizer='adam', loss='mse', metrics=['mae'])

# Entrenamiento del modelo
modelo.fit(X_train, y_train, epochs=100, batch_size=32, validation_split=0.2)

En este código:

  • El modelo tiene dos capas densas con activación ReLU para capturar patrones complejos.
  • Una capa de salida lineal produce la predicción continua.
  • La función de pérdida MSE mide la calidad de las predicciones.
  • El optimizador Adam facilita la convergencia durante el entrenamiento.

Aplicaciones de la regresión

Las redes neuronales densas para regresión tienen amplias aplicaciones, como:

  • Predicciones financieras: Estimar precios de acciones o tendencias del mercado.
  • Análisis de series temporales: Predecir ventas o datos meteorológicos.
  • Ciencias físicas e ingeniería: Modelar fenómenos complejos como dinámica de fluidos o consumo de energía.

Evaluación del modelo

Es crucial evaluar el rendimiento del modelo de regresión mediante métricas adecuadas, como:

  • Error absoluto medio (MAE).
  • Error cuadrático medio (MSE).

Estas métricas cuantifican el error y ayudan a ajustar el modelo para obtener predicciones más precisas.

La regresión con redes neuronales densas combina la capacidad de modelar relaciones no lineales con herramientas de entrenamiento eficientes. Es una técnica poderosa para abordar problemas complejos y generar predicciones continuas en una variedad de campos.

Qué compilación usar en Keras para regresión

Al compilar un modelo de regresión en Keras, es esencial seleccionar cuidadosamente el optimizador, la función de pérdida y las métricas adecuadas para asegurar un entrenamiento eficiente y resultados precisos. Estas elecciones afectan directamente la capacidad del modelo para aprender de los datos y generalizar a nuevos conjuntos.

  • Función de pérdida: La elección de la función de pérdida es crucial en tareas de regresión, ya que determina cómo se mide el error entre las predicciones del modelo y los valores reales. Una opción común es el error cuadrático medio (MSE), que calcula el promedio de las diferencias al cuadrado entre las predicciones y los valores verdaderos. El MSE penaliza de forma más severa los errores grandes, lo que puede ser beneficioso para problemas donde se desea evitar grandes desviaciones. Otra alternativa es el error absoluto medio (MAE), que mide el promedio de las diferencias absolutas, ofreciendo una interpretación más directa del error promedio y siendo menos sensible a los valores atípicos.
  • Optimizador: El optimizador es responsable de actualizar los pesos del modelo para minimizar la función de pérdida. El Adam es ampliamente utilizado debido a su capacidad para adaptarse dinámicamente la tasa de aprendizaje durante el entrenamiento, combinando las ventajas de otros optimizadores como AdaGrad y RMSProp. Adam es especialmente efectivo en problemas donde el espacio de parámetros es grande y complejo. Alternativamente, el SGD (descenso de gradiente estocástico) con momentum puede utilizarse para mejorar la velocidad de convergencia y evitar quedar atascado en mínimos locales.
  • Métricas: Las métricas permiten evaluar el rendimiento del modelo de manera más interpretable durante el entrenamiento y la validación. En regresión, métricas como el MAE y el MSE son frecuentemente utilizadas. Estas métricas proporcionan una medida cuantitativa del error que el modelo comete en sus predicciones, facilitando la comparación entre diferentes configuraciones del modelo o distintas etapas del entrenamiento.

A continuación se muestra un ejemplo de cómo compilar un modelo de regresión en Keras utilizando las configuraciones mencionadas:

import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers

# Definición del modelo secuencial
modelo = keras.Sequential([
    layers.Dense(64, activation='relu', input_shape=(features.shape[1],)),
    layers.Dense(64, activation='relu'),
    layers.Dense(1)  # Capa de salida para regresión
])

# Compilación del modelo con optimizador y función de pérdida
modelo.compile(
    optimizer='adam',    # Optimizador Adam
    loss='mse',          # Función de pérdida MSE
    metrics=['mae']      # Métrica MAE
)

# Entrenamiento del modelo
modelo.fit(X_train, y_train, epochs=100, batch_size=32, validation_split=0.2)

En este ejemplo, el modelo se compone de dos capas densas con activación ReLU que capturan patrones complejos en los datos y una capa de salida lineal para producir la predicción continua. La compilación del modelo utiliza el optimizador Adam, la función de pérdida MSE y la métrica MAE. Esta configuración facilita una optimización eficiente y proporciona una evaluación clara del rendimiento del modelo durante el entrenamiento.

Es recomendable experimentar con diferentes optimizadores y funciones de pérdida según las características específicas del problema y los datos disponibles. Además, ajustar los hiperparámetros del optimizador, como la tasa de aprendizaje, puede mejorar aún más el rendimiento del modelo de regresión.

Capa de salida para regresión en Keras

La capa de salida en un modelo de regresión utilizando Keras desempeña un papel crucial en la generación de predicciones continuas. A diferencia de las tareas de clasificación, donde la capa de salida suele utilizar funciones de activación como sigmoid o softmax, en regresión es común emplear una activación lineal para permitir que el modelo produzca cualquier valor real sin restricciones.

En Keras, la capa de salida para una tarea de regresión típicamente se define utilizando la clase Dense con un único nodo si se está predecir una variable continua. La ausencia de una función de activación específica en esta capa implica que se utiliza una activación lineal por defecto, lo que facilita la predicción de valores en un rango amplio. Por ejemplo:

from tensorflow import keras
from tensorflow.keras import layers

# Definición de la capa de salida para regresión
capa_salida = layers.Dense(1)  # Activación lineal por defecto

En escenarios donde el problema de regresión requiere predecir múltiples variables continuas simultáneamente, se pueden añadir más nodos en la capa de salida, cada uno correspondiente a una variable de salida específica. Por ejemplo, para predecir tres valores continuos:

# Definición de la capa de salida para regresión multivariable
capa_salida = layers.Dense(3)  # Tres salidas continuas

Es importante asegurar que la capa de salida esté alineada con la estructura de los datos de salida (y_train) utilizada durante el entrenamiento del modelo. Si las salidas tienen diferentes escalas o rangos, puede ser beneficioso aplicar técnicas de normalización o escalado para mejorar la eficiencia del entrenamiento y la precisión de las predicciones.

Además, al definir la arquitectura del modelo, la capa de salida debe ser colocada después de las capas ocultas que capturan las relaciones no lineales entre las características de entrada y las variables de salida. Un ejemplo de arquitectura completa para una tarea de regresión podría ser:

import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers

# Definición del modelo secuencial
modelo = keras.Sequential([
    layers.Dense(64, activation='relu', input_shape=(X_train.shape[1],)),
    layers.Dense(64, activation='relu'),
    layers.Dense(1)  # Capa de salida para regresión
])

# Compilación del modelo
modelo.compile(
    optimizer='adam',
    loss='mse',
    metrics=['mae']
)

# Entrenamiento del modelo
modelo.fit(X_train, y_train, epochs=100, batch_size=32, validation_split=0.2)

En este ejemplo, la última capa Dense(1) sin especificar una función de activación utiliza una activación lineal, adecuada para predecir un único valor continuo. Las capas ocultas con activación ReLU permiten al modelo capturar relaciones complejas en los datos, mientras que la capa de salida lineal traduce esas relaciones en predicciones numéricas.

Es fundamental también considerar la regularización en las capas ocultas para prevenir el sobreajuste y mejorar la capacidad de generalización del modelo. Sin embargo, la capa de salida para regresión generalmente se mantiene simple, centrada en producir las predicciones continuas requeridas por el problema específico.

Finalmente, al diseñar la capa de salida para regresión en Keras, es esencial alinear correctamente la dimensión y activación con los objetivos del modelo, garantizando así que las predicciones generadas sean coherentes y precisas con respecto a los datos de entrenamiento y las expectativas del problema a resolver.

Evaluación del modelo con métricas de regresión en Keras

La evaluación de un modelo de regresión en Keras es fundamental para comprender su rendimiento y capacidad de generalización a nuevos datos. Las métricas de regresión proporcionan una cuantificación del error entre las predicciones del modelo y los valores reales, permitiendo así comparar diferentes modelos o configuraciones y seleccionar la más adecuada para el problema en cuestión.

Métricas comunes de regresión

  • Error Cuadrático Medio (MSE):
    El MSE mide el promedio de las diferencias al cuadrado entre las predicciones y los valores reales. Es sensible a los errores grandes, lo que lo hace útil cuando se desea penalizar de manera significativa las predicciones alejadas del valor real.
from tensorflow.keras.metrics import MeanSquaredError

mse = MeanSquaredError()
modelo.compile(optimizer='adam', loss='mse', metrics=[mse])
  • Error Absoluto Medio (MAE):
    El MAE calcula el promedio de las diferencias absolutas entre las predicciones y los valores reales. A diferencia del MSE, no penaliza en exceso los errores grandes, proporcionando una medida más interpretativa del error promedio.
from tensorflow.keras.metrics import MeanAbsoluteError

mae = MeanAbsoluteError()
modelo.compile(optimizer='adam', loss='mse', metrics=[mae])
  • Raíz del Error Cuadrático Medio (RMSE):
    El RMSE es la raíz cuadrada del MSE y mantiene las mismas unidades que la variable objetivo, lo que facilita su interpretación. Aunque Keras no incluye esta métrica de forma nativa, se puede implementar fácilmente.
import tensorflow.keras.backend as K

def rmse(y_true, y_pred):
    return K.sqrt(K.mean(K.square(y_pred - y_true)))

modelo.compile(optimizer='adam', loss='mse', metrics=[rmse])
  • Error Porcentual Absoluto Medio (MAPE):
    El MAPE mide el error absoluto promedio como un porcentaje de los valores reales. Es útil para entender el error en términos relativos, aunque puede ser problemático si alguno de los valores reales es cero.
from tensorflow.keras.metrics import MeanAbsolutePercentageError

mape = MeanAbsolutePercentageError()
modelo.compile(optimizer='adam', loss='mse', metrics=[mape])

Selección de métricas adecuadas

La elección de la métrica de evaluación debe alinearse con los objetivos específicos del problema de regresión. Por ejemplo:

  • MSE es adecuado cuando se desea penalizar fuertemente los errores grandes.
  • MAE es preferible cuando se busca una interpretación más directa del error promedio sin penalizar excesivamente los errores extremos.
  • RMSE combina la penalización de errores grandes con una interpretación en las mismas unidades que la variable objetivo.
  • MAPE es útil cuando se desea evaluar el error en términos relativos, especialmente en casos donde las magnitudes de los valores reales varían significativamente.

Implementación de múltiples métricas

Keras permite la evaluación del modelo utilizando múltiples métricas simultáneamente. Esto proporciona una visión más completa del rendimiento del modelo desde diferentes perspectivas.

from tensorflow.keras.metrics import MeanSquaredError, MeanAbsoluteError

modelo.compile(
    optimizer='adam',
    loss='mse',
    metrics=['mae', 'mse']
)

historial = modelo.fit(X_train, y_train, epochs=100, batch_size=32, validation_split=0.2)

En este ejemplo, el modelo se compila con MAE y MSE como métricas adicionales además del MSE como función de pérdida. Durante el entrenamiento, Keras reportará ambas métricas para cada época, facilitando la comparación y análisis del rendimiento.

Evaluación del modelo en datos de prueba

Una vez entrenado el modelo, es esencial evaluarlo utilizando un conjunto de datos independiente de entrenamiento y validación, conocido como conjunto de prueba. Esto garantiza que las métricas reflejen el rendimiento real del modelo en datos no vistos previamente.

resultado = modelo.evaluate(X_test, y_test)
print(f"Loss (MSE): {resultado[0]}")
print(f"MAE: {resultado[1]}")
print(f"MSE: {resultado[2]}")

Este fragmento de código evalúa el modelo en el conjunto de prueba y imprime las métricas correspondientes, permitiendo identificar el error promedio y la variabilidad de las predicciones respecto a los valores reales.

Visualización de las métricas

La visualización de las métricas de evaluación durante el entrenamiento puede proporcionar insights valiosos sobre el comportamiento del modelo, como el sobreajuste o la subajuste. Keras almacena el historial de entrenamiento, que puede ser utilizado para generar gráficos representativos.

import matplotlib.pyplot as plt

# Plot de MAE
plt.plot(historial.history['mae'], label='MAE de entrenamiento')
plt.plot(historial.history['val_mae'], label='MAE de validación')
plt.xlabel('Épocas')
plt.ylabel('MAE')
plt.legend()
plt.show()

# Plot de MSE
plt.plot(historial.history['mse'], label='MSE de entrenamiento')
plt.plot(historial.history['val_mse'], label='MSE de validación')
plt.xlabel('Épocas')
plt.ylabel('MSE')
plt.legend()
plt.show()

Estos gráficos permiten visualizar cómo evolucionan las métricas a lo largo de las épocas de entrenamiento, facilitando la identificación de tendencias y la toma de decisiones sobre ajustes en la arquitectura o los hiperparámetros del modelo.

En resumen, la evaluación del modelo con métricas de regresión en Keras es un paso crítico que asegura que el modelo no solo se ajusta bien a los datos de entrenamiento, sino que también generaliza eficazmente a nuevos datos. La selección adecuada de métricas y su interpretación correcta son esenciales para desarrollar modelos robustos y precisos en tareas de regresión.

Aprende TensorFlow GRATIS online

Todas las lecciones de TensorFlow

Accede a todas las lecciones de TensorFlow y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.

Introducción Al Deep Learning Y Redes Neuronales

TensorFlow

Introducción Y Entorno

Introducción A Tensorflow

TensorFlow

Introducción Y Entorno

Introducción A Keras

TensorFlow

Introducción Y Entorno

Redes Neuronales De Múltiples Capas

TensorFlow

Introducción Y Entorno

Algoritmo De Backpropagation

TensorFlow

Introducción Y Entorno

Implementación De Una Red Neuronal Con Numpy

TensorFlow

Introducción Y Entorno

Modelo Con Api Secuencial

TensorFlow

Construcción De Modelos Con Keras

Modelo Con Api Funcional

TensorFlow

Construcción De Modelos Con Keras

Subclases De Modelos

TensorFlow

Construcción De Modelos Con Keras

Capas En Keras

TensorFlow

Construcción De Modelos Con Keras

Funciones De Activación

TensorFlow

Construcción De Modelos Con Keras

Redes Neuronales Densas De Regresión

TensorFlow

Construcción De Modelos Con Keras

Redes Neuronales Densas De Clasificación Binaria

TensorFlow

Construcción De Modelos Con Keras

Redes Neuronales Densas De Clasificación Multiclase

TensorFlow

Construcción De Modelos Con Keras

Redes Convolucionales Cnn

TensorFlow

Construcción De Modelos Con Keras

Redes Recurrentes Rnn

TensorFlow

Construcción De Modelos Con Keras

Redes Neuronales Mixtas

TensorFlow

Construcción De Modelos Con Keras

Api Dataset

TensorFlow

Procesamiento De Datos

Manejo De Valores Faltantes

TensorFlow

Procesamiento De Datos

Encoding De Valores Categóricos En Continuos

TensorFlow

Procesamiento De Datos

Preprocesados De Escalado, Normalización Y Estandarización

TensorFlow

Procesamiento De Datos

Generación De Nuevas Características

TensorFlow

Procesamiento De Datos

Algoritmos De Optimización

TensorFlow

Entrenamiento Y Evaluación De Modelos

Técnicas De Validación

TensorFlow

Entrenamiento Y Evaluación De Modelos

Monitorización De Entrenamiento

TensorFlow

Entrenamiento Y Evaluación De Modelos

Redes Generativas Adversariales Gans

TensorFlow

Técnicas Avanzadas

Transformers

TensorFlow

Técnicas Avanzadas

Autoencoders

TensorFlow

Técnicas Avanzadas

Carga De Capas Ya Hechas

TensorFlow

Técnicas Avanzadas

Regularización De Modelos

TensorFlow

Herramientas Y Optimización

Hiperparámetros Con Keras Tuner

TensorFlow

Herramientas Y Optimización

Tensorboard

TensorFlow

Herramientas Y Optimización

Uso De Tensorflow Keras En Gpu

TensorFlow

Herramientas Y Optimización

Accede GRATIS a TensorFlow y certifícate

Objetivos de aprendizaje de esta lección

  • Comprender el uso de redes neuronales densas en problemas de regresión.
  • Diseñar arquitecturas efectivas con capas densas y activación lineal.
  • Implementar funciones de pérdida como MSE y optimizadores como Adam.
  • Evaluar el modelo con métricas como MAE, MSE, y RMSE.
  • Aplicar redes de regresión a casos prácticos como predicciones financieras o científicas.