Company’s Attrition Rate

Sebuah perusahaan dengan 4000-an karyawannya mendapati bahwa setiap tahun, sekitar 15% karyawannya meninggalkan perusahaan tersebut baik atas kemauan sendiri ataupun karena ‘pemberhentian’ dari pihak perusahaan. Hal ini menyebabkan perusahaan perlu mencari karyawan baru sebagai gantinya. Menurut pihak manajemen perusahaan, pengurangan jumlah karyawan dalam jangka waktu tertentu atau attrition rate ini memberikan dampak kurang baik bagi perusahaan, antara lain:

  • Project perusahaan yang berkaitan dengan mantan karyawan tertunda, sehingga dapat mempengaruhi timeline yang dapat berdampak langsung pada reputasi perusahaan terhadap konsumen ataupun partner perusahaan.
  • Perekrutan karyawan baru tidak jarang membutuhkan waktu lebih untuk penyesuaian diri mereka baik terhadap pekerjaan ataupun terhadap budaya perusahaan itu sendiri.

Di tulisan ini, akan dilakukan beberapa analisis untuk mengetahui hal-hal berikut:

  1. Faktor-faktor apa saja yang paling berpengaruh terhadap attrition rate di perusahaan ini?
  2. Apa saja yang dapat dilakukan oleh pihak perusahaan untuk mengurangi attrition rate tersebut?

Import the Dataset

Dataset yang digunakan di tulisan ini diperoleh dari Kaggle dan diolah menggunakan Jupyter Notebook menggunakan Python 3.7.1. Dataset ini terdiri dari 4409 data karyawan. Dataset terdiri dari beberapa file csv dimana di project ini file yang akan dianalisis adalah file general_data.csv, manager_survey_data.csv, dan employee_survey_data.csv.

File general_data.csv berisi data-data dasar tiap karyawan yang bersifat objektif seperti data usia, salary, total tahun karyawan bekerja, dll. Sedangkan dua file lainnya merupakan data yang dihimpun dari hasil survey terhadap manager dan karyawan, yang berisi penilaian subjektif seperti work life balance, performance rating, dan lainnya.

Data Cleaning

Di tahap ini dilakukan beberapa hal antara lain:

  • Menggabungkan data genera_data.csv, manager_survey_data.csv, dan employee_survey_data.csv berdasarkan EmployeeID
  • Memperbaiki (atau menghapus) data dengan nilai NaN. Apabila nilai tersebut dapat diperoleh dari feature lain yang memungkinkan maka data diperbaiki, tetapi bila tidak memungkinkan maka data baris tersebut dihapus
  • Mengedrop kolom yang kurang berguna pada data general_data.csv untuk analisis seperti EmployeeCount, EmployeeID, StandardHours, Over18
  • Membuat kolom segmentasi usia karyawan menjadi empat kelompok: 18–30 tahun, 31–40 tahun, 41–50 tahun, dan 51–60 tahun untuk memudahkan analisis dan pemodelan machine learning di project berikutnya.
  • Mengkonversi data kategori menjadi data numeric menggunakan LabelEncoder() untuk memudahkan analisis dan pemodelan di project berikutnya.
  • Menyimpan hasil data cleaning ke Data_HR_Clean.csv untuk pemodelan machine learning di project selanjutnya.

Result and Analysis

Attrition Rate. 1 = Yes, 0 = No

Dari sekitar 4000 karyawan, di tahun ini terdapat 16,2% atau sekitar 600-an karyawan yang meninggalkan perusahaan. Hal ini sama seperti yang telah dijelaskan sebelumnya dimana nilai 16% ini merupakan nilai attrition rate yang cukup tinggi yang berdampak kurang baik terhadap perusahaan. Selanjutnya akan dicari faktor apa saja yang mempengaruhi attrition rate ini.

Plot Correlation

Dari plot correlation di atas, diperoleh bahwa tidak ada feature yang secara langsung memiliki nilai correlation cukup tinggi terhadap attrition rate. Namun terdapat beberapa hal yang saya highlight di sini.

  • Persentase kenaikan gaji memiliki korelasi yang cukup tinggi (0,77 dari skala 1) dengan rating performa karyawan menurut manager.
  • Total tahun pengalaman bekerja seorang karyawan (termasuk pengalaman bekerja di perusahaan sebelumnya) memiliki korelasi yang cukup tinggi (0,64) dengan usia karyawan.

Antara total tahun pengalaman bekerja, total tahun karyawan bekerja di perusahaan ini, dan total tahun karyawan bekerja dengan manager saat ini memiliki nilai koefisien korelasi yang cukup tinggi. Namun hal ini tidak saya highlight karena memang nilai ketiganya bergantung satu sama lain secara langsung.

Plot Attrition Rate dengan Setiap Feature

