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

В начале года нам поставили задачу предсказывать отказы оборудования с горизонтом 7, а лучше 14, дней до момента отказа. Мы были весьма оптимистичны и думали, что сейчас быстро сделаем что-нибудь блистательное и полезное.

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

Нам выдали данные за 2019 год (и это была первая ошибка, которая очень замедлила исследования). Мы почистили данные, определили ключевые параметры. Построили несколько тестовых моделей используя Random Forest и XGBoost. Результат нас очень порадовал: первые модели показывали точность при обучении 76-86%. Мы уже собирались открывать шампанское, но тут нас настигла суровая реальность: на неизвестных ранее данных результаты модели оставляли желать лучшего. 

После непродолжительных обсуждений, мы пришли к выводу, что задействовали слишком мало данных для обучения. Получили данные за 2020 год. Следующим этапом мы стали обучать на 2019, а тестировать модель на 2020 годе. Результат печален: прогнозировали всего лишь 30% отказов, и только в последние сутки.

Надо сказать, что даже 30% результат неплох: опытный инженер, глядя на телеметрию, предсказывает всего лишь 10-15% отказов. Но для удовлетворения бизнес-потребности, нужно было решить две проблемы:

  1. Прогнозировать более 50% отказов, и чем больше, тем лучше. Простой оборудования из-за отказов очень дорого обходится заказчику.

  2. И самое главное: увеличить горизонт предсказания отказов, так как за сутки многие профилактические мероприятия провести нельзя.

В общем, XGBoost модель работала, но плохо решала бизнес-задачу. Мы запустили ее в опытную эксплуатацию и пошли думать дальше.

А дальше были месяцы экспериментов с параметрами и тонкой настройкой. Мы конструировали агрегированные параметры, добавляли типы оборудования, создавали новую разметку событий, выкидывали и добавляли данные при обучении модели, добавили нейросеть на базе Keras. И увы мы должны признать, что точность на реальных данных стала снижаться, и приближаться к человеку мы стали прогнозировать 5-20% отказов.

Сейчас я вижу в этом несколько проблем:

  • Нам изначально выдали неполный и некорректный набор данных. Это вызвало многие проблемы в дальнейшем. Когда мы начали раскладывать параметры оборудования по годам,выяснилось, что данные даже не совпадают. А допустим данные за 2018 года, вообще ни на что не похожи.

    В идеале графики должны быть похожими и по оси x совмещаться. При этом оборудование и режимы работы официально не менялись.
    В идеале графики должны быть похожими и по оси x совмещаться. При этом оборудование и режимы работы официально не менялись.
  • Очень большое влияние на результаты оказывает местоположение оборудования. Во время распространения модели на всё оборудование мы столкнулись с разницей в режимах работы в зависимости от территории установки оборудования.

  • Мы зря пытались выжать из XGBoost больше, чем он мог нам дать.

Этап принятие и старт с чистого листа

Через несколько месяцев попыток настроить модель, мы осознали, что зашли не туда. И решили вернуться к исследованиям, фильтрации данных и построению новой модели с чистого листа.

Мы проанализировали все, что было сделано и заметили, что в какой-то момент  стали агрегировать отрезки времени по 3-8-12 часов и делать по ним прогнозы. Это давало неплохие результаты для последних суток, но при расширении горизонта точность сильно падала. Поэтому было мы решили двигаться сразу в двух направлениях:

  1. XGBoost - регрессия.

  2. TimeSeriesForestClassifier - с кластеризацией отрезков времени.

XGBoost Regression

По итогам экспериментов мы отказались от этой идеи. В целом, она  жизнеспособна и, если будет время, мы обязательно вернемся к этой связке, так как результаты она показывает перспективные и интересные. Но имеет фатальный недостаток: нет нормального нисходящего тренда, снижение происходит лавинообразно.

На графике представлен тренд отказа, чем ниже тем ближе событие отказа.
На графике представлен тренд отказа, чем ниже тем ближе событие отказа.

TimeSeriesForestClassifier

