You are on page 1of 41

BỘ GIÁO DỤC VÀ ĐÀO TẠO

TRƯỜNG ĐẠI HỌC NGUYỄN TẤT THÀNH


KHOA CÔNG NGHỆ THÔNG TIN

ĐỒ ÁN MÔN HỌC

Ứng Dụng Machine Learning Vào Chẩn Đoán


Bệnh Tim

Sinh viên thực hiện: Nguyễn Văn Thống


MSSV: 2000004391
Chuyên ngành: Trí tuệ nhân tạo
Môn học: Khai Phá Dữ Liệu Lớn
Khóa: 2020
Giảng viên giảng dạy: ThS. Hồ Ngọc Trung Kiên

Tp.HCM, tháng 09 Năm 2022

1
BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC NGUYỄN TẤT THÀNH
KHOA CÔNG NGHỆ THÔNG TIN

ĐỒ ÁN MÔN HỌC

Ứng Dụng Machine Learning Vào Chẩn Đoán


Bệnh Tim

Sinh viên thực hiện: Nguyễn Văn Thống


MSSV : 2000004391
Sinh viên thực hiện: Phan Hoài Ngọc
MSSV : 2000004730
Chuyên ngành: Trí tuệ nhân tạo
Môn học: Khai Phá Dữ Liệu Lớn
Khóa: 2020
Giảng viên giảng dạy: ThS. Hồ Ngọc Trung Kiên

Tp.HCM, tháng 09 Năm 2022

2
TRƯỜ NG ĐẠ I HỌ C NGUYỄ N TẤ T THÀ NH CỘ NG HÒ A XÃ HỘ I CHỦ NGHĨA VIỆ T NAM
KHOA CÔNG NGHỆ THÔNG TIN Độc lập – Tự do – Hạnh phúc
🙜 🙜 🙝 🙜 🙜 🙝

NHIỆM VỤ ĐỒ ÁN MÔN HỌC

Họ và tên: NGUYỄN VĂN THỐNG MSSV: 2000004391


Họ và tên: PHAN HOÀI NGỌC MSSV: 2000004730
Chuyên ngà nh: Trí tuệ nhân tạo Lớ p: 20DTH1B
Email:2000004391@GMAIL.COM SĐT: 0967177845

Tên đề tà i: Áp Dụng Machine Learning vào chuẩn đoán bệnh tim


Giả ng viên giả ng dạ y: ThS. Hồ Ngọc Trung Kiên
Thờ i gian thự c hiện: 06/11/2022 đến 10/12/2022
Nhiệm vụ/nội dung (mô tả chi tiết nội dung, yêu cầu, phương pháp… ):
- Phâ n tích yêu cầ u bà i toá n
- Xá c định đầ u và o và đầ u ra
- Xá c định cá c luậ t
- Phâ n tích đặ c trưng củ a dữ liệu
- Xâ y dự ng mô hình điều khiển, đá nh giá
- Dự bá o, biểu diễn kết quả
Nội dung và yêu cầu đã được thông qua Bộ môn.
Tp.HCM, ngày 10 tháng 12 năm 2022
TRƯỞNG BỘ MÔN GIẢNG VIÊN GIẢNG DẠY

Đặng Như Phú Hồ Ngọc Trung Kiên

3
LỜI CẢM ƠN

Với lòng biết ơn sâu sắc nhất, em xin gửi đến quý Thầy Cô ở Khoa Công Nghệ Thông
Tin đã truyền đạt vốn kiến thức quý báu cho chúng em trong suốt thời gian học tập online
tại trường. Nhờ có những lời hướng dẫn, dạy bảo của thầy cô nên đề tài thiết kế của em
mới có thể hoàn thiện tốt đẹp.
Một lần nữa, em xin chân thành cảm ơn thầy Hồ Ngọc Trung Kiên – người đã trực tiếp
giúp đỡ, quan tâm, hướng dẫn em hoàn thành tốt bài báo cáo này trong thời gian qua.
Bài báo cáo của em còn hạn chế và còn nhiều bỡ ngỡ nên không tránh khỏi những thiếu
sót, em rất mong nhận được những ý kiến đóng góp quý báu của quý Thầy để kiến thức
của em trong lĩnh vực này được hoàn thiện hơn đồng thời có điều kiện bổ sung, nâng cao
ý thức của mình.
Em xin chân thành cảm ơn! 

4
LỜI MỞ ĐẦU

Bệnh tim mạch là do các rối loạn liên quan đến tim và mạch máu. Bệnh tim mạch bao
gồm bệnh mạch vành (nhồi máu cơ tim), tai biến mạch máu não (đột quỵ), tăng huyết áp
(cao huyết áp), bệnh động mạch ngoại biên, bệnh thấp tim, bệnh tim bẩm sinh và suy tim.
Các nguyên nhân chính của bệnh tim mạch là do sử dụng thuốc lá, thiếu các hoạt động
thể lực, chế độ ăn uống không lành mạnh và sử dụng rượu bia ở mức độ nguy hại. Theo
các chuyên gia về y khoa, hầu hết các bệnh về tim mạch có thể phòng ngừa được bằng
cách kiểm soát tốt các yếu tố nguy cơ dẫn đến bệnh này.
Trong những năm gần đây, máy học phát triển mạnh và được ứng dụng vào nhiều lĩnh
vực của đời sống xã hội, trong đó có lĩnh vực y khoa do nhu cầu cao về phân tích dữ liệu
để phát hiện các thông tin không xác định và có giá trị được hàm chứa trong các bộ dữ
liệu y khoa. Trong số các kỹ thuật học máy được phát triển gần đây như khái quát hóa,
đặc tính hóa, phân loại, phân cụm, kết hợp, so khớp mẫu, trực quan hóa dữ liệu,…Việc
học máy được áp dụng vào lĩnh vực y khoa cho một số lợi ích như phát hiện sớm các
bệnh, giúp đưa ra giải pháp y tế cho bệnh nhân lựa chọn, phát hiện nguyên nhân bệnh,
xác định và tư vấn các phương pháp y tế có thể sử dụng để điều trị bệnh. Học máy cũng
giúp các nhà nghiên cứu chăm sóc sức khỏe thực hiện các chính sách chăm sóc sức khỏe
hiệu quả, xây dựng hệ thống khuyến cáo thuốc, phát triển hồ sơ y tế của các cá nhân, ...
Các kỹ thuật học máy được áp dụng trong các hệ thống dựa trên bộ dữ liệu thu thập được
đưa ra dự đoán chuẩn xác cho các bệnh nhân có thể nhận biết được không hoặc đang mắc
bệnh và kịp thời phòng tránh và chữa trị.

5
NHẬN XÉT CỦA GIẢNG VIÊN GIẢNG DẠY

Tp.HCM, Ngày . . . . tháng . . . . năm 2022


Giảng viên giảng dạy
(Ký tên và ghi rõ họ tên)

Hồ Ngọc Trung Kiên

6
BẢNG PHÂN CÔNG THỰC HIỆN ĐỒ ÁN MÔN HỌC

7
Nguyễn Văn Thống - 2000004391 Phan Hoài Ngọc - 2000004730
- Code và chạ y cá c thuậ t toá n - Tìm nguồ n dữ liệu nghiên cứ u
- Phâ n tích dữ liệu - Tìm cá c bà i bá o liên quan
- Viết World - Viết World
- Viết PowerPoint - Viết PowerPoint
- Lự a chọ n thuậ t toá n - Lự a chọ n thuậ t toá n

