training_projects

Форк
0

..
/
hr_decisions_business_optimization 
7 месяцев назад
README.md

Оптимизация бизнес-решений при управлении персоналом компании "Работа с заботой"

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


Контекст исследования: Компания предоставила данные с характеристиками сотрудников компании. Среди них — уровень удовлетворённости сотрудника работой в компании. Эту информацию получили из форм обратной связи: сотрудники заполняют тест-опросник, и по его результатам рассчитывается доля их удовлетворённости от 0 до 1, где 0 — совершенно неудовлетворён, 1 — полностью удовлетворён. Удовлетворённость работой напрямую влияет на отток сотрудников. А предсказание оттока — одна из важнейших задач HR-аналитиков. Внезапные увольнения несут в себе риски для компании, особенно если уходит важный сотрудник.

ЦЕЛЬ ПЕРВОГО ИССЛЕДОВАНИЯ:

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

Описание данных для первого исследования:

  • Тренировочная выборка: train_job_satisfaction_rate.csv

  • Входные признаки тестовой выборки: test_features.csv

  • Целевой признак тестовой выборки: test_target_job_satisfaction_rate.csv

  • id — уникальный идентификатор сотрудника;

  • dept — отдел, в котором работает сотрудник;

  • level — уровень занимаемой должности;

  • workload — уровень загруженности сотрудника;

  • employment_years — длительность работы в компании (в годах);

  • last_year_promo — показывает, было ли повышение за последний год;

  • last_year_violations — показывает, нарушал ли сотрудник трудовой договор за последний год;

  • supervisor_evaluation — оценка качества работы сотрудника, которую дал руководитель;

  • salary — ежемесячная зарплата сотрудника;

  • job_satisfaction_rate — уровень удовлетворённости сотрудника работой в компании, целевой признак.


ЦЕЛЬ ВТОРОГО ИССЛЕДОВАНИЯ:

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

Описание данных для второго исследования:

  • Тренировочная выборка: train_quit.csv

  • Входные признаки тестовой выборки: test_features.csv

  • Целевой признак тестовой выборки: test_target_quit.csv

  • id — уникальный идентификатор сотрудника;

  • dept — отдел, в котором работает сотрудник;

  • level — уровень занимаемой должности;

  • workload — уровень загруженности сотрудника;

  • employment_years — длительность работы в компании (в годах);

  • last_year_promo — показывает, было ли повышение за последний год;

  • last_year_violations — показывает, нарушал ли сотрудник трудовой договор за последний год;

  • supervisor_evaluation — оценка качества работы сотрудника, которую дал руководитель;

  • salary — ежемесячная зарплата сотрудника;

  • quit — факт увольнения сотрудника из компании


Вывод

В ходе работы над проектом были решены две ключевые задачи: регрессии и классификации. Были созданы , протестированы и выбраны 2 лучшие модели, которые успешно прошли порог оценки качества


--ПРЕДСКАЗАНИЕ УРОВНЯ УДОВЛЕТВОРЕННОСТИ СОТРУДНИКА--


Исследование было разделено на несколько этапов:

1. Загрузка и подготовка данных

  • job_X_train

    • Всего в датасете 4000 записей
    • Обнаружили пропущенные значения в столбцах dept (6) и level (4)
    • Явные дубликаты не были обнаружены
    • С типами данных все в порядке
  • job_X_test

    • Всего в датасете 2000 записей
    • Нашли пропущенные значения в столбцах dept (2) и level (1)
    • Явные дубликаты не были обнаружены
    • С типами данных все в порядке
  • job_y_test

    • Всего в датасете 2000 записей
    • Пропущенных значений не обнаружено
    • Явные дубликаты не обнаружены
    • С типами данных все в порядке

