Текст до ката

Известно множество практик борьбы с выбросами во входных данных – применяются  как статистические методы, так и ML/DL-подходы. Каждый специалист по анализу данных использует их в процессе предобработки данных. Однако часто при этом  отсеиваются исключительно ценные замеры, которые на самом деле выбросами не являются, а представляют собой редко встречающиеся состояния измеряемого объекта или процесса.

«А стоит ли возиться с этими “редкими” состояниями?», – спросит нас любознательный читатель. «Да», – уверенно ответим мы и далее приведем один простой и показательный пример, а сразу за ним расскажем, как извлечь пользу из этих редких состояний. Конкретнее – мы предложим подход для генерации дополнительных измерений в задачах восстановления регрессии временного ряда.

Под «мы» здесь и далее имеются в виду я – Семён Косяченко – и мои коллеги Александр Подвойский и Александр Калиниченко. Вместе мы разрабатываем решения на основе ML для нефтегазовой отрасли в компании «Цифровая индустриальная платформа» (совместное предприятие ГК «Цифра» и «Газпром нефть»).

Простой, но крайне показательный пример

Допустим, у вас есть масляный трансформатор, температура масла которого измеряется раз в час. Пусть этот трансформатор почти всегда находится в работоспособном состоянии и имеет температуру масла 20-100⁰С. Но есть один замер, когда температура масла была более 200⁰С, при этом трансформатор неработоспособен (еще бы, он горит!!!).

Что сделает специалист по анализу данных?

Правильно, первым делом он устроит фильтрацию по всем фичам, дойдет до температуры и …. выкинет это измерение. Таким образом он останется без самого важного замера для задачи прогнозирования перегрева трансформатора. Точнее сказать, сам замер не так уж и важен – нас не слишком волнует состояние трансформатора во время пожара. Его поздно анализировать – его тушить пора. Но, кажется, есть возможность интерполировать пространство <температура – состояние трансформатора> и понять, что повышение температуры ведет к его неработоспособности.

Как же это сделать, когда есть единственный замер, при котором трансформатор горит? «Очень просто», – ответим мы (на самом деле нет). Предположим, что температура и работоспособность трансформатора связаны, например, линейно. Тогда, имея нормальное и «горящее» состояние трансформатора, можно дополнить историю измерений некоторыми промежуточными состояниями – сгенерировать эти состояния. Это называется аугментацией данных, увеличением обучающей выборки через добавление в нее дополнительных данных – модификаций измерений из имеющейся выборки.

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

Для аугментации данных используют различные библиотеки, например, tabgan, которые реализуют генерацию (аугментацию) как табличных, так и других видов данных. Процесс аугментации табличных данных упрощенно можно описать так: пусть есть таблица T, которая состоит из столбцов – признаков и строк – измерений. Признаки этой таблицы имеют неизвестное совместное распределение P. Каждая строка независимо выбирается из P. Задача состоит в обучении генеративной модели. Эта модель будет иметь способность генерировать синтетические данные T_{sync}с распределением, подобным P. Обучение модели на T_{sync}может во многих случаях позволяет добиться лучшего качества и робастности модели по сравнению с моделью, построенной на исходной выборке T.

Наш подход к аугментации

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

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

Таким образом, наш подход к  аугментации можно описать так:

  1. Проверяем целевой временной ряд на наличие статистически значимых отклонений с помощью модифицированной Z-оценки. Если таких отклонений нет, то алгоритм аугментации заканчивает работу. Если есть, то для всех найденных измерений с отклонениями выполняем пункт 2 и 3.

  2. Определяем окрестность области линейной интерполяции данных. Правая и левая границы окрестности – ближайшие соседние измерения.

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

Рисунок 1. Пример исходных данных (сверху) и аугментированных данных (снизу). По оси x – время, по оси y – значение фичи и целевой переменной

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