Реальный проект, ориентированный на клиента, с реальными данными датчиков

· 1. Введение
· 2. Исследовательский анализ данных
2.1 Изменения паттернов
2.2 Корреляция между признаками
· 3. Обнаружение аномалий и распознавание образов
3.1 Обнаружение точечных аномалий (сбой системы)
3.2 Обнаружение коллективных аномалий (внешнее событие)
3.3 Кластеризация и распознавание образов (внешнее событие) )
· 4. Заключение
· Список литературы
· Приложение - Матрица разброса выбранных функций
· Обо мне

Примечание: подробный отчет по проекту и наборы данных, использованные в этом посте, можно найти на моей странице GitHub.

1. Введение

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

В проекте представлены два набора данных, каждый из которых состоит из показаний датчиков качества воздуха за одну неделю. Они предназначены для выполнения следующих четырех задач:

1. Найдите аномалии в наборе данных, чтобы автоматически отмечать события.

2. Классифицируйте аномалии как «Системный сбой» или «внешнее событие».

3. Предоставьте любые другие полезные выводы из шаблона в наборе данных.

4. Визуализируйте взаимозависимости функций в наборе данных.

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

2. Исследовательский анализ данных

Мой код и результаты в этом разделе можно найти здесь.

Набор данных поставляется с двумя CSV-файлами, к каждому из которых можно получить доступ с моей страницы GitHub. Сначала я импортирую и объединяю их в один фрейм данных Pandas в Python. Некоторые изменения сделаны для удаления столбцов, за исключением 11 интересующих нас функций:

  • Озон
  • Сульфид водорода
  • Всего ЛОС
  • Углекислый газ
  • PM 1
  • PM 2.5
  • PM 10
  • Температура (внутренняя и внешняя)
  • Влажность (внутренняя и внешняя).

Временные метки охватывают период с 26 мая по 9 июня 2020 года (всего 14 полных дней) в часовом поясе EDT (GMT-4). Путем вычитания между каждым показанием находятся разные интервалы от 7 до 3552 секунд. 5 самых частых временных интервалов перечислены ниже в таблице 1, где большинство из них близки к 59 и 60 секундам, поэтому можно сделать вывод, что датчик считывает каждую минуту. Однако несогласованность интервалов считывания, возможно, стоит изучить, если это не является преднамеренным вмешательством, поскольку это может вызвать проблемы при анализе временных рядов в будущем.

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

2.1 Изменения паттернов

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

Согласно здравому смыслу, температура наружного воздуха достигает своего максимума в полдень и понижается ночью, поэтому я начинаю задумываться о возможности того, что в течение этого 14-дневного периода были задействованы разные тестовые среды. Чтобы проверить эту идею, данные о погоде в Торонто запрашиваются из Canada Weather Stats [1]. Температура и относительная влажность накладываются и сравниваются с внешней температурой и влажностью в этом наборе данных. График показан на рисунке 2. Видно, что фактическая температура и влажность колеблются синусоидальным образом. Большинство значений температуры и влажности хорошо коррелируют с погодными данными, в то время как области, выделенные розовым цветом, остаются относительно неизменными. Мне не предоставлена ​​какая-либо соответствующая информация об окружающей среде, в которой проводились измерения, но из графика можно сделать разумный вывод, что устройство перемещалось между внутренней и внешней средой в течение 14-дневного периода. Это также проверяется позже при автоматическом обнаружении аномалии в Разделе 3.3.

2.2 Корреляция между функциями

Корреляция - это метод исследования взаимосвязи между двумя количественными непрерывными переменными с целью представления их взаимозависимостей. Среди различных методов корреляции наиболее распространенным является корреляция Пирсона, которая измеряет силу связи между двумя переменными. Его коэффициент корреляции изменяется от -1 до 1, где 1 представляет самую сильную положительную корреляцию, -1 представляет самую сильную отрицательную корреляцию, а 0 означает отсутствие корреляции. Коэффициенты корреляции между каждой парой набора данных вычисляются и отображаются в виде тепловой карты, показанной в Таблице 2. Матрица рассеяния выбранных объектов также отображается и прилагается в разделе Приложения.

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

3. Обнаружение аномалий и распознавание образов.

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

