Время прочтения: 4 мин.

С каждым годом data driven подход становится все более популярным. Объем данных увеличивается вместе с потребностью извлечения полезной информации из бесконечного потока данных. Передовые компании мира все чаще используют машинное обучение для обнаружения инсайтов и аномалий в больших данных.

Хочу поделиться опытом использования алгоритма COPOD в рамках аудита интеллектуального управления электропитанием устройств предприятия. Целью поставленной задачи был поиск возможностей по оптимизации потребления электроэнергии и сокращения расходов в рамках ESG-стратегии.

Основные достоинства алгоритма:

  • Скорость работы
  • Легкость интерпретации
  • Возможность использовать алгоритм без обучающих данных
  • Возможность обучение алгоритма на поиск аномалий по шаблонам

COPOD находится внутри пакета PyOD (https://github.com/yzhao062/pyod).

Данные:

  200 тысяч единиц техники.  В рамках политик управления электропитанием устройств к различным типам техники (ПК, ЖК-панели и т.п.) применяется свой уникальный план электропитания. В каждом плане свои особенности и настройки, где регулируется перевод в спящий режим, гибернация, отключения экранов, временные интервалы переходов из одного режима в другой.

В столбце «тип_устройства_подр» под каждой цифрой имеется в виду один тип устройств (Например, 0 — ПК, 1 — ЖК-панель, 3 — Кондиционер и т.п.). Столбец «ночные _режимы» — содержит ночной план электропитания для каждого типа устройств (Например, 8 — ПК, 1 — ЖК-панель, и т.п.). «Срок_непрерывной_работы» содержит класс периода бесперебойной работы (Например, 0 – неделя, 1 – месяц, и т.п.).

Применение:

# Импортируем библиотеку
from pyod.models.copod import COPOD
searcher = COPOD()

В данном случае у нас нет шаблонов аномалий, следовательно, мы будем использовать функцию поиска decision_function:

data_times_anom['anomalies'] = searcher.decision_function(data_times_anom)

Визуально исследуем результат детекции аномалий (синий – норма, оранжевый – аномалия):

sns.pairplot(data_times_anom, hue='anomalies', diag_kind='hist') 

Как видим на изображении, в данных имеется большой набор аномалий по всем признакам. Черные точки – это нормальное (типичное) состояние. Например, для устройств класса 0, – нормальный режим работы – 8,6.

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

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

#Разделим данные на выборки
y = data_times_anom['anomalies']
X = data_times_anom.drop('anomalies', axis=1)

#Создадим классификатор и обучим его
clf = COPOD()
clf.fit(X)

#Будем использовать флаг аномальности
outliers = np.where(y==1)[0]

#Построим график
for anomalies in outliers:
	clf.explain_outlier(anomalies, cutoffs=None, feature_names=X.columns)

Синим цветом обозначены оценки выбросов. По оси X отложены признаки, по Y – оценка аномалии. Оранжевым и зеленым – оценки аномалий в 90-м и 99-м процентилях. На изображении 1 видим, что устройство по признаку 3 (ночной режим) превышает 90ый процентиль и граничит с 99, данный факт является основанием пометить данное устройство как аномальное. На других изображениях схожие ситуации, но с другими устройствами и по другим признакам.

Для построения гипотез требуется более глубокое исследование аномалий в конкретных признаках. Выгрузим срез данных по двум признакам:

#Смотрим срез по данным
data_times_anom[data_times_anom['anomalies']==1][['тип_устройства_подр', 'ночные_режимы']].value_counts().head(60) 
Доброе утро! Сегодня мы поделимся опытом использования COPOD (Copula Based Outlier Detector) - быстрым и мощным алгоритмом обнаружения аномалий

Из среза следует подтверждение аномалий: устройства типа 0 имеют режимы работы 8 (31 280 единиц техники), 0 (7007 единиц техники), 4 (4171 единица техники), 1 (1939 единиц техники). ПК работают в режимах: ПК, Сервера, Устройства видеонаблюдения, ЖК-дисплей. Так же дела обстоят с устройствами типа 8. Уточнять допустимость работы устройства в «чужом» режиме необходимо у ответственных подразделений. В рамках данного исследования мы решали задачу детекции аномалий в режимах работы и устройствах.

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

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

Источники: