Tải bản đầy đủ (.pdf) (22 trang)

BÁO cáo bài tập lớn môn học phân tích nghiệp vụ thông minh đề tài dự đoán khả năng nghỉ việc của nhân viên trong công ty

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.23 MB, 22 trang )

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ự đố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 Hồ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

1



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í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

2


1. 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ự đốn lớn. Tuy nhiên, vấn đề dự đố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à 𝑦 ≈ 𝑓(𝑥) = 𝑦 ^

3


Vớ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ó:

là vector hàng của dữ liệu đầu vào
là vector cột trọng số cần tìm
là nhãn dữ liệu đầu ra

𝑥 = [𝑥0 , 𝑥1 , 𝑥2 , … , 𝑥𝑛 ]
𝑤 = [𝑤0 , 𝑤1 , 𝑤2 , … , 𝑤𝑛 ]𝑇
𝑌 = [𝑦0 , 𝑦1 , 𝑦2 , … , 𝑦𝑛 ]


Khi đó hàm 𝑓 có dạng:
𝑓(𝑥) = 𝑥𝑤 = 𝑥0 𝑤0 + 𝑥1 𝑤1 + ⋯ + 𝑥𝑛 𝑤𝑛
Để đánh giá độ hiệu quả mơ hình cần có một hàm mục tiêu hay hàm mất mát. Đây là một
hàm phụ thuộc vào tham số 𝑊 và tập dữ liệu học nhằm đo kết quả dự đốn trên tập học. Hàm
này có giá trị nhỏ khi kết quả dự đoán là tốt và ngược lại. Hàm mất mát thường được sử dụng
trong hồi quy đó là hàm mất mát chuẩn L1 - Least absolute deviations [5] và L2 - Least square
errors [6]. Công thức cụ thể như sau:
L1 - Least absolute deviations:
𝑛

𝐿1𝐿𝑜𝑠𝑠 = ∑ |𝑦𝑖 − 𝑓(𝑥𝑖 )|
𝑖=1

L2 - Least absolute deviations:
𝑛

𝐿2𝐿𝑜𝑠𝑠

1
1
= ∑[𝑦𝑖 − 𝑓(𝑥𝑖 )]2 = (𝑦 − 𝑋𝑤)𝑇 (𝑦 − 𝑋𝑤)
2
2
𝑖=1

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ả
sử ta sử dụng hàm 𝐿2𝐿𝑜𝑠𝑠 thì:
𝑋 𝑇 (𝑋𝑤 − 𝑦) = 0

Từ đó suy ra: 𝑤 = (𝑋 𝑇 𝑋)−1 𝑦 = 𝐴−1 𝑦
Trong trường hợp khơng thể giải được phương trình đạo hàm bằng 0 do ma trận A khơng
khả nghịch, có thể sử dụng một số phương pháp khác như Gradient Descent [7] hoặc sử dụng
khái niệm giả nghịch đảo [8].

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


Giả 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 tốn SVM trên không gian 2 chiều.
(Nguồn: />
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à:
𝑦𝑛 (𝑤 𝑇 𝑥 + 𝑏)
||𝑤||2

Với mặt phần chia như trên, margin được tính là khoảng cách gần nhất từ một điểm tới
mặt đó (bất kể điểm nào trong hai class):
𝑚𝑎𝑟𝑔𝑖𝑛 = 𝑚𝑖𝑛𝑛

𝑦𝑛 (𝑤 𝑇 𝑥 + 𝑏)
||𝑤||2


 Bài tốn tối ưu trong SVM chính là bài tốn tìm 𝒘 và 𝒗 sao cho margin này đạt giá trị
lớn nhất:
(𝑤, 𝑏) = 𝑎𝑟𝑔𝑚𝑎𝑥𝑤,𝑏 {

𝑦𝑛 (𝑤 𝑇 𝑥 + 𝑏)
1
𝑚𝑖𝑛𝑛 𝑦𝑛 (𝑤 𝑇 𝑥 + 𝑏)}
} = 𝑎𝑟𝑔𝑚𝑎𝑥𝑤,𝑏 {
||𝑤||2
||𝑤||2

5


Thơng thường việc giải trực tiếp bài tốn này là tương đối khó khi số chiều 𝑑 là lớn. Bài
tốn tối ưu này là một bài tố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 tố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 q 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 q 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 tốn tối ưu sau:

Trong đó:
-

L: loss function
y: label
𝑐𝑛 : confidence score của weak learner thứ n (hay còn gọi là trọng số)
𝑤𝑛 : weak learner thứ n


6


Thay vì cố gắng quét tìm tất cả các giá trị 𝑐𝑛 , 𝑤𝑛 để tìm nghiệm tối ưu tồ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 tồ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 tố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 tố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.

7



Hình3.3: Mơ tả thuật tố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:

8


Hình3.4: Mơ hình cây quyết định
(Nguồn: />
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 tố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 tố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. Ngồi ra cịn có một số thuật tố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

9


Chú ý 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 q nhiều,… Ngồi ra cịn có phương pháp cắt tỉa cây: xây
dựng cây quyết định hồ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 tố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: />
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.

10


5. 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: 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ự đố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:
Attrition:
BusinessTravel:
DailyRate:
Department:
DistanceFromHome:
Education:

EducationField:
EmployeeCount:
EmployeeNumber:
EnvironmentSatisfaction:
Gender:
HourlyRate:
JobInvolvement:
JobLevel:
JobRole:
JobSatisfaction:
MaritalStatus:
MonthlyIncome:
MonthlyRate:
NumCompaniesWorked:
Over18:
OverTime:
PercentSalaryHike:
PerformanceRating:
RelationshipSatisfaction:
StandardHours:

1470 giá trị khác rỗng, kiểu dữ liệu int64
1470 giá trị khác rỗng, kiểu dữ liệu object
1470 giá trị khác rỗng, kiểu dữ liệu object
1470 giá trị khác rỗng, kiểu dữ liệu int64
1470 giá trị khác rỗng, kiểu dữ liệu object
1470 giá trị khác rỗng, kiểu dữ liệu int64
1470 giá trị khác rỗng, kiểu dữ liệu int64
1470 giá trị khác rỗng, kiểu dữ liệu object
1470 giá trị khác rỗng, kiểu dữ liệu int64

1470 giá trị khác rỗng, kiểu dữ liệu int64
1470 giá trị khác rỗng, kiểu dữ liệu int64
1470 giá trị khác rỗng, kiểu dữ liệu object
1470 giá trị khác rỗng, kiểu dữ liệu int64
1470 giá trị khác rỗng, kiểu dữ liệu int64
1470 giá trị khác rỗng, kiểu dữ liệu int64
1470 giá trị khác rỗng, kiểu dữ liệu object
1470 giá trị khác rỗng, kiểu dữ liệu int64
1470 giá trị khác rỗng, kiểu dữ liệu object
1470 giá trị khác rỗng, kiểu dữ liệu int64
1470 giá trị khác rỗng int64
1470 giá trị khác rỗng int64
1470 giá trị khác rỗng, kiểu dữ liệu object
1470 giá trị khác rỗng, kiểu dữ liệu object
1470 giá trị khác rỗng, kiểu dữ liệu int64
1470 giá trị khác rỗng, kiểu dữ liệu int64
1470 giá trị khác rỗng, kiểu dữ liệu int64
1470 giá trị khác rỗng, kiểu dữ liệu int64

11


-

StockOptionLevel:
TotalWorkingYears:
TrainingTimesLastYear:
WorkLifeBalance:
YearsAtCompany:
YearsInCurrentRole:

YearsSinceLastPromotion:
YearsWithCurrManager:

1470 giá trị khác rỗng, kiểu dữ liệu int64
1470 giá trị khác rỗng, kiểu dữ liệu int64
1470 giá trị khác rỗng, kiểu dữ liệu int64
1470 giá trị khác rỗng, kiểu dữ liệu int64
1470 giá trị khác rỗng, kiểu dữ liệu int64
1470 giá trị khác rỗng, kiểu dữ liệu int64
1470 giá trị khác rỗng, kiểu dữ liệu int64
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:
-

Over18:
StandardHours:
EmployeeCount:
Gender:
Attrition:
PerformanceRating:
OverTime:
MaritalStatus:
Department:
BusinessTravel:
StockOptionLevel:
EnvironmentSatisfaction:

JobInvolvement:
JobSatisfaction:
RelationshipSatisfaction:
WorkLifeBalance:
Education:
JobLevel:
EducationField:
TrainingTimesLastYear:
JobRole:
NumCompaniesWorked:
PercentSalaryHike:
YearsSinceLastPromotion:
YearsWithCurrManager:
YearsInCurrentRole:
DistanceFromHome:
YearsAtCompany:
TotalWorkingYears:
Age:
HourlyRate:

1
1
1
2
2
2
2
3
3
3

4
4
4
4
4
4
5
5
6
7
9
10
15
16
18
19
29
37
40
43
71
12


-

DailyRate:
MonthlyIncome:
MonthlyRate:
EmployeeNumber:


886
1349
1427
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 q 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.

13




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%.

14




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%).

15





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:

16


Đ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:

17



Có 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:

18


Biểu đồ cho thấy ban chun mơn R&D có tỷ lệ nghỉ việc thấp nhất, chỉ khoảng 14% trong
khi đó các ban chun mơn Sales có tỷ lệ nghỉ việc lên đến 20%, HR có tỷ lệ nghỉ việc 25%.

5.3. Tiền xử lý dữ liệu


Như đã đề cập trong phần trước ta có thể loại bỏ đi các trường sau do có q ít hoặc q
nhiều giá trị khác nhau: 'Over18', 'EmployeeCount', 'EmployeeNumber', 'StandardHours'.



Thêm cột EducationYears từ mức 5 giá trị thành số năm trong chương trình giáo dục với

cài đặt sau:
-

1: 10, Trung học cơ sở
2: 12, Trung học phổ thông
3: 16, Đại học
4: 18, Thạc sĩ
5: 22, Tiến sĩ

 Điều này có ý nghĩa bởi trong tập dữ liệu có những trường như số năm trong cơng ty,
hoặc tổng số năm làm việc nên chuẩn hóa trường education theo hướng này giúp đồng
nhất với một số đặc trưng khác trong tập dữ liệu.


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ân
viê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à:
- BusinessTravel
- Department
- EducationField
- Gender
- JobRole
- MaritalStatus
- OverTime




Visualize ma trận tương quan giữa các cột sau q 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).

