Để giải quyết vấn đề này, trong báo cáo này, chúng em tập trung vào sử dụng thuật toán Cây quyết định Decision Tree trong bài toán tuyển dụng nhân sự, nhằm hỗ trợ quá trình ra quyết định
Trang 1TRƯỜNG ĐẠI HỌC ĐIỆN LỰC
KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO CHUYÊN ĐỀ HỌC PHẦN
KHAI PHÁ DỮ LIỆU
ĐỀ TI:
SỬ DỤNG THUẬT TOÁN CÂY QUYẾT ĐỊNH TRONG
BI TOÁN TUYỂN DỤNG NHÂN SỰ
Sinh viên thực hiện : NGUYỄN VĂN HẢI
TẠ THỊ CHINH
ĐỖ CHÍ ĐỨC Giảng viên hướng dẫn : NGUYỄN THỊ THANH TÂN Ngành : CÔNG NGHỆ THÔNG TIN Chuyên ngành : CÔNG NGHỆ PHẦN MỀM Lớp : D15CNPM2
Khóa : 2020 - 2025
Ngày … Tháng… Năm…
Trang 21 Nguyễn Văn Hải Thực hiện mô hình tuyển dụng
nhân sự, làm báo cáo, tìm kiếm nội dung cơ sở dữ liệu
2 Tạ Thị Chinh Làm cơ sở dữ liệu, làm báo cáo,
Trang 3MỤC LỤC
LỜI MỞ ĐẦU
Trang
Trang 4LỜI MỞ ĐẦU
Trong thế giới đang bước vào cuộc cách mạng 4.0, Trí tuệ nhân tạo
(Artificial Intelligence), Dữ liệu lớn (Big Data), Học máy (Machine Learning), Họcsâu (Deep Learning) đã được nghiên cứu, áp dụng và phục vụ cho rất nhiều lĩnh vực Các công ty và doanh nghiệp, đặc biệt là các công ty công nghệ thông tin, đều nhận thức rằng việc tuyển dụng nhân sự là một hoạt động chiến lược và diễn ra thường xuyên, liên tục Mục tiêu của việc tuyển dụng là chọn lọc những ứng viên phù hợp với yêu cầu công việc
Tuy nhiên, với hàng trăm hồ sơ nộp vào cho mỗi vị trí tuyển dụng, việc sàng lọc để chọn ra những ứng viên có tiềm năng không phải là một công việc dễ dàng
Để giải quyết vấn đề này, trong báo cáo này, chúng em tập trung vào sử dụng thuật toán Cây quyết định (Decision Tree) trong bài toán tuyển dụng nhân sự, nhằm hỗ trợ quá trình ra quyết định tuyển dụng dựa trên cơ sở dữ liệu lịch sử tuyển dụng.Báo cáo này sẽ trình bày chi tiết về cây quyết định và ứng dụng của nó trong bài toán tuyển dụng nhân sự Chúng em cũng sẽ giới thiệu module
ID3_hire_employees được lập trình bằng ngôn ngữ Python, sử dụng thuật toán ID3
để minh họa quá trình xây dựng cây quyết định với một tập dữ liệu cụ thể
Qua báo cáo này, chúng em hy vọng rằng mọi người sẽ hiểu rõ hơn về thuật toán cây quyết định và cách áp dụng nó trong lĩnh vực tuyển dụng nhân sự Bằng cách sử dụng công nghệ thông tin và phân tích dữ liệu, các công ty có thể tối ưu hóa quy trình tuyển dụng và tìm ra những ứng viên có tiềm năng cao, đồng thời tiếtkiệm thời gian và công sức
Chúng em hy vọng rằng báo cáo này sẽ mang lại những thông tin hữu ích và cung cấp
Chúng em rất cảm ơn cô Nguyễn Thị Thanh Tân đã tận tình chỉ bảo để bọn
em có thể hoàn thiện xong bài báo cáo này, chắc chắn sẽ có điều sai sót mong thầy
cô góp ý để bọn em có thể cải thiện thêm
Trang 5CHƯƠNG 1: TỔNG QUAN VỀ CÂY QUYẾT ĐỊNH
1.1 Giới thiệu về cây quyết định
Trong lý thuyết quyết định (chẳng hạn quản lí rủi ro), một cây quyết định (Decision Tree) là một đồ thị của các quyết định và các hậu quả có thể của nó (bao gồm rủi ro và hao phí tài nguyên) Cây quyết định được sử dụng để xây dựng một
kế hoạch nhằm đạt được mục tiêu mong muốn Các cây quyết định được dùng để
hỗ trợ quá trình ra quyết định Cây quyết định là một dạng đặc biệt của cấu trúc cây
Trong lĩnh vực máy học (Learning Machine), cây quyết định là một kiểu mô hình dự báo (Predictive Model), nghĩa là một ánh xạ từ các quan sát về một sự vật/hiện tượng tới các kết luận về giá trị mục tiêu của sự vật/hiện tượng Mỗi một nút trong (Internal Node) tương ứng với một biến; đường nối giữa nó với nút con của nó thể hiện một giá trị cụ thể cho biến đó Mỗi nút lá đại diện cho giá trị dự đoán của biến mục tiêu, cho trước các giá trị của các biến được biểu diễn bởi đường
đi từ nút gốc tới nút lá đó Kỹ thuật máy học dùng trong cây quyết định được gọi là học bằng cây quyết định, hay chỉ gọi với cái tên ngắn gọn là cây quyết định.Học bằng cây quyết định cũng là một phương pháp thông dụng trong khai phá
dữ liệu Khi đó, cây quyết định mô tả một cấu trúc cây, trong đó, các lá đại diện chocác phân loại còn cành đại diện cho các kết hợp của các thuộc tính dẫn tới phân loại
đó Một cây quyết định có thể được học bằng cách chia tập hợp nguồn thành các tập con dựa theo một kiểm tra giá trị thuộc tính Quá trình này được lặp lại một cách đệ qui cho mỗi tập con dẫn xuất Quá trình đệ qui hoàn thành khi không thể tiếp tục thực hiện việc chia tách được nữa, hay khi một phân loại đơn có thể áp dụng cho từng phần tử của tập con dẫn xuất Một bộ phân loại rừng ngẫu nhiên (Random Forest) sử dụng một số cây quyết định để có thể cải thiện tỉ lệ phân loại
Trang 6Cây quyết định cũng là một phương tiện có tính mô tả dành cho việc tính toán các xác suất có điều kiện.
Cây quyết định có thể được mô tả như là sự kết hợp của các kỹ thuật toán học
và tính toán nhằm hỗ trợ việc mô tả, phân loại và tổng quát hóa một tập dữ liệu chotrước
Dữ liệu được cho dưới dạng các bản ghi có dạng:
(x, y) = (x1, x2, x3…, xk, y)
Biến phụ thuộc (Dependant Variable) y là biến mà chúng ta cần tìm hiểu, phân loại hay tổng quát hóa x1, x2, x3 … là các biến sẽ giúp ta thực hiện công việcđó
1.2.Khái niệm cây quyết định
Cây quyết định (Decision Tree) 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
Tóm lại, cho dữ liệu về các đối tượng gồm các thuộc tính cùng với lớp (classes) của nó, cây quyết định sẽ sinh ra các luật để dự đoán lớp của các dữ liệu chưa biết
Ta hãy xét một ví dụ 1 kinh điển khác 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ông?
Những đặc điểm ban đầu là:
Trang 7● Thời tiết
● Độ ẩm
● Gió
Dựa vào những thông tin trên, bạn có thể xây dựng được mô hình như sau:
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
Trang 8Chương 2 : THUẬT TOÁN ID3
2.1 Ý tưởng
Trong ID3, chúng ta cần xác định thứ tự của thuộc tính cần được xem xét tại mỗi bước Với các bài toán có nhiều thuộc tính và mỗi thuộc tính có nhiều giá trị khác nhau, việc tìm được nghiệm tối ưu thường là không khả thi Thay vào đó, một phương pháp đơn giản thường được sử dụng là tại mỗi bước, một thuộc tính tốt nhất sẽ được chọn ra dựa trên một tiêu chuẩn nào đó (chúng ta sẽ bàn sớm) Với mỗi thuộc tính được chọn, ta chia dữ liệu vào các child node tương ứng với các giá trị của thuộc tính đó rồi tiếp tục áp dụng phương pháp này cho mỗi child node Việcchọn ra thuộc tính tốt nhất ở mỗi bước như thế này được gọi là cách
chọn greedy (tham lam) Cách chọn này có thể không phải là tối ưu, nhưng trực giác cho chúng ta thấy rằng cách làm này sẽ gần với cách làm tối ưu Ngoài ra, cách làm này khiến cho bài toán cần giải quyết trở nên đơn giản hơn
Sau mỗi câu hỏi, dữ liệu được phân chia vào từng child node tương ứng với các câu trả lời cho câu hỏi đó Câu hỏi ở đây chính là một thuộc tính, câu trả lời chính là giá trị của thuộc tính đó Để đánh giá chất lượng của một cách phân chia, chúng ta cần đi tìm một phép đo
Trước hết, thế nào là một phép phân chia tốt? Bằng trực giác, một phép phân chia là tốt nhất nếu dữ liệu trong mỗi child node hoàn toàn thuộc vào một class–khi
đó child node này có thể được coi là một leaf node, tức ta không cần phân chia thêm nữa Nếu dữ liệu trong các child node vẫn lẫn vào nhau theo tỉ lệ lớn, ta coi rằng phép phân chia đó chưa thực sự tốt Từ nhận xét này, ta cần có một hàm số
đo độ tinh khiết purity ( ), hoặc độ vẩn đục impurity ( ) của một phép phân chia Hàm
số này sẽ cho giá trị thấp nhất nếu dữ liệu trong mỗi child node nằm trong cùng
Trang 9một class (tinh khiết nhất), và cho giá trị cao nếu mỗi child node có chứa dữ liệu thuộc nhiều class khác nhau.
Một hàm số có các đặc điểm này và được dùng nhiều trong lý thuyết thông tin là hàm entropy
trong đó loglog là logarit tự nhiên (Một số tài liệu dùng logarit cơ số 2, nhưng giá trị của H(p)H(p) chỉ khác đi bằng cách nhân với một hằng số.) và quy
ước 0log(0)=00log (0)=0
Xét một ví dụ với n=2n=2 được cho trên Hình 3 Trong trường hợp pp là tinhkhiết nhất, tức một trong hai giá trị pipi bằng 1, giá trị kia bằng 0, entropy của phânphối này là H(p)=0H(p)=0 Khi pp là vẩn đục nhất, tức cả hai giá trị pi=0.5pi=0.5, hàm entropy đạt giá trị cao nhất
Trang 10Tổng quát lên với n>2n>2, hàm entropy đạt giá trị nhỏ nhất nếu có một giá trị pi=1pi=1, đạt giá trị lớn nhất nếu tất cả các pipi bằng nhau (việc này có thể đượcchứng minh bằng phương pháp nhân tử Lagrange).
Những tính chất này của hàm entropy khiến nó được sử dụng trong việc
đo độ vẩn đục của một phép phân chia của ID3 Vì lý do này, ID3 còn được gọi
là entropy-based decision tree
2.3 Thuật toán ID3
Trong ID3, tổng các trọng số của entropy tại các leaf-node sau khi xây dựng decision tree được coi là hàm mất mát của decision tree đó Các trọng số ở đây tỉ lệ với số điểm dữ liệu được phân vào mỗi node Công việc của ID3 là tìm các cách phân chia hợp lý (thứ tự chọn thuộc tính hợp lý) sao cho hàm mất mát cuối cùng đạt giá trị càng nhỏ càng tốt Như đã đề cập, việc này đạt được bằng cách chọn ra thuộc tính sao cho nếu dùng thuộc tính đó để phân chia, entropy tại mỗi bước giảm
đi một lượng lớn nhất Bài toán xây dựng một decision tree bằng ID3 có thể chia thành các bài toán nhỏ, trong mỗi bài toán, ta chỉ cần chọn ra thuộc tính giúp cho việc phân chia đạt kết quả tốt nhất Mỗi bài toán nhỏ này tương ứng với việc phân chia dữ liệu trong một non-leaf node Chúng ta sẽ xây dựng phương pháp tính toán dựa trên mỗi node này
Trang 11Xét một bài toán với CC class khác nhau Giả sử ta đang làm việc với một non-leaf node với các điểm dữ liệu tạo thành một tập SS với số phần tử là |S|
=N|S|=N Giả sử thêm rằng trong số NN điểm dữ liệu này, Nc,c=1,2,…,CNc,c=1,2,
…,C điểm thuộc vào class cc Xác suất để mỗi điểm dữ liệu rơi vào một
class cc được xấp xỉ bằng NcNNcN (maximum likelihood estimation) Như vậy, entropy tại node này được tính bởi:
Tiếp theo, giả sử thuộc tính được chọn là xx Dựa trên xx, các điểm dữ liệu trong SS được phân ra thành KK child node S1,S2,…,SKS1,S2,…,SK với số điểm trong mỗi child node lần lượt là m1,m2,…,mKm1,m2,…,mK Ta định nghĩa
là tổng có trọng số entroy của mỗi child node–được tính tương tự như (2) Việc lấy trọng số này là quan trọng vì các node thường có số lượng điểm khác nhau.Tiếp theo, ta định nghĩa information gain dựa trên thuộc tính xx:
Trong ID3, tại mỗi node, thuộc tính được chọn được xác định dựa trên
tức thuộc tính khiến cho information gain đạt giá trị lớn nhất
Trang 12CHƯƠNG 3 : BI TOÁN TUYỂN DỤNG NHÂN SỰ
3.1 Đặt vấn đề
Giả sử một công ty về công nghệ thông tin (CNTT) đang cần tuyển nhân viên cho vị trí lập trình viên, vị trí này được tuyển dụng liên tục nhằm đảm bảo nguồn nhân lực cho việc hoàn thành các dự án Với mỗi một hồ sơ ứng viên tuyển dụng bao gồm 06 thuộc tính, trong đó có 6 thuộc tính quan trọng ảnh hưởng tới quyết định tuyển dụng ứng viên đó và 1 thuộc tính cho biết kết quả ứng viên đó có được tuyển dụng hay không? Chi tiết các thuộc tính của một ứng viên như trong bảng 1
Bảng 1 Danh sách các thuộc tính của một hồ sơST
1 Level Đại học, Cao đẳng,
trung tâm tin học
Cho biết trình độ đào tạo của ứng viên
2 Job Có, không Cho biết ứng viên đó hiện tại đang
đi làm hay không?
5 Project Có, không
Cho biết ứng viên đã từng tham gia vào một dự án thực tế liên quan không?
6 Result Có, không
Cho biết kết quả ứng viên đó có được tuyển dụng (có) hay không được tuyển dụng (không) vào công ty?
Bảng 2 bên dưới bao gồm 15 bộ dữ liệu cho biết kết quả tuyển dụng của công ty cho các lần trước đây, đây chính là dữ liệu lịch sử tuyển dụng (Training
Trang 13data) của công ty cho vị trí này Câu hỏi đặt ra là với nhu cầu tuyển dụng hiện nay của công ty sẽ có rất nhiều hồ sơ ứng viên được nộp vào để đăng ký, do đó để hỗ trợ cho việc phân lớp một ứng viên dựa vào các thuộc tính đã đề cập ở trên trên cơ
sở dữ liệu lịch sử tuyển dụng trước đây để hỗ trợ việc ra quyết định xem ứng viên
đó sẽ được phân vào lớp được tuyển dụng hay không được tuyển dụng
Bảng 2 Tập dữ liệu lịch sử tuyến dụng nhân sự (Training data)
Giả sử có 3 hồ sơ ứng viên mới nộp vào công ty để đăng ký tuyển dụng (Bảng 3), chúng ta đã biết các thuộc tính Level, Job, N_Company, Top_Train, Project, và chưa biết được giá trị của thuộc tính Result Yêu cầu đặt ra là dựa trên
cơ sở dữ liệu Training data dự đoán giá trị cho thuộc tính Result xem hồ sơ nào có được tuyển dụng hay không được tuyển dụng vào công ty
Bảng 3 Dữ liệu hồ sơ ứng viên mới (Testing data)
Trang 14Trong nội dung của bài báo, Chúng em sẽ nghiên cứu về cây quyết định và ứng dụng giải thuật cây quyết định trong việc phân lớp hồ sơ tuyển dụng, nhằm mục đích hỗ trợ việc ra quyết định; Chúng em sẽ tiến hành tính toán và xây dựng cây quyết định sử dụng thuật toán Iterative Dichotomiser - ID3 với tập dữ liệu mẫu được cho trong bảng 2 từ đó xác định tập luật tương ứng và giá trị Result cho trong bảng 3.
3.2 Cây quyết định
3.2.1 Giới thiệu về cây quyết định
Cây quyết định là một cấu trúc phân cấp của các nút và các nhánh có các tính chất sau:
● Mỗi nút trong (internal node) biểu diễn một thuộc tinh cần kiểm tra giá trị (an attribute to be tested) đối với các các tập thuộc tính
● Nút lá (leaf node) hay còn gọi là nút trả lời biểu thi cho một lớp các trường hợp mà nhãn của nó là tên của lớp, nó biểu diễn một lớp (a classififcation)
● Nút nhánh (branch) từ một nút sẽ tương ứng với một giá trị có thể của thuộc tính gắn với nút đó
● Nhãn (lable) của nút này là tên của thuộc tính và có một nhánh nối nút này đến các cây con ứng với mỗi kết quả có thể có phép thử Nhãn của nhánh này
là các giá trị của thuộc tính đó Nút trên cùng gọi là nút gốc
Quá trình xây dựng một cây quyết định cụ thể bắt đầu bằng một nút rỗng bao gồm toàn bộ các đối tượng huấn luyện và làm như sau:
Trang 15Bước 1 : Nếu tại nút hiện thời, tất cả các đối tượng huấn luyện đều thuộc vào một
lớp nào đó thì nút này chính là nút lá có tên là nhãn lớp chung của các đối tượng
Bước 2: Trường hợp ngược lại, sử dụng một độ đo, chọn thuộc tinh điều kiện phân
chia tốt nhất tập mẫu huấn luyện có tại nút
Bước 3: Tạo một nút con của nút hiện thời bằng số các giá trị khác nhau của thuộc
tính được chọn Gán cho mỗi nhánh từ nút cha đến nút con một giá trị của thuộc tính rồi phân chia các đối tượng huấn luyện vào các nút con tương ứng
Bước 4: Nút con K được gọi là thuần nhất, trở thành lá, nếu tất cả các đối tượng
mẫu tại đó đều thuộc vào cùng một lớp
Bước 5: Lặp lại bước 1 - 3 đối với mỗi nút chưa thuần nhất.
Có nhiều thuật toán để xây dựng cây quyết định như ID3, CART, J48, C4.5 Việc lựa chọn thuật toán nào để việc phân lớp đạt hiệu quả cao, kết quả đáng tin cây phụ thuộc vào nhiều yếu tố, trong đó cấu trúc dữ liệu của các thuộc tính sẽ có ảnh hưởng lớn đến kết quả của các thuật toán
Với dữ liệu lịch sử tuyển dụng như trong bảng 2 ta có thể chuyển đổi tất cả giá trị của các thuộc tính về cùng một dạng dữ liệu số như sau: Với thuộc tính Level: Giá trị “Đại học” ~ 2, “Cao đẳng” ~ 1; “Trung tâm tin học” ~ 0; Với các thuộc tính Job, N_Company, Top_Train, Project, Result: Giá trị “Có” ~ 1, “Không”
~ 0 và các trường thông tin như tên tuổi, đại chỉ, ngày sinh… sẽ được mã hóa Bảng
4 thể hiện kết quả chuyển đổi dữ liệu của các thuộc tính trong bảng 2 về cùng một kiểu dữ liệu dạng số
Bảng 4 Tập dữ liệu đã chuyến đối về dạng số
Trang 16Trong sô các thuật toán xây dựng cây quyêt định ở trên ID3 là thuật toán ra đời
từ rât sớm, tương đối phổ biến và đặc biệt thuật toán này có hiệu quả phân lớp cao đối với tập dữ liệu có giá trị của thuộc tính là số Vì vây, Chúng em lựa chọn thuật toán ID3 để tiến hành xây dựng cây quyết định cho tập dữ liệu tuyển dụng nhân sự
ở trên
3.3 Thuật toán ID3
Để xây dựng cây quyết định với thuật toán ID3 trước tiên cần xác định thứ tự của thuộc tính cần được xem xét tại mỗi bước Trong trường hợp đối tượng có nhiều thuộc tính và mỗi thuộc tính có nhiều giá trị khác nhau thì việc xác định đượcthứ tự tối ưu nhất của các thuộc tính thường là rất khó Vì vây, để đơn giản ý tưởng của ID3 như sau:
● Thực hiện giải thuật tìm kiếm tham lam đối với không gian các cây quyết định có thể
● Xây dựng các nút từ trên xuống (Top-Down), bắt đầu từ nút gốc
● Ở mỗi nút, xác định thuộc tính kiểm tra là thuộc tính có khả năng phân loại tốt nhất
● Tạo mới một cây con của nút hiện tại cho mỗi giá trị có thể của thuộc tinh kiểm tra, và tập dữ liệu đầu vào sẽ được tách thành các tập con tương ứng với các cây con vừa tạo
● Mỗi thuộc tính chỉ được phép xuất hiện tối đa 1 lần đối với bất kỳ đường đi nào trong cây
● Quá trình phát triển cây sẽ tiếp tục cho tới khi: