1 Trường Đại Học Bách Khoa Hà Nội Viện Công nghệ thông tin và truyền thông =======o0o======= BÁO CÁO BÀI TẬP LỚN MÔN HỌC Phân tích nghiệp vụ thông minh Giáo viên hướng dẫn TS Nguyễn Bình Minh Đề tài Dự đoán khả năng nghỉ việc của nhân viên trong công ty Sinh viên thực hiện Nguyễn Hoàng Thuận 20173393 Nguyễn Đức Thắng 20194170 Phạm Văn Nam 20183598 Chu Thành Đô 20194018 Hà Nội, ngày 24 tháng 06 năm 2022 2 MỤC LỤC 1 Tóm tắt 3 2 Giới thiệu 3 3 Các nghiên cứu liên quan 3 3 1 Mô hình hồi quy tuyến tí.
Trang 1Trường Đại Học Bách Khoa Hà Nội
Viện Công nghệ thông tin và truyền thông
=======o0o=======
BÁO CÁO BÀI TẬP LỚN MÔN HỌC
Phân tích nghiệp vụ thông minh
Giáo viên hướng dẫn: TS Nguyễn Bình Minh
Đề tài: Dự đoán khả năng nghỉ việc của nhân viên trong công ty
Sinh viên thực hiện
Nguyễn Hoàng Thuận 20173393 Nguyễn Đức Thắng 20194170 Phạm Văn Nam 20183598 Chu Thành Đô 20194018
Hà Nội, ngày 24 tháng 06 năm 2022
Trang 2MỤC LỤC
1 Tóm tắt 3
2 Giới thiệu 3
3 Các nghiên cứu liên quan 3
3.1 Mô hình hồi quy tuyến tính 3
3.2 Support Vector Machine – SVM 4
3.3 Mô hình Gradient Boosting 6
3.4 Rừng ngẫu nhiên 8
3.4.1 Cây quyết định 8
3.4.2 Rừng ngẫu nhiên 10
4 Mô hình đề xuất 10
5 Kết quả thực nghiệm 11
5.1 Giới thiệu về bộ dữ liệu 11
5.2 Phân tích bộ dữ liệu 11
5.3 Tiền xử lý dữ liệu 19
5.4 Kết quả 21
6 Tổng kết 21
7 Tài liệu tham khảo 22
Trang 31 Tóm tắt
Trong những năm trở lại đây, các bài toán về dự đoán ngày càng được chú ý đến do khả năng ứng dụng của nó trong thực thế Bài toán dự đoán khả năng nhân viên nghỉ việc là một trong các bài toán tiêu biểu Tuy nhiên đây là một bài toán tương đối phức tạp, kết quả thu được có thể bị ảnh hưởng bởi nhiều yếu tố khác nhau Trong khuôn khổ môn học này, chúng
em sẽ tập trung vào bài toán dự đoán khả năng nhân viên nghỉ việc dựa trên các yếu tố khác nhau trên một tập dữ liệu có sẵn Chúng em sẽ sử dụng bốn mô hình chính đó là mô hình hồi quy tuyến tính [1], mô hình Gradient Boosting [2], mô hình dựa trên Support Vector Machine [3] và mô hình rừng ngẫu nhiên [4]
2 Giới thiệu
Trong những năm trở lại đây, các bài toán về dự đoán (forecasting) ngày càng được chú ý đến do khả năng ứng dụng của nó trong thực thế Các lĩnh vực như tài chính, bán hàng, thời tiết, … đều là những lĩnh vực có nhu cầu dự đoán lớn Tuy nhiên, vấn đề dự đoán này có rất nhiều thách thức như thiếu thông tin về dữ liệu do vấn đề bảo mật, độ chính xác của các phương pháp hiện tại còn chưa đủ tốt so với yêu cầu thực tế, xu hướng thay đổi theo thời gian, …
Nhân viên nghỉ việc là một vấn đề gây nhiều hao tổn cho các công ty Chi phí thực tế cho việc thay thế một nhân viên thường khá cao Một nghiên cứu của CAP (tổ chức nghiên cứu và vận động chính sách công tại Mỹ) chỉ ra rằng các công ty thường phải chi trả khoảng 1/5 số tiền lương của một nhân viên để thay thế họ, và chi phí có thể tăng đáng kể nếu những vị trí có chức vụ cao hoặc những nhân viên được trả lương cao cần tìm người thay thế Điều này do lượng thời gian dành cho các cuộc phỏng vấn, tiền thưởng và hiệu suất, chất lượng công việc
bị giảm sút trong vài tháng khi nhân viên mới làm quen với công việc Nắm bắt được tại sao
và khi nào nhân viên có khả năng nghỉ việc cao có thể giúp nhà quản lý đưa ra các phương án hành động để giữ chân nhân viên lâu hơn cũng như lập kế hoạch tuyển dụng phù hợp
Xuất phát từ những thực tế nói trên, chúng em xin chọn đề tài “Dự đoán khả năng nghỉ việc của nhân viên trong công ty” để thực hiện trong môn học này Chúng em sử dụng bốn cách tiếp cận chính là mô hình hồi quy tuyến tính [1], mô hình Gradient Boosting [2], mô hình SVM [3] và mô hình rừng ngẫu nhiên [4]
3 Các nghiên cứu liên quan
3.1 Mô hình hồi quy tuyến tính
Mục tiêu của mô hình hồi quy tuyến tính (Linear Regression) [1] nói riêng cũng như mọi
mô hình học máy nói chung là tìm một ánh xạ từ không gian dữ liệu đầu vào sang không gian
dữ liệu nhãn đầu ra:
𝑓: 𝑥 → 𝑦 hay là 𝑦 ≈ 𝑓(𝑥) = 𝑦^
Trang 4Với hồi quy tuyến tính [1] thì hàm 𝑓 là một hàm tuyến tính
Giả sử ta có: 𝑥 = [𝑥0, 𝑥1, 𝑥2, … , 𝑥𝑛] là vector hàng của dữ liệu đầu vào
L1 - Least absolute deviations:
𝑖 = 1
=1
2 (𝑦 − 𝑋𝑤)
𝑇(𝑦 − 𝑋𝑤)
Cần phải chọn tham số 𝑊để tối thiểu hàm mục tiêu Có nhiều phương pháp để tìm hàm tối
ưu Một trong những cách đơn giản nhất là giải phương trình đạo hàm (gradient) bằng 0 Giả
3.2 Support Vector Machine – SVM
Support Vector Machine (SVM) [3] là một thuật toán thuộc nhóm Supervised Learning (Học có giám sát) dùng để phân chia dữ liệu (Classification) thành các nhóm riêng biệt
Trang 5Giả sử rằng các cặp dữ liệu của training set là (𝑥1, 𝑦1), (𝑥2, 𝑦2), … , (𝑥𝑁, 𝑦𝑁) với vector
𝑥𝑖 ∈ 𝑅𝑑 thể hiện đầu vào của một điểm dữ liệu và 𝑦𝑖 là nhãn của điểm dữ liệu đó 𝑑 là số chiều của dữ liệu và 𝑁 là số điểm dữ liệu Giả sử rằng nhãn của mỗi điểm dữ liệu được xác định bởi 𝑦𝑖 = 1 (class 1) và 𝑦𝑖 = −1 (class 2) Để phân chia hai class ta cần tìm một siêu phẳng có phương trình là 𝑤𝑇𝑥 + 𝑏 = 0
Hình 1: Phân tích bài toán SVM trên không gian 2 chiều
(Nguồn: https://machinelearningcoban.com/assets/19_svm/svm6.png) Với cặp dữ liệu (𝑥𝑛, 𝑦𝑛) bất kỳ, khoảng cách từ điểm đó tới mặt phân chia là:
Trang 6Thông thường việc giải trực tiếp bài toán này là tương đối khó khi số chiều 𝑑 là lớn Bài toán tối ưu này là một bài toán lồi, do đó nếu nó thỏa mãn tiêu chuẩn Slater thì strong duality thoả mãn Và nếu strong duality thoả mãn thì nghiệm của bài toán chính là nghiệm của hệ điều kiện KKT
3.3 Mô hình Gradient Boosting
Mô hình Gradient Boosting là một mô hình tạo ra một loạt các mô hình phân loại yếu, các
mô hình này có thể học hỏi được từ nhau để tránh lặp lại sai lầm của nhau Hay nói cách khác, các mô hình được sinh ra sau sẽ được học để hạn chế các lỗi lầm được sinh ra trước Vậy làm thể nào để hạn chế được sai lầm từ các model trước ? Boosting tiến hành đánh trọng số cho các mô hình mới được thêm vào dựa trên các cách tối ưu khác nhau Tùy theo cách đánh trọng
số (cách để các model được fit một cách tuần tự) và cách tổng hợp lại các model, từ đó hình thành nên 2 loại Boosting:
- Adaptive Boosting (AdaBoost)
- Gradient Boosting
Các mô hình Boosting có một số đặc điểm như sau:
- Boosting là một quá trình tuần tự, không thể xử lí song song, do đó, thời gian train mô hình có thể tương đối lâu
- Sau mỗi vòng lặp, Boosting có khả năng làm giảm error theo cấp số nhân
- Boosting sẽ hoạt động tốt nếu base learner của nó không quá phức tạp cũng như error không thay đổi quá nhanh
- Boosting giúp làm giảm giá trị bias cho các model base learner
Mô hình Boosting được phát biểu bằng bài toán tối ưu sau:
Trang 7Thay vì cố gắng quét tìm tất cả các giá trị 𝑐𝑛,𝑤𝑛để tìm nghiệm tối ưu toàn cục - một công việc tốn nhiều thời gian và tài nguyên, chúng ta sẽ cố gắng tìm các giá trị nghiệm cục bộ sau khi thêm mỗi một mô hình mới vào chuỗi mô hình với mong muốn dần đi đến nghiệm toàn cục
Ta có:
Công thức cập nhật tham số theo hướng giảm của đạo hàm:
Đối với phương pháp Gradient Boosting, ta áp dụng tương tự:
Ta có mã giả của thuật toán như sau:
- Khởi tạo giá trị pseudo-residuals là bằng nhau cho từng điểm dữ liệu
- Tại vòng lặp thứ i:
o Train model mới được thêm vào để fit vào giá trị của pseudo-residuals đã có
o Tính toán giá trị confidence score của model vừa train
o Cập nhật model chính
o Cuối cùng, tính toán giá trị pseudo-residuals để làm label cho model tiếp theo
- Sau đó lặp lại với vòng lặp i + 1
Trang 8Hình3.3: Mô tả thuật toán Gradient Boosting
3.4 Rừng ngẫu nhiên
3.4.1 Cây quyết định
Cây quyết định (Decision Tree) [8] là một cây phân cấp có cấu trúc được dùng để phân lớp các đối tượng dựa vào dãy các luật Các thuộc tính của đối tượng có thể thuộc các kiểu dữ liệu khác nhau như Nhị phân (Binary), Định danh (Nominal), Thứ tự (Ordinal), Số lượng (Quantitative) trong khi đó thuộc tính phân lớp phải có kiểu dữ liệu là Binary hoặc Ordinal
Một ví dụ cơ bản về cây quyết định: giả sử dựa theo thời tiết mà các bạn nam sẽ quyết định
đi đá bóng hay khôn Những đặc điểm ban đầu là: thời tiết, độ ẩm, gió Dựa vào những thông tin trên có thể xây dựng được mô hình như sau:
Trang 9Hình3.4: Mô hình cây quyết định (Nguồn: https://i1.wp.com/trituenhantao.io/wp-content/uploads/2020/04/dt_res-1.png?w=810&ssl=1)
Dựa theo mô hình trên, ta thấy: nếu trời nắng, độ ẩm bình thường thì khả năng các bạn nam
đi chơi bóng sẽ cao Còn nếu trời nắng, độ ẩm cao thì khả năng các bạn nam sẽ không đi chơi bóng
Thuật toán đơn giản nhất để xây dựng cây quyết định đó là thuật toán ID3 và C4.5 ID3 [9]
sử dụng phương pháp tham lam tìm kiếm từ trên xuống thông qua không gian của các nhánh
có thể không có backtracking ID3 [9] sử dụng Entropy và Information Gain để xây dựng một cây quyết định Thuật toán C4.5 [9] là thuật toán cải tiến của ID3[9] Trong thuật toán C4.5 [9], thay vì sử dụng Information Gain, Gain Ratio được sử dụng để chuẩn hoá Information Gain với số lượng bản ghi, từ đó tránh việc ưu tiên những thuộc tính có số lượng lớn các giá trị mà ít xét tới những thuộc tính có giá trị hơn Ngoài ra còn có một số thuật toán khác như:
- Thuật toán CHAID: Tạo cây quyết định bằng cách sử dụng thống kê chi-square để
xác định các phân tách tối ưu Các biến mục tiêu đầu vào có thể là số (liên tục) hoặc phân loại
- Thuật toán C&R: sử dụng phân vùng đệ quy để chia cây Tham biến mục tiêu có thể
dạng số hoặc phân loại
- MARS
- Conditional Inference Trees
Trang 10Chú ý rằng nếu cứ phát triển cây quyết định để phân chia được tất cả các điểm dữ liệu, cây
đó có thể sẽ quá lớn và phức tạp, mặc dù độ chính xác trên tập kiểm tra lại không cao do dữ liệu huấn luyện tiềm ẩn nhiễu Do đó cần có một tiêu chuẩn dừng để tránh trường hợp này Tiêu chuẩn đó có thể là độ sâu tối đa của cây, tổng số nút là tối đa, hay việc phân chia them node không làm giảm entropy quá nhiều,… Ngoài ra còn có phương pháp cắt tỉa cây: xây dựng cây quyết định hoàn chỉnh sau đó tiến hành cắt tỉa một số nút, nhánh không quan trọng nhằm giảm kích thước cũng như độ phức tạp của cây
3.4.2 Rừng ngẫu nhiên
Rừng ngẫu nhiên [4] là một thuật toán học có giám sát Như tên gọi của nó, rừng ngẫu nhiên sử dụng các cây quyết định để làm nền tảng Ưu điểm của rừng ngẫu nhiên là có thể sử dụng cho cả bài toán phân loại và hồi quy, tránh overfitting, làm việc được với dữ liệu bị thiếu giá trị,…
Rừng ngẫu nhiên hoạt động bằng cách đánh giá nhiều cây quyết định ngẫu nhiên, và lấy ra kết quả được đánh giá tốt nhất (được vote nhiều nhất) trong số kết quả trả về
Hình 4 Rừng ngẫu nhiên
(Nguồn: https://upload.wikimedia.org/wikipedia/commons/7/76/Random_forest_diagram_complete.png )
4 Mô hình đề xuất
Bốn mô hình được thử nghiệm ở đây là mô hình hồi quy logistic, mô hình gradient boosting,
mô hình SVM và mô hình cây quyết định Các cách lựa chọn và điều chỉnh tham số sẽ được nhóm em trình bày chi tiết ở phần sau
Trang 115 Kết quả thực nghiệm
5.1 Giới thiệu về bộ dữ liệu
Bộ dữ liệu nhóm em sử dụng là một file csv gồm 1470 điểm dữ liệu, được công bố trên cuộc thi Kaggle: https://www.kaggle.com/datasets/pavansubhasht/ibm-hr-analytics-attrition-dataset Bộ dữ liệu chứa các thông tin về những nhân viên làm việc cho các công ty bao gồm: bằng cấp, mức độ hài lòng với môi trường làm việc, mức độ hài long công việc, mức lương đãi ngộ, … Mục tiêu của cuộc thi yêu cầu cần phải dự đoán chính xác một nhân viên của công ty
có quyết định nghỉ việc hay không
5.2 Phân tích bộ dữ liệu
Bộ dữ liệu gồm có 1470 dòng tương đương với 1470 điểm dữ liệu Có 35 cột trong đó có
1 cột là nhãn biểu diễn nhân viên đó có nghỉ việc hay không, 34 cột còn lại là các đặc trưng liên quan đến nhân viên đó Chi tiết các cột còn lại như sau:
- Age: 1470 giá trị khác rỗng, kiểu dữ liệu int64
- Attrition: 1470 giá trị khác rỗng, kiểu dữ liệu object
- BusinessTravel: 1470 giá trị khác rỗng, kiểu dữ liệu object
- DailyRate: 1470 giá trị khác rỗng, kiểu dữ liệu int64
- Department: 1470 giá trị khác rỗng, kiểu dữ liệu object
- DistanceFromHome: 1470 giá trị khác rỗng, kiểu dữ liệu int64
- Education: 1470 giá trị khác rỗng, kiểu dữ liệu int64
- EducationField: 1470 giá trị khác rỗng, kiểu dữ liệu object
- EmployeeCount: 1470 giá trị khác rỗng, kiểu dữ liệu int64
- EmployeeNumber: 1470 giá trị khác rỗng, kiểu dữ liệu int64
- EnvironmentSatisfaction: 1470 giá trị khác rỗng, kiểu dữ liệu int64
- Gender: 1470 giá trị khác rỗng, kiểu dữ liệu object
- HourlyRate: 1470 giá trị khác rỗng, kiểu dữ liệu int64
- JobInvolvement: 1470 giá trị khác rỗng, kiểu dữ liệu int64
- JobLevel: 1470 giá trị khác rỗng, kiểu dữ liệu int64
- JobRole: 1470 giá trị khác rỗng, kiểu dữ liệu object
- JobSatisfaction: 1470 giá trị khác rỗng, kiểu dữ liệu int64
- MaritalStatus: 1470 giá trị khác rỗng, kiểu dữ liệu object
- MonthlyIncome: 1470 giá trị khác rỗng, kiểu dữ liệu int64
- MonthlyRate: 1470 giá trị khác rỗng int64
- NumCompaniesWorked: 1470 giá trị khác rỗng int64
- Over18: 1470 giá trị khác rỗng, kiểu dữ liệu object
- OverTime: 1470 giá trị khác rỗng, kiểu dữ liệu object
- PercentSalaryHike: 1470 giá trị khác rỗng, kiểu dữ liệu int64
- PerformanceRating: 1470 giá trị khác rỗng, kiểu dữ liệu int64
- RelationshipSatisfaction: 1470 giá trị khác rỗng, kiểu dữ liệu int64
- StandardHours: 1470 giá trị khác rỗng, kiểu dữ liệu int64
Trang 12- StockOptionLevel: 1470 giá trị khác rỗng, kiểu dữ liệu int64
- TotalWorkingYears: 1470 giá trị khác rỗng, kiểu dữ liệu int64
- TrainingTimesLastYear: 1470 giá trị khác rỗng, kiểu dữ liệu int64
- WorkLifeBalance: 1470 giá trị khác rỗng, kiểu dữ liệu int64
- YearsAtCompany: 1470 giá trị khác rỗng, kiểu dữ liệu int64
- YearsInCurrentRole: 1470 giá trị khác rỗng, kiểu dữ liệu int64
- YearsSinceLastPromotion: 1470 giá trị khác rỗng, kiểu dữ liệu int64
- YearsWithCurrManager: 1470 giá trị khác rỗng, kiểu dữ liệu int64
Bên cạnh đó ta có một số thống kê về dữ liệu:
• Thống kê về số giá trị duy nhất của từng cột:
Trang 13- DailyRate: 886
- MonthlyIncome: 1349
- MonthlyRate: 1427
- EmployeeNumber: 1470
Ta nhận thấy các trường Over18, StandardHours, EmployeeCount chỉ có 1 giá trị duy
nhất cho tất cả các bản ghi nên những trường này không có ý nghĩa trong việc phân loại,
ta có thể bỏ qua trong quá trình thực nghiệm Tương tự các trường EmployeeNumber, MonthlyRate có quá nhiều giá trị khác nhau và số lượng giá trị khác nhau gần tương
đương với tổng số bản ghi nên ý nghĩa khi dùng để phân loại cũng rất thấp
• Biểu đồ phân phối số tuổi của nhân viên:
Từ biểu đồ có thể thấy phân phối tuổi của nhân viên trong tập dữ liệu là phân phối chuẩn,
có trung bình là khoảng 35 tuổi, giá trị nhỏ nhất được quan sát là 18 tuổi, giá trị cao nhất được quan sát là 60 tuổi
Trang 14• Một số biểu đồ phân phối khác để hiểu hơn về dữ liệu:
Từ các biểu đồ trên có thể thấy:
- Hầu hết các nhân viên làm việc ở một công ty nhỏ hơn 20 năm, tổng số năm làm việc
của 1 nhân viên phần lớn cũng nhỏ hơn 20 năm
- Hầu hết các nhân viên đều làm việc gần nhà, biểu đồ khoảng cách đến công ty có sự
phân hóa rõ rệt giữa khoảng cách gần và xa
- Hầu hết nhân viên đều mới được lên chức trong vòng 1 vài năm gần đây Và phần trăm
lương tăng cũng nằm phần lớn trong khoảng 10-15%
Trang 15• Biểu đồ thống kê số nhân viên nghỉ việc và không nghỉ việc phân theo giới tính:
Dựa vào biểu đồ có thể thấy tỷ lệ nghỉ việc ở các nhân sự là nam cao hơn là nữ một chút (16.7% so với 15%)
• Biểu đồ thống kê số nhân viên nghỉ việc và không nghỉ việc theo tình trạng hôn nhân:
Có thể thấy tỷ lệ nghỉ việc ở nhóm nhân viên còn độc thân là cao nhất (25%) so với đang trong hôn nhân (13%) và đã li hôn (9.1%)