Используйте эту простую структуру из трех частей, чтобы ускорить ваш EDA

Вы тратите много времени на выяснение того, как структурирован ваш набор данных и что в нем спрятано?

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

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

Давайте посмотрим, что делают эксперты на Kaggle¹.

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

  1. Анализ проблемы,
  2. Одномерный анализ и
  3. Многомерный анализ.

Мы быстро рассмотрим эти три пункта, чтобы понять, какова цель каждого шага.

Давайте погрузимся.

Анализ проблемы

Понимание вашей проблемы - половина решения.

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

Чтобы убедиться, что вы согласны, откройте электронную таблицу и введите следующую информацию для каждой переменной: Имя, Описание, Тип, Ожидание и Комментарий.

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

  • Имя: имя вашей переменной.
  • Описание: краткое описание переменной.
  • Тип: категориальный или непрерывный
  • Ожидание: повлияет ли это на мою целевую переменную?
  • Комментарий: если есть комментарии

Эта часть может занять много времени, если у нас много независимых переменных. Например, в проблеме цен на жилье цель состоит в том, чтобы спрогнозировать продажную цену домов в Эймсе (город в Айове) с помощью 79 объясняющих переменных, отражающих почти все аспекты жилых домов в этом городе.

Но помните: «Понимание вашей проблемы - половина решения». Итак, вы уже на полпути.

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

  • Как распределяется?
  • Есть ли выбросы?
  • Придется ли нам иметь дело с недостающими данными?

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

  • У нас много недостающих данных?
  • Нужно ли нам преобразовывать необработанные данные в более подходящие функции?

Другими словами, нам нужно понять, нужна ли нам креативная разработка функций.

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

Одномерный анализ

Цель этой части - получить ответ на следующие вопросы:

  • Влияют ли мои непрерывные переменные на мою целевую переменную?
  • А как насчет моих категориальных переменных?

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

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

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

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

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

Пришло время взглянуть на все переменные вместе.

Многомерный анализ

В многомерном случае основная цель - определить, есть ли у нас мультиколлинеарность, с помощью тепловых карт и парных графиков.

Почему это важно? Как поясняется в этой статье:

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

Например, в проблеме цен на жилье корреляционная матрица выглядит следующим образом:

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

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

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

В заключение, шаблон

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

Шаблон будет выглядеть следующим образом:

1) Understand the problem and expectation
   a. Take note of your expectation for each variable
   b. Look at your target variable
      I)   How is it distributed? 
      II)  Are there any outliers?
      III) Do we have to deal with missing data?
   c. Look at your independent variables
      II)  Do we have a lot of missing data?
      III) Do we need some creative feature engineering?
2) Univariate study
   a. Are my variables affecting the target? (scatterplot)
   b. What about my categorical variables? (boxplot) 
   c. Does it mets my expectation from previous chapter:
      If Yes: we can remove unnecessary features
      If No: Do we need new data collection or experiments?
3) Multivariate study
   a. Generate the full and “zoomed” heatmap
   c. Generate pair plots with the features of interest
   d. Look for patterns and correlated variables

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

Надеюсь, эта трехступенчатая структура поможет вам приступить к работе над будущими проектами обработки данных, с которыми вы столкнетесь.

Ссылка

[1] Эта работа в основном основана на следующих записных книжках Kaggle: