BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN ======***====== BÁO CÁO BÀI TẬP LỚN HỌC PHẦN TRÍ TUỆ NHÂN TẠO Đề tài TÌM HIỂU THUẬT TOÁN NAIVE BAYES VÀ ỨNG DỤNG TRONG BÀI TOÁ[.]
Trang 1BỘ CÔNG THƯƠNG TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN
======***======
BÁO CÁO BÀI TẬP LỚN HỌC PHẦN: TRÍ TUỆ NHÂN TẠO
Đề tài: TÌM HIỂU THUẬT TOÁN NAIVE BAYES VÀ ỨNG DỤNG TRONG BÀI TOÁN CHUẨN ĐOÁN BỆNH
TIỂU ĐƯỜNG
Hà Nội, năm 2023
Trang 2LỜI CẢM ƠN
“Đầu tiên, em xin gửi lời cảm ơn chân thành đến Trường Đại học Công Nghiệp
Hà Nội đã đưa môn học Trí tuệ nhân tạo vào chương trình giảng dạy Đặc biệt, em xin gửi lời cảm ơn đến giảng viên bộ môn – Cô Lê Thị Thủy đã dạy, truyền đạt những kiến thức quý báu cho chúng em trong suốt thời gian học tập vừa qua Trong thời gian tham gia lớp học Trí tuệ nhân tạo của cô, em đã có thêm cho mình nhiều kiến thức bổ ích, các kỹ năng mềm, tinh thần học tập hiệu quả và nghiêm túc Đây chắc chắn sẽ là những kiến thức quý báu, là hành trang để em có thể vững bước sau này
Bộ môn Trí tuệ nhân tạo là môn học thú vị, vô cùng bổ ích và là một nền tảng định hướng cho bước đi sau này của chúng em Đảm bảo cung cấp đủ kiến thức, gắn liền với nhu cầu thực tiễn của sinh viên Tuy nhiên, do vốn kiến thức còn nhiều hạn chế và khả năng tiếp thu thực tế còn nhiều bỡ ngỡ Mặc dù em đã cố gắng hết sức nhưng chắc chắn bài báo cáo khó có thể tránh khỏi những thiếu sót và nhiều chỗ còn chưa chính xác, kính mong cô xem xét và góp ý để bài báo cáo của em được hoàn thiện hơn.”
Nhóm sinh viên thực hiện
Nhóm 6
Trang 3LỜI MỞ ĐẦU
Hiện nay, Trí tuệ nhân tạo (AI) nổi lên như một bằng chứng của cuộc cách mạng cơng nghiệp 4.0 mở ra một thời kỳ mới với việc ứng dụng trí tuệ nhân tạo trong hầu hết các lĩnh vực trong đời sống, mang lại những thay đổi lớn trong xã hội, đặc biệt là trong kinh tế và khoa học ứng dụng Trí tuệ nhân tạo cĩ thể được định nghĩa như một ngành của khoa học máy tính liên quan đến việc tự động hĩa các hành vi thơng minh Trí tuệ nhân tạo là một bộ phận của khoa học máy tính và do nĩ phải được đặt trên những nguyên lý lý thuyết vững chắc, cĩ khả năng ứng dụng được của lĩnh vực này Ở thời điểm hiện tại, thuật ngữ này thường dùng để nĩi đến các máy tính cĩ mục đích khơng nhất định và ngành khoa học nghiên cứu về các lý thuyết và các ứng dụng của trí tuệ nhân tạo
Các ứng dụng của Machine Learning (ML) đã quá quen thuộc với con người: xe
tự hành của Google và Tesla, hệ thống tự tag khuơn mặt trên Facebook, hệ thống gợi ý sản phẩm của Amazon, hệ thống gợi ý phim của Netflix …, chỉ là một vài trong vơ vàn những ứng dụng của trí tuệ nhân tạo và cụ thể là ML
Xu hướng phát triển cơng nghệ thơng tin ngày càng tăng, song song với nĩ lượng
dữ liệu được sinh ra cũng ngày lớn Vì vậy nhu cầu để xử lý dữ liệu cũng lớn hơn, ML đang gĩp phần giải quyết vấn đề này Một trong những thuật tốn thường dùng trong
ML đĩ là thuật tốn tìm kiếm đường đi Ứng dụng của thuật tốn này được sử dụng rất nhiều và rộng rãi trong các bài tốn thực tế
Nội dung cuốn báo cáo này cung cấp cho người đọc những kiến thức chung nhất
về trí tuệ nhân tạo, cĩ một cái nhìn tổng quát về việc áp dụng thuật tốn Naive Bayes
và Ứng dụng thuật tốn Naive Bayes trong bài tốn chuẩn đốn bệnh tiểu đường Các vấn đề cụ thể trình bày trong cuốn báo cáo được chia thành 2 chương:
Chương 1: Kỹ thuật Nạve Bayes
Chương 2: Ứng dụng Nạve Bayes trong bài tốn chuẩn đốn bệnh tiểu đường
Trang 4MỤC LỤC
CHƯƠNG 1: KỸ THUẬT NAIVE BAYES 9
1.1 MỘT SỐ KHÁI NIỆM 9
1.2 ĐỊNH LÝ BAYES 9
1.3 PHÂN LỚP BẰNG KỸ THUẬT NAIVE BAYES 10
1.3.1 Dạng tổng quát 10
1.3.2 Phương pháp Naive Bayes trong trường hợp dữ liệu liên tục 11
1.3.3 Trường hợp xuất hiện xác suất bằng không 12
1.4 VÍ DỤ MINH HỌA 12
CHƯƠNG 2: ỨNG DỤNG NAIVE BAYES TRONG BÀI TOÁN CHUẨN ĐOÁN BỆNH TIỂU ĐƯỜNG 15
2.1 BÀI TOÁN 15
2.1.1 Phát biểu bài toán 15
2.1.2 Thuật toán áp dụng 15
2.2 CƠ SỞ DỮ LIỆU 15
2.3 CÀI ĐẶT 16
2.3.1 Thuật toán 17
2.3.2 Cài đặt 18
TỔNG KẾT 22
TÀI LIỆU THAM KHẢO 23
Trang 5Phụ lục hình ảnh
Hình 2.2.1 Mẫu tập dữ liệu trong file CSV 17
Hình 2.3.1 Đọc dữ liệu từ file CSV 18
Hình 2.3.2 Chia dữ liệu theo class 18
Hình 2.3.3 Chia tập dữ liệu thành Training và Testing 18
Hình 2.3.4 Tính giá trị trung bình và độ lệch chuẩn 19
Hình 2.3.5 Tính giá trị trung bình và độ lệch chuẩn cho tập dữ liệu 19
Hình 2.3.6 Tính phân phối Gauss 20
Hình 2.3.7 Dự đoán dữ liệu vào class nào 20
Hình 2.3.8 Hàm main 21
Hình 2.3.9 Kết quả sau khi chạy 21
Trang 6CHƯƠNG 1: Kỹ thuật Naive Bayes
1.1 Một số khái niệm
- Hiện tượng tất yếu Là những hiện tượng nếu được thực hiện ở điều kiện giống nhau thì cho kết quả giống nhau Hiện tượng tất yếu là đối tượng nghiên cứu của Vật lý, Hóa học
- Hiện tượng ngẫu nhiên là những hiện tượng dù đã được quan sát ở điều kiện giống nhau, nhưng kết quả có thể khác nhau Hiện tượng ngẫu nhiên là đối tượng nghiên cứu của xác suất học
- Không gian mẫu là tập hợp tất cả các kết quả có thể xảy ra được của hiện tượng ngẫu nhiên
- Biến cố là một tập con của không gian mẫu
biến cố A với điều kiện là có xảy ra biến cố B, thường được gọi là “xác suất của
P(B) là xác suất xảy ra sự kiện B Dễ dàng thấy rằng:
P ( A∨B)= P( A , B)
P(B)
khi đó với biến cố A liên quan được tính theo công thức:
P( A)=∑
i=1
n
❑P(A∨B i)P(B i)
1.2 Định lý Bayes
Định lý Bayes dựa trên định nghĩa về xác suất có điều kiện ở trên, được phát biểu dưới dạng công thức như sau:
P( A∨B)= P (B∨ A) P( A)
P(B)
Trong đó:
P ( A ) :Xác suất xảy ra A của riêng nó, không quan tâm đến B Nó được gọi là “tiên nghiệm” với hàm ý rằng nó không quan tâm tới bất kỳ thông
Trang 7 P (B ): Xác suất xảy ra B của riêng nó, không quan tâm đến A
P ( A|B): xác suất xảy ra biến cố A với điều kiện xảy ra biến cố B
P( A)=∑
i=1
n
P(A∨B i)P (B i)
Giả sử {A1, A2, A3, … A n} là hệ đầy đủ và B là một sự kiện bất kì có thể xảy ra trong phép thử Khi đó ta có công thức Bayes:
P(A k|B)=P(A k)P¿ ¿
1.3 Phân lớp bằng kỹ thuật Naive Bayes
1.3.1 Dạng tổng quát
Có thể thấy y ∈C Cho một mẫu dữ liệu mới z ∈ R m và z được biểu diễn bằng
z (z1, z2,… , z m) Hãy xác định lớp của z
- Để xác định được lớp của z, ta cần tính được xác suất xảy ra khả năng z được
lớp nào có xác suất xảy ra cao nhất
xác suất để z thuộc vào lớp c i phải là xác suất có điều kiện P(c i∨z1, z2,… , z m) và
P(c i∨z)=P(z∨c i)× P(c i)
P ( z )
- Do các thuộc tính của z là độc lập và có điều kiện đối với các thuộc tính khác nên:
(2) (1)
Trang 8P(z∨c i)=∏
j=1
m
❑P(z j∨c i)
- Do đó (1) trở thành:
P(c i∨z)=
∏
j=1
m
❑P(z j∨c i)× P(c i)
P (z)
c k=argmax P(c i∨z)c i ∈ C=argmax c i ∈C∏
j=1
m
❑P(z j∨c i)× P(c i)
P (z)
c k=argmax c i ∈C∏
j =1
m
❑P(z j∨c i)× P(c i)
j=1
m
❑P(z j∨c i)× P(c i) với từng lớp c i ∈{c1, c2, … , c q} Lớp c inào cho giá trị
Bayes gồm hai bước:
∏
j=1
m
❑P(z j∨c i)× P(c i)
c k=argmax c i ∈C∏
j =1
m
❑P(z j∨c i)× P(c i)
(3)
(4)
Trang 91.3.2 Phương pháp Naive Bayes trong trường hợp dữ liệu liên tục
pháp rời rạc hóa Nếu không rời rạc hóa dữ liệu, thay vì xác suất, ta sử dụng hàm mật
tính liên tục tuân theo phân bố Gauss và phương pháp lúc này được gọi là Gass Naive Bayes
giá trị của A trong lớp c i (với N i là số mẫu thuộc lớp c i và lớp y i là lớp của mẫu x i):
μ i= 1
N i ∑
x i : y i=c i
❑
❑x i
σ i2
N i−1 ∑
x i : y i=c i
❑
❑(x¿¿i−μ i)2¿
bằng:
P(x∨c i)= 1
√2 π σ i2e
2 σi2
1.3.3 Trường hợp xuất hiện xác suất bằng không
- Xét một mẫu dữ liệu cần phân lớp x(x1, x2, … , x m) Xét giá trị x j trên thuộc tính j
nhiên P(c i)=0 Điều này kéo theo P(c i)×∏
j=1
m
❑P(c i)=0
cho giá trị 0 đã tính được ở trên
- Ta giả sử số mẫu dữ liệu trong lớp cần xét là lớn và do đó nếu ta bổ sung 1 mẫu
dữ liệu cho mỗi tập thuộc tính thì việc này sẽ không ảnh hưởng nhiều tới xác suất đã tính
1.4 Ví dụ minh họa
Cho bảng dữ liệu huấn luyện gồm 20 mẫu về việc có (hay không) mắc bệnh tiểu đường như trong bảng, dựa vào các quan sát về: Số lần mang thai (Preg), Nồng độ glucose trong huyết tương (Plas), Huyết áp tâm trương (Pres), Độ dày nếp gấp da cơ tam đầu (Skin), Insulin huyết thanh trong 2 giờ (Test), Chỉ số khối lượng cơ thể (Mass), Chức năng phả hệ bệnh tiểu đường (Pedi), Tuổi (Age), Thuộc tính lớp (Class)
(1)
(2)
Trang 10ID Preg Plas Pres Skin Test Mass Pedi Age Class
Trang 111 6 148 72 35 0 33.6 0.627 50 1
Bảng dữ liệu huấn luyện Cho mẫu dữ liệu cần phân lớp là X Xác định xem một bệnh nhân có dữ liệu như trên có mắc bệnh tiểu đường hay không
Thấy số mẫu dữ liệu n = 20, số thuộc tính của dữ liệu m = 8 (do không xét thuộc tính ID), thuộc tính lớp là Class với các lớp C = {0,1} (2 lớp) Quá trình xác định lớp cho dữ liệu X trải qua hai bước:
- Bước 1: Xét các thuộc tính Preg, Plas, Pres, Skin, Test, Mass, Pedi, Age với các
giá trị liên tục Khi đó, ta phân đoạn các giá trị của các thuộc tính theo từng lớp Với mỗi lớp c i (c 1 = 0; c 2 = 1), ta tính μ i là giá trị trung bình và σ i2 là phương sai
lớp y i là lớp của mẫu x i):
μ i= 1
N i ∑
x i : y i=c i
❑
❑x i
σ i2= 1
N i−1 ∑
x i : y i=c i
❑
❑(x¿¿i−μ i)2¿
Sau khi thực hiện tính toán, ta có bảng sau:
Trang 12Preg 4.375 14.2679 4.75 11.841
- Bước 2:
bằng:
P(x∨c i)= 1
√2 π σ i2 e
2 σi2
Sau khi thực hiện tính toán, ta có bảng sau:
Do đó,
P(x|c 1 ) = 0.0499*7.694x10-5*0.0039*0.0199*3.883x10-4*0.0108*0.7087*0.0046
P(x|c 2 ) = 0.0541*0.0079*0.0026*0.0204*0.0014*0.0143*0.6885*0.0174
= 5.4368x10-15
Trang 13CHƯƠNG 2: Ứng dụng Naive Bayes trong bài toán
chuẩn đoán bệnh tiểu đường
2.1 Bài toán
2.1.1 Phát biểu bài toán
Bài toán chuẩn đoán bệnh tiểu đường (có bị bệnh hay không) sử dụng phương pháp Naive Bayes để phân ra hai lớp là một người có bị bệnh tiểu đường hay không bị bệnh tiểu đường
2.1.2 Thuật toán áp dụng
Bài toán áp dụng thuật toán Naive Bayes trong trường hợp dữ liệu liên tục
tính xác suất cho mỗi thuộc tính phân chia theo class để xác định dữ liệu cần kiểm tra thuộc class nào, có mắc bệnh hay không
Bài toán được làm bằng ngôn ngữ lập trình Python – một ngôn ngữ lập trình bậc cao cho các mục đích lập trình đa năng Python có bộ thư viện chuẩn rộng lớn – đó là một trong những điểm lớn mạnh của ngôn ngữ lập trình này Trong bài toán này chúng
em thực hiện dựa theo công thức phân phối Gauss để giải quyết
2.2 Cơ sở dữ liệu
Cơ sở dữ liệu được lấy từ website kaggle Được đóng góp bởi một thành viên có tên là KUMAR Cơ sở dữ liệu này mô tả hồ sơ y tế của hơn 700 bệnh nhân có hoặc không có nguy cơ mắc bệnh tiểu đường trong vòng 5 năm
Thông tin, ký hiệu các thuộc tính của các bản ghi trong cơ sở dữ liệu:
1 Số lần mang thai
2 Nồng độ glucose trong huyết tương sau 2 giờ trong xét nghiệm dung nạp glucose qua đường uống
3 Huyết áp tâm trương (mm Hg)
4 Độ dày nếp gấp da cơ tam đầu (mm)
5 Insulin huyết thanh trong 2 giờ (mu U / ml)
6 Chỉ số khối lượng cơ thể (trọng lượng tính bằng kg / (chiều cao tính bằng m)2)
7 Chức năng phả hệ bệnh tiểu đường
8 Tuổi (năm)
Trang 149 Lớp (0 – Không bệnh, 1 – Có bệnh).
Tập dữ liệu được lưu dưới dạng file CSV trong đó các cột tương ứng với các thuộc tính trên
Hình 2.2.1 Mẫu tập dữ liệu trong file CSV
2.3 Cài đặt
2.3.1 Thuật toán
- Đầu vào:
dữ liệu được sử dụng để Test
- Đầu ra:
- Phương pháp sử dụng phân phối Gauss với x là trường dữ liệu tương ứng cần chuẩn đoán, mean là giá trị trung bình, stdev là độ lệch chuẩn
def calculate_prob(x, mean, stdev):
exponent = math.exp(-(math.pow(x - mean, 2) / (2 * math.pow(stdev, 2)))) return (1 / (math.sqrt(2 * math.pi) * stdev)) * exponent
Trang 152.3.2 Cài đặt
- Đọc dữ liệu từ file CSV
Hình 2.3.2 Đọc dữ liệu từ file CSV
- Phân chia chia tập dữ liệu theo class (class 0 và class 1)
Hình 2.3.3 Chia dữ liệu theo class
- Phân chia tập dữ liệu thành Training và Testing
Hình 2.3.4 Chia tập dữ liệu thành Training và Testing
Trang 16- Tính giá trị trung bình và độ lệch chuẩn cho từng thuộc tính.
Hình 2.3.5 Tính giá trị trung bình và độ lệch chuẩn
- Sử dụng 2 hàm ở trên để tính giá trị trung bình và độ lệch chuẩn của tất cả các
bộ dữ liệu trong tập dữ liệu
Hình 2.3.6 Tính giá trị trung bình và độ lệch chuẩn cho tập dữ liệu
- Tính phân phối Gauss của biến liên tục và tính xác suất cho mỗi thuộc tính được chia theo class (0 và 1)
Trang 17Hình 2.3.7 Tính phân phối Gauss
- Dự đoán tập dữ liệu thuộc class nào (0 và 1)
Hình 2.3.8 Dự đoán dữ liệu vào class nào
- Hàm main thực hiện xử lý
Trang 18Hình 2.3.9 Hàm main
- Kết quả sau khi chạy
Hình 2.3.10 Kết quả sau khi chạy
Trang 19TỔNG KẾT
Naive Bayes là một thuật toán dựa trên định lý Bayes về lý thuyết xác suất để đưa ra các phán đoán cũng như phân loại dữ liệu dựa trên các dữ liệu được quan sát và thống kê Naive Bayes là một trong những thuật toán được ứng dụng rất nhiều trong các lĩnh vực Machine Learning (ML) dùng để đưa các dự đoán chính xác nhất dựa trên một tập dữ liệu đã được thu thập, vì nó khá dễ hiểu và độ chính xác cao
Chúng ta có thể ứng dụng Naive Bayes để tính tỷ lệ xác suất với rất nhiều các dạng bài toán khác nhau, với dữ liệu càng nhiều thì độ chính xác của thuật toán sẽ càng cao, và khi dữ liệu thay đổi thì kết quả cũng thay đổi theo
Trang 20TÀI LIỆU THAM KHẢO
[1] Trường Đại học Công nghiệp Hà Nội, Giáo trình trí tuệ nhân tạo
[4] Đề cương bài giảng “Bo sung hoc may co ban”