3.1 Обнаружение точечной аномалии (системная ошибка)

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

Здесь, от влажности (внутренней) до общего содержания ЛОС и углекислого газа, каждый представляет особую сложность задач обнаружения точечных аномалий. В первом три выброса находятся на уровне 0, поэтому простой логический фильтр может выполнять свою работу по пометке этих точек данных. Во втором случае выбросы значительно отклоняются от интересующего нас сигнала, поэтому для выделения выбросов можно использовать линейные пороги. Оба случая легко реализовать, потому что они могут быть выполнены методами, основанными исключительно на опыте. Когда дело доходит до третьего случая, невозможно использовать линейный порог для разделения выбросов, поскольку даже если они отклоняются от своих соседей, значения могут быть не такими большими, как обычные сигналы в другие моменты времени.

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

Из рисунка 4 еще яснее продемонстрировать этот подход: интервалы прогнозирования равных расстояний устанавливаются на основе скользящей медианы. Здесь скользящее окно установлено на 5, что означает, что для каждой точки данных мы берем четырех ближайших соседей и вычисляем медианное значение в качестве центра прогноза. Затем интервал прогноза ± 0,17 добавляется вокруг центра. Любые точки за пределами считаются выбросами.

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

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

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

3.2 Обнаружение коллективной аномалии (внешнее событие)

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

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

Также есть разные варианты модели. Традиционные модели прогнозов временных рядов, такие как SARIMA, являются хорошим кандидатом, но модель может быть недостаточно сложной, чтобы приспособиться к «шаблонам», которые я упоминал в разделах 2.1 и 3.3. Другой вариант - обучить модель регрессии с учителем для временных рядов, которая в настоящее время довольно широко используется.

Идея проста: признаки извлекаются из временного ряда с использованием концепции скользящего окна, как показано в таблице 3 и на рисунке 5. Размер скользящего окна (синий) устанавливается таким же, как желаемый объект с номером k. Затем для каждой точки данных (оранжевый) во временном ряду функции представляют собой значения точек данных от ее лага 1 до лага k раньше. В результате временной ряд с N выборками можно преобразовать в таблицу из N-k наблюдений и k функций. Затем, реализуя концепцию «прямой цепочки», каждая точка предсказывается регрессионной моделью, обученной с использованием наблюдений от индексов от 0 до k-1. В дополнение к основной регрессионной модели, еще два квантильных регрессора обучаются с разными уровнями значимости для прогнозирования верхней и нижней границ интервала прогнозирования, с помощью которых мы можем сказать, что фактическое значение находится выше или ниже диапазона интервала.

Этот метод применяется к данному набору данных, и пример показан ниже как результат на рисунке 6. Временные ряды Ozone собираются ежечасно для более быстрой скорости обучения, а функции извлекаются и передаются в три модели градиентного регрессора (1 основная и 2 квантильных регрессора) с помощью Scikit-Learn. Уровни значимости выбраны так, чтобы уровень прогноза представлял 90% доверительный интервал (показан зеленым цветом на рис. 6 вверху). Затем фактические значения сравниваются с интервалом прогнозирования и отмечаются красным (неожиданное увеличение) и синим (неожиданное уменьшение) на Рисунке 6 внизу.

Результаты могут быть еще не очень впечатляющими, потому что еще предстоит проделать большую работу по выбору регрессионных моделей и точной настройке гиперпараметров. Однако он уже демонстрирует свою способность замедлять эти резкие увеличения и уменьшения всех этих всплесков. Одна замечательная вещь в использовании моделей машинного обучения заключается в том, что модель учится и развивается сама по себе при загрузке данных. Из рисунка 6 снизу видно, что на последних трех холмах (примерно через 240 часов) меньше отмеченных точек, чем на предыдущих. Это не только потому, что величины меньше, но и потому, что модель учится на предыдущем опыте и начинает адаптироваться к «идее», что сейчас она находится в «горах» и следует ожидать периодических колебаний. Следовательно, нетрудно сделать вывод, что производительность модели может становиться все лучше и лучше, если будет загружено больше экземпляров данных.

