Построение модели оттока сотрудников для разработки стратегии удержания

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

Перевод статьи https://towardsdatascience.com/building-an-employee-churn-model-in-python-to-develop-a-strategic-retention-plan-57d5bd882c2d

Описание задачи

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

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

Я воспользуюсь пошаговым систематичным подходом, применимым для решения всевозможных задач машинного обучения. Этот проект подпадает под задачи HR аналитики, или People Analytics.

В этом исследовании мы попытаемся решить следующие вопросы:

  1. Чем похожи сотрудники, покидающие компанию?

  2. Каковы ключевые индикаторы уходящих сотрудников?

  3. Какие стратегии могут быть приняты для улучшения удержания сотрудников?

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

Полностью код проекта представлен в репозитории на GitHub и на Kagle Kernel.

Анализ данных

В этом проекте используются данные IBM HR Analytics Employee Attrition & Performance (прим. переводчика - ссылка уже неактуальна, исходные данные можно найти в указанном выше репозитории). В датасете представлены данные 1470 сотрудников. Я буду использовать эти данные для предсказания ухода сотрудников, исходя из понимания основных факторов оттока.

На сайте IBM указано: "Это искусственные данные, сгенерированные датасаентистами IBM. Они предназначены для демонстрации возможностей IBM Watson Analytics в отношении увольнения сотрудников".

Описание и визуализация данных

Для начала мы импортируем датасет и скопируем исходный файл для анализа. Датасет состоит из 1470 строк и 35 колонок.

Датасет содержит как числовые так и категориальные колонки, в которых представлены персональные данные и данные о трудовом опыте.

Сгруппируем колонки по типу данных (т.е. int64, float64, object):

Источник данных

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

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

Обзор числовых признаков

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

  • Некоторые признаки имеют распределение с «тяжелыми хвостами» с перекосом вправо. Например, Месячный доход (MonthlyIncome), Расстояние от дома (DistanceFromHome), Кол-во лет в компании (YearsAtCompany). Возможно потребуются методы преобразование данных для приведения распределения к нормальному перед тренировкой модели.

  • Распределения Возраста сотрудников нормальное с небольшим перекосом вправо. Основная масса персонала от 25 до 40 лет.

  • Признаки Кол-во сотрудников (EmployeeCount) и Кол-во рабочих часов (StandardHours) одинаковы для всех сотрудников. Скорее всего они будут избыточными признаками.

  • ИД сотрудника (Employee Number) это уникальный номер сотрудника из-за чего он получил псевдоравномерное распределение.

Распределение признаков относительно целевой переменной

В этом разделе более подробно рассмотрим результат анализа данных (EDA).

Возраст (Age)

Распределение по возрасту для работающих и уволившихся сотрудников отличается всего на один год. Средний возраст бывших сотрудников составляет 33,6 лет, работающих - 37,6 лет.
Давайте нарисуем график ядерной оценки плотности с разбивкой по целевому признаку. Ядерная оценка плотности - это непараметрический способ оценки функции плотности вероятности случайной величины.

Гендер (Gender)

Гендерное распределение показывает, что в датасете наблюдается более высокая относительная доля бывших сотрудников-мужчин, чем бывших сотрудников-женщин. При этом нормализованное гендерное распределение бывших сотрудников в наборе данных составляет 17,0% для мужчин и 14,8% для женщин.

Семейное положение (Marital Status)

Датасет включает три значения для семейного положения: женат (673 сотрудника), холост (470 сотрудников), разведен (327 сотрудников). Больше всего увольняющихся среди одиноких сотрудников - 25%.

Должность и Условия работы (Role and Work Conditions)

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

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

Лет в компании и с момента последнего повышения (Years at the Company and Since Last Promotion)

Среднее кол-во лет, проведенных в компании, для работающих сотрудников составляет 7,37 лет, для уволившихся - 5,13 лет.

Лет с текущим руководителем (Years with Current Manager)

Среднее кол-во лет под руководством нынешнего начальника для работающих сотрудников составляет 4,37 лет, для уволившихся - 2,85 лет.

Переработки (Overtime)

У некоторых сотрудников есть сверхурочная работа. Данные ясно показывают, что среди перерабатывающих сотрудников доля уволившихся значительно выше.