Điểm A: Điểm B:
Nhậ n xét: Nhậ n xét:

8
Mục Lục
LỜI CẢM ƠN.................................................................................................................... 4
LỜI MỞ ĐẦU....................................................................................................................5
Chương I. Tổng Quan Đề Tài.............................................................................................1
1.1 Tổng quan....................................................................................................................1
1.2 Lý do chọn đề tài..........................................................................................................2
1.3 Mục Tiêu Nghiên Cứu..................................................................................................2
1.4 Đối tượng nghiên cứu...................................................................................................2
Chương II. Cơ Sở Lý Thuyết & Các Nghiên Cứu Liên Quan............................................3
2.1 Nghiên cứu trong nước.................................................................................................3
2.2 Nghiên cứu ngoài nước................................................................................................4
2.3 Cơ sở lý thuyết.............................................................................................................6
2.3.1 quy trình khai phá tri thức......................................................................................6
2.3.2 Machine Learning là gì..........................................................................................7
2.3.3. Phân loại Machine learning...................................................................................7
2.3.4. Supervised learning...............................................................................................8
2.3.5. Unsupervised learning...........................................................................................8
Chương III. Xây Dựng Mô Hình........................................................................................9
3.1 Mô hình........................................................................................................................9
3.2 Các bước xây dựng mô hình.........................................................................................9
3.2.1 Dataset...................................................................................................................9
3.2.2 Tiền xử lí dữ liệu..................................................................................................10
3.2.3 Chia dữ liệu..........................................................................................................10
3.2.4 Áp dụng model.....................................................................................................10
3.2.5 Dự đoán độ chính xác và Chuẩn đoán..................................................................11
3.3 Giới thệu về các thuật toán được sử dụng...................................................................11
3.3.1 Thuật toán naïve bayes.........................................................................................11
3.3.1.1 Naïve bayes là gì ?.........................................................................................11
3.3.1.2 Suy luận theo kiểu Naive Bayes....................................................................11
3.3.1.3 Phát biểu định lý............................................................................................11
9
3.3.1.4 Công thức......................................................................................................12
3.3.2 Thuật toán Logistic..............................................................................................12
3.3.2.1 Hồi quy logistic là gì?....................................................................................12
3.3.2.2 Cách thức hoạt động......................................................................................12
3.3.2.3 Phương trình..................................................................................................12
3.3.2.4 Biến...............................................................................................................13
3.3.2.5 Công thức......................................................................................................13
3.3.3 Linear Discriminant Analysis (LDA)...................................................................15
3.3.3.1 LDA là gì ?....................................................................................................15
3.3.3.2 ý nghĩa...........................................................................................................15
3.3.4 KneighborsClassifier............................................................................................15
3.3.4.1 knn là gì ?......................................................................................................15
Chương IV. Thực Nghiệm Và Đánh Giá..........................................................................16
4.1 Mô tả dữ liệu..............................................................................................................16
4.2 Xử lý dữ liệu..............................................................................................................18
4.3 Chia dữ liệu................................................................................................................21
4.4 Áp dụng thuật toán.....................................................................................................23
4.5 Thực nghiệm..............................................................................................................23
4.5.1 Thực nghiệm 1.....................................................................................................23
4.5.2 Thực nghiệm 2.....................................................................................................24
4.5.3 Thực nghiệm 3.....................................................................................................24
4.4 Đánh giá và so sánh các tiêu chí.................................................................................27
Chương V. Kết luận.........................................................................................................30
Tài liệu tham khảo............................................................................................................31

10
DANH MỤC CÁC BẢNG HÌNH

Hình 1: Quy trình khai phá tri thức

Hình 2: công thức naïve bayes

Hình 3: công thức hàm sigmoid

Hình 4: sơ đồ hàm sigmoid

Hình 5: sơ đồ mô tả các cột dữ liệu

Hình 6: Sơ đồ các bước thực hiện

Hình 7 : biểu đồ tròn tỷ lệ các nhóm

Hình 8: Bảng dữ liệu

Hình 9: sơ đồ ma trận trực quan hóa dữ liệu

Hình 10: sơ đồ chia dữ liệu hold_out

hình 11: sơ đồ chia dữ liệu kiểu kFold

Hình 12: sơ đồ mô tả đưa data vào các model thuật toán

Hình 13: dự đoán 1 bệnh nhân ngẫu nhiên trong tập dữ liệu

Hình 14: dự đoán 1 bệnh nhân ngẫu nhiên trong tập dữ liệu

Hình 15: so sánh thuật toán ( phương pháp holdout )

Hình 16: so sánh thuật toán ( phương pháp kfold )

11
DANH MỤC CÁC TỪ VIẾT TẮT

Từ Viết Tắt Trans


LR LogisticRepression
NB Naive Bayes Gaussian
LA LinearDiscriminantAnalysis
KNN KNeighborsClassifier
ANN Artificial Neural Network
Trestpbs Huyết áp lúc nghỉ ngơi (đơn vị mmHg)
Chol Cholesterol trong huyết thanh (mg/dl)
fbs đường huyết lúc đói
restecg kết quả điện tâm đồ lúc nghỉ
thalach nhịp tim tối đa
exang đau thắt ngực do tập thể dục
oldpeak ức chế do luyện tập so với khi nghỉ
slope độ dốc của đoạn ST tập luyện đỉnh cao

12
Chương I. Tổng Quan Đề Tài

1.1 Tổng quan

Bệnh tim mạch là do các rối loạn liên quan đến tim và mạch máu. Bệnh tim mạch bao
gồm bệnh mạch vành (nhồi máu cơ tim), tai biến mạch máu não (đột quỵ), tăng huyết áp
(cao huyết áp), bệnh động mạch ngoại biên, bệnh thấp tim, bệnh tim bẩm sinh và suy tim.
Các nguyên nhân chính của bệnh tim mạch là do sử dụng thuốc lá, thiếu các hoạt động thể
lực, chế độ ăn uống không lành mạnh và sử dụng rượu bia ở mức độ nguy hại. Theo các
chuyên gia về y khoa, hầu hết các bệnh về tim mạch có thể phòng ngừa được bằng cách
kiểm soát tốt các yếu tố nguy cơ dẫn đến bệnh này. Theo báo cáo của tổ chức y tế thế giới
(WHO), bệnh tim mạch là nguyên nhân hàng đầu gây nên tử vong trên toàn cầu, chiếm tới
31% tổng số ca tử vong. Tại Việt Nam, cũng theo báo cáo bệnh tim mạch chiếm đến 31%
tổng số ca tử vong trong năm 2016 tương đương với hơn 170.000 ca tử vong.
Trong những năm gần đây, máy học phát triển mạnh và được ứng dụng vào nhiều
lĩnh vực của đời sống xã hội, trong đó có lĩnh vực y khoa do nhu cầu cao về phân tích dữ
liệu để phát hiện các thông tin không xác định và có giá trị được hàm chứa trong các bộ dữ
liệu y khoa. Trong số các kỹ thuật học máy được phát triển gần đây như khái quát hóa, đặc
tính hóa, phân loại, phân cụm, kết hợp, so khớp mẫu, trực quan hóa dữ liệu, v.v. Việc học
máy được áp dụng vào lĩnh vực y khoa cho một số lợi ích như phát hiện sớm các bệnh,
giúp đưa ra giải pháp y tế cho bệnh nhân lựa chọn, phát hiện nguyên nhân bệnh, xác định
và tư vấn các phương pháp y tế có thể sử dụng để điều trị bệnh. Học máy cũng giúp các
nhà nghiên cứu chăm sóc sức khỏe thực hiện các chính sách chăm sóc sức khỏe hiệu quả,
xây dựng hệ thống khuyến cáo thuốc, phát triển hồ sơ y tế của các cá nhân, ... Các kỹ thuật
học máy được áp dụng trong các hệ thống chăm sóc sức khỏe cũng được sử dụng để phân
tích các yếu tố khác nhau như loại thực phẩm, môi trường làm việc khác nhau, trình độ học
vấn, điều kiện sống, nguồn nước sạch, dịch vụ chăm sóc sức khỏe, văn hóa và môi trường
ảnh hưởng đối với các bệnh.

1
1.2 Lý do chọn đề tài
Hiện nay kỹ thuật học máy đã ngày càng phát triển và có được ứng dụng vô cùng lớn
vào các lĩnh vực khác nhau như ngân hàng, thư tín, báo chí, y học,…Mà trong y học thì kỹ
thuật học máy dựa trên bộ dữ liệu được thu thập từ nhiều bệnh nhân trước đó có thể được
sử dụng để huấn luyện và đưa ra dự đoán bệnh đối với các bệnh nhân có thể biết được bản
thân có mắc bệnh hay không, nhằm phục vụ cho việc phát hiện kịp thời để chữa trị và
phòng tránh các nguy cơ rủi ro có thể xảy đến vì vậy em quyết định chọn đề tài áp dụng
học máy vào y học sử dụng Thuật Toán Naïve Bayes Để Dự Đoán Bệnh Tim.

1.3 Mục Tiêu Nghiên Cứu


Bệnh tim là một trong những nguyên nhân gây tử vong hàng đầu thế giới mục đích
của nghiên cứu này nhằm áp dụng kỹ thuật học máy vào y học để chẩn đoán được những
người sẽ có nguy cơ mắc bệnh về tim mạch
Giúp các cá nhân có thể dự đoán được khả năng cơ thể có mắc bệnh về tim, có thể
kịp thời đưa ra các chính sách chăm sóc sức khỏe vừa chữa trị vừa phòng ngừa bệnh tim
phát tác, dự đoán nguy cơ mắc bệnh tim
Dựa vào việc chẩn đoán, phát hiện kịp thời có thể ngăn ngừa các nguy cơ nguy hiểm
đến tính mạng xảy ra.

1.4 Đối tượng nghiên cứu


Đối tượng nghiên cứu nhấm đến là tập dữ liệu có từ năm 1988 và bao gồm bốn cơ sở
dữ liệu: Cleveland, Hungary, Thụy Sĩ và Long Beach V. Tập dữ liệu này chứa 76 thuộc
tính, bao gồm cả thuộc tính dự đoán, nhưng tất cả các thử nghiệm đã xuất bản đều đề cập
đến việc sử dụng một tập hợp con gồm 14 trong số đó. Trường "mục tiêu" đề cập đến sự
hiện diện của bệnh tim ở bệnh nhân. Nó là số nguyên đó có giá trị 0 = không bệnh và 1 =
bệnh.

2
Chương II. Cơ Sở Lý Thuyết & Các Nghiên Cứu Liên Quan

2.1 Nghiên cứu trong nước


Tên bài báo:
ỨNG DỤNG KỸ THUẬT MÁY HỌC VÀO PHÂN LOẠI BỆNH TIM
Tác giả: Trần Đình Toàn, Dương Thị Mộng Thùy Trường Đại học Công nghiệp Thực
phẩm TP.HCM, ngày đăng: 15/7/2022.
Dữ liệu: Bộ dữ liệu bệnh tim được sử dụng trong nghiên cứu này là bộ dữ liệu công
khai [18, 19] với 1025 mẫu, trong đó có 526 mẫu được gán nhãn thuộc lớp có nguy cơ mắc
bệnh tim (target = 1), số mẫu còn lại 499 thuộc lớp không có nguy cơ (target = 0).
Thuật toán sử dụng: Naïve Bayes và Mạng neural nhân tạo.
Kết luận: Thực nghiệm 1 sử dụng phương pháp Naïve Bayes với 2 kernel khác nhau
(Gaussian và Bernoulli) để phân loại dữ liệu. Thực nghiệm 2 dùng kỹ thuật phân loại khác
là mạng ANN cũng trên cùng bộ dữ liệu ở trên. Kết quả thực nghiệm của chúng tôi cho
thấy rằng: (1) Dùng phương pháp Naïve Bayes nhưng với kernel Gaussian cho kết quả tốt
hơn kernel còn lại, (2) Dùng mạng ANN với epochs=200 và batch_size = 16 cho kết quả
tương đối tốt. Tuy nhiên tùy vào đặc tính khác nhau của dữ liệu mà các phương pháp khác
nhau có thể cho kết quả hoàn toàn khác nhau. Nhìn chung trong nghiên cứu này, dùng
phương pháp mạng ANN cho kết quả tốt hơn phương pháp Naïve Bayes.
Kết quả đạt được : Naive Bayes Bernoulli với độ chính xác 83% và Artificial Neural
Network với độ chính xác là 87%.

Tên bài báo:


DATA MINING IN HEALTHCARE SYSTEM ON PATIENTS CLINICAL
SYMPTOMS DATASET
Tác giả: Trần Đình Toàn , Huỳnh Thị Châu Lan, Trần Văn Thọ, Lê Minh Hưng, Trần
Văn Lăng Trường Đại học Công nghiệp Thực phẩm Thành phố Hồ Chí Minh Trường Đại
học Công nghệ Thông tin - Đại học Quốc gia Thành phố Hồ Chí Minh Viện Hàn lâm Khoa
học và Công nghệ Việt Nam.

3
Thuật toán được sử dụng: SVM, Decision Tree
Bài báo này khảo sát một số các kỹ thuật khai phá dữ liệu (KPDL) thường được sử
dụng trong hệ thống chăm sóc sức khỏe thông minh (E-Health Care Systems). Tại Việt
Nam, việc ứng dụng KPDL trong lĩnh vực y khoa còn nhiều hạn chế đặc biệt là việc tiếp
cận và thu thập dữ liệu bệnh nhân. Trong khảo sát này, chúng tôi tiến hành hai thực
nghiệm áp dụng một số phương pháp học có giám sát để phân loại bệnh trên ba bộ dữ liệu
cận lâm sàng là bệnh tim, bệnh thận mãn tính và ung thư vú, trong đó Thực nghiệm 1
chúng tôi tiến hành kiểm tra đặc tính của dữ liệu có phân bố tuyến tính hay phi tuyến, Thực
nghiệm 2 tiến hành phân loại bệnh và so sánh các kết quả đạt được. Từ đó đánh giá tính
hiệu quả việc của các kỹ thuật trên từng bộ dữ liệu khác nhau.
Kết quả đạt được:
Bệnh tim : 
 Độ chính xác bằng thuật toán SVM 89,93%.
 Độ chính xác bằng thuật toán Decision Tree 99,28%.
Bệnh thận mãn tính: 
 Độ chính xác bằng thuật toán SVM 72,50%.
 Độ chính xác bằng thuật toán 93,75%.
Bệnh ung thư vú : 
 Độ chính xác bằng thuật toán SVM 82,61%.
 Độ chính xác bằng thuật toán 69,5%.

2.2 Nghiên cứu ngoài nước


Tên bài báo:
Dự đoán khả năng sống sót của bệnh ung thư phổi dựa trên hiệu suất bằng cách
sử dụng các kỹ thuật phân loại của máy vectơ hỗ trợ, thuật toán C4.5 và Naive
Bayes cho phân tích chăm sóc sức khỏe.
Tác giả :David Saro
Dữ liệu: Data is collected when the patient admits for treatment and the following
attributes are collected for analysis namely gender, age, smoker, tumor location, t-stage,
4
n-stage, stage, timing, diabetes. These features are selected. Data is collected when the
patient is admitted for treatment and the following attributes are collected for analysis
namely gender, age, smoker, tumor location, t-stage, n-stage, stage, timing, diabetes.
These features are selected (tạm dịch: Dữ liệu được thu thập khi bệnh nhân nhập viện
điều trị và các thuộc tính sau được thu thập để phân tích cụ thể là giới tính, tuổi tác,
người hút thuốc, vị trí khối u, giai đoạn t, giai đoạn n, giai đoạn, thời gian, bệnh tiểu
đường. Các tính năng này được chọn. Dữ liệu được thu thập khi bệnh nhân nhập viện
điều trị và các thuộc tính sau được thu thập để phân tích cụ thể là giới tính, tuổi tác,
người hút thuốc, vị trí khối u, giai đoạn t, giai đoạn n, giai đoạn, thời gian, bệnh tiểu
đường. Các tính năng này được chọn).
Thuật toán: Support Vector Machine, C4.5, Naïve Bayes.
Kết luận: C4.5 thực hiện dự đoán tốt hơn.
Các thuật toán được sử dụng trong bài báo bao gồm:
Thuật toán Naïve Bayes Bernoulli, Support Vector Machine, C4.5, Naïve Bayes, SVM 

Tên bài báo:


Lung Cancer Survivability Prediction based on Performance Using Classification
Techniques of Support Vector Machines, C4.5 and Naive Bayes Algorithms for
Healthcare Analytics
Tác giả: Pradeep K R, Naveen N C
Data is collected when the patient admits for treatment and the following attributes are
collected for analysis namely gender, age, smoker, tumor location, t-stage, n-stage,
stage, timing, diabetes. These features are selected Data is collected when the patient
admits for treatment and the following attributes are collected for analysis namely
gender, age, smoker, tumor location, t-stage, n-stage, stage, timing, diabetes. These
features are selected (tạm dịch:Dữ liệu được thu thập khi bệnh nhân nhập viện điều trị
và các thuộc tính sau được thu thập để phân tích cụ thể là giới tính, tuổi tác, người hút
thuốc, vị trí khối u, giai đoạn t, giai đoạn n, giai đoạn, thời gian, bệnh tiểu đường. Các
tính năng này được chọn Dữ liệu được thu thập khi bệnh nhân nhập viện điều trị và các
5
thuộc tính sau được thu thập để phân tích cụ thể là giới tính, tuổi, người hút thuốc, vị trí
khối u, giai đoạn t, giai đoạn n, giai đoạn, thời gian, bệnh tiểu đường. Các tính năng
này được chọn )
Thuật toán được dùng : C4.5 Precision, Naive Bayes, SVM
Kết quả đạt được : c4.5 độ chính xác là 82.6%, Naive Bayes độ chính xác là 66.1%,
SVm độ chính xác là 54.4%

2.3 Cơ sở lý thuyết

2.3.1 quy trình khai phá tri thức


1. Xây dựng mô hình dựa trên quy trình khai phá tri thức 
2. Làm sạch dữ liệu (data cleaning & preprocessing)s: Loại bỏ nhiễu và các dữ liệu
không cần thiết. 
3. Tích hợp dữ liệu: (data integration): quá trình hợp nhất dữ liệu thành những kho dữ
liệu (data warehouses & data marts) sau khi đã làm sạch và tiền xử lý (data cleaning
& preprocessing). 
4. Trích chọn dữ liệu (data selection): trích chọn dữ liệu từ những kho dữ liệu và sau
đó chuyển đổi về dạng thích hợp cho quá trình khai thác tri thức. Quá trình này bao
gồm cả việc xử lý với dữ liệu nhiễu (noisy data), dữ liệu không đầy đủ (incomplete
data), .v.v. 
5. Chuyển đổi dữ liệu: Các dữ liệu được chuyển đổi sang các dạng phù hợp cho quá
trình xử lý 
6. Khai phá dữ liệu(data mining): Là một trong các bước quan trọng nhất, trong đó sử
dụng những phương pháp thông minh để chắt lọc ra những mẫu dữ liệu. 
7. Ước lượng mẫu (knowledge evaluation): Quá trình đánh giá các kết quả tìm được
thông qua các độ đo nào đó. 
8. Biểu diễn tri thức (knowledge presentation): Quá trình này sử dụng các kỹ thuật để
biểu diễn và thể hiện trực quan cho người dùng.

6
Hình 1: Quy trình khai phá tri thức

2.3.2 Machine Learning là gì


Machine learning (ML) hay máy học là một nhánh của trí tuệ nhân tạo (AI), nó là
một lĩnh vực nghiên cứu cho phép máy tính có khả năng cải thiện chính bản thân chúng
dựa trên dữ liệu mẫu (training data) hoặc dựa vào kinh nghiệm (những gì đã được học).
Machine learning có thể tự dự đoán hoặc đưa ra quyết định mà không cần được lập trình cụ
thể.
Bài toán machine learning thường được chia làm hai loại là dự đoán (prediction) và
phân loại (classification). Các bài toán dự đoán như dự đoán giá nhà, giá xe… Các bài toán
phân loại như nhận diện chữ viết tay, nhận diện đồ vật…

2.3.3. Phân loại Machine learning


Có rất nhiều cách phân loại machine learning, thông thường thì machine learning sẽ
được phân làm hai loại chính sau:
Supervised learning: học có giám sát
Unsupervised learning: học không giám sát
7
Ngoài ra, machine learning còn có thể phân làm các loại sau:
Semi-supervised learning: học bán giám sát
Deep learning: học sâu (về một vấn đề nào đó)
Reinforce learning: học củng cố/tăng cường
Mình sẽ chỉ đề cập đến cách phân loại phổ biến nhất là phân làm hai nhóm: học có
giám sát và học không giám sát.

2.3.4. Supervised learning


Supervised learning là việc cho máy tính học trên dữ liệu đã được gán nhãn (label),
hay nói cách khác, với mỗi đầu vào Xi, chúng ta sẽ có nhãn Yi tương ứng.

2.3.5. Unsupervised learning


Unsupervised learning là cho máy tính học trên dữ liệu mà không được gán nhãn, các
thuật toán machine learning sẽ tìm ra sự tương quan dữ liệu, mô hình hóa dữ liệu hay chính
là làm cho máy tính có kiến thức, hiểu về dữ liệu, từ đó chúng có thể phân loại các dữ liệu
về sau thành các nhóm, lớp (clustering) giống nhau mà chúng đã được học hoặc giảm số
chiều dữ liệu (dimension reduction).

8
Chương III. Xây Dựng Mô Hình

3.1 Mô hình

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


Bộ dữ liệu bệnh tim ( kiểm tra giá trị rỗ ng, gá n nhã n ô dữ liệu trố ng & chuẩ n hó a dữ liệu )

Chia dữ liệu dạ ng Chia dữ liệu dạ ng k_Fold


hold _out K = 10
( 80% train & 20% test) (10 phầ n bằ ng nhau)

