Сточные воды… Казалось бы, что тут может быть связанного с технологиями. Ну, возможно, какой-нибудь датчик загрязненности. Но, оказывается, нет. Все намного интереснее. Ведь машинное обучение помогает выявлять аномалии и отклонения в системе контроля сточных вод. Подробности под катом!



Обзор


В следующем примере кода представлен инновационный метод выявления аномалий и ожидаемых отклонений с помощью Microsoft Anomaly Detection API и двоичной классификации, поддерживающей фильтрацию динамических рядов.

Ситуация


Компания Carl Data Solutions разрабатывает программные инструменты Flow Works, используемые муниципальными организациями для контроля инфраструктуры сточных вод. Эти инструменты получают данные со множества датчиков, измеряющих такие показатели, как расход воды, скорость и глубина.

Датчики иногда выходят из строя или ведут себя непредсказуемым образом, что вызывает отклонения показателей. Поскольку прогностические модели создаются на основе полученных с датчиков показаний, их отклонения могут снизить точность модели. В настоящее время муниципальные организации, использующие инструменты Carl Data Flow Works, прибегают к услугам консультантов, которые вручную проверяют данные со всех датчиков и изменяют значения, представляющиеся ошибочными, для устранения таких неточностей.

Выборка суточных показаний счетчика с маркированными аномалиями



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

Проблема


Поскольку ошибки в работе датчиков случаются нечасто, обучающие множества, которые сформированы на основе журналов, отобранных Carl Data, содержали гораздо больше «точных» значений, чем «неточных». В случае неравномерного распределения обучающих образцов традиционные двоичные классификаторы в отдельных случаях могут не выявлять ошибки датчиков ввиду большого количества положительных примеров. Зачастую для выявления нерегулярного потока используются неконтролируемые алгоритмы обнаружения отклонений динамических рядов.

Однако такие неконтролируемые системы выявления отклонений, как Twitter Anomaly Detection Package или Microsoft Anomaly Detection API, хотя и справляются с задачей обнаружения нерегулярных потоков, все равно не могут отличить ожидаемые отклонения в поведении (например, пиковые значения в случае наводнений) от ошибок датчика. Кроме того, эти API выполняют только пакетную классификацию, которая отнимает слишком много времени, чтобы эффективно работать в режиме реального времени.

Взаимодействие


Microsoft помогает компании Carl Data в разработке модели обнаружения аномалий, способной идентифицировать различные типы отклонений от нормы, и передаче ее в производственную среду посредством концентраторов событий и PowerBI.

Методика обнаружения аномалий методом машинного обучения


Модель 1. Обнаружение отклонений (неконтролируемый алгоритм)

  1. Считайте необработанные статистические данные, полученные от датчика скорости.
  2. Считайте маркированные аномалии из отобранных данных для датчика скорости.
  3. Отправьте необработанные данные в Microsoft Anomaly Detection API, чтобы маркировать отклонения.
  4. Оцените модель отклонения на основе результатов Anomaly Detection API, сопоставив полученные с ее помощью результаты с «аномалиями, маркированными вручную».

Модель 2. Двоичный классификатор (контролируемый)

  1. Считайте необработанные статистические данные, полученные от датчика скорости.
  2. Выполните считывание и объединение маркированных аномалий из отобранных данных для датчика скорости.
  3. Создайте окно истории для предыдущих четырех значений показаний на основе данных от датчика скорости на каждый момент времени.
  4. Создайте обучающее и тестовое множество путем произвольного разделения данных в окнах истории.
  5. Обучите классификатор случайного леса, используя обучающие данные.
  6. Измерьте производительность случайного леса на основе тестовых данных.

