Насколько мощно смотреть в будущее и предсказывать то, что еще не произошло? В Data Science это позволяет машинное обучение! Гениально, извлекая уроки из того, что произошло в прошлом, чтобы предсказать, что потенциально может произойти в будущем. Как мы можем себе представить, применение такой техники может быть революционным в People Analytics, один из классических вариантов использования - прогнозирование увольнений сотрудников.

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

Почему Auto ML?

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

Понимание основ

В следующем сегменте будет показано, как две оцениваемые библиотеки автоматического машинного обучения работают при прогнозировании истощения на базе HR Attrition Kaggle dataset с открытым исходным кодом. Перед этим нам нужно ознакомиться с некоторыми важными показателями, показанными на изображении ниже - Матрица путаницы, Точность, Напоминание, F1, чтобы выбрать лучшую модель машинного обучения. Обратите внимание, что это не исчерпывающий список всех показателей для оценки любой модели машинного обучения, но он наиболее актуален для текущей задачи, а также был объяснен применительно к этой конкретной задаче машинного обучения.

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

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

Оценка библиотек Auto ML

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

Самый первый шаг - установить библиотеки автоматического машинного обучения, которые мы оцениваем с помощью pip install tpot и pip install pycaret в окне командной строки. После завершения установки следует открыть среду Jupyter для кода (в этой статье в качестве платформы для кодирования используется JupyterLab).

Начнем с импорта библиотек и набора данных.

Печать формы набора данных (или, более конкретно, фрейма данных pandas) показывает, что имеется 14 999 строк и 9 столбцов. Функция head () выводит первые 5 строк в наборе данных и позволяет нам получить представление об информации, с которой мы имеем дело.

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

Далее мы можем сделать вывод, что все столбцы Feature являются числовыми, просто потому, что значения, которые они содержат, НЕ ДИСКРЕТНЫ (например, Gender - Male, Female являются дискретными значениями). Это также верно для столбца «зарплата», который содержит значения «низкий», «средний» и «высокий» и, таким образом, явно демонстрирует внутреннюю взаимосвязь между этими значениями, означающую высокую зарплату ›среднюю зарплату› низкую зарплату. Прежде чем мы оценим автоматические модели машинного обучения, простая проверка с помощью приведенного ниже кода подтверждает, содержит ли какой-либо из столбцов отсутствующие значения, но, к счастью, для этого набора данных их не было, и код просто возвратил 0. В реальных наборах данных бизнес-кейсов вы могли бы При работе с ними крайне важно решить, как вы хотите обрабатывать любые недостающие значения (отбросить их или присвоить среднему значению и т. д.). Как правило, автоматические библиотеки машинного обучения имеют определенный уровень вменения пропущенных значений, настроенный в моделировании, чтобы удовлетворить большинство случаев.

1. Пикарет

Начнем с настройки модуля классификации Pycaret. Обязательными элементами для передачи на этом этапе являются фрейм данных в «данных» и столбец ответа в «целевых» аргументах. Есть ОЧЕНЬ больше аргументов, с которыми можно поиграть и еще больше улучшить использование этой функции setup (); однако мы просто вернемся к значениям конфигурации по умолчанию для этой иллюстрации. Среди значений по умолчанию следует отметить, что разделение на поезд-тест составляет 70–30%, если оно не было изменено при вызове функции setup ().

Как видно из приведенных ниже результатов выполнения функции setup (), Pycaret интерпретирует большинство столбцов функций как категориальные.

Мы можем передать столбцы, для которых мы хотим изменить типы данных на Numeric, используя аргумент «numeric_features», поэтому обновленный код будет выглядеть, как показано ниже.

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

Нам все еще нужно иметь дело со столбцом «зарплата», чтобы преобразовать его из текущего категориального типа данных в «числовой». Поскольку значения в столбце относятся к строковому типу, один из подходов к преобразованию - присвоить этим строковым значениям числа для поддержания отношения высокий ›средний› низкий: 2 ›1› 0. Это изменение можно сделать как часть подготовки данных перед оценкой моделей машинного обучения, поскольку это будет универсальное изменение и для оценки Tpot.