Месячный доход (Monthly Income)

Доход сотрудников варьируется в диапазоне от $1009 до $19999.

Целевая переменная: Усталость (Attrition)

Признак «Усталость» - это то, что мы пытаемся предсказать в этой задаче машинного обучения, используя другие связанные признаки из персональных данных сотрудника и его профессиональных данных.
В приложенном датасете 83,9% работающих сотрудников и 16,1% бывших сотрудников. Следовательно, мы имеем дело с проблемой несбалансированного класса.
Модели машинного обучения обычно работают лучше, когда число представителей каждого класса примерно одинаково. Нам придется устранить этот дисбаланс целевого признака до реализации алгоритма обучения.

Корреляция

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

Как показано выше, признаки «Ставка» (Monthly Rate), «Кол-во компаний, в которых работал» (Number of Companies Worked) и «Удаленность от дома» (Distance From Home) имеют положительную корреляцию с признаком «Усталость» (Target). В то время как «Общий стаж» (Total Working Years), «Грейд» (Job Level) и «Лет в текущей должности» (Years In Current Role) имеют отрицательную корреляцию с признаком «Усталость» (Target).

Результаты анализа данных

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

  • Наиболее сильные положительные корреляции с целевой переменной наблюдаются у признаков: «Рейтинг производительности» (Performance Rating), «Ставка» (Monthly Rate), «Кол-во компаний, в которых работал» (Number of Companies Worked) и «Удаленность от дома» (Distance From Home).

  • Наиболее сильные отрицательные корреляции с целевой переменной наблюдаются у признаков: «Общий стаж» (Total Working Years), «Грейд» (Job Level), «Лет в текущей должности» (Years In Current Role) и «Месячный доход» (Monthly Income).

  • Датасет не сбалансирован по большинству наблюдений, описывающих работающих сотрудников.

  • Неженатые сотрудники увольняются чаще чем женатые и разведенные.

  • Около 10% уволившихся ушли после двух лет работы в компании.

  • Те, кто живут дальше от места работы, увольняются чаще.

  • Те, кто чаще ездят в командировки, увольняются чаще.

  • Те, кто работают сверхурочно, увольняются чаще.

  • Те, кто ранее уже сменил несколько мест работы, увольняются чаще.

Препроцессинг данных

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

Кодирование (Encoding)

Обычно модели работают только с числовыми значениями для предсказаний. Соответственно нам нужно закодировать категориальные данные числовыми значениями. Чтобы избежать повышения важности признаков с большим количеством уникальных значений, мы будем использовать Label Encoding и One-Hot Encoding, как показано ниже.

Шкалирование (Scaling)

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

Разбивка данных на обучающую и тестовую выборки

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

Построение моделей машинного обучения

Базовые модели

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

  • Логистическая регрессия (Logistic Regression)

  • Случайный лес (Random Forest)

  • Метод опорных векторов (SVM)

  • Метод k-ближайших соседей (KNN)

  • Классификатор на базе дерева решений (Decision Tree Classifier)

  • Гауссовский наивный байесовский классификатор (Gaussian NB)

Давайте оценим каждую модель по очереди и предоставим оценки точности и стандартного отклонения.

Точность классификации (Classification Accuracy) это точность предсказаний по отношению к общему числу предсказаний. Это наиболее распространенная метрика оценки для задач классификации.

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

Площадь под кривой ROC (Area under ROC Curve, AUC) это метрика производительности для задач бинарной классификации. AUC показывает способность модели различать положительные и отрицательные классы и лучше подходит для этого проекта. Значение площади равное 1,0 соответствует идеальной модели. Значение площади 0,5 соответствует случайной модели.

Основываясь на сравнении метрики ROC AUC, мы выбираем логистическую регрессию (Logistic Regression) и случайный лес (Random Forest) для дальнейшей проработки, так как они показали наибольшие средние значения AUC.

Логистическая регрессия

Воспользуемся GridSearchCV для точной настройки гиперпараметров модели, перебирая определенные значения и используя метрику ROC AUC.