Machine Learning Chuẩ n đoá n & Phâ n loạ i


( NaiveBayes, Logistic, KNN, LDA ) 1: bị bệnh tim
Dự đoá n độ chính xá c 0: khô ng bệnh

Hình 2: Sơ đồ các bước thực hiện

Cấu hình máy thực hiện: Các thuật toán được thực hiện trên google colab và sử dụng máy
Asus ROG Strix G513IE.

3.2 Các bước xây dựng mô hình

3.2.1 Dataset
Bộ dữ liệu được lấy từ : https://www.kaggle.com/datasets/johnsmith88/heart-disease-
dataset
Tập dữ liệu này có từ năm 1988 và bao gồm bốn cơ sở dữ liệu: Cleveland, Hungary,
Thụy Sĩ và Long Beach V. Tập dữ liệu này chứa 76 thuộc tính, bao gồm cả thuộc tính dự
đoán, nhưng tất cả các thử nghiệm đã xuất bản đều đề cập đến việc sử dụng một tập hợp

9
con gồm 14 trong số đó. Trường "mục tiêu" đề cập đến sự hiện diện của bệnh tim ở bệnh
nhân. Nó là số nguyên có giá trị 0 = không bệnh và 1 = bệnh.

3.2.2 Tiền xử lí dữ liệu


Ở bước tiền xử lý dữ liệu nhóm thực hiện các bước xử lý đầu tiên là xem độ tương
quan của các cột dữ liệu so với cột target do bộ dữ liệu ban đầu đã được lọc bớt từ 76 cột
dữ liệu xuống còn 16 cột và 16 cột dữ liệu còn được giữ lại đều có độ tương quan cao với
cột target
Tiếp theo nhóm sẽ tiến hành kiểm tra sơ lược bộ dữ liệu xem có giá trị rỗng hay
không nếu có sẽ tiến hành rán nhãn lại cho các cột dữ liệu và ở đây nhóm đã thống kê ra độ
chênh lệch của dữ liệu giữa số người mắc bệnh và số người không mắc bệnh và thấy được
bộ dữ liệu có 51,3% người bị bệnh và 48,7% người không bị bệnh , suy ra bộ dữ liệu khá
cân bằng rồi không cần chỉnh sửa lại
Cuối cùng khi đã thực hiện xong các bước kiểm tra tiến hành đưa bộ dữ liệu vào để
chuẩn hóa

3.2.3 Chia dữ liệu


Với bài nghiên cứu về bộ dữ liệu bệnh tim này nhóm sử dụng thư viện
train_test_split thực hiện 2 cách chia bộ dữ liệu :
1 là chia bộ dữ liệu theo kiểu truyền thống hold_out với 80% dữ liệu train và 20% dữ
liệu test
2 là chia bộ dữ liệu theo kiểu Kfold tiến hành chia dữ liệu thành 10 phần bằng nhau
với cách chia này thì sẽ lấy từng phần ra làm dữ liệu test còn 9 phần còn lại sẽ là dữ liệu
train và cứ thế lặp lại 10 lần và nhận được độ chính xác trung bình

3.2.4 Áp dụng model


Về phần áp dụng các model vào máy học thì nhóm sử dụng 4 thuật toán từ thư viện
sklearn để đưa vào máy học và dự đoán độ chính xác của từng thuật toán

10
Các thuật toán được sử dụng là : LogisticRegression, LinearDiscriminantAnalysis,
NaïveBayesGaussian, K neighbors Classifier

3.2.5 Dự đoán độ chính xác và Chuẩn đoán


Cuối cùng trong phần mô hình là dự đoán độ chính xác của từng thuật toán bằng thư
viện accuracy_score và chọn ngẫu nhiên 2 người trong tập dữ liệu để đưa vào dự đoán thực
tế

3.3 Giới thệu về các thuật toán được sử dụng

3.3.1 Thuật toán naïve bayes


3.3.1.1 Naïve bayes là gì ?
Naive Bayes là một thuật toán phân loại cho các vấn đề phân loại nhị phân (hai lớp)
và đa lớp. Kỹ thuật này dễ hiểu nhất khi được mô tả bằng các giá trị đầu vào nhị phân hoặc
phân loại.

3.3.1.2 Suy luận theo kiểu Naive Bayes


Suy luận Bayes (tiếng Anh: Bayesian inference) là một kiểu suy luận thống kê mà
trong đó các quan sát hay bằng chứng được dùng để cập nhật hoặc suy luận ra xác suất cho
việc một giả thuyết có thể là đúng. Cái tên "Bayes" bắt nguồn từ việc sử dụng thường
xuyên Định lý Bayes trong quá trình suy luận.

3.3.1.3 Phát biểu định lý


Định lý Bayes cho phép tính xác suất xảy ra của một sự kiện ngẫu nhiên A khi biết sự
kiện liên quan B đã xảy ra. Xác suất này được ký hiệu là P(A|B), và đọc là "xác suất của A
nếu có B". Đại lượng này được gọi là xác suất có điều kiện hay xác suất hậu nghiệm vì nó
được rút ra từ giá trị được cho của B hoặc phụ thuộc vào giá trị đó.

3.3.1.4 Công thức


Theo định lý Bayes, xác suất xảy ra A khi biết B sẽ phụ thuộc vào 3 yếu tố:

P ( C|X ) P(C)
P ( C| X )= 11
P( X)
Hình 3: công thức naïve bayes

Trong đó:
P(C|X) Xác suất của giả thuyết C đúng khi có chứng cứ X
P(X|C) Xác suất nhìn thấy chứng cứ X khi biết giả thuyết C đúng
P(C) Xác suất của giả thuyết C đúng (khi chưa có chứng cứ X)
P(X) Xác suất quan sát được chứng cứ X

3.3.2 Thuật toán Logistic


3.3.2.1 Hồi quy logistic là gì?
Hồi quy logistic là một kỹ thuật phân tích dữ liệu sử dụng toán học để tìm ra mối
quan hệ giữa hai yếu tố dữ liệu. Sau đó, kỹ thuật này sử dụng mối quan hệ đã tìm được để
dự đoán giá trị của những yếu tố đó dựa trên yếu tố còn lại. Dự đoán thường cho ra một số
kết quả hữu hạn, như có hoặc không.

3.3.2.2 Cách thức hoạt động


Hồi quy logistic là một trong số ít các kỹ thuật phân tích hồi quy khác nhau thường
được các nhà khoa học dữ liệu sử dụng trong máy học (ML). Để hiểu rõ về hồi quy
logistic, trước tiên chúng ta phải hiểu kỹ thuật phân tích hồi quy cơ bản.

3.3.2.3 Phương trình


Trong toán học, phương trình cho ta mối quan hệ giữa hai biến: x và y. Bạn có thể sử
dụng các phương trình hoặc hàm này để vẽ đồ thị theo trục x và trục y bằng cách nhập các
giá trị khác nhau của x và y. Ví dụ: nếu bạn vẽ đồ thị cho hàm y = 2*x, bạn sẽ có một
đường thẳng như hình dưới đây. Do đó hàm này còn được gọi là hàm tuyến tính.

3.3.2.4 Biến

Trong thống kê, biến là các yếu tố dữ liệu hoặc thuộc tính có giá trị khác nhau. Bất kỳ
phân tích nào cũng có một số biến nhất định là biến độc lập hoặc biến giải thích. Những
thuộc tính này là nguyên nhân của một kết quả. Các biến khác là biến phụ thuộc hoặc biến
đáp ứng; giá trị của chúng phụ thuộc vào các biến độc lập. Nhìn chung, hồi quy logistic
12
khám phá cách các biến độc lập ảnh hưởng đến một biến phụ thuộc bằng cách xem xét các
giá trị dữ liệu lịch sử của cả hai biến. 

