Estoy siguiendo una introducción a las Redes Neuronales LSTM de este repo - https://github.com/jaungiers/LSTM-Neural-Network-for-Time-Series-Prediction
El autor propone varias formas de trazar y comprobar las predicciones. La que me confunde es su método en LSTM.py llamado predict_sequences_multiple. El código dice así:
def predict_sequences_multiple(model, data, window_size, prediction_len):
#Predict sequence of 50 steps before shifting prediction run forward by 50 steps
prediction_seqs = []
for i in range(int(len(data)/prediction_len)):
import pdb
curr_frame = data[i*prediction_len]
predicted = []
for j in range(prediction_len):
predicted.append(model.predict(curr_frame[newaxis,:,:])[0,0])
curr_frame = curr_frame[1:]
curr_frame = np.insert(curr_frame, [window_size-1], predicted[-1], axis=0)
prediction_seqs.append(predicted)
return prediction_seqs
Esencialmente, observa una ventana deslizante de 50 ticks en los datos, predice el siguiente valor de la secuencia, desliza la ventana a la derecha en uno e incluye el valor predicho como el elemento más reciente de la ventana deslizante, sobre el que vuelve a probar el modelo. De este modo, las predicciones del modelo se introducen en los datos de prueba. Soy bastante novato en la ciencia de datos y las predicciones de series temporales, pero no entiendo por qué alguien haría esto, ya que cualquier error en el modelo volvería a alimentarse a sí mismo. ¿Hay alguna razón específica para analizar los resultados de esta manera?