Помимо этой модели квантильной регрессии, модели глубокого обучения, такие как LSTM, могут повысить производительность. Долгосрочная кратковременная память (LSTM) - это специализированная искусственная рекуррентная нейронная сеть (RNN), которая является одним из самых современных вариантов моделирования последовательностей благодаря особой конструкции обратных связей. Однако для настройки и точной настройки сетевой архитектуры требуется гораздо больше времени и усилий, что превышает время, отведенное для этого проекта, поэтому оно не включено в качестве презентабельного содержания в этот отчет.

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

3.3 Кластеризация и распознавание образов (внешнее событие)

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

Кластеризация - это метод машинного обучения без учителя, который находит сходства между данными в соответствии с характеристиками и группирует похожие объекты данных в кластеры. Его можно использовать как автономный инструмент, чтобы получить представление о распределении данных, а также в качестве этапа предварительной обработки для других алгоритмов. Существует множество различных методов кластеризации, и здесь я использую два из наиболее часто используемых: K-Means и DBSCAN.

K-means - один из методов разделения, используемых для кластеризации. Он случайным образом разбивает объекты на непустые подмножества и постоянно добавляет новые объекты и регулирует центроиды до тех пор, пока не будет достигнут локальный минимум при оптимизации суммы квадратов расстояния между каждым объектом и центроидом. С другой стороны, пространственная кластеризация приложений с шумом на основе плотности (DBSCAN) - это метод, основанный на плотности, где кластер определяется как максимальный набор точек, связанных плотностью [3].

Анализ главных компонентов (PCA) - это метод уменьшения размерности, который создает новые некоррелированные переменные, чтобы повысить интерпретируемость и минимизировать потерю информации. В этом проекте после применения алгоритмов K-средних и DBSCAN к нормализованным данным выполняется PCA, и результаты кластеризации отображаются как в 2D (рисунок 7), так и в 3D (рисунок 8) с использованием первых 2 и 3 главных компонентов. Кроме того, для просмотра результатов кластеризации с другой точки зрения создаются графики временных рядов с пометками, а график температуры (внешней) показан на рисунке 9 в качестве примера.

Из графиков ясно видно, что оба метода способны различать изменения внутреннего / наружного рисунка, о которых я упоминал в разделе 2.1. Основное отличие состоит в том, что метод K-средних на основе разбиения более чувствителен к изменениям величины, вызванным чередованием дня и ночи. Многие переменные в наборе данных подвержены таким очевидным синусоидальным изменениям, которые происходят одновременно, включая температуру (внешнюю и внутреннюю), влажность (внешнюю и внутреннюю) и озон. К-средние имеют тенденцию по-разному трактовать пики и спады. С другой стороны, DBSCAN на основе плотности меньше заботится о разнице величин, но уделяет больше внимания распределению плотности. Следовательно, он группирует всю синусоидальную часть в одно облако массы, как показано на рисунках 7 и 8.

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

4. Вывод

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

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

В разделе обнаружения аномалий, поскольку «сбой системы» и «внешнее событие» четко не определены, я разделил проект на три разные задачи. Точечные аномалии определяются как сильно отклоненные и прерванные точки данных. Метод скользящей медианы используется здесь для успешной автоматизации процесса маркировки таких точечных аномалий. Коллективные аномалии, с другой стороны, определяются как отклоненный набор точек данных, обычно наблюдаемый как резкое увеличение или уменьшение. Эта задача выполняется путем извлечения признаков из данных временных рядов и последующего обучения регрессионных моделей. Кластеризация также выполняется для набора данных с использованием K-среднего и DBSCAN, оба из которых используют свои сильные стороны и успешно кластеризовали данные за счет использования их схожих и несходных характеристик.

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

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

использованная литература

[1] Статистика погоды в Канаде: https://www.weatherstats.ca/

[2] Структура машинного обучения временных рядов: https://towardsdatascience.com/time-series-machine-learning-regression-framework-9ea33929009a

[3] Дж. Хан, М. Камбер и Дж. Пей, Интеллектуальный анализ данных: концепции и методы, 3-е издание, 2011 г.

Приложение - Матрица разброса выбранных объектов

Обо мне

Я специалист по данным в Chapeau AI. Я использую технологии и каждый день осваиваю новые навыки. Вы можете связаться со мной из Medium Blog, LinkedIn или GitHub.

Пожалуйста, смотрите мои другие статьи: