Ư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
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 Nguyễn Đức Thắng Phạm Văn Nam Chu Thành Đô
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ộttrong 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ácnhau 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ồiquy tuyến tính [1], mô hình Gradient Boosting [2], mô hình dựa trên Support VectorMachine [3] và mô hình rừng ngẫu nhiên [4]
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ế choviệ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ềnlươ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ờigian 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úttrong 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ânviê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ốncá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.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:
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
4
TIEU LUAN MOI download : skknchat@gmail.com
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àitoá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 dualitythoả 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áchkhá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 7khi 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ó
- 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
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ạnnam đ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 đichơ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âyquyế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ớinhữ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.
- 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ợpnà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 chiathem 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 quantrọ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ẫunhiê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ề
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êncuộ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ủacô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ưngliê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ữ
- TotalWorkingYears: 1470 giá trị khác rỗng, kiểu dữ
- TrainingTimesLastYear: 1470 giá trị khác rỗng, kiểu dữ
- WorkLifeBalance: 1470 giá trị khác rỗng, kiểu dữ
- YearsAtCompany: 1470 giá trị khác rỗng, kiểu dữ
- YearsInCurrentRole: 1470 giá trị khác rỗng, kiểu dữ
- YearsSinceLastPromotion: 1470 giá trị khác rỗng, kiểu dữ
- YearsWithCurrManager: 1470 giá trị khác rỗng, kiểu dữ
liệu int64 liệu int64 liệu int64 liệu int64 liệu int64 liệu int64 liệu int64 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
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%).
Trang 16• Biểu đồ thống kê số nhân viên nghỉ việc và không nghỉ việc phân theo sự cân bằng giữa công việc và cuộc sống:
Có thể thấy những người có sự cân bằng giữa cuộc sống và công việc càng cao thì tỷ lệ nghỉ việc sẽ thấp hơn Với chỉ số cân bằng là 1 tỷ lệ nghỉ việc khoảng 33%, với chỉ số cân bằng là 2 thì tỷ lệ nghỉ việc là 17.4%,….
• Biểu đồ thống kê số nhân viên nghỉ việc và không nghỉ việc phân theo sự hài lòng về môi trường làm việc:
Trang 17Điểm tương tự với chỉ số mức độ hài long với môi trường làm việc, khi mức độ hài lòng thấp thì tỷ lệ nghỉ việc sẽ tăng lên.
• Biểu đồ thống kê số nhân viên nghỉ việc và không nghỉ việc phân theo sự hài lòng về công việc:
Chỉ số mức độ hài long về công việc cũng tương tự như hai chỉ số trên.
• Biểu đồ thống kê số nhân viên nghỉ việc và không nghỉ việc theo thứ bậc công việc:
Trang 18Có thể thấy với những nhân viên có thứ bậc công việc thấp, tỷ lệ nghỉ việc cao hơn hẳn Đặc biệt với những nhân viên có thứ bậc công việc rất cao, ở mức 4-5 tỷ lệ nghỉ việc gần mức 0%.
• Biểu đồ thống kê số nhân viên nghỉ việc và không nghỉ việc theo tần suất đi công tác:
Biểu đồ chỉ ra rằng mức độ phải đi công tác tỷ lệ thuận với khả năng nghỉ việc Càng phải đi công tác nhiều thì tỷ lệ nghỉ việc càng cao.
• Biểu đồ thống kê số nhân viên nghỉ việc và không nghỉ việc theo các ban chuyên môn:
Trang 19Biểu đồ cho thấy ban chuyên môn R&D có tỷ lệ nghỉ việc thấp nhất, chỉ khoảng 14% trong khi đó các ban chuyên môn Sales có tỷ lệ nghỉ việc lên đến 20%, HR có tỷ lệ nghỉ việc 25%.
• Thêm cột TotalSatisfaction có ý nghĩa là tổng cộng cho các mức hài long của một nhânviên Cột này là tổng của các cột : 'EnvironmentSatisfaction', 'JobInvolvement', 'JobSatisfaction','RelationshipSatisfaction', 'WorkLifeBalance'
• Mã hóa one-hot cho các cột chứa dữ liệu dưới dạng category Các cột đó là:
• Visualize ma trận tương quan giữa các cột sau quá trình mã hóa:
Từ biểu đồ ta nhận thấy có thể bỏ đi một số cột do có sự tương quan rất cao với 1 hay nhiều cột khác:
- Bỏ cột 'Education' vì tương quan rất cao với cột 'YearsEducation' (1.0)
- Bỏ cột 'YearsInCurrentRole' vì tương quan rất cao với cột 'YearsAtCompany' (0.9)
- Bỏ cột 'Department_1' vì tương quan rất cao với cột 'Department_2' (0.9)
- Bỏ cột 'JobLevel' vì tương quan rất cao với cột 'MonthlyIncome' (0.9).
Trang 20• Sau khi đã mã hóa và bỏ đi các cột không cần thiết, ta tiến hành chia dữ liệu ngẫu nhiên thành 2 tập train và test với tỷ lệ 80-20