Теперь мы видим, что значения в столбце «зарплата» были преобразованы в числа, представляющие предыдущие строковые значения low, medium и high. Впоследствии выполнение настройки классификации Pycaret () с «зарплатой», также переданной в списке для аргумента «numeric_features», позволяет отображать все столбцы функций как числовые типы данных.

Затем мы можем нажать «ввод» в ответ на запрос функции setup (), чтобы инициализировать модель и перейти к захватывающей части визуализации магии, которую автоматический ML может привнести в таблицу. Просто вызвав функцию compare_models (), как показано ниже, мы увидим в кодовой среде, что Pycaret выполняет 10-кратную перекрестную проверку в разделении поездов, чтобы наилучшим образом интерпретировать соотношение функции и ответа для обеспечения наилучших прогнозов в тестовом разделении. или будущие невидимые данные. Сортировка результатов по умолчанию выполняется по метрике Точность, поэтому она вызывается в качестве аргумента для сортировки по метрике F1, чтобы увидеть лучшую сбалансированную модель точности-отзыва для рассматриваемого здесь варианта использования.

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

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

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

Модель сюжета также имеет другие наборы важных графиков под своим капотом, которые вы можете выполнить, просто изменив аргумент «plot», чтобы указать другие значения, такие как «pr», чтобы построить кривую точности-отзыва, «auc», чтобы построить кривую ROC и подтвердить AUC и т. д.

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

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

2. TPOT

По исполнению Tpot отличается от Pycaret. Во-первых, нам нужно разделить весь набор данных, чтобы четко определить функции и отклик в «X» и «y», а затем определить разбиение поезд-тест, следуя тем же 70–30%, оставаясь совместимым с Pycaret. Выходные данные функции формы подтверждают разделение.

При подготовке к обучению модели классификатора Tpot, аргумент «n_splits» устанавливается равным 10, чтобы соответствовать 10-кратной перекрестной проверке, согласованной с Pycaret. Другие аргументы, настроенные для этого варианта использования по сравнению с тем, что вы найдете в ссылке на ресурс ниже, - это «оценка», измененная с точности на f1, аналогично выбору модели с лучшим рейтингом в Pycaret на основе того же баланса точности-отзыва метрика и «n_jobs» изменены с -1 на 6, что влияет на количество ядер системы, используемых Tpot для построения конвейера ML (чем больше число, тем меньше использование, потому что -1 использует все ядра).

Важное различие между Pycaret и Tpot заключается в том, что последнему потребовалось около 2 часов, чтобы соответствовать лучшей модели машинного обучения, в то время как для первого потребовалось менее 2 минут. 2 часа спустя вот результат Tpot после настройки характеристики поезда. Самый эффективный конвейер машинного обучения для данного набора данных получил средний балл F1 около 97,2%, что не сильно отличается от того, что мы получили из выходных данных функции compare_models () Pycaret. Мы также видим, что сама топ-модель представляет собой комбинацию классификаторов KNeighbours и Decision tree, так что это также отличается от результатов лучшей модели Pycaret.

Большой! Теперь, когда мы зашли так далеко, давайте, наконец, используем обученную модель Tpot для доступа к прогнозам на тестовом наборе и посмотрим, действительно ли мы достигаем лучших результатов по сравнению с Pycaret. Для выполнения прогнозов мы просто вызываем функцию plot_metrics(X_test, y_test, model), где plot_metrics () - это настраиваемая функция, определенная для получения графика ниже с использованием традиционных библиотек matplotlib и seaborn (подробности кода см. По ссылке GitHub gist, предоставленной в ресурсах).

Заключение

Результаты, которые мы видели выше, говорят о том, что для этого данного набора данных, с минимальным вмешательством и временем, лучшим автоматическим ML, на котором мы могли бы сузить круг вопросов и потенциально «продакшен», был бы Pycaret. Важно отметить, что доработка моделей машинного обучения с использованием фактических бизнес-данных может включать больше экспериментов, чем использование значений по умолчанию (например, настройка гиперпараметров, наложение, смешивание моделей, масштабирование функций и т. Д.), Даже с автоматическим машинным обучением, чтобы сделать много тяжелой работы над начальная суживающая часть. Приятного изучения этих данных на ваших бизнес-данных!

  • Ресурсы для дальнейшего чтения -
  1. Учебник по классификации Пикарета
  2. Учебник по классификации Tpot
  3. GitHub gist link to code