Найти в Дзене

EDA в Машинном обучении простыми словами, часть 2

Оглавление
Фото: @yassine_khalfall
Фото: @yassine_khalfall

Разведочный анализ данных (Exploratory Data Analysis) – предварительное исследование Датасета (Dataset) с целью определения его основных характеристик, взаимосвязей между признаками, а также сужения набора методов, используемых для создания Модели (Model) Машинного обучения (ML).

Итак, в первой части статьи мы познакомились со следующими этапами разведочного анализа:

  • Удаление дубликатов
  • Обработка пропусков
  • Обнаружение аномалий

И теперь продолжим глубже знакомиться с особенностями датасета.

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

Описательная статистика

Прежде чем применять те или иные методы обучения, нам необходимо удостовериться, что они применимы к текущему датасету. Раздел описательной статистики включает в себя проверку на нормальность распределения и определение прочих статистических метрик. С этим нам поможет замечательная библиотека pandas-profiling. Установим самую свежую версию во избежание ошибок:

-2

Запустим профайлер и передадим df в качестве аргумента:

-3

Профайлер высчитывает основные статистические метрики для каждой переменной и датасета в целом:

-4

К примеру, в признаке "Длительность" мы вычислили:

  • Количество уникальных значений (Distinct)
  • Количество пропусков (Missing)
  • Вероятно, параметр "Бесконечность" ('Infinite'), рассчитываемый только для вещественных чисел, отыскивает сильно выделяющиеся значения, которыми иногда обозначают пропуски.
  • Среднее значение (Mean)
  • Минимум (Minimum)
  • Максимум (Maximum)
  • Количество нулей (Zeros)
  • Память, задействованная этой переменной (Memory Size)
  • Нормальность распределения (график)

Следующий интересный раздел – "Корреляции" ('Correlations'). Чем ярче (краснее / синее) ячейка, тем сильнее выражена корреляция между парой признаков. Диагональные ячейки игнорируются, поскольку являются результатом расчета коэффициента между переменной и ее копией.

Профайлер вычленил из датасета только числовые признаки, и потому матрица имеет размер 11 x 11. К примеру, "колебание уровня безработицы" и "европейская межбанковская ставка" сильно коррелируют друг с другом, но поскольку эти признаки второстепенны, в дальнейшем их можно объединить на этапе инжиниринга признаков (Feature Engineering). Зачастую целевая переменная не сильно коррелирует с предикторами.

Важность признаков

Прежде чем произвести инжиниринг признаков и сократить объем входных данных, стоит определить, какие признаки имеют первостепенную значимость, и в этом нам поможет Scikit-Learn и критерий Хи-квадрат (Chi-Squared Test):

-5

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

-6

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

Рассмотрение парных особенностей

Чего только не создаст комьюнити в Науке о данных! Для нужд разведочного анализа крайне кстати будет и попарные графики, и здесь на помощь приходит другой великолепный класс - seaborn.pairplot(). Каждая из переменных ляжет в основу одной из осей двумерного точечного графика, и так, пока все пары признаков не будут отображены. Сократим названия длинных переменных, чтобы уместить их на скромном отведенном пространстве:

Уменьшение размерности, стандартизация

Рассмотрев признаки по отдельности и попарно, мы пришли к выводу, что некоторые признаки могут быть как бы объединены с помощью специальной техники – Анализ главных компонент (PCA). Итак, давайте создадим заменяющий столбец, который представляет эти признаки в равной мере и тем самым уменьшим размер данных.

-7

Выполняем Стандартизацию (Standartization) x, и это впоследствии станет частью тренировочных данных:

-8

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

Анализ главных компонент (Principal Component Analysis) представляет собой метод уменьшения размерности больших наборов данных путем преобразования большого набора переменных в меньший с минимальными потерями информативности.

-9

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

-10

Нормализация

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

-11

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

Понравилась статья? Поддержите нас, поделившись статьей в социальных сетях и подписавшись на канал. И попробуйте наши курсы по Машинному обучению на Udemy.