Пример использования IBM HR Attrition

Предсказать, собирается ли конкретный сотрудник покинуть организацию?

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

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

Оглавление

  1. Подготовка и понимание данных.
  2. Feature Engineering.
  3. Выбор функции.
  4. Подгонка модели
  5. Сравнение моделей
  6. Рекомендации и заключение.

Подготовка и понимание данных

Пример использования IBM HR Attrition можно найти на Kaggle. Python 3.3 используется для аналитики и подбора моделей. Используемая среда IDE - Spyder 3.3.3.

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

Набор данных Отсев содержит 1470 наблюдений с 35 переменными. Из 35 переменных существует одна целевая переменная Отсев с возможными результатами Да и Нет. Остальные 34 переменных являются независимыми переменными, за исключением одной - Employee Number, которая обозначает номер сотрудника или идентификационный номер.

На приведенном выше графике показано распределение целевой переменной. Из 1470 наблюдений 1233 - Нет, а 167 - Да. Мы устраним этот дисбаланс после разделения данных на Training и Test Set.

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

Возраст, DailyRate, DistanceFromHome, HourlyRate, MonthlyRate, PercentSalaryHike обычно не имеют выбросов.

NumCompaniesWorked, TrainingTimesLastYear, YearsWithCurrManager, YearsInCurrentRole имеют умеренное количество выбросов.

Ежемесячный доход, TotalWorkingYears, YearsAtCompany, YearsSinceLastPromotion имеют большое количество выбросов.

Одним из способов решения этой проблемы является масштабирование переменных, чтобы уменьшить их влияние на модель. Для этой цели можно использовать StandardScaler () в библиотеке Python Scikit-learn.

Последний шаг перед тем, как двигаться дальше, - это проверка мультиколлинеарности. Для этого мы строим корреляционную матрицу.

На приведенном выше графике показана корреляция между независимыми переменными. Мы делаем это, чтобы обязательно проверить мультиколлинеарность. Эмпирическое правило, которому следуют для множественной коллинеарности: если коэффициент корреляции (r) близок к 0,80. Основываясь на этом, мы определяем следующие переменные, которые имеют высокую корреляцию:

Корреляция между MonthlyIncome и JobLevel составляет 0,95. Это очень высокая корреляция.

Корреляция между TotalWorkingYears и JobLevel составляет 0,78, что также очень близко к 0,80.

Все остальные переменные имеют корреляцию менее 0,80.

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

Функциональная инженерия

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

Для целей модели из существующих независимых переменных были созданы две функции:

Целостный:

Были взяты 4 фактора, а именно: EnvironmentSatisfaction, JobInvolvement, JobSatisfaction, RelationshipSatisfaction, сумма которых считалась Целостное удовлетворение. Максимальный балл «16» указывал на полное целостное удовлетворение, тогда как «4» рассматривался как наименьшее целостное удовлетворение. Конструирование этой переменной было основано на данной диаграмме:

Горизонтальная ось обозначает целостное удовлетворение, а вертикальная ось обозначает процентное отставание, соответствующее данному уровню. Можно однозначно сделать вывод, что по мере повышения оценки доля истощения уменьшается, то есть с 0,56 в 5-м классе до 0,00 в 16-м классе.

Доход ниже среднего

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

Выбор функции

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

  1. Тип переменной
  2. Неизменность в точке данных
  3. Независимость между целевой переменной и независимой переменной
  4. Мультиколлинеарность

Тип переменной:

Номинальная переменная не используется в анализе, поскольку она не дает никаких исходных данных для процесса построения модели. Однако он сохраняется для идентификации сотрудников, на которых проводится исследование.

Неизменность в точке данных:

Некоторые переменные не изменяются. Такими переменными являются:

  1. Количество сотрудников: это просто количество сотрудников, которое всегда принимает значение 1.
  2. Больше 18: эта переменная описывает, если сотрудник старше 18 лет. Во всех случаях принимает значение «Да».
  3. StandardHours: стандартное количество часов, которое сотрудник работает в неделю. Его постоянное значение - 80

Независимость между целевой переменной и независимой переменной:

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

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

H0: не существует связи между двумя переменными.

H1: Между переменными существует связь.

Мы отклоняем нулевую гипотезу, если p-значение меньше уровня значимости (a) или если вычисленное значение больше табличного значения. Для целей данного исследования мы выбрали LOS (a) равным 5%.

На основании теста хи-квадрат были отменены следующие переменные:

Мультиколлинеарность:

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

На основе нашего анализа мы удалили следующие переменные:

  1. JobLevel: коэффициент корреляции 0,95 с MonthlyIncome и 0,78 с TotalWorkingYears.
  2. TotalWorkingYears: 0,77 корреляция с ежемесячным доходом.

Анализ главных компонентов

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

Были созданы два основных компонента, которые объясняют изменчивость 26 рассматриваемых переменных. Был проведен цикл, в котором были взяты компоненты от 1 до 26, и была измерена объясненная изменчивость. Только с одним главным компонентом объясненная изменчивость составила примерно 68%. Это увеличилось примерно до 99% с двумя основными компонентами и почти до 99,99% с 3 основными компонентами. Любое дальнейшее увеличение увеличивало несущественно объясненный процент.

Подгонка модели

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

  1. Наблюдение 80% для обучающего набора данных.
  2. 14% наблюдений для набора данных проверки.
  3. 6% наблюдение для Test Dataset.

Выбран алгоритм Support Vector Machine с Linear Kernel. Выбранные параметры приведены ниже:

Важные параметры, такие как kernel, в этом случае выбираются как «linear». Для random_state в качестве начального значения выбрано 42, и модель соответствует 1176 наблюдениям.

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

Матрица путаницы для набора проверки приведена ниже:

Матрица путаницы для набора тестов приведена ниже:

Теперь мы вычисляем параметры точности для двух наборов данных:

Первый набор информации относится к набору проверки. Мы получаем взвешенную точность 1,00 с точностью 1,00 и вспомним 1,00.

Второй набор информации относится к набору Test. Мы получаем взвешенную точность 1,00 с точностью 1,00 и вспомним 1,00.

Теперь посмотрим на показатель Каппа Коэна. Коэффициент Каппа Коэна (κ) - это статистика, которая измеряет согласованность между экспертами по качественным (категориальным) пунктам. Обычно считается, что это более надежная мера, чем простой расчет процента согласия, поскольку κ учитывает возможность совпадения случайно.

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

Примечание. Также использовалось несколько других классификаторов, лучшие из которых описаны здесь. К другим классификаторам относятся машины опорных векторов (ядро RBF), случайный лес (1000 деревьев) и логистическая регрессия.

Сравнение моделей

Как уже упоминалось, было использовано несколько классификаторов и был выбран лучший из них. Однако стоит посмотреть на преимущества и недостатки каждого классификатора. SVM (линейное ядро) дает наивысшую точность (100%), за ним следуют Random Forest (87%) и SVM (ядро RBF ). Избыточная подгонка может быть проблемой для лучшей модели, поскольку она может уступить место новым точкам данных. Кроме того, требуется время на подгонку модели. Случайный лес, с другой стороны, может быть полезен с новыми точками данных в классификации.

Рекомендации и выводы

Основываясь на приведенной выше диаграмме, мы можем сделать вывод, что StockOptionLevel играет очень важную роль в принятии решения об увольнении сотрудника. Помимо этого, MonthlyIncome, JobSatisfaction, JobInvolvement также входят в число основных участников. С другой стороны, такие факторы, как PerformanceRating, Gender, Department, как правило, не так значительны (что также было статистически подтверждено тестом хи-квадрат).

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

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

· StockOptionLevel

· Ежемесячный доход

· Удовлетворение от работы

· Вовлеченность к работе

· WorkLifeBalance

· Удовлетворение окружающей среды

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

Следовательно, HR может сосредоточиться на таких аспектах и ​​понять их с точки зрения сотрудников. После этого проект, который называется «Проект истощения», можно использовать в качестве проекта удержания. Это может очень помочь организации.

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

На этом мы завершаем этот проект.

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

Напишите мне по адресу [email protected]

Вы можете найти меня в LinkedIn.