Анализ и прогноз истощения в Python

Вступление

В этой статье мы собираемся провести анализ кадрового истощения на Python. Набор данных, который мы собираемся использовать, представляет собой очень популярный набор данных, который можно найти по следующей ссылке: https://www.kaggle.com/pavansubhasht/ibm-hr-analytics-attrition-dataset

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

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

df.groupby('Department').mean()['Attrition'].plot(kind='bar',color=['Green','Blue','Pink'])
plt.title("Attrition Rate by Department")

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

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

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

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

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

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

cat_var=['BusinessTravel','Department','EducationField','Gender','JobRole', 'MaritalStatus', 'Over18','OverTime']
X=pd.get_dummies(df,columns=cat_var,drop_first=True)
num_var=[]
for i in X.columns:
    if X[i].nunique()>3:
        num_var.append(i)

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

Логистическая регрессия - очень популярный алгоритм классификации, который использует сигмовидную функцию для построения S-образной кривой для прогнозирования вероятности результата. Он имеет несколько характеристик, которые делают его подходящим для большого количества задач классификации.

  1. Его намного проще обучать, внедрять и эффективнее по сравнению с другими алгоритмами машинного обучения.
  2. В нем гораздо меньше предположений о переменных по сравнению с предыдущими алгоритмами машинного обучения.
  3. Он имеет приличную степень точности, особенно там, где количество функций меньше, чем количество наблюдений.
lr=LogisticRegression(C=100,max_iter=10000)
lr.fit(X_train,y_train)
y_pred=lr.predict(X_test)
print(accuracy_score(y_test,y_pred))
print(classification_report(y_test,y_pred)

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

Истинно положительный / (Истинно положительный + ложноотрицательный)

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

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

from sklearn.tree import DecisionTreeClassifier
dc=DecisionTreeClassifier()
dc.fit(X_train,y_train)
dc.predict(X_test)
print(classification_report(y_test,y_pred)

Точность в этом случае снизилась до 66% с 87%, однако положительным моментом является то, что общий отзыв о положительных результатах улучшился до 0,66. Это довольно хороший результат, так как наша модель теперь более полезна, чем предыдущие. Используя функцию важности функций, мы можем увидеть, как каждая функция связана с истощением.

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

Повышение

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

из sklearn.ensemble импорта GradientBoostingClassifier gbc = AdaBoostClassifier (n_estimators = 100) gbc.fit (X_test, y_test) y_pred = gbc.predict (X_test ) печать (отчет_классификации (y_test, y_pred))

Результаты резко улучшились. Теперь показатель точности составляет 98%, а показатель отзыва для положительных результатов - 88%. Этот пример демонстрирует эффективность использования алгоритмов повышения и то, как они могут улучшить общую производительность модели.

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