Матрица ошибок дает нам гораздо более подробное представление об оценке точности и о том, что происходит с нашими метками - мы точно знаем какие метки были спрогнозированы правильно, а какие нет. Точность классификатора на базе логистической регрессии составила на тестовой выборке 75,54%.

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

Случайный лес

Теперь поближе посмотрим на Random Forest. Так же настроим гиперпараметры с помощью GridSearchCV и метрики ROC AUC.

Random Forest позволяет нам узнать, какие признаки наиболее важны для прогнозирования целевой переменной («Attrition» в нашем случае). Ниже представлена диаграмма с признаками, отсортированными по их важности в порядке убывания.

Random Forest помогает определить топ 10 самых важных признаков:

  1. Месячный доход (MonthlyIncome)

  2. Переработки (OverTime)

  3. Возраст (Age)

  4. Ставка (MonthlyRate)

  5. Расстояние от дома (DistanceFromHome)

  6. Дневная ставка (DailyRate)

  7. Общий стаж (TotalWorkingYears)

  8. Лет в компании (YearsAtCompany)

  9. Часовая ставка (HourlyRate)

  10. Лет под руководством нынешнего начальника (YearsWithCurrManager)

Точность полученного классификатора Random Forest на тестовом наборе составила 86,14%. Ниже приведена матрица ошибок.

Предсказание вероятностей меток позволяет нам оценить насколько склонны сотрудники к уходу из компании. Метрика ROC AUC для предсказаний вероятностей классификатором Random Forest дает значение 0,818.

Сравнение кривых ROC

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

Как видно на графике, у настроенной модели логистической регрессии значение AUC выше, чем у классификатора Random Forest

Заключительные заметки

Оценка риска

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

Сотрудникам можно присвоить атрибут Оценка риска, полученный по результатам предсказанной метки:

  • Низкий уровень риска для сотрудников с меткой < 0,6

  • Средний уровень риска для сотрудников с меткой от 0,6 до 0,8

  • Высокий уровень риска для сотрудников с меткой выше 0,8

Индикаторы и стратегия удержания

Самые важные индикаторы увольняющихся сотрудников включают в себя:

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

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

  • Возраст. Чаще увольняются сотрудники относительно молодой возрастной группы 25–35 лет. Следовательно, необходимо приложить усилия, чтобы четко сформулировать долгосрочное видение компании и молодых сотрудников, соответствующих этому видению, а также предоставить стимулы в виде, например, четких путей продвижения по службе.

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

  • Общий стаж. Более опытные сотрудники с меньшей вероятностью уйдут. Сотрудники со стажем от 5 до 8 лет потенциально подвержены более высокому риску увольнения.

  • Лет в компании. Сотрудники, отработавшие в компании два года, подвержены более высокому риску увольнения.

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

Рассмотрим некоторые метрики, определяющие, следует ли предпринимать действия с линейным руководителем.

  • Кол-во лет, в течение которых линейный руководитель остается на одной должности. Это может сигнализировать о том, что сотрудникам требуется тренинг по менеджменту или ментор, в идеале из топ-менеджмента.

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

Заключительные мысли

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

Надеюсь, вы получили от прочтения этой статьи столько же удовольствия, сколько я от ее написания. Еще раз напоминаю, полный код проекта представлен в репозитории на GitHub и на Kagle Kernel.

Источник: https://habr.com/ru/post/582304/


Интересные статьи

Интересные статьи

Young Industries, Inc. — американский производитель конвейеров для сыпучих материалов с более чем семидесятилетним опытом работы на рынке промышленного оборудования. Инже...
В 1998 г. мало кому известный стартап под названием Netflix, только что запустивший собственный сайт, платил своим сотрудникам значительно меньше рынка: в фирму семейного типа шли не ...
Все «за» и «против» 1С-Битрикс, какие есть альтернативы и что выгоднее знать разработчику? Читать далее
Нередко при работе с Bitrix24 REST API возникает необходимость быстро получить содержимое определенных полей всех элементов какого-то списка (например, лидов). Традиционн...
Привет, Хабр. Я редактор в компании Ratio, мы делаем веб-разработку на заказ и с начала 2018 года все наши сотрудники работают удалённо. От Таллина до Комсомольска-на-Амуре, семь часовых пояс...