2. Предобработка данных

  • job_X_train:

    • Исправили орфографическую ошибку sinior -> senior в столбце level
    • Заменили пропущенные значения при помощи пайплайна (SimpleImputer)
  • job_X_test:

    • Исправили орфографическую ошибку sinior -> senior в столбце level
    • Заменили пустые строки (" ") из данных на пропущенные значения
    • Заменили пропущенные значения при помощи пайплайна (SimpleImputer)
  • job_y_test:

    • С датасетом все в порядке

3. Исследовательский анализ данных

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

  • Самая частая оценка качества работы сотрудника, которую давал руководитель - 4.

  • Медианная зарплата в компании - 30 000.

  • Больше всего сотрудников (38%) заняты в отделе "продаж", однако более всего удовлетворены своим рабочим местом в среднем сотрудники отдела "закупок"

  • 47.5% сотрудников занимают должность junior, примерно столько же в компании и специалистов middle (43.6%). Более всего удовлетворены рабочим местом сотрудники middle.

  • Большая часть сотрудников (51,6%) имеют среднюю загруженность.

  • Очевидным фактором удовлетворения рабочим местом является повышение в прошлом году или наличие нарушений.

  • Сотрудники, которых повысили в прошлом году / которые не получили замечаний за нарушения - гораздо более удовлетворены рабочим местом.

  • Уровень зарплаты достаточно сильно зависит от загруженности работник и его отдела.

  • Был проведен корреляционный анализ:

    • Целевой признак коррелирует умеренно-положительно (0.5 < y < 0.8) с несколькими признаками:
      • last_year_violations - 0.56. Достаточно очевидно, что полученные замечания за нарушения трудового договора негативно влияют на удовлетворенность сотрудником своим рабочим местом.
      • supervisor_evaluation - 0.76. Самая высокая корреляция таргета именно с этим признаком.
      • От признаков со слабой корреляцией решили не избавляться, так как они могут быть важны при принятии решения модели
  • Построили дополнительные графики и обнаружили нелинейную связь job_satisfaction_rate с коррелирующими признаками employment_years и supervisor_evaluation. Особенно интересен вид связи целевого признака и зарплаты сотрудников. Учли данный факт при моделировании

4. Подготовка признаков

  • Проиндексировали выборки и почистили их для дальнейшей работы
  • Создали полный пайплайн с предобработкой, где применили кодирование и масштабирование при помощи OneHotEncoder, OrdinalEncoder, StandardScaler / MinMaxScaler

5. Обучение моделей

  • Создали собственную метрику - SMAPE (симметричное среднее абсолютное процентное отклонение)

  • После перебрали гиперпараметры 5-ти моделей в цикле через пайплайн при помощи RandomizedSearchCV:

    • LinearRegression

    • DecisionTreeRegressor

    • LGBMRegressor

    • RandomForestRegressor

    • KNeighborsRegressor

  • По итогу перебора в цикле, лучше всего себя показала модель LGBMRegressor(max_depth=20, n_estimators=96,random_state=42).

    • SMAPE лучшей модели на тестовой выборке - 11.072211264327137
  • На втором месте - RandomForestRegressor, а хуже всего справилась LinearRegression со значением SMAPE 23.547602 на тестовой выборке

  • Углубленно подобрали гиперпараметры модели LGBMRegressor:

    • Лучшая модель - LGBMRegressor(max_depth=13, n_estimators=145, random_state=42)

    • Финальное значение SMAPE на тестовой выборке - 10.915527122848754

  • Проанализировали важность признаков при помощи SHAP:

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

    • На втором месте - employment_years. Судя по всему, предсказание уровня удовлетворенности сотрудником своего рабочего места зависит и от этой фичи (примерно на таком же уровне, как и от занимаемой должности и уровня ЗП)


--ПРЕДСКАЗАНИЕ УВОЛЬНЕНИЯ СОТРУДНИКА ИЗ КОМПАНИИ--


Исследование было разделено на несколько этапов:

1. Загрузка и подготовка данных

  • quit_X_train

    • С датасетом все в порядке
  • quit_y_test

    • С датасетом все в порядке
  • Датасет quit_X_test - копия обработанного датасета с входными признаками предыдущей задачи (job_X_test_ml)