Совершенно новый подход, который мы в итоге и выбрали для нового начала. По сути мы вернулись к деревьям, которые забраковали в самый первый месяц работы над проектом. Но со своими нюансами:

  1. Совершенно другое качество данных - за время экспериментов, мы научились их чистить на качественно новом уровне.

  2. Более корректное определение точки отказа - на самом деле то, что нам изначально представляли, как точку отказа, в процессе изучения данных оказалось весьма условной датой. В реальности точка отказа могла отличаться на неделю.

  3. Мы уже понимали, что существует несколько кардинально различных режимов работы оборудования,  и что надо подстраивать модели под эти режимы.

Как следствие, первые сборки и тест показывали, что мы начали прогнозировать почти 70% отказов в последние сутки и примерно 30% за пять суток.

Красная точка это непосредственный отказ. Черные квадраты это простои оборудования не приведшие к отказу.
Красная точка это непосредственный отказ. Черные квадраты это простои оборудования не приведшие к отказу.

Что сейчас?

Мы несколько улучшили качество прогноза, подняли его до 78% реальных отказов в последние сутки. Идут эксперименты по конструированию агрегированных параметров, которые в теории должны работать, но на практике часто ухудшают результаты. И самое главное: идет работа по сглаживанию пиков и ложно-положительных срабатываний. Очень надеюсь, что мы в ближайшее время сможем довести количество предсказанных случаев до 85%.

Если бы выбрали этот путь изначально, пришли бы мы к результату быстрее? Скорее всего, да. Мы бы собрали на 100 моделей меньше. Но самым важным оказалось, не количество и различные типы моделей, а чистота данных и понимание процессов, которые пришли, только в результате экспериментов с XGBoost.

