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ícateIntroducció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.
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
Introducción Y Entorno
Introducción A Tensorflow
Introducción Y Entorno
Introducción A Keras
Introducción Y Entorno
Redes Neuronales De Múltiples Capas
Introducción Y Entorno
Algoritmo De Backpropagation
Introducción Y Entorno
Implementación De Una Red Neuronal Con Numpy
Introducción Y Entorno
Modelo Con Api Secuencial
Construcción De Modelos Con Keras
Modelo Con Api Funcional
Construcción De Modelos Con Keras
Subclases De Modelos
Construcción De Modelos Con Keras
Capas En Keras
Construcción De Modelos Con Keras
Funciones De Activación
Construcción De Modelos Con Keras
Redes Neuronales Densas De Regresión
Construcción De Modelos Con Keras
Redes Neuronales Densas De Clasificación Binaria
Construcción De Modelos Con Keras
Redes Neuronales Densas De Clasificación Multiclase
Construcción De Modelos Con Keras
Redes Convolucionales Cnn
Construcción De Modelos Con Keras
Redes Recurrentes Rnn
Construcción De Modelos Con Keras
Redes Neuronales Mixtas
Construcción De Modelos Con Keras
Api Dataset
Procesamiento De Datos
Manejo De Valores Faltantes
Procesamiento De Datos
Encoding De Valores Categóricos En Continuos
Procesamiento De Datos
Preprocesados De Escalado, Normalización Y Estandarización
Procesamiento De Datos
Generación De Nuevas Características
Procesamiento De Datos
Algoritmos De Optimización
Entrenamiento Y Evaluación De Modelos
Técnicas De Validación
Entrenamiento Y Evaluación De Modelos
Monitorización De Entrenamiento
Entrenamiento Y Evaluación De Modelos
Redes Generativas Adversariales Gans
Técnicas Avanzadas
Transformers
Técnicas Avanzadas
Autoencoders
Técnicas Avanzadas
Carga De Capas Ya Hechas
Técnicas Avanzadas
Regularización De Modelos
Herramientas Y Optimización
Hiperparámetros Con Keras Tuner
Herramientas Y Optimización
Tensorboard
Herramientas Y Optimización
Uso De Tensorflow Keras En Gpu
Herramientas Y Optimización
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.