3.3.2.5 Công thức

Hồi quy logistic là một mô hình thống kê sử dụng hàm logistic, hay hàm logit trong
toán học làm phương trình giữa x và y. Hàm logit ánh xạ y làm hàm sigmoid của x.

1
f ( x )=
1+e− x

Hình 4: công thức hàm sigmoid


Nếu vẽ phương trình hồi quy logistic này, bạn sẽ có một đường cong hình chữ S như hình
dưới đây:

Hình 5: sơ đồ hàm sigmoid

13
3.3.3 Linear Discriminant Analysis (LDA)
3.3.3.1 LDA là gì ?
Tuyến tính phân tích biệt thức (LDA) là một loại kết hợp tuyến tính, một quá trình
toán học sử dụng các mục dữ liệu khác nhau và chức năng áp dụng để thiết lập đó để riêng
phân tích nhiều lớp của đối tượng hoặc các mặt hàng. Chảy từ biệt thức tuyến tính Fisher,
phân tích biệt thức tuyến tính có thể hữu ích trong các lĩnh vực như nhận dạng hình ảnh và
phân tích tiên đoán trong tiếp thị.

3.3.3.2 ý nghĩa
Ý tưởng cơ bản của tổ hợp tuyến tính đi trở lại như xa như những năm 1960 với
Altman Z-score xin phá sản và cấu trúc dự đoán khác. Bây giờ, phân tích biệt thức tuyến
tính giúp ta tái hiện dữ liệu trong hơn hai lớp, khi hồi quy logic là chưa đủ. Tuyến tính
phân tích biệt có giá trị trung bình cho mỗi lớp học và xem xét các biến thể để đưa ra dự
đoán giả định một phân phối Gaussian. Đây là một trong một số loại thuật toán là một phần
của việc tạo mô hình học máy cạnh tranh.

3.3.4 KneighborsClassifier
3.3.4.1 knn là gì ?
KNN (K-Nearest Neighbors) là một trong những thuật toán học có giám sát đơn giản
nhất được sử dụng nhiều trong khai phá dữ liệu và học máy. Ý tưởng của thuật toán này là
nó không học một điều gì từ tập dữ liệu học (nên KNN được xếp vào loại lazy learning),
mọi tính toán được thực hiện khi nó cần dự đoán nhãn của dữ liệu mới.
      Lớp (nhãn) của một đối tượng dữ liệu mới có thể dự đoán từ các lớp (nhãn) của k hàng
xóm gần nó nhất.

14
Chương IV. Thực Nghiệm Và Đánh Giá

4.1 Mô tả dữ liệu
Bộ dữ liệu bệnh tim được sử dụng trong nghiên cứu này là bộ dữ liệu công khai với
1025 mẫu, trong đó có 526 mẫu được gán nhãn thuộc lớp có nguy cơ mắc bệnh tim (target
= 1), số mẫu còn lại 499 thuộc lớp không có nguy cơ (target = 0). Ở bộ dữ liệu gốc ban
đầu, mỗi mẫu gồm 76 thuộc tính bao gồm các thuộc tính chẩn đoán khác nhau và thông tin
y tế được thu thập từ mỗi bệnh nhân. Tuy nhiên, có nhiều thuộc tính do không có dữ liệu
hoặc thiếu dữ liệu do đó đã được loại bỏ để còn lại 14 thuộc tính
Bao gồm : age, sex, cp, trestbps, chol, fbs, restcg, thalach, exang, oldpeak, slope, ca,
thal, target.
Trong đó: 
Age: Tuổi ( 29 -77 )
Sex: giới tính (1 là nam, 0 là nữ) 
Cp: loại đau ngực (1: cơn đau thắt ngực rõ ràng, 2: đau thắt ngực không rõ ràng, 3:
không đau thắt ngực, 4: không có triệu chứng )
Trestbps: Huyết áp lúc nghỉ ngơi (đơn vị mmHg) 
chol: cholesterol trong huyết thanh tính bằng mg/dl 
fbs: (đường huyết lúc đói> 120 mg / dl): 1 = true; 0 = false 
restecg: kết quả điện tâm đồ lúc nghỉ
thalach: nhịp tim tối đa 
exang: đau thắt ngực do tập thể dục (1 = có; 0 = không) 
oldpeak = ST ức chế do luyện tập so với khi nghỉ 
slope: độ dốc của đoạn ST tập luyện đỉnh cao (1: dốc lên , 2: bằng phẳng , 3: dốc
xuống )
ca: số lượng mạch chính (0-3) được tô màu bằng phương pháp nội soi
thal: (3 = bình thường; 6 = khuyết tật cố định; 7 = khiếm khuyết có thể đảo ngược )
target: thuộc tính phân lớp (1 = Bệnh tim, 0 = Không có bệnh tim).

15
Hình 6: sơ đồ mô tả các cột dữ liệu

Từ sơ đồ ở trên ta có thể thấy sơ lược được độ tuổi trung bình tập trung nhiều nhất
nằm ở mức 66 tuổi và bộ dữ liệu này nghiên cứu có số lượng nam nhiều hơn so với nữ giới
gần như là gấp đôi ngoài ra ta có thể thông qua các biểu đồ còn lại để có thể quan sát gõ
hơn về sự biến thiên của các cột dữ liệu còn lại và đặc biệt ở đây ta có thể thấy cột target
số lượng người mắc bệnh và người không mắc bệnh chênh lệch nhau là không nhiều

16
Hình 7 : biểu đồ tròn tỷ lệ các nhóm

Hình 8: Bảng dữ liệu

4.2 Xử lý dữ liệu

Dựa vào sơ đồ ma trận tương quan hóa dữ liệu ta thấy được các cột thuộc tính của bộ
dữ liệu đều có độ tương quan với nhau không có cột nào có màu tối hơn các cột còn lại
chứng tỏ các cột dữ liệu đều có sự tương quan với nhau, dưa vào cột mục tiêu ở đây là cột
target ta thấy được 13 cột dữ liệu còn lại đều có màu sắc khá tương đồng không có sự
chênh lệch quá lớn
Nhìn vào sơ đồ ta thấy duy chỉ có 2 cột dữ liệu là slope và oldpeak là 2 cột có độ
tương quan với nhau rất thấp nhưng độ tương quan giữa 2 cột này với các cột còn lại là khá
ổn định nên xem ra cũng không đáng kể vì vậy bộ dữ liệu này sẽ tiến hành không loại bỏ
các cột

17
Hình 9: sơ đồ ma trận trực quan hóa dữ liệu

Ở bộ dữ liệu gốc ban đầu, mỗi mẫu gồm 76 thuộc tính bao gồm các thuộc tính chẩn
đoán khác nhau và thông tin y tế được thu thập từ mỗi bệnh nhân. Tuy nhiên, có nhiều
thuộc tính do không có dữ liệu hoặc thiếu dữ liệu do đó đã được loại bỏ để còn lại 14 thuộc
tính
Để tiến hành xử lý bộ dữ liệu đầu tiên cho đọc bộ dữ liệu và gán lại nhãn cho các cột
dữ liệu, thuận tiện cho việc thao tác

CODE:

