CHƯƠNG I: TRÌNH BÀY BÀI TOÁN1.1 Giới Thiệu Bài Toán Bài toán nghiên cứu tập trung vào việc sử dụng thuật toán K-Nearest Neighbors KNN để phân loại dữ liệu về sức khỏe của bệnh nhân và xá
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠOTRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT HƯNG YÊN
BÀI TẬP LỚN MÔN TRÍ TUỆ NHÂN TẠO THUẬT TOÁN K-NEARESR-NEIGHBOR (KNN)
NGÀNH: CÔNG NGHỆ THÔNG TIN
CHUYÊN NGÀNH: KHOA HỌC MÁY TÍNH
SINH VIÊN: Trần Quang Đức MSV:10121793 SINH VIÊN: Lý Văn Linh MSV:10121865
MÃ LỚP: 12421TN GIẢNG VIÊN HƯỚNG DẪN: TS Nguyễn Văn Hậu
HƯNG YÊN – 2023
Trang 2NHẬN XÉT Nhận xét của giảng viên hướng dẫn:
GIẢNG VIÊN HƯỚNG DẪN
(Ký và ghi rõ họ tên)
Trang 3LỜI CAM ĐOAN
Nhóm 8 chúng em xin cam đoan bài tâp lớn “Thuật toán Neighbor (KNN)” là kết quả thực hiện nhóm dưới sự hướng dẫn của thầyNguyễn Văn Hậu
K-Nearest-Những phần sử dụng tài liệu tham khảo trong Bài tập lớn đã được nêu rõtrong phần tài liệu tham khảo Các kết quả trình bày trong Bài tập lớn và chươngtrình xây dựng được hoàn toàn là kết quả do bản thân nhóm chúng em thực hiện.Nếu vi phạm lời cam đoan này, nhóm chúng em xin chịu hoàn toàn tráchnhiệm trước khoa và nhà trường
Xin chân thành cảm ơn!
Hưng Yên, ngày … tháng … năm 2023
SINH VIÊN
Trang 4LỜI CẢM ƠN
Để có thể hoàn thành Bài tập lớn này, lời đầu tiên Nhóm 8 chúng em xinphép gửi lời cảm ơn tới bộ môn Khoa học máy tính, Khoa Công nghệ thông tin– Trường Đại học Sư phạm Kỹ thuật Hưng Yên đã tạo điều kiện thuận lợi chonhóm chúng em thực hiện Bài tập lớn môn học này
Đặc biệt chúng em xin chân thành cảm ơn Thầy Nguyễn Văn Hậu đã rấttận tình hướng dẫn, chỉ bảo nhóm trong suốt thời gian thực hiện Bài tập lớn vừaqua
Chúng em cũng xin chân thành cảm ơn tất cả các Thầy, các Cô trongTrường đã tận tình giảng dạy, trang bị cho nhóm chúng em những kiến thức cầnthiết, quý báu để giúp nhóm thực hiện được Bài tập lớn này
Mặc dù nhóm đã có cố gắng, nhưng với trình độ còn hạn chế, trong quátrình thực hiện đề tài không tránh khỏi những thiếu sót Chúng em hi vọng sẽnhận được những ý kiến nhận xét, góp ý của các Thầy giáo, Cô giáo về nhữngkết quả triển khai trong Bài tập lớn
Chúng em xin trân trọng cảm ơn!
Trang 5MỤC LỤC
MỤC LỤC 5
DANH SÁCH HÌNH VẼ 6
DANH SÁCH BẢNG BIỂU 7
CHƯƠNG I: TRÌNH BÀY BÀI TOÁN 8
1.1 Giới Thiệu Bài Toán 8
1.2 Ngữ Cảnh Và Ý Nghĩa Của Bài Toán 8
1.3 Các Yếu Tố Nghiên Cứu 8
1.4 Mục Tiêu và Ứng Dụng 8
CHƯƠNG II: TRÌNH BÀY VỀ MÔ HÌNH THUẬT TOÁN 9
2.1 Thuật toán K-Nearest Neighbors 9
2.1.1 Định nghĩa 9
2.1.2 Quy trình làm việc của thuật toán KNN 9
2.1.3 Ví dụ minh họa 10
2.1.4 Ví dụ về nhiễu 13
2.1.5 Ưu điểm, nhược điểm của thuật toán 14
2.2 Cách tìm k và Khoảng cách 14
2.2.1 Cách tìm k 14
2.2.2 Cách tìm Khoảng cách 15
CHƯƠNG III: ÁP DỤNG MÔ HÌNH/THUẬT TOÁN KNN ĐỂ GIẢI QUYẾT BÀI TOÁN 16
3.1 Bộ dữ liệu về Diabetes 16
3.1.1 Giới thiệu 16
3.1.2 Tiền xử lý dữ liệu 17
3.1.3 Thực hiện chuẩn đoán 17
CHƯƠNG IV: KẾT LUẬN 23
4.1 Các Kết Quả Đạt Được 23
4.2 Những hạn chế và Hướng Phát Triển 23
4.2.1 Những Hạn chế 23
4.2.2 Hướng phát triển 23
TÀI LIỆU THAM KHẢO 25
Trang 6DANH SÁCH HÌNH
Hình 2 1 Thuật toán KNN 9
Hình 2 2 Bản đồ minh họa Knn nhiễu với k=1 13
Y Hình 3 1 Khai báo các thư viện cần thiết 19
Hình 3 2 Hình hiển thị dữ liệu và chia tập dữ liệu mẫu 20
Hình 3 3 Hình load dữ liệu test set 20
Hình 3 4 Xây dựng hàm tính khoảng cách và thuật toá 21
Hình 3 5 Kết quả của việc áp dụng thuật toán KNN 22
Hình 3 6 Kết quả của việc chọn k từ khoảng 1 đến 180 23
Trang 7DANH SÁCH BẢNG BIBảng 2 1 Tập dữ liệu huấn luyện (training set) 10 Bảng 2 2 Bảng sau khi tính khoảng cách 13
Y
Bảng 3 1 Mô tả dữ liệu 17
Trang 8CHƯƠNG I: TRÌNH BÀY BÀI TOÁN
1.1 Giới Thiệu Bài Toán
Bài toán nghiên cứu tập trung vào việc sử dụng thuật toán K-Nearest Neighbors (KNN) để phân loại dữ liệu về sức khỏe của bệnh nhân và xác định liệu họ mắc bệnh tiểu đường hay không Thông qua việc phân tích các yếu tố như số lần mang thai, huyết áp, độ dày da trích, insulin, chỉ số BMI, hàm lượng đường trong huyết tương, tuổi và kết quả xét nghiệm tiểu đường, mục tiêu là xây dựng một mô hình chính xác vàhiệu quả trong việc dự đoán bệnh lý
1.2 Ngữ Cảnh Và Ý Nghĩa Của Bài Toán
Bệnh tiểu đường là một vấn đề sức khỏe nghiêm trọng trên khắp thế giới, và khả năng phát hiện sớm có thể ảnh hưởng đến quy trình điều trị và chăm sóc bệnh nhân Việc sử dụng KNN để phân loại dữ liệu sức khỏe của bệnh nhân có thể mang lại kết quả chính xác và hữu ích, giúp bác sĩ và nhà nghiên cứu y tế đưa ra quyết định thông minh về điều trị và chăm sóc sức khỏe
1.3 Các Yếu Tố Nghiên Cứu
Bài toán đặt ra các yếu tố quan trọng như số lần mang thai, huyết áp, độ dày da trích, insulin, chỉ số BMI, hàm lượng đường trong huyết tương, tuổi và kết quả xét nghiệm tiểu đường Mỗi yếu tố này đóng vai trò quan trọng trong việc xác định khả năng mắc bệnh tiểu đường của bệnh nhân
1.4 Mục Tiêu và Ứng Dụng
Mục tiêu của nghiên cứu là xây dựng một mô hình KNN hiệu quả để phân loại bệnh nhân và đưa ra dự đoán chính xác về tình trạng tiểu đường Kết quả của nghiên cứu này có thể hỗ trợ quyết định điều trị và chăm sóc sức khỏe, giúp tối ưu hóa quá trình chẩn đoán và giảm nguy cơ phát triển bệnh tiểu đường
Trang 9CHƯƠNG II: TRÌNH BÀY VỀ MÔ HÌNH THUẬT TOÁN2.1 Thuật toán K-Nearest Neighbors
2.1.1 Định nghĩa
Thuật toán K-Nearest Neighbors (KNN) là một phương pháp học máy giám sát, tức là
nó sử dụng dữ liệu huấn luyện có nhãn để dự đoán hoặc phân loại dữ liệu mới Nóđược coi là một thuật toán đơn giản và linh hoạt, có khả năng áp dụng cho cả bài toánphân loại (Classification) và hồi quy (Regression) Một đặc điểm quan trọng của KNN
là nó thuộc loại "lazy learning," nghĩa là nó không xây dựng một mô hình từ dữ liệuhuấn luyện ngay từ đầu Thay vào đó, nó giữ lại toàn bộ tập dữ liệu huấn luyện và thựchiện tính toán khi cần dự đoán kết quả cho dữ liệu mới Nó còn được gọi là thuật toánInstance-based hoặc Memory-based learning vì nó lưu trữ và sử dụng trực tiếp các ví
dụ trong quá trình dự đoán
Hình 2 1 Thuật toán KNN 2.1.2 Quy trình làm việc của thuật toán KNN
Bước 1: Xác định tham số K= số láng giềng gần nhất
Bước 2: Tính khoảng cách giữa đối tượng cần phân lớp và tất cả đối tượngtrong tập dữ liệu training
Trang 10 Bước 3: Sắp xếp khoảng cách theo thứ tự tăng dần và chọn K láng giềng gầnnhất với đối tượng cần phân lớp.
Bước 4: Lấy các lớp của K láng giềng gần nhất
Bước 5: Dựa vào phần lớn các lớp của K để xác định lớp cho đối tượng cầnphân lớp
2.1.3 Ví dụ minh họa
Trong ví dụ này, chúng ta đang đối mặt với bài toán phân loại thể loại phim (phim hành động hoặc phim tình cảm) dựa trên số lượng cú đá và số lượng nụ hôn trong phim Chúng ta có một tập dữ liệu huấn luyện (training set) với các thông tin sau:
Tên phim Số lượng cú đá Số lượng nụ hôn Loại phim
Bảng 2 1 Tập dữ liệu huấn luyện (training set)
Để xác định loại phim của bộ phim chưa xác định, chúng ta sử dụng Euclidean Distance Mỗi phim được biểu diễn như một điểm trong không gian 2 chiều, với số lượng cú đá là tọa độ x và số lượng nụ hôn là tọa độ y
Trang 11Euclidean distance là việc chúng ta tìm khoảng cách giữa hai điểm trong không gian,
ví dụ cho 2 điểm P1(x1,y1) và P2(x2,y2) thì Euclidean distance sẽ được tính theo côngthức:
Để áp dụng trong Euclidean distance vào trong trường hợp này, chúng ta sẽ coi mỗi phim sẽ được biểu diễn bởi một điểm trong tọa độ Oxy với số lượng cú đá là tọa độ x
và số lượng nụ hôn là tọa độ y Điều đó có nghĩa là phim California Man sẽ được biểu diễn bởi điểm (3, 104); phim He isn't really into dudes sẽ được biểu diễn bởi điểm (2, 100),
Gọi là d Euclidean distance, chúng ta tính khoảng cách giữa phim chưa xác định và
từng phim trong tập huấn luyện:
Thì:
Trang 12Sau khi tính toán, chúng ta sẽ được bảng sau:
Trang 13Xác Định Thể Loại Phim
Giả sử chúng ta chọn =3, tức là chúng ta sẽ xem xét 3 láng giềng gần nhất Trongk
trường hợp này, láng giềng gần nhất là California Man, He isn't really into dudes, vàBeautiful Woman
Với 3 láng giềng này, chúng ta xác định loại phim cho bộ phim chưa xác định dựa trênphần lớn loại phim của các láng giềng Vì cả ba đều thuộc thể loại Tình cảm, chúng ta
có thể kết luận rằng bộ phim chưa xác định cũng thuộc thể loại Tình cảm
Đây là cách thuật toán K-Nearest Neighbors (KNN) và Euclidean Distance được ápdụng để phân loại thể loại phim cho bộ phim chưa xác định trong tập dữ liệu huấnluyện
2.1.4 Ví dụ về nhiễu
Hình 2 2 Bản đồ minh họa Knn nhiễu với k=1
Trang 14Hình trên đây là bài toán Phân lớp với 3 lớp: Đỏ, Lam, Lục Mỗi điểm dữ liệu mới(test data point) sẽ được gán nhãn theo màu của điểm mà nó thuộc về Trong hình này,
có một vài vùng nhỏ xem lẫn vào các vùng lớn hơn khác màu Ví dụ có một điểm màuLục ở gần góc 11 giờ nằm giữa hai vùng lớn với nhiều dữ liệu màu Đỏ và Lam Điểmnày rất có thể là nhiễu Dẫn đến nếu dữ liệu test rơi vào vùng này sẽ có nhiều khả năngcho kết quả không chính xác
2.1.5 Ưu điểm, nhược điểm của thuật toán
KNN nhiễu dễ đưa ra kết quả không chính xác khi k nhỏ
Khi k lớn, thời gian lưu training set tăng lên nhiều sẽ mất nhiều thời giantính toán, dẫn đến hiệu suất không tốt
Trang 15 K quá lớn: thuật toán sẽ xem xét rất nhiều điểm dữ liệu khi phân loại Dẫn đến
việc vùng lân cận của điểm cần phân loại bao gồm các điểm từ nhiều lớp khácnhau, làm giảm độ chính xác của việc phân loại
==> Vì vậy, việc chọn giá trị k là một bước quan trọng trong việc tối ưu hóa hiệu suất của thuật toán k-NN Một cách tiếp cận thông thường là sử dụng phương pháp thử và sai hoặc phương pháp kiểm định chéo (cross-validation) để tìm giá trị k tối ưu.
2.2.2 Cách tìm Khoảng cách
Chi tiết cách tìm Khoảng cách:
Trong KNN, để đo lường sự tương đồng hoặc khác biệt giữa các điểm dữ liệu, chúng
ta sử dụng các phương pháp tính khoảng cách Mặc dù có nhiều cách tính khoảng cáchkhác nhau, một trong những phương pháp phổ biến nhất là Euclidean distance
Khoảng cách Euclidean là việc chúng ta tìm khoảng cách giữa hai điểm trong không
gian, ví dụ cho 2 điểm P1(x1,y1) và P2(x2,y2) thì Euclidean distance sẽ được tính theocông thức:
Tổng quát hơn, giả sử mẫu có giá trị thuộc tính là <a1(x), a2(x), a3(x), , an(x) > ,
thuộc tính là số thực Khoảng cách giữa hai mẫu xi và xj là khoảng cách Euclidean:
Trang 16CHƯƠNG III: ÁP DỤNG MÔ HÌNH/THUẬT TOÁN KNN ĐỂ GIẢI
QUYẾT BÀI TOÁN
dự đoán về các trường hợp thử nghiệm trong tệp CSV Tệp phải có cấu trúc tương tự như tệp Gửi mẫu
Bộ dữ liệu bao gồm 576 bản ghi của bệnh nhân với 2 loại nhãn 0 (không bị tiểu đường) và 1(bị tiểu đường) Với 8 đặc điểm là 'Pregnancies', 'Glucose',
'BloodPressure', 'SkinThickness', 'Insulin', 'BMI', 'DiabetesPedigreeFunction', 'Age' Dựa trên bộ dữ liệu này bọn em sẽ phát triển một mô hình phân biệt tuyến tính để phânbiệt bệnh nhân bị tiểu đường hoặc không bị tiểu đường
Pregnancies Số lần mang thai
Glucose Nồng độ glucose trong huyết tương sau 2 giờ trong xét
nghiệm dung nạp glucose qua đường uống
BloodPressure Huyết áp (mm Hg)
SkinThickness Độ dày nếp gấp da cơ bắp tay (mm)
Insulin Huyết thanh sau 2 giờ (mu U/ml)
DiabetesPedigreeFunction Chỉ số hàm Diabetes pedigree
Trang 17Age Tuổi (năm)
Bảng 3 1 Mô tả dữ liệu 3.1.2 Tiền xử lý dữ liệu
Chúng tôi sử dụng bộ dữ liệu “Diabetes” được thu thập từ Viện Quốc gia về Bệnh tiểuđường và Tiêu hóa và Bệnh thận là một bộ phận của Viện Y tế Quốc gia Hoa Kỳ vàđược chia sẻ vào 9-5-1990 bởi Vincent Sigillito Bộ dữ liệu được đưa ra với mục tiêu
là để dự đoán dựa trên các phép đo chẩn đoán xem một bệnh nhân có bị tiểu đườnghay không
Các thuộc tính của dữ liệu được chọn ra từ một bộ dữ liệu lớn hơn dựa trên một sốràng buộc, cụ thể tất cả bệnh nhân ở đây đều là nữ từ 21 tuổi trở lên và có gốc gác từpima Ấn Độ
Do một số yếu tố khách quan, bộ dữ liệu có một số thuộc tính có các giá trị lỗi như chỉ
số Glucose, BloodPressure, SkinThickness, Insulin và BMI tồn tại giá trị 0 (các thuộctính này
phải lớn hơn 0) nên chúng tôi đã tiến hành lọc dữ liệu bằng phần mềm excel và loại bỏnhững đối tượng có dữ liệu bị sai
Từ 768 đối tượng ban đầu được khảo sát, chúng tôi đã loại bỏ 376 đối tượng có dữ liệusai đã lọc ra được bộ dữ liệu mới gồm 392 đối tượng còn lại
Trong bộ dữ liệu mới đó, 130 đối tượng được chuẩn đoán bị tiểu đường chiếm 33,16%,trong 130 đối tượng được chẩn đoán mắc bệnh tiểu đường đó, họ có trung bình 4.46lần mang thai, 145mm nồng độ glucose trong huyết tương sau 2 giờ trong xét nghiệmdung nạp glucose qua đường uống, 74 huyết áp, 32 mm độ dày nếp gấp da cơ bắp tay,
206 U/ml Isulin tiết ra sau 2 giờ, 36 BMI, 0.62 chỉ số hàm Diabetes pedigree, và trungbình mắc bệnh ở tuổi 36
3.1.3 Thực hiện chuẩn đoán
Trong phần này, chúng ta sẽ tách 768 dữ liệu trong Diabetes dataset ra thành hai phần, gọi là training set và test set Thuật toán sẽ dựa vào thông tin ở training set để dự đoán xem mỗi dữ liệu trong test set tương ứng với loại bệnh nhân nào Dữ liệu được chuẩn đoán này sẽ được đối chiếu với bộ dữ liệu của bệnh nhân thật với bộ dữ liệu trong test set để đánh giá hiệu quả của KNN
- Bước 1: Khai báo các thư viện cần thiết
Trang 18Hình 3 1 Khai báo các thư viện cần thiết
-Bước 2: Load dữ liệu và chia tập dữ liệu mẫu
Trang 19Hình 3 2 Hình hiển thị dữ liệu và chia tập dữ liệu mẫu
- Bước 3: Load dữ liệu test set
Hình 3 3 Hình load dữ liệu test set
Trang 20- Bước 4: KNN dự đoán
+ Xây dựng hàm tính khoảng cách Euclidean và xây dựng thuật toán neighbors
K-nearnest-Hình 3 4 Xây dựng hàm tính khoảng cách và thuật toá
+ Kết quả của việc thực hiện chuẩn đoán với k = 100, tức là với mỗi điểm dữ liệu test ta chỉ xét 100 điểm dữ liệu training gần nhất và lấy nhãn cả điểm đó để dự đoán cho điểm dữ liệu test :
Trang 21Hình 3 5 Kết quả của việc áp dụng thuật toán KNN
- Bước 5: Đánh giá
Trang 22Để đánh giá độ chính xác của thuật toán KNN, em xây dựng hàm tính độ chính xác của thuật toán được đưa vào vòng lặp for với i từ 1 đến 180 và chúng ta xem việc chọn k bằng mấy thì độ chính xác của thuật toán sẽ cao nhất và hiệu suất của thuật toán sẽ được tối ưu nhất
Hình 3 6 Kết quả của việc chọn k từ khoảng 1 đến 180
Trang 23CHƯƠNG IV: KẾT LUẬN
4.1 Các Kết Quả Đạt Được
Nhóm đã thực hiện quá trình phân lớp dữ liệu bằng dữ liệu bằng ngôn ngữ python dựa trên bộ dữ liệu Diabetes được tổng hợp từ Viện Quốc gia về Tiểu đường, Tiêu hóa và Bệnh thận Hoa Kỳ Mục tiêu khi thực hiện chính là để đánh giá tính đúng đắn của bộ
dữ liệu khi dựa trên các yếu tố bao gồm Pregnancies, Glucose, Blood Pressure, Skin Thickness, Insullin, BMI, Diabetes Pedigree Function, Age để cho ra kết quả dự đoán một người nào đó có mắc bệnh Đái tháo đường hay không
Quá trình phân lớp dựa trên mô hình K-nearnest-neighbors Sau khi thực hiện quá trình phân lớp, nhóm tiến đến bước phân tích đánh giá bằng hàm score và xây dựng hàm đo độ mất mát của thuật toán
Cuối cùng sau quá trình thực hiện đề tài nhóm đã đạt được kết quả ban đầu đề ra là dự đoán được dựa số người mắc bệnh tiểu đường dựa trên số liệu của các yếu tố trong bảng dữ liệu là 130 người và số liệu trung bình của các yếu tố lần lượt là 4.46 lần mang thai, 145mm nồng độ glucose trong huyết tương sau 2 giờ trong xét nghiệm dung nạp glucose qua đường uống, 74 huyết áp, 32 mm độ dày nếp gấp da cơ bắp tay,
206 U/ml Isulin tiết ra sau 2 giờ, 36 BMI, 0.62 chỉ số hàm Diabetes pedigree, và trung bình mắc bệnh ở tuổi 36 Negative của phương pháp Random Forest đưa ra lần lượt là 79.4% - 69.7%
4.2 Những hạn chế và Hướng Phát Triển
4.2.1 Những Hạn chế
Bộ dữ liệu được thu thập dựa trên các bệnh nhân thuộc một bộ phận nhỏ là các bệnh nhân ở đây đều là nữ từ 21 tuổi trở lên và có gốc gác từ pima Ấn Độ Điều này làm cho bộ dữ liệu có thể sẽ có một vài thiếu sót so với thực tế và làm cho quá trình phân tích chưa phản ánh được hoàn toàn sát với thực tế cuộc sống Trong bộ dữ liệu chỉ bao gồm một vài yếu tố chủ yếu để xác định được bệnh Đái tháo đường, có thể trên thực tế
sẽ có một vài các yếu tố khác nằm ngoài bộ dữ liệu Những bệnh nhân được thu thập
dữ liệu đều là nữ từ độ tuổi 21 trở lên khiến cho việc căn bệnh Đái tháo đường đang ngày càng trẻ hóa không được phản ánh một cách rõ ràng
4.2.2 Hướng phát triển
Mô hình này được xây dựng để dự đoán một người liệu có mắc bệnh Đái tháo đường hay không dựa trên việc phân tích các chỉ số của một vài yếu tố như Pregnancies, Glucose, Blood Pressure, Skin Thickness, Insullin, BMI, Diabetes Pedigree Function, Age Dựa trên những phân tích đó mà bản thân mỗi người có thể có những nhận thức
rõ ràng hơn về các vấn đề liên quan đến bệnh Đái tháo đường như: Biết được nguy cơ mắc bệnh Đái tháo đường có xác xuất xảy ra rất cao đối với bất kỳ ai nếu không có chế
độ sinh hoạt phù hợp hay phương pháp chăm sóc sức khỏe phù hợp Các chỉ số của một cơ thể có nguy cơ mắc bệnh Đái tháo đường và có những biện pháp chưa trị phù