Beberapa hal yang saya highlight di sini antara lain:

  • Karyawan perusahaan paling banyak berada di rentang usia 30–40 tahun. Jumlah karyawan yang paling banyak meninggalkan perusahaan adalah karyawan di kelompok rentang usia di bawah 30 tahun dan rentang 30–40 tahun.
  • Karyawan berstatus single memiliki attrition rate paling tinggi, baik dibandingkan dengan karyawan dengan status lainnya maupun dengan karyawan yang berstatus single juga.
  • Karyawan dengan kategori belum pernah bekerja di perusahaan lainnya (NumCompaniesWorked=0) berjumlah jauh lebih banyak dari kategori karyawan lainnya (baik karyawan yang stay di perusahaan maupun karyawan yang meninggalkan perusahaan)
  • Performance rating yang diberikan oleh manager bernilai 1 hingga 4, makin tinggi rating yang diberikan berarti makin baik performa karyawan menurut manager. Di sini hanya terdapat karyawan dengan nilai performance rating 3 dan 4, dengan kategori karyawan dengan rating 3 berjumlah jauh lebih banyak daripada kategori rating 4.

Build the Model

Setelah melakukan analisis pada dataset HR Data di tulisan sebelumnya, akan dilakukan pemodelan machine learning pada dataset tersebut. Model ini nantinya diharapkan dapat membantu pihak manager dalam memprediksi probabilitas attrition rate tiap karyawan.

Import Dataset

Pada notebook EDA sebelumnya, telah dilakukan proses cleaning dataset untuk feature-feature yang objektif tiap karyawan. Dataset tersebut disimpan dalam file Data_Obj_HR_Clean csv.

Split Dataset

Di tahap ini dilakukan pemisahan dataset menjadi variabel dependen dan variabel independen. Variabel dependen adalah Attrition, dan variabel independen adalah sisanya. Setelah itu, dataset dibagi menjadi dua, yaitu data training dan data testing dengan perbandingan 80:20.

Standardize Data

Sebelum melakukan modeling, dilakukan standardisasi data. Tujuannya adalah agar bobot tiap feature sama. Di sini digunakan library StandardScaler().

Choosing the Model

Goal akhir dari tulisan ini adalah memperoleh nilai probabilitas tingkat attrition tiap karyawan. Akan dicoba dua model ML yaitu Logistic Regression dan Random Forest Classifier untuk memperoleh nilai probabilitas tersebut.

Dari hasil percobaan, Logistic Regression menghasilkan akurasi 85,8% sedangkan Random Forest Classifier menghasilkan 99,2%. Oleh karena itu, dipilih model Random Forest Classifier karena menghasilkan akurasi yang cukup tinggi. Selanjutnya untuk menghitung nilai probabilitas attrition, digunakan fungsi predict_proba

accuracy score dengan Logistic Regression (kiri) dan Random Forest Classifier (kanan)

Create a Template for the Manager

Dengan asumsi data keseluruhan karyawan di bulan/tahun selanjutnya memiliki format yang sama dengan file general_data.csv, maka dibuat template file notebook untuk pengecekan attrition rate tiap karyawan. Melalui notebook ini, manager dapat mengedit nama file csv yang akan dianalisis dan akan menghasilkan file Hasil_Prediksi.csv

Conclusion

  • Attrition rate tinggi paling banyak terjadi pada karyawan kategori usia muda (di bawah 40 tahun), berstatus single atau belum menikah, dan belum pernah memiliki pengalaman bekerja di perusahaan lain sebelumnya. Oleh karena itu, kelompok karyawan yang masuk kategori ini mungkin sebaiknya diberi perlakuan khusus seperti pembatasan rekrutmen.
  • Tidak ada feature tertentu yang memiliki korelasi langsung yang cukup tinggi dengan attrition rate. Hal ini kemungkinan disebabkan karena pertimbangan keputusan attrition tiap individu sangat beragam sehingga penanganannya harus dilihat secara personal satu persatu.
  • Dilakukan pemodelan machine learning untuk dataset. Pemodelan ini diharapkan akan menghasilkan nilai probabilitas attrition tiap individu berdasarkan kombinasi feature-feature yang ada. Hasil pemodelan diharapkan dapat membantu manager menentukan kebijakan dalam usahanya menurunkan nilai attrition rate perusahaan.
  • Prediksi perhitungan nilai probabilitas attrition dapat dilakukan dengan model Logistic Regression ataupun Random Forest Classifier. Pada dataset ini, Random Forest Classifier memberikan nilai akurasi 99% sedangkan Logistic Regression hanya sekitar 85% oleh karena itu dipilih Random Forest Classifier untuk pemodelan machine learning.
  • Template notebook untuk prediksi nilai probabilitas attrition dibuat untuk memudahkan manager mengetahui karyawan mana saja yang memiliki nilai probabilitas tinggi untuk meninggalkan perusahaan. Template ini akan menghasilkan file berformat csv yang berisi nilai probabilitas tiap karyawan lengkap dengan data-data lain beserta EmployeeID-nya. Harapannya, dengan file ini, manager dapat melihat dan mendalami alasan personal satu per satu karyawan dengan nilai attrition probability tinggi.

Note: Dokumentasi seluruh file dapat diakses di sini. Dan tidak lupa, penulis sangat terbuka dengan segala kritik dan saran! Terimakasih sudah berkunjung dan I hope you have a nice day!

Reference

[1] Kite
[2] Label Encoder

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store