Исследовательский анализ временных рядов с профилированием Pandas

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

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

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

Из-за характера данных временных рядов и при изучении набора данных тип анализа отличается от того, когда все записи набора данных считаются независимыми. Сложность анализа возрастает при добавлении более одного объекта в один и тот же набор данных.

В этом посте я рассмотрю некоторые ключевые шаги в анализе набора данных, используя при этом функции временных рядов профилирования pandas. Исследуемый набор данных относится к Качеству воздуха в США и может быть загружен с веб-сайта EPA.*

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

Анализ нескольких сущностей в наборе данных временного ряда

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

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

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

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

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

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

Погружение в метрики временных рядов

Если вы уже использовали pandas-profiling, вы, вероятно, знаете, как генерировать отчет о профиле.

Поддержку временных рядов можно включить, передав параметр tsmode=true, и библиотека автоматически определит наличие функций с помощью автокорреляции (подробнее об этом позже). Чтобы анализ работал правильно, фрейм данных необходимо отсортировать по столбцам объектов и времени, в противном случае вы всегда можете использовать параметр sortby.

Код для этого так же прост, как:

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

Сезонные и нестационарные оповещения

Что касается анализа временных рядов, мы можем обнаружить 2 новых предупреждения — НЕСТАЦИОНАРНОЕ и СЕЗОННОЕ. Самый простой способ получить быстрое представление о ваших временных рядах — заглянуть в раздел предупреждений. Для этого конкретного варианта использования каждый профильный отчет будет отображать конкретное поведение каждого местоположения в США в отношении измерений загрязняющих веществ.

Вот как предупреждения выглядят в нашем отчете:

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

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

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

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

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

Подробнее о функциях, зависящих от времени

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

Затем, когда мы переключимся на более подробную информацию о столбце (как показано на рисунке выше), мы увидим новую вкладку с графиками автокорреляции и частичной автокорреляции.

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

Приведенные выше графики ACF и PACF, как и ожидалось, немного неоднозначны. Просматривая наши предупреждения, мы видим, что среднее значение NO2 является нестационарной переменной времени, что исключает интерпретируемость этих графиков. Тем не менее, график АКФ полезен для подтверждения того, что мы уже подозревали — среднее значение NO2 нестационарно, — поскольку значения графика АКФ уменьшаются очень медленно, а не быстро падают до нуля, как ожидается для случая стационарного состояния. ряд.

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

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

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

Выводы

Девиз Pandas Profiling всегда был одним и тем же: «Читать данные? Пауза. Создайте отчет Pandas Profiling и проверьте данные. Теперь начните очистку и повторите попытку изучения данных».

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

Таким образом, появление в библиотеке Pandas Profiling функций, позволяющих использовать режим анализа временных рядов для раскрытия этих идей, было вопросом времени. От изменений, требуемых от пользователя для получения отчета о профилировании временных рядов, до вывода новых предупреждений, вызывающих озабоченность в данных, линейных графиков и графиков корреляции, характерных для анализа временных рядов, — мы продемонстрировали все в этом статья.

Но метрики и анализ, изученные сегодня, — это только начало! Необходимо ответить на дополнительные вопросы. А каков ваш обычный подход к анализу данных временных рядов? Чего вам больше всего не хватает при работе с последовательными наборами данных?

Цитаты:

Агентство по охране окружающей среды США EPA (общественное достояние) http://www.ics.uci.edu/~mlearn/MLRepository.html

Фабиана Клементе является CDO в YData.

Ускорение работы ИИ с улучшенными данными.