LSTM para previsión de series temporales
Preparación de secuencias, LSTM sin estado frente a LSTM con estado, ventana de observación y previsión de varios pasos.
LSTM para previsión de series temporales es una lección gratuita de Learn AI with Python en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Learn AI with Python, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Learn AI with Python incluye 4 lecciones en total.
¿Por qué usar LSTM en series temporales?
LSTM (memoria a corto y largo plazo) es una red neuronal recurrente que recuerda patrones a lo largo de secuencias extensas mediante celdas de memoria con compuertas. Puede modelar dependencias no lineales que ARIMA no puede, lo que la hace eficaz para series complejas cuando se dispone de suficientes datos.
Ventanas de secuencias
Las LSTM aprenden a partir de ventanas: segmentos de longitud fija de pasos anteriores que se utilizan para predecir el valor siguiente. Con una ventana de 10, el modelo observa los pasos 1-10 para predecir el paso 11; después, los pasos 2-11 para predecir el 12, y así sucesivamente.
Creación de ventanas en el código
Una función auxiliar convierte una serie unidimensional en pares de entrada y objetivo.
import numpy as np
def make_windows(series, window):
X, y = [], []
for i in range(len(series) - window):
X.append(series[i:i+window])
y.append(series[i+window])
return np.array(X), np.array(y)
X, y = make_windows(values, window=10)Escalado de los datos
Las redes neuronales se entrenan mejor con entradas escaladas. Utilice MinMaxScaler para asignar los valores al intervalo [0, 1] y recuerde aplicar después la transformación inversa a las predicciones.
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
scaled = scaler.fit_transform(values.reshape(-1, 1))Cambio de forma para LSTM
Las capas LSTM de Keras esperan entradas con la forma (samples, timesteps, features). En una serie univariante, features es 1.
# X is (samples, timesteps); add a feature axis
X = X.reshape((X.shape[0], X.shape[1], 1))
print(X.shape) # (samples, timesteps, 1)Construcción del modelo
Una arquitectura sencilla consta de una capa LSTM(50) que alimenta una salida Dense(1) para predecir el valor siguiente.
from tensorflow.keras import Sequential
from tensorflow.keras.layers import LSTM, Dense
model = Sequential([
LSTM(50, input_shape=(X.shape[1], 1)),
Dense(1)
])¿Por qué Dense(1)?
La predicción de un paso por adelantado es una regresión con una única salida numérica, por lo que la capa final es Dense(1) sin función de activación. Para realizar predicciones de varios pasos, utilizaría Dense(n_steps).
Compilación
Utilice el optimizador adam y la función de pérdida mse (error cuadrático medio), la opción estándar para la regresión con objetivos continuos.
model.compile(optimizer="adam", loss="mse")Entrenamiento
Entrene el modelo con los datos organizados en ventanas. Una división de validación permite supervisar la generalización a lo largo de las épocas.
history = model.fit(
X, y,
epochs=50,
batch_size=32,
validation_split=0.2
)Predicción
Realice predicciones sobre ventanas nuevas y, después, aplique la transformación inversa para volver a la escala original.
pred_scaled = model.predict(X_test)
pred = scaler.inverse_transform(pred_scaled)Apilado y ajuste
Para series más difíciles, apile capas LSTM (establezca return_sequences=True en todas salvo la última) y añada dropout. Un mayor número de capas captura patrones más profundos, pero requiere más datos y aumenta el riesgo de sobreajuste.
model = Sequential([
LSTM(50, return_sequences=True, input_shape=(X.shape[1], 1)),
LSTM(50),
Dense(1)
])Comprobación rápida
Compruebe sus conocimientos sobre la predicción con LSTM.
Resumen
Preparó ventanas, escaló los datos con MinMaxScaler, cambió su forma a (samples, timesteps, features), construyó LSTM(50) + Dense(1), compiló el modelo con adam/mse, lo entrenó y realizó predicciones (aplicando la transformación inversa para recuperar la escala original). Así termina el curso de Series temporales. Siguiente curso: Sistemas de recomendación.
Preguntas frecuentes
¿La lección «LSTM para previsión de series temporales» es gratis?
Sí — el texto completo de «LSTM para previsión de series temporales» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Learn AI with Python, actualiza a CoddyKit PRO. El curso de Learn AI with Python incluye 4 lecciones en total.
¿Qué aprenderé en «LSTM para previsión de series temporales»?
Preparación de secuencias, LSTM sin estado frente a LSTM con estado, ventana de observación y previsión de varios pasos. Practicas Learn AI with Python con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Learn AI with Python?
No se requiere experiencia previa. Learn AI with Python en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.
¿Cuánto tiempo toma la lección «LSTM para previsión de series temporales»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Learn AI with Python?
Sí. Cada lección de Learn AI with Python incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Componentes y estacionariedad de series temporales
- Modelos ARIMA y SARIMA
- Prophet para previsiones automatizadas
- LSTM para previsión de series temporales