У меня есть модель LSTM Encoder-Decoder, которую я разработал для классификации движения цен на основе модели Jump-Diffusion (по сути, проблема двоичной классификации).
Моя модель разделена на 75/25 между обучением и проверкой.
Моя проблема заключается в том, что после применения методов дисбаланса классов, таких как SMOTE, точность прогнозов моей модели очень высока как при обучении, так и при проверке (может все еще переобучаться). Но когда дело доходит до точности, отзыва и оценки f1, моя тренировочная модель снова работает хорошо, но со стороны проверки точность и отзыв значительно снизились. Это, очевидно, приводит к более низкому результату f1 на стороне валидации.
Кто-нибудь знает, почему точность проверки будет высокой, но точность и отзыв значительно снизились? Проблема в том, как моя модель вычисляет точность и отзыв на стороне валидации, или моя модель просто переоснащается, что приводит к более низким результатам валидации?
Сводку результатов модели см. На изображении ниже. При необходимости я могу предоставить ноутбук.
Изменить: включая соответствующий код
#%pip install keras-metrics
# Importing required packages
import keras_metrics as km
# LSTM Workings_Autoencoder Model
ac_model_1b = Sequential()
ac_model_1b.add(Bidirectional(LSTM(units=200, return_sequences = True,
input_shape = (n_timesteps, n_features),
kernel_initializer='glorot_normal')))
ac_model_1b.add(LSTM(100))
ac_model_1b.add(Dropout(0.2))
ac_model_1b.add(RepeatVector(n_timesteps))
ac_model_1b.add(LSTM(100, return_sequences = True))
ac_model_1b.add(Dropout(0.2))
ac_model_1b.add(LSTM(200, return_sequences = True))
ac_model_1b.add(TimeDistributed(Dense(1, activation='sigmoid')))
ac_model_1b.compile(loss='binary_crossentropy', optimizer='Adamax',
metrics=['accuracy', km.binary_precision(), km.binary_recall()])
results_ac_model_1b = ac_model_1b.fit(x_train, y_train, epochs=100, batch_size=32,
shuffle=True, validation_data=(x_valid, y_valid))
print(ac_model_1b.summary())
ac_model_1b.save('lstm_model_adamax.h5')
Любые советы приветствуются.
Спасибо.