Комментарии (28)


  1. kasiopei
    11.02.2022 13:20

    А какие были данные? Что мониторили?


    1. Fredmont
      11.02.2022 13:35

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


      1. zikkuratvk Автор
        11.02.2022 13:39

        Основой являются: токи, напряжения, вибрации и темпы отбора жидкости - это ключевые параметры.

        Дискретизация есть, но мы не нашли универсального способа. Каждый параметр подгонялся, благо они относительно однообразны.


        1. Fredmont
          11.02.2022 13:45

          Пластовое давление и прочие показатели по гидродинамике - не измеряются на объекте? Или их использование не рассматривалось?


          1. zikkuratvk Автор
            11.02.2022 13:52

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


  1. ChePeter
    11.02.2022 13:27
    +2

    В СССР мониторил энергопотребление. Если начинает расти, то мотор на выброс.

    А сейчас в моторах есть микрофоны и если на частоте вращения вала, подшипника, шарика подшипника и т.п. начинает расти энергия вибраций - значит началось разрушение. И растет почти линейно до поломки.


    1. zikkuratvk Автор
      11.02.2022 13:42

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


  1. kostushka
    11.02.2022 14:32

    Я так понимаю, предсказание отказов строится на предположении, что существуют какие-то предвестники, или точно известно, что при определенных режимах работы неизбежно случится отказ в течение известного времени

    Чтобы правильно отобрать регрессоры (предвестники отказов) нужно провести обучение модели с проверкой, т.е. часть выборки использовать для обучения, часть для проверки, причем разбивку выборки на обучающую и проверочную следует делать случайным образом, но сохраняя статистические атрибуты

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


  1. iiwabor
    11.02.2022 17:04
    +1

    Я как-то решал похожую задачу, но с гидравлическим насосом:

    Основным параметром, с помощью которого можно было спрогнозировать выход из строя насоса была величина расхода в линии дренажа (утечка) из корпуса. И еще температура масла там же.

    Остальное - это только косвенные параметры, по которым модель не особо информативная получалась.

    Сырые данные пришлось переснимать самим, все что предоставила эксплуатация было неверным - что-то сняли неправильно, где-то хотели скрыть свои ошибки, иногда просто предоставляли сэмулированные данные "на отшибись"

    Но столкнулись в итоге с главной проблемой - 80% неисправностей происходило по вине неквалифицированных действий обслуживающего персонала, а их спрогнозировать невозможно


    1. zikkuratvk Автор
      11.02.2022 17:37

      Да есть такая проблема, всё что не снимается датчиками фактически нельзя использовать. Это во время экспериментов много раз подтверждалось.


  1. radiovika
    11.02.2022 18:22

    А что за компания?


  1. vipassa
    11.02.2022 18:43

    А может надо посмотреть на физику процесса, а не на численные данные каких-то параметров?


    1. zikkuratvk Автор
      11.02.2022 18:55

      Вы удивитесь но проблема не в физике, а том, что данные не корректны. И не всегда, то что работает по логике работает в жизни. Пример. Инженеры говорят, чем чаще происходят остановки тем выше вероятность отказа. Мы собираем модель, в частном случае этот да работает, но скажем когда мы пытаемся перенести опыт на 1000 единиц, это перестаёт работать и более того, это становится негативным фактором для прогноза.


  1. robomakerr
    11.02.2022 19:03

    Не пробовали погружаться в предметную область, вместо гоняния математики?)
    Лет 20 назад довелось участвовать в «автоматизации» управления погружными насосами. После того, как был сделан и внедрен проект, при первой же попытке выключить-включить насос он вышел из строя. Пришел главный механик объекта (хз, где он был раньше) и сказал: мы эти насосы никогда не выключаем, они ломаются при пуске, с чего вы вообще решили что ими можно управлять?)


    1. DWM
      11.02.2022 22:05

      Предполагаю что механику можно было ответить так "человеку приятно чувствовать, что он чем-то да управляет, машиной или людьми".

      А вообще, перед внедрением того проекта, проводили общие проверки насосов на предмет "оно живое"?

      Для погружения нужны специальные люди, а тут видимо просто "надо автоматизировать спрогнозировать".

      Думаю дать пару советов/идей автору(ам), быть может они им помогут, или советы будут бесполезны.

      В любом случае фидбек будет желателен.


      1. robomakerr
        12.02.2022 20:30
        -1

        Проект делали теоретики от АСУ, вероятно и проверки были такие же, на бумаге)


    1. AzIdeaL
      11.02.2022 22:10
      -1

      Что и нашло подтверждение вашим доводам в авторском тексте -- "... Нам изначально выдали неполный и некорректный набор данных".

      Коллеги! Изначально пишите не о результатах экспериментов, подтверждаемые ваши гипотезы, а, реальный десятилетний опыт в формировании аналогичных данных)

      И, вот тогда, не будут ляпы в вашей красоте!

      Вот, из сегодняшней жизни сырых актуальных данных по заявленной тематике:

      См. первый абзац данного комментария)


    1. ARG90
      12.02.2022 22:57
      +1

      УПП или частотный преобразователь заметно снижают пусковые моменты и токи...20 лет прошло не зря


  1. DWM
    11.02.2022 22:48

    В статье, насколько я понимаю, речь идет о нефтяных скважинах.

    Сейчас 78% отказов в последние сутки, в потенциале 85%.

    Текущие модели не выполняют заказ бизнеса, они работают только в последний день,требуемые сроки: 7 или 14 дней.

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

    Почему сразу не были разделены модели на режимы работы?

    Основой являются: токи, напряжения, вибрации и темпы отбора жидкости - это ключевые параметры.

    В моделях импользовались:

    • входные параметры: напряжения и токи.

    • выходные параметры: вибрации и темпы отбора жидкости.

    Что я предлагаю:

    1. Уточнить:

      • ресурсоемкость оборудования в целом:

        заявленную от производителя,
        реальную,
        вероятность заводского брака,
        влияние каждого режима работы на ресурсоемкость.

      • ресурсоемкость деталей оборудования: у какой детали(деталей) минимальная из всех, а у какой -- максимальная.

    2. Добавить:

    • для ближайшего отказа оборудования брать срок детали с минимальной ресурсоемкостью.

    • в модели -- изменение предпологаемого срока выхода оборудования из строя после ремонта.

    • зависимость отказа оборудования от ремонта конкретной детали(деталей).

      Ремонт может быть разным, заменили что-то или просто разобрали и собрали, а другие компоненты так и остались старыми, через какое-то время они тоже выйдут из строя.

    • периодичность замены комплектующих в модели выхода оборудования из строя, вместе с корректировкой состояния после ремонта.

    • помехи.
      внешние и/или внутренние.

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

      • внутренние:
        брак комплектующих (микротрещины, дефекты выплавки детали),состояние смазывающих жидкостей,плотность соединения деталей,при отсутствии фильтров — попадание инородных объектов (камней, сгустков).

    Вообще перед созданием моделей данных нужно было проанализировать задачу, все объекты интереса и уже после данные давать машине на обучение.

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

    А теперь, Внимание, время сарказма:

    Нам выдали данные за 2019 год (и это была первая ошибка, которая очень замедлила исследования).

    Я так понимаю что через год поменялась гравитация, и жидкость нужно было притягивать искусственно.

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

    Такое ощущение что вы взялись за ту сферу, в которой ранее никто из вас не работал вообще.

    Я надеюсь что мои идеи/советы/замечания помогут вам, и фидбек будет желателен(если меня заметят вообще 0_0)


    1. zikkuratvk Автор
      14.02.2022 11:32

      Режимы начали выделать, когда в этом оказался смысл... Если у вас модель условно прогнозирует 5%, то создание еще одной модели под какой то специфический момент вам не поможет, мы на ранних этапах мы просто отбрасывали данные.

      То что вы описываете, я так понимаю вы хотите узнать наработку на отказ, это можно сделать проще, такие эксперименты мы делали. Но она все рано будет плюс минус километр, дело в том, что вы не может сказать в оптимальном ли режиме работает оборудование в данной конкретной точке установки и данный момент времени (это весьма динамичная характеристика). Если эти данные есть, то можно достаточно точно наработку на отказ прогнозировать при условии, что у вас есть достаточно данных на это оборудование. Но опять же, я хочу заметить, отказ в нашем случае - это не наработка на отказ. Причин отказов гораздо больше.

      Я так понимаю что через год поменялась гравитация, и жидкость нужно было притягивать искусственно.

      На самом деле все очень печально с этой точки зрения, мы когда начали более глубоко по годам раскладывать данные выяснилось, что кое где напряжения вообще указаны как 220в, а этого впринципе не может быть.

      Такое ощущение что вы взялись за ту сферу, в которой ранее никто из вас не работал вообще.

      Вы удивитесь, но часто лучше спросить или ознакомится с опытом других людей, прежде чем делать, что-то свое.


  1. bugkon
    11.02.2022 23:37
    +1

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


    1. Dzhimsher
      12.02.2022 22:58

      Это актуально для любой отрасли, где данные и записи формирует человек )


  1. dimnsk
    12.02.2022 11:00

    не увидел какие данные собирали...


    1. DWM
      12.02.2022 11:28

      Основой являются: токи, напряжения, вибрации и темпы отбора жидкости - это ключевые параметры.

      Это автор в комментарии сверху написал.


      1. dimnsk
        12.02.2022 11:29

        сорри, не читаю все комментарии


  1. IvanSamorukov
    14.02.2022 09:48

    Одна модель на все скважины? Как выделяли отдельные скважины? Состав флюида, его, анализ, глубина спуска ВСО, НКТ?

    78 процентов — это true positive, а какой показатель false positive? При валилации от какой метрики отталкивались?

    Работа интересная. Ещё бы рекомендательную систему прикрутить в помощь эксплуатации.


    1. zikkuratvk Автор
      14.02.2022 11:07

      С false positive тут сложный вопрос. Дело в том, что их действительно достаточно много, но при изучении результатов и наложения данных об других остановках, и плановых работах в целом ложно-положительных срабатываний становится не много. Сейчас прорабатываем систему сглаживаний пиков и в целом при снижении  true positive 5-7%, то false positive, которые не поддавались объяснению сводятся к единичным случаям.

      Классификация отказов это следующий этап нашей работы.

      Моделей работающих несколько. К сожалению я не могу рассказать всех подробностей технических и как многие вещи делали.


  1. Ka_Wabanga
    14.02.2022 09:48

    "улучшили качество прогноза, подняли его до 78% реальных отказов"

    А за метрика у вас?

    Просто я с ходу могу предсказать 100% отказов - только false positive будет ни к черту, но зато 100%.))))