19




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

20




Việc mất cân bằng dữ liệu là vấn đề đau đầu với hầu hết các bài toán học máy, với tập dữ
liệu này cũng vậy. Chính vì thế nhóm em sử dụng một kĩ thuật làm tăng dữ liệu có tên gọi
SMOTE[10] để làm tăng dữ liệu trên tập huấn luyện một cách hiệu quả. Hình dưới đây vẽ
biểu đồ dữ liệu trên tập huấn luyện trước và sau khi áp dụng phương pháp SMOTE.


5.4. Kết quả


Trong q trình thực nghiệm để đạt được kết quả tốt nhất, nhóm em sử dụng thư viện
sklearn cùng với tính năng grid search để tìm ra các tham số tối ưu cho mỗi mơ hình.



Kết quả được mơ tả ở bảng dưới đây:
Phương pháp
Logistic Regression
SVM
Gradient Boosting
Decision Tree
Random forest

Accuracy(%)
67.0
37.0
89.0
77.0
85.0

F1-marco
58.0
37.0
76.0
62.0
70.0


Qua kết quả thực nghiệm có thể thấy phương pháp Gradient Boosting có kết quả cao
nhất và vượt xa những phương pháp còn lại. Phương pháp SVM tệ nhất khi chỉ đạt
37%, điều này có thể do bộ dữ liệu chứa quá nhiều điểm dữ liệu cũng như nhiều đặc
trưng khiến cho mơ hình SVM khơng thể hoạt động tốt.

6. Tổng kết
Trong nghiên cứu này, chúng em đã thử nghiệm bốn cách tiếp cận chính là mơ hình hồi
quy logistic, mơ hình gradient bootsing, mơ hình SVM và mơ hình rừng ngẫu nhiên cho bài
tốn “ dự đoán khả năng nghỉ việc của nhân viên”. Kết quả cho thấy mơ hình gradient boosting
với việc lọc bỏ các thuộc tính dư thừa cho kết quả tốt nhất.
Trong tương lai, nhóm sẽ tiếp tục cải thiện mơ hình bằng cách thử nghiệm mơ hình hồi quy
dựa trên XGBoost [11] để đạt kết quả tốt hơn.

21


7. Tài liệu tham khảo
[1] Weisberg, Sanford. Applied linear regression. Vol. 528. John Wiley & Sons, 2005.
[2] Friedman, J. H. (2001). Greedy function approximation: a gradient boosting machine. Annals of
statistics, 1189-1232.
[3] Cortes, Corinna, and Vladimir Vapnik. "Support vector machine." Machine learning 20.3 (1995): 273297.
[4] Bonissone, Piero, et al. "A fuzzy random forest." International Journal of Approximate Reasoning 51.7
(2010): 729-747.
[5] Bloomfield, Peter, and William L. Steiger. Least absolute deviations: theory, applications, and
algorithms. Boston: Birkhäuser, 1983.
[6] Modarres, Mohammad, Ebrahim Nasrabadi, and Mohammad Mehdi Nasrabadi. "Fuzzy linear
regression models with least square errors." Applied Mathematics and Computation 163.2 (2005): 977-989.
[7] Sharma, Sagar, and Simone Sharma. "Activation functions in neural networks." Towards Data Science
6.12 (2017): 310-316.
[8] Myles, Anthony J., et al. "An introduction to decision tree modeling." Journal of Chemometrics: A Journal

of the Chemometrics Society 18.6 (2004): 275-285.
[9] Freund, Yoav, and Llew Mason. "The alternating decision tree learning algorithm." icml. Vol. 99. 1999.
[10] Chawla, N. V., Bowyer, K. W., Hall, L. O., & Kegelmeyer, W. P. (2002). SMOTE: synthetic minority
over-sampling technique. Journal of artificial intelligence research, 16, 321-357.
[11] Chen, Tianqi, and Carlos Guestrin. "Xgboost: A scalable tree boosting system." Proceedings of the
22nd acm sigkdd international conference on knowledge discovery and data mining. 2016.

22



×