2. Предобработка данных

  • Закодировали вручную строки "no" и "yes" в столбцах ['last_year_promo', 'last_year_violations', 'quit']
  • Исправили орфографическую ошибку sinior в датасете quit_X_train
  • Проиндексировали выборки

3. Исследовательский анализ данных

  • Общий анализ данных:
    • Сильный дисбаланс по повышению сотрудников: 97.2% сотрудников НЕ были повышены
    • Только 13.6% сотрудников получили выговоры за нарушения ТК в прошлом году
    • 71.8% НЕ были уволены из компании по существующим данным
    • Целевой признак коррелирует умеренно-положительно (0.5 < y < 0.8) с несколькими признаками:
      • employment_years - 0.66. Более всего сотрудников увольняются до 2-х лет работы в компании. Это связано с классической текучкой и описывается нормальным явлением.

      • salary - 0.51. Подобная корреляция связана с уровнем ЗП сотрудников: чем она ниже (и, вероятно, не соответствует ожиданиям сотрудников) - тем охотнее увольняются работники.

  • Портрет "уволившегося" сотрудника:
    • Скорее всего работает в отделе продаж (sales)

    • Имеет низшую должность (junior)

    • Имеет низкую / среднюю загруженность

    • В среднем проработал 1-2 года в компании

    • В среднем зарабатывает 22 800 (что на 12 000 меньше среднего уровня ЗП остальных сотрудников)

  • Подтвердили, что уровень удовлетворённости сотрудника работой в компании влияет на то, уволится ли сотрудник или нет. JSR уволившихся сотрудников практически в 2 раза ниже оставшихся (в среднем - 0.39 по отношению к 0.61)

4. Добавление нового входного признака

  • Добавили новый входной признак - "удовлетворенность сотрудника работой".
  • Данный признак был добавлен в виде предсказаний модели из задачи номер 1:
    • Проверили грамотность добавления нового признака
    • Получили предсказания модели для новых данных
    • Вставили предсказания в качестве нового признака

5. Подготовка признаков

  • Скорректировали выборки
  • Добавили новый признак job_satisfaction_rate в num_columns для пайплайна data_preprocessor

6. Обучение моделей

  • Сначала перебрали гиперпараметры 6-ти моделей в пайплайне при помощи RandomizedSearchCV:

    • LogisticRegression
    • DecisionTreeClassifier
    • LGBMClassifier
    • RandomForestClassifier
    • KNeighborsClassifier
    • SVC
  • Лучшая модель по версии RandomizedSearchCV - LGBMClassifier(max_depth=2, n_estimators=112, random_state=42))

  • ROC-AUC на тестовой выборке - 0.9307047501926154

  • Проанализировали важность признаков при помощи SHAP:

  • Признак employment_years оказывает значительное влияние на решения модели. Примерно такой же вес имеет признак level. Получается, что два этих показателя являются ключевыми при решении сотрудника "уволиться"


--РЕКОМЕНДАЦИИ ДЛЯ КЛИЕНТА--


  • Стоит обращать внимание на то, как оценивается труд сотрудников. Они принимают это достаточно близко к сердцу, что точно сказывается на их удовлетворенности рабочим местом
  • Текучка - неизбежное явление для бизнеса. Вероятно, стоит придумать какие-то дополнительные интересные фичи на ранних этапах работы (1-2 года). Корпоративы, соц.гарантии, премии и прочие активности
  • Стоит внимательно посмотреть на отдел продаж и зарплаты сотрудников. Вероятно, нужно обратить внимание на "фиксацию" сотрудников в отделе продаж на какой-то более длительный период. Может быть, стоит нормировать график, добавив дистанционные часы
  • Удовлетворенность работой - ключевой параметр при увольнении сотрудников, поэтому нужно максимизировать "наслаждение" сотрудников от их деятельности. В таком случае, отток действительно может снизиться

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.