Модель 3. Гибридный классификатор (дифференциация аномалий и отклонений)

  1. Считайте необработанные статистические данные, полученные от датчика скорости.
  2. Считайте маркированные аномалии из отобранных данных для датчика скорости.
  3. Отправьте необработанные данные в Microsoft Anomaly Detection API, чтобы маркировать отклонения.
  4. Создайте окно истории для четырех предыдущих значений показаний, полученных от датчика скорости, на каждый момент времени, используя только значения, помеченные как отклонения.
  5. Создайте обучающее и тестовое множество путем произвольного разделения данных в окнах истории.
  6. Обучите классификатор случайного леса, используя обучающие данные.
  7. Измерьте производительность случайного леса на основе тестовых данных.
  8. Измерьте производительность случайного леса для всего динамического ряда скорости за исключением обучающего множества.

Методика интеграции




  1. Передайте данные из канала в концентратор событий Anomaly Detection, установив размер окна равным n.
  2. Маркируйте новые события как «аномалия» или «не аномалия», используя модель, построение которой описано в последнем разделе.
  3. Передайте маркированные данные канала в концентратор событий визуализации.
  4. Используйте потоковую аналитику для обработки данных из концентратора событий визуализации.
  5. Импортируйте данные потоковой аналитики в PowerBI, чтобы визуализировать маркированные аномалии.

Результаты


В процессе взаимодействия мы создали три модели, скомбинировав Microsoft Anomaly Detection API с набором случайных лесов и логистической регрессией, чтобы выявить ошибку датчика.

Хотя Anomaly Detection API позволяет выявить отклонения идентификатора в целях классификации аномалий, в наборе данных Carl Data разница между аномалиями и регулярным потоком была линейно дифференцируемой достаточно, чтобы получать сопоставимо качественный результат как при использовании двоичного классификатора случайного леса, так и в комбинации с Anomaly Detection API.

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

Выбранная модель имеет следующие характеристики производительности с высокой степенью точности (99 %) и полноты возврата (100 %):

Измерение производительности модели с использованием обучаемого модуля теста производительности SciKit


Код


Исходный код и заметки по использованию описанного метода см. на GitHub.

Варианты использования


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

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

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


  1. Dr_Dash
    06.03.2018 10:02

    Крайне сильно интересуюсь ML, но нахожусь исключительно на начальной стадии могли бы вы мне подсказать какой именно класс задач с точки зрения ML копать:
    Имеются наборы графиков.
    В каждом наборе — 100 графиков, среди них есть монотонные и немонотонные. Монотонные подходят, немонотонные нет, т.е один признак годности налицо. Но не все монотонные подходят, есть ещё не выявленные параметры, влияющие на это, но я имею возможность указывать какие не подходят, мне это известно так сказать «извне» задачи. Кроме того, каждому набору из 100 графиков соответствует некий набор параметров — общий описатель набора, вектор или матрица — 1 на весь набор.
    Это один законченный набор.
    Таких наборов у меня уйма, и предположительно правила влияния общих описателей набора на годность того или иного графика идентичны.
    Требуется установить какие параметры и в какой комбинации влияют на пригодность того или иного монотонного графика
    Будьте добры, посоветуйте — можно ли решить эту задачу при помощи сеток и если можно какой это класс задач, куда копать?


    1. Logonoff
      06.03.2018 23:59

      Это задача классификации (значения ряда + дополнительные фичи (ваши параметры) => флаг годности/негодности ряда). Чтобы классификатор использовал знание о монотонности ряда можно сгенерировать категориальные признаки «ряд монотонно убывает», «ряд монотонно возрастает». Если важна интерпретируемость модели (какие факторы влияют на решение о годности), то советую начать с логистической регрессии или решающих деревьев.


      1. Dr_Dash
        07.03.2018 06:36

        О, благодарю.


  1. vitsch
    07.03.2018 00:24

    Ваши графики заданы таблицами или функциями? Каким образом Вы определяете «годность» графика? Как правило эксперты в определенной области переусложняют задачу и поэтому описание на этапе постановки задачи помогает правильно сформулировать проблему и следовательно найти решение. Например физики которые занимались контролем прожига листа роботом сварщиком изначально поставили задачу как визуализацию УЗ сенсоров а решение надо было искать как дектировать изменения сенсоров, предвестиков прожига листа. Так что определяйтесь с постановкой задачи.