url = "/content/heart.csv"
names = ['age','sex','cp','trestbps','chol','fbs','restecg','thalach','exang','oldpeak','slope','
ca','thal','target']
dataset = pd.read_csv(url,names=names)
dataset.head(1025)
 

Tổng kết thông tin và thống kê dữ liệu cho các cột và xem thông tin về Index, kiểu dữ
liệu và dung lượng của DataFrame qua kiểm tra ta thấy được dữ liệu trong data bao gồm

18
1025 dữ liệu và 14 cột trong đó có 13 cột dữ liệu thuộc kiểu dữ liệu int64 và 1 cột thuộc
kiểu float64
Tiếp đến là tiến hành kiểm tra dữ liệu ở các cột xem các giá trị trong cột có giá trị nào
trống không do đã qua quá trình sàng lọc dữ liệu trước đó từ bộ dữ liệu gốc có 76 cột dữ
liệu đã được qua xử lý và loại bỏ các cột dữ liệu thiếu khuyết và cột dữ liệu trống, với kết
quả cho ra là trong 14 cột dữ liệu không có dữ liệu rỗng.
CODE:

dataset[categorical].isnull().sum()

Khi đã tiến hành kiểm tra các ô giá trị rỗng bên trong bộ dữ liệu ta tiến hành bước xử

CODE:

# replace '?' values in workclass variable with `NaN`
df['age'].replace('?', np.NaN, inplace=True)
df['sex'].replace('?', np.NaN, inplace=True)
df['cp'].replace('?', np.NaN, inplace=True)
df['trestbps'].replace('?', np.NaN, inplace=True)
df['chol'].replace('?', np.NaN, inplace=True)
df['fbs'].replace('?', np.NaN, inplace=True)
df['restecg'].replace('?', np.NaN, inplace=True)
df['thalach'].replace('?', np.NaN, inplace=True)
df['exang'].replace('?', np.NaN, inplace=True)
df['oldpeak'].replace('?', np.NaN, inplace=True)
df['slope'].replace('?', np.NaN, inplace=True)
df['ca'].replace('?', np.NaN, inplace=True)
df['thal'].replace('?', np.NaN, inplace=True)
lý gán nhãn cho các ô dữ liệu bị trống nếu có

19
4.3 Chia dữ liệu
Sau khi đã qua kiểm tra và xử lý bộ dữ liệu ta sẽ thự c hiện chia bộ dữ liệu ra là m
2 phầ n bao gồ m 80% là dữ liệu train(dữ liệu đượ c dù ng cho má y họ c) và 20% dữ liệu
test(dữ liệu thử độ chính xá c).

Dataset

80% 20%
Training Test

Hình 10: sơ đồ chia dữ liệu hold_out

CODE:

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state 
= 42)

Sau khi chia cắt bộ dữ liệu thành 2 phần ta được 820 dòng dữ liệu được đưa vào máy
học và 205 dòng dữ liệu để test và dự đoán điểm chính xác của thuật toán, giờ ta đã có
được bộ dữ liệu train và bộ dữ liệu test ta tiếp tục đưa 2 phần dữ liệu vào kiểm tra lại giá trị
rỗng 1 lần nửa và chuẩn hóa dữ liệu trước khi được vào model để tiến hành máy học
Ngoài ra, do trong bài nghiên cứu của nhóm em thì có sử dụng 2 phương pháp chia
dữ liệu nên có thêm 1 cách chia dữ liệu theo kiểu k Fold với k = 10, chia bộ dữ liệu thành
10 phần bằng nhau

CODE:

kfold = model_selection.KFold(n_splits = 10, shuffle=True, random_state=seed) 20


cv_results = model_selection.cross_val_score(model, X_train, Y_train, cv=kfold,
scoring=scoring)
10% 10%
10% 10%

10% 10%
Dataset

10% 10%

10% 10%

hình 11: sơ đồ chia dữ liệu kiểu kFold

Sau khi đã có được bộ dữ liệu train và bộ dữ liệu test ta tiếp tục đưa 2 phần dữ liệu
vào kiểm tra lại giá trị rỗng 1 lần nửa và chuẩn hóa dữ liệu trước khi được vào model để
tiến hành máy học

CODE:

X_train = encoder.fit_transform(X_train)
X_test = encoder.transform(X_test)

4.4 Áp dụng thuật toán


Tiến hành khai báo thư viện của các thuật toán để tiến hành train model

CODE:

# tạo biến gán các thuật toán


gnb = GaussianNB()
knn = KNeighborsClassifier()
ld = LinearDiscriminantAnalysis()
lr = LogisticRegression()
# tiến hành đưa dữ liệu x_train vào huấn luyện model
gnb.fit(X_train, y_train) 21
knn.fit(X_train, y_train)
ld.fit(X_train, y_train)
lr.fit(X_train, y_train)
Data - Train
Logistic Naïve bayes

LDA KNN

Hình 12: sơ đồ mô tả đưa data vào các model thuật toán

4.5 Thực nghiệm

4.5.1 Thực nghiệm 1


Dựa vào bộ dữ liệu đã qua xử lý tiến hành đưa bộ dữ liệu vào thực nghiệm ở lần đầu
thực hiện trên bộ dữ liệu được chia 80% train và 20% test và áp dụng vào các thuật toán ta
nhận được kết quả như sau:
NaïveBayesGaussian và nhân được độ chính xác là xấp xỉ 85,37%  
KNeighborsClassifier thì ta nhận được điểm chính xác là 74,63%
LinearDiscriminantAnalysis nhận được điểm chính xác là 85,37%
Logistic Regression nhận được điểm chính xác là 86,34%

4.5.2 Thực nghiệm 2


Lần thực nghiệm tiếp theo sử dụng cách thức k-Fold để chia bộ dữ liệu thành 10 phần
và tiến hành lần lượt lấy từng phần làm dữ liệu test và những phần còn lại làm dữ liệu cho
máy học cả quá trình tiến hành 10 lần huấn luyện và test và thu về được độ chính xác ở các
thuật toán lần lượt là:
NaïveBayesGaussian là gần bằng 97%
LogisticRegression : cho độ chính xác là 98,5%

22
LinearDiscriminantAnalysis : cho độ chính xác là 81%
KNeighborsClassifier : cho độ chính xác là 55,6%

4.5.3 Thực nghiệm 3


Với độ chính xác từ việc huấn luyện các model thuật toán trên thì ta thấy được thuật
toán hồi quy logistic là thuật toán có độ chính xác trung bình cao nhất trong các thuật toán
đã được đưa vào máy học vì vậy nhóm em dùng 2 dòng dữ liệu ngẫu nhiên trong tập dữ
liệu ban đầu 1 có bệnh tim và 1 không bệnh tim để đưa vào test độ chính xác thực tế của
model

CODE:

a=[[52,1,0,125,212,0,1,168,0,1.0,2,2,3]]# không bệnh tim


#1 là có bệnh tim ,0 là không có bệnh tim
ketqua1 =lr.predict(a)
print(ketqua1)

OUTPUT:

Ketqua1 là : 0 là không mắc bệnh

Khi tiến hành lấy ngẫu nhiên 1 người không bị mắc bệnh tim trong tập dữ liệu ban
đầu có các thông số như sau : Tuổi = 52, giới tính = nam , loại đau ngực = 0, huyết áp lúc
nghỉ ngơi = 125mmHg, cholesterol trong huyết thanh = 212 mg/dl , đường huyết lúc đói >
120mg/dl = 0, kết quả điện tâm đồ lúc nghỉ = 1, nhịp tim tối đa = 168, đau thắt ngực do tập
thể dục = 0, ST ức chế do luyện tập so với khi nghỉ = 1, độ dốc của đoạn ST tập luyện = 2,
số lượng mạch chính = 2, thal = 3 đưa vào thử nghiệm dự đoán thực tế trên model thì ta

