Многоцелевая регрессия с зависимостями в цели (Keras) - PullRequest
0 голосов
/ 17 апреля 2020

В настоящее время я пытаюсь смоделировать добычу нефти и газа с использованием многоцелевого регрессионного подхода с библиотекой Keras. Входные данные выглядят следующим образом: Каждый столбец представляет общий объем добычи для данного месяца Например, столбец «1» представляет общий объем добычи скважины после первого месяца, столбец «12» представляет общий объем производства через 12 месяцев и так далее. Вот модель, которую я сейчас использую. Он принимает в качестве входных данных первые 24 месяца производства и прогнозирует следующие 24 месяца (25-48 месяцев).

from keras.layers import Dense

model = Sequential()
model.add(Dense(100,input_dim=X.shape[0],activation="relu"))
model.add(Dense(150,activation="relu"))
model.add(Dense(50,activation="relu"))
model.add(Dense(y.shape[1],activation="linear"))
model.compile(loss="mse", optimizer="adam")
model.fit(X_train,y_train, epochs=100,batch_size=10, verbose=1)

По точкам, модель, кажется, действительно хорошо предсказывает на тестовом наборе (высокий R-Squared, низкий MAPE, низкий MAE и т. Д.) Для всех целевых месяцев. Проблема в том, что прогнозы полностью независимы друг от друга, поэтому прогноз на 25-й месяц часто меньше, чем на 24-й месяц. Это очевидно невозможно в реальном мире, поскольку совокупная добыча скважины не может уменьшаться со временем. Прогнозируемое производство в зависимости от времени

Это ясно показано на графике. Каждый последующий прогноз должен быть больше предыдущего. Мне интересно, существуют ли какие-либо модели архитектуры / функции потерь, которые позволили бы мне гарантировать, что прогнозы всегда будут в возрастающем порядке. Другими словами, есть ли способ смоделировать зависимости в целевом векторе?

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...