predicción de existencias: modelo GRU que predice los mismos valores dados en lugar del precio futuro de las acciones

i solo estaba probando este modelo de kaggleenvia este modelo supone predecir 1 día antes del conjunto dado de las últimas existencias. Después de ajustar algunos parámetros obtuve un resultado sorprendentemente bueno, como puedes ver. @l error @mean square fue 5.193.por lo que, en general, se ve bien para predecir acciones futuras, ¿verdad? Bueno, resultó ser horrible cuando miro de cerca los resultados.

como puede ver que este modelo predice el último valor de las acciones dadas, que es nuestra última acción actual.
así que ajusté las predicciones a un paso atrás ... ahora puede ver claramente que el modelo predice un paso hacia atrás o el último premio de acciones en lugar de futuras predicciones de acciones.

Estos son mis datos de entrenamiento
# So for each element of training set, we have 30 previous training set elements 
X_train = []
y_train = []

previous = 30

for i in range(previous,len(training_set_scaled)):
    X_train.append(training_set_scaled[i-previous:i,0])
    y_train.append(training_set_scaled[i,0])
X_train, y_train = np.array(X_train), np.array(y_train)


print(X_train[-1],y_train[-1])
Este es mi modelo
# The GRU architecture
regressorGRU = Sequential()
# First GRU layer with Dropout regularisation
regressorGRU.add(GRU(units=50, return_sequences=True, input_shape=(X_train.shape[1],1)))
regressorGRU.add(Dropout(0.2))
# Second GRU layer
regressorGRU.add(GRU(units=50, return_sequences=True))
regressorGRU.add(Dropout(0.2))
# Third GRU layer
regressorGRU.add(GRU(units=50, return_sequences=True))
regressorGRU.add(Dropout(0.2))
# Fourth GRU layer
regressorGRU.add(GRU(units=50))
regressorGRU.add(Dropout(0.2))
# The output layer
regressorGRU.add(Dense(units=1))

# Compiling the RNN
regressorGRU.compile(optimizer='adam',loss='mean_squared_error')
# Fitting to the training set
regressorGRU.fit(X_train,y_train,epochs=50,batch_size=32)

Yaqu es mi código completo, también puede ejecutar este código engoogle colab.

Entonces mi pregunta es ¿cuál es la razón detrás de esto? ¿Qué estoy haciendo mal alguna sugerencia?

Respuestas a la pregunta(2)

Su respuesta a la pregunta