23
thấy được kết quả đưa ra là không mắc bệnh tim

Age = 52
Sex = 1
Cp = 0
Trestbps = 125
Chol = 212
Fbs = 0
Restecg = 1 Target = 0
Thalach = 168 ( khô ng có bệnh tim)
Exang = 0
Oldpeak = 1
Slope = 2
Ca = 2
Thal = 3

Hình 13: dự đoán 1 bệnh nhân ngẫu nhiên trong tập dữ liệu

Lần thứ 2 là lựa chọn ngẫu nhiên 1 người bị bệnh tim trong tập dữ liệu ban đầu để
đưa vào thử nghiệm thực tế với model

CODE:

b=[[59,1,1,140,221,0,1,164,1,0.0,2,0,2]]# có bệnh tim


#1 là có bệnh tim ,0 là không có bệnh tim
ketqua2 =lr.predict(b)
print(ketqua2)

OUTPUT:

Ketqua2 là : 1 là có mắc bệnh

Với lần thử nghiệm thực tế này thì em chọn người bị bệnh tim có các thông số như
sau: Tuổi = 59, giới tính = nam , loại đau ngực = 1, huyết áp lúc nghỉ ngơi = 140mmHg,
cholesterol trong huyết thanh = 221 mg/dl , đường huyết lúc đói > 120mg/dl = 0, kết quả
điện tâm đồ lúc nghỉ = 1, nhịp tim tối đa = 164, đau thắt ngực do tập thể dục = 1, ST ức
24
chế do luyện tập so với khi nghỉ = 0, độ dốc của đoạn ST tập luyện = 2, số lượng mạch
chính = 0, thal = 2 đưa vào thử nghiệm dự đoán thực tế trên model thì ta thấy được kết quả
đưa ra là mắc bệnh tim

Age = 59
Sex = 1
Cp = 1
Trestbps = 1 40
Chol = 2 21
Fbs = 0
Restecg = 1 T arget = 1
Thalach = 16 4 ( Có bệnh tim)
Exang = 1
Oldpeak = 0
Slope = 2
Ca = 0
Thal = 2

Hình 14: dự đoán 1 bệnh nhân ngẫu nhiên trong tập dữ liệu

4.4 Đánh giá và so sánh các tiêu chí


So sánh với cách chia thông thường là 8,2 thì thuật toán
LogisticRegression > LinearDiscriminantAnalysis > NaïveBayesGaussian > K neighbors
Classifier
 tương đương: 86,34% > 85,37%  > 85,37%  > 74,63%
Ta thấy được với phương pháp chia dữ liệu này thì thuật toán có kết quả dự đoán độ chính
xác cao nhất ở đây là thuật toán Logistic Regression với độ chính xác là 86,34%

25
Hình 15: so sánh thuật toán ( phương pháp holdout )

So sánh bằng cách chia dữ liệu theo kiểu kFold thì ta nhận được là
Logistic Regression > NaïveBayesGaussian > Linear Discriminant Analysis >
KNeighborsClassifier 
tương đương với: 98,5% > 97% > 81% > 55,6%
Còn ở với phương pháp chia thuật toán theo kiểu kfold thì ta nhận được Logistic
Regression vẫn là thuật toán có độ chính xác cao nhất trong 4 thuật toán được sử dụng
trong lần này là 98,5%

26
Hình 16: so sánh thuật toán ( phương pháp kfold )

Thông qua phần thực nghiệm và đánh giá trên ta nhận thấy được trong 4 thuật toán
được áp dụng vào machine learning thì Logistic Regression độ chính xác trung bình là cao
nhất 97,42% và khi đưa vào test thực tế với một dòng dữ liệu ngẫu nhiên trong tập dữ liệu
ban đầu thì đưa ra kết quả là chính xác
Vì vậy trong bộ dữ liệu này chúng ta nên sử dụng thuật toán Logistic Regression để
có thể đưa ra kết quả dự đoán chính xác tốt nhất có thể.

27
Chương V. Kết luận

Bài báo cáo của nhóm em có sử dụng cùng bộ dữ liệu với bài báo của Trần Đình
Toàn, Dương Thị Mộng Thùy Trường Đại học Công nghiệp Thực phẩm TP.HCM trong
bài báo trên thì tác giả sử dụng các thuật toán Naive Bayes Bernoulli với độ chính xác 83%
và Artificial Neural Network với độ chính xác là 87% ,
Trong bài nghiên cứu của nhóm em thực hiện trên cùng bộ dữ liệu bệnh tim đó và
được thực nghiệm bằng 2 phương pháp chạy khác nhau trên 4 thuật toán khác nhau bao
gồm GaussianNB, LogisticRegression, LinearDiscriminantAnalysis, KNeighborsClassifier
qua đó ta có thể nhận thấy được với bộ dữ liệu được chia khác nhau và với các phương
pháp huấn luyện khác nhau ta sẽ nhận được độ chính xác thay đổi ngoài ra tùy thuộc vào
thiết bị mạnh yếu khác nhau cũng sẽ cho ra thời gian dự đoán nhanh hay chậm khác nhau
nhưng ta có thể nhận ra được qua 2 cách chia dữ liệu ở trên là Holdout và k Fold thì ta thấy
được điểm chính xác trung bình của thuật toán Logistic Regression là cao nhất trong 4
thuật toán được đưa vào máy học có độ chính xác trung bình lên đến 97,42%.
Vì vậy với bộ dữ liệu này chúng ta nên sử dụng thuật toán Logistic Regression để có
thể nhận được kết quả dự đoán có tỉ lệ chính xác cao nhất ngoài ra có một số lưu ý với mỗi
bộ dữ liệu khác nhau thì các thuật toán áp dụng sẽ khác nhau nên chúng ta cần thử nghiệm
với nhiều thuật toán để đưa ra lựa chọn hợp lý nhất.

28
Tài liệu tham khảo

1. Bài giảng của giảng viên Đặng Như Phú, Hồ Ngọc Trung Kiên của trường đại học
Nguyễn Tất Thành.
2. Dataset: https://www.kaggle.com/datasets/johnsmith88/heart-disease-dataset
3. Tạp chí Khoa học Công nghệ và Thực phẩm 22 (3) (2022) 398-40
4. Machinelearningcoban.vn/.
5. Kỷ yếu Hội nghị KHCN Quốc gia lần thứ XII về Nghiên cứu cơ bản và ứng dụng
Công nghệ thông tin (FAIR); Huế, ngày 07-08/6
6. Link source code:
https://colab.research.google.com/drive/1ylGYou8cYaLxB5FIPpV10MRdd9O2C8sa
#scrollTo=9V_ZN54kLvi5
7. https://colab.research.google.com/drive/
1_HADEVWb3SLry109cVCWXeVF3VfVM2YD#scrollTo=kfphaCTtUKCm
1. bài báo ngoài nước:
https://drive.google.com/drive/folders/1x5oZDjGA7S6breqDeyoy2gApBflnxOtO
2. bài báo trong nước:
8. https://drive.google.com/drive/folders/1x5oZDjGA7S6breqDeyoy2gApBflnxOtO

29

You might also like