(Исходная статья была написана в ноябре 2022 г. Жюльеном Мюллером, техническим директором Ezako и моим соучредителем. В феврале 2023 г. я внес несколько дополнений для завершения статьи.)

Что такое данные временного ряда?

В Ezako мы являемся экспертами в области данных временных рядов. Данные временных рядов — это особый тип данных, который сильно отличается от других типов данных способом их создания и использования. Их свойства также отличаются от других типов данных. Однако они являются частью нашей повседневной жизни. Например, мы можем подумать об использовании данных термометра, ЭКГ или вольтметра электронного компонента. Данные можно отслеживать для мониторинга (для серверов), прогнозирования (в финансах) или профилактического обслуживания (в промышленности). Варианты применения чрезвычайно велики, и постоянно появляются новые варианты использования с изобретением новых объектов (таких как IOT) и цифровизацией производственных цепочек.

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

  1. Последовательность значений, которые меняются во времени
  2. Часто большое количество точек (генерируемых машинами) как по частоте, так и по количеству серий
  3. Часто большой дисбаланс ярлыков и/или классов. Например, количество аномальных точек очень мало по сравнению с обычными данными.

Маркировка или аннотация для временных рядов

Маркировка или аннотация данных временных рядов — это действие по обогащению одного или нескольких временных рядов или добавлению метаданных в ряды. Его можно проводить по пунктам, за период или за всю серию.

Тип этикетки и используемые методы будут напрямую зависеть от преследуемой цели. Действительно, мы маркируем для конкретной и точной цели. Маркировка для профилактического обслуживания — это не то же самое, что классификация различных состояний системы. В первом случае меткой может быть пошаговый оставшийся срок службы, а во втором — простой класс типа «ВКЛ», «ВЫКЛ», «ПЕРЕКЛЮЧЕНИЕ»…

Зачем помечать данные?

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

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

Для чего?

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

  1. Неконтролируемая модель
  2. Обучение без учителя и оценка качества обнаружения на основе размеченных данных (оценка с учителем)… другие действия с учителем
  3. Полууправляемый: такие подходы, как алгоритмы без учителя, которые делают предположения о данных: например, автокодировщик, который считает весь обучающий набор нормальным. Или, в более общем смысле, алгоритмы, использующие ограниченный набор аннотаций.
  4. Самостоятельный контроль, когда модель выполняет двухэтапный процесс обучения, создает свои собственные псевдометки и учится на своих собственных метках. Простой пример — ИИ, играющий в шахматы сам с собой.
  5. Полностью контролируемый подход

В целом, в машинном обучении наличие помеченного набора данных является преимуществом, поскольку оно позволяет четко оценивать несколько контролируемых подходов с помощью таких показателей, как точность, полнота, f-оценка и т. д. Однако необходимо устранить общую для последнего ловушку: риск чрезмерного обучения: «переоснащение». Этот риск тем более актуален, когда меток мало, но знание о нем позволяет внедрить механизмы, снижающие его, такие как «к-кратная перекрестная проверка». Если, несмотря на это, мы столкнулись с ситуацией переобучения, мы можем изменить наш подход и перейти, например, от моделей с учителем к моделям с обучением без учителя и оптимизацией гиперпараметров.

Как пометить?

Вы можете придумать разные подходы к аннотированию набора данных. Среди прочего:

  1. Ручной подход
  2. Полевой экспертный подход
  3. На основе кодирования (python)
  4. С помощью инструмента для маркировки, такого как Upalgo Labeling

Давайте поработаем над небольшим практическим случаем с файлом CSV с временными рядами из 50 000 строк. В этом файле есть столбец меток времени и 4 датчика. Датчики вибрации показывают значительные пики, которые мы хотим аннотировать для создания модели классификации. Цель состоит в том, чтобы создать новую колонку, содержащую текст одного из 3 классов: «максимум высокий», «пиковый минимум» или «нормальный».

  • Ручной подход

Для ручного подхода мы будем использовать Excel. После импорта файла CSV Excel предлагает функцию графика, которая очень удобна для облегчения работы. Однако оказывается, что пользы от нее мало. Из 50 000 точек мы смогли одновременно отобразить только 5 000 точек.

Создать столбец «метка» очень просто, но задача оказывается на самом деле очень сложной. Необходимо найти на графике временные метки пиков, чтобы затем найти их в таблице и аннотировать столбец. Затем перейдите к следующим 5000 баллов. После выполнения этой задачи таблицу можно экспортировать в формате CSV.

  • Полевой экспертный подход

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

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

Более того, это правило применимо только к этому конкретному набору данных и должно быть переопределено для нового набора данных даже при аналогичной необходимости поиска пиков в наборе данных:

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

  • На основе кодирования (python)

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

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

Выбор размера окна и количества отклонений от среднего, при котором происходит разделение, остается настроить при выполнении алгоритма «rolling_std», здесь пара (100,5) — не единственная хорошая настройка, а одна из много. Следующим шагом является создание столбца «класс» и назначение ему рассчитанных аннотаций.

Затем наносим результат:

Затем мы приступим к преобразованию цифровых аннотаций, которые разделили наши данные на два класса (0,10), эквивалентные (нормальный, пиковый) в триплете (нормальный, пик_высокий, пик_низкий).

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

  • С помощью такого инструмента, как Upalgo Labeling.

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

Вот шаги для хорошей аннотации с помощью инструмента:

Шаг 1. В инструменте Метки Upalgo можно вручную просмотреть и пометить событие:

Также можно использовать автоматическую функцию предложения областей для аннотирования, которая быстро предоставит несколько меток качества:

Шаг 2: Затем мы просим Upalgo Labeling распространить ранее определенные классы «высокий пик» и «низкий пик», что завершает аннотацию всего файла:

Шаг 3: Мы можем экспортировать результат в файл CSV, содержащий новый столбец «метка»:

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

Заключение

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

Использование такого инструмента, как Upalgo Labeling, намного эффективнее и проще. Это позволяет автоматически и быстро аннотировать без необходимости кодировать специальные алгоритмы. Однако при использовании этих инструментов существует риск смещения. Чтобы устранить этот риск, важно использовать большое количество наборов данных и подтверждение человеком.