В такой крупной отрасли, как нефть и газ, крайне важно прогнозировать производство в будущем; это позволяет им оптимизировать и избегать любых катастрофических ситуаций. Крупные компании осознали, что разработка и внедрение машинного обучения в отрасли может сэкономить много денег и уменьшить разрушительное воздействие на окружающую среду.

Также известная как vanilla RNN, традиционная рекуррентная нейронная сеть (RNN), применялась для моделирования последовательных данных в качестве подхода рекурсивной нейронной сети. Важнейшей характеристикой RNN является рекурсия задержки, позволяющая описывать динамические характеристики систем. Эта задержка делает модель связанной не только с входами, но и с предыдущей целевой точкой. Основное различие между RNN и ANN заключается в том, что учитывается предыдущий вывод (в момент t-1).

Долговременная краткосрочная память (LSTM) - это разновидность моделей RNN с приемлемой производительностью для данных последовательности, например временных рядов. Модели LSTM широко используются в различных отраслях, таких как здравоохранение, образование, окружающая среда и т. Д. В этой статье модель LSTM была предложена для прогнозирования дебита нефти на нефтегазовом месторождении. Tensorflow использовался для реализации модели прогнозирования временных рядов.

Набор данных содержит 1024 точки данных без определенного временного шага. Набор данных состоит из двух столбцов, включая время (день) и дебит скважинной нефти (WOPR), измеренный в баррелях.

Стационарность - важный фактор во временных рядах, что означает, что статистические свойства постоянны во времени. Это важно, потому что на нем основывается большинство аналитических инструментов и статистических тестов.

Чтобы сделать его стационарным, был использован метод разности (другой метод, который можно было бы предложить, - это преобразование логарифма). В приведенном ниже коде показаны две функции, которые делают набор данных стационарным, затем загружают модель и, наконец, обращают функцию к визуализации:

Нормализация - еще одно важное действие для всех числовых данных и данных временных рядов для алгоритмов машинного обучения, которое предлагает преобразовать масштаб набора данных, чтобы он соответствовал модели. Здесь MaxMinScaler использовался для преобразования шкалы в [-1, +1]. И вторая функция - обратная к исходному масштабу.

Последнее действие - сделать набор данных подходящим для алгоритма временных рядов. Здесь размер окна равен 1. Это означает, что каждые сгенерированные данные предсказываются на основе предыдущих данных «размера окна» в момент времени t. Функция, позволяющая использовать временные ряды:

Функция, которая была написана для преобразования массива набора данных в матрицу:

Для оценки модели используются два типа ошибок: среднеквадратическая ошибка в процентах и ​​средняя абсолютная ошибка в процентах.

Модель LSTM содержит два скрытых слоя lstm, включая 14 нейронов, для каждого из которых выпадение составляет 0,5 для обоих слоев. Плотный слой из трех нейронов с функцией активации функции relu, наконец достигающий одного нейрона для прогнозирования цели.

Модель скомпилирована с помощью оптимизатора «adam» и функции потерь «mean_squared_error». Размер пакета равен 1.

80% набора данных используется для обучения модели и 20% для тестирования.

По прошествии десяти эпох результат показывает, что упомянутые ошибки для набора тестовых данных будут предложены следующим образом:

RMSE = 0,8685

MAPE = 0,55797

Было бы предложено визуализировать на графике сравнение поезда и теста между исходными данными и подобранными данными:

Исходный код доступен в этом репозитории.