LỜI CAM ĐOANEm xin cam đoan: Khóa luận văn đồ án tốt nghiệp với đề tài “Nghiên cứuthuật toán K-nearest neighbor và sử dụng iris flowers dataset đánh giá hiệu quả thuậttoán” là kết quả ng
Trang 1LỜI CAM ĐOAN
Em xin cam đoan: Khóa luận văn đồ án tốt nghiệp với đề tài “Nghiên cứuthuật toán K-nearest neighbor và sử dụng iris flowers dataset đánh giá hiệu quả thuậttoán” là kết quả nghiên cứu, tìm hiểu của bản thân em từ những kiến thức đã đượcthầy, cô trong Viện Kỹ thuật và Công nghệ truyền dạy trong những năm qua và một
số nguồn tài liệu khác liên quan
Em xin chịu mọi trách nhiệm về khóa luận văn của mình!
Nghệ An, ngày 01 tháng 05 năm 2019
Sinh viên thực hiệnPhan Thị Phượng
Trang 2MỤC LỤC
DANH MỤC TỪ VIẾT TẮT 4
DANH MỤC BẢNG BIỂU 5
DANH MỤC HÌNH ẢNH, ĐỒ THỊ 6
MỞ ĐẦU 8
1 Đặt vấn đề 8
2 Mục đích nghiên cứu 9
3 Phạm vi và đối tượng nghiên cứu 9
4 Nội dung thực hiện 10
5 Cấu trúc đồ án 10
CHƯƠNG 1 CƠ SỞ LÝ THUYẾT 11
1.1 Machine Learning 11
1.1.1 Định nghĩa 11
1.1.2 Một số phương thức của Machine Learning 11
1.2 Bài toán phân lớp dữ liệu 13
1.2.1 Quá trình phân lớp dữ liệu 13
CHƯƠNG 2: THUẬT TOÁN K-NEAREST NEIGHBOR 15
2.1 Thuật toán k-nearest neighbor 15
2.1.1 Định nghĩa 15
2.1.2 Quy trình làm việc của thuật toán KNN 15
2.1.3 Ví dụ minh họa 15
2.1.4 Ví dụ về Knn nhiễu 17
2.1.5 Ưu điểm, nhược điểm của thuật toán 17
2.2 Khoảng cách trong không gian vector 18
2.2.1 Định nghĩa 18
Trang 3CHƯƠNG 3: THỬ NGHIỆM 21
3.1 Bộ dữ liệu Iris flower dataset 21
3.1.1 Giới thiệu 21
3.1.2 Sử dụng tập dữ liệu 22
3.1.3 Tập dữ liệu 23
3.2 Cài đặt 31
3.2.1 Cài đặt python 3.6 31
3.2.2 Thử nghiệm 36
CHƯƠNG 4: KẾT LUẬN 41
TÀI LIỆU THAM KHẢO 42
Trang 5DANH MỤC BẢNG BIỂU
Trang 63 Hình 2.1.3 Ví dụ minh họa thuật toán KNN
4 Hình 2.1.4 Bản đồ minh họa knn nhiễu với k=1
5 Hình 2.2.2 Norm 1 và norm 2 trong không gian hai
chiều
6 Hình 3.1.1 Hình ảnh minh họa về Iris flower dataset
7 Hình 3.1.2 Sơ đồ minh họa phân cụm của Iris flower
Trang 7hết mình truyền đạt và chỉ dẫn cho chúng em những kiến thức, những bài học quýbáu và bổ ích trong suốt 5 năm học vừa qua.
Để hoàn thành được đồ án này, đặc biệt em xin được bày tỏ sự tri ân và xinchân thành cảm ơn giảng viên ThS Nguyễn Bùi Hậu người trực tiếp hướng dẫn, chỉbảo em trong suốt quá trình học tập và nghiên cứu để hoàn thành đồ án này
Sau nữa, em xin gửi tình cảm sâu sắc tới gia đình và bạn bè vì đã luôn bêncạnh khuyến khích, động viên, giúp đỡ cả về vật chất lẫn tinh thần em trong suốt quátrình học tập để em hoàn thành tốt công việc của mình
Trong quá trình nghiên cứu và làm báo cáo do năng lực, kiến thức, trình độ bảnthân còn hạn hẹp nên không tránh khỏi những thiếu sót Em kính mong nhận được
sự thông cảm và những ý kiến đóng góp của quý thầy cô và các bạn
Em xin chân thành cảm ơn!
Nghệ An, ngày 01 tháng 05 năm 2019
Sinh viên thực hiệnPhan Thị Phượng
MỞ ĐẦU
1 Đặt vấn đề
Những năm gần đây, AI nổi lên như một bằng chứng của cuộc cách mạngcông nghiệp lần thứ tư Trí tuệ nhân tạo có thể được định nghĩa như một nghành của
Trang 8khoa 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ênnhữ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 ứngdụng của trí tuệ nhân tạo
Theo đà phát triển của công nghệ, ứng dụng trí tuệ nhân tạo luôn là xu hướngcông nghệ tương lai mà các hãng công nghệ trên toàn thế giới đua nhau sáng tạo, nó
là nền tảng cốt lõi của cuốc cách mạng công nghệ 4.0
ML (Machine Learning) là một lĩnh vực của trí tuệ nhân tạo, được sinh ra từkhả năng nhận diện mẫu và từ lý thuyết các máy tính có thể học mà không cần phảilập trình để xử lý các nhiệm vụ cụ thể nào đó
Hầu hết mọi nghành công nghiệp đang làm việc với hàm lượng lớn dữ liệuđều nhận ra tầm quan trọng của công nghệ ML Những cái nhìn sáng suốt từ nguồndữ liệu này – chủ yếu dạng thời gian thực – sẽ giúp các tổ chức vận hành hiệu quảhơn hoặc tạo lợi thế cạnh tranh so với các đối thủ
Các ứng dụng của ML đã quá quen thuộc với con người: xe tự hành củaGoogle và Tesla, hệ thống tự tag khuôn mặt trên Facebook, hệ thống gợi ý sản phẩmcủ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
Trang 9Hình 1 Mối quan hệ giữa AI, Machine Learning và Deep Learning
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 một 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 toán thường dùng trong ML đó là thuật toán K- nearest neighbor
Ứng dụng của thuật toán này được sử dụng rất nhiều và rộng rãi trong các bàitoán phân lớp
2 Mục đích nghiên cứu
Nghiên cứu, tìm hiểu thuật toán KNN
Đánh giá hiệu quả của thuật toán
3 Phạm vi và đối tượng nghiên cứu
Phạm vi nghiên cứu: Thử nghiệm trên Iris flower dataset
Đối tượng nghiên cứu: Thuật toán KNN và bộ Iris flower dataset
Trang 104 Nội dung thực hiện
Tìm hiểu thuật toán KNN
Làm quen với bộ dữ liệu Iris
Sử dụng bộ dữ liệu vào thử nghiệm và đánh giá
5 Cấu trúc đồ án
Mở đầu
Chương 1: Cơ sở lý thuyết
Chương 2: Thuật toán K-nearest neighbor
Chương 3: Thử nghiệm
Chương 4: Kết luận
Trang 11CHƯƠNG 1 CƠ SỞ LÝ THUYẾT
Machine Learning có hiện nay được áp dụng rộng rãi bao gồm máy truy tìm dữliệu, máy phân tích thị trường chứng khoán, nhận dạng tiếng nói và chữ viết…
1.1.2 Một số phương thức của Machine Learning
Học có giám sát: Thuật toán dự đoán đầu ra của một dữ liệu mới (new input)
dựa trên các cặp (input, outcome) đã biết từ trước Cặp dữ liệu này còn được gọi
là (data, label), tức (dữ liệu, nhãn) Supervised learning là nhóm phổ biến nhất
trong các thuật toán Machine Learning
Học có giám sát được chia thành hai loại chính:
-Classification (phân lớp): Là quá trình phân lớp một đối tượng dữ liệu vào một haynhiều lớp đã cho trước nhờ một mô hình phân lớp (model) Mô hình này được xâydựng dựa trên một tập dữ liệu được xây dựng trước đó có gán nhãn (hay còn gọi làtập huấn luyện) Quá trình phân lớp là quá trình gán nhãn cho đối tượng dữ liệu
Trang 12-Regression (hồi quy): Nếu không được chia thành các nhóm mà là một giá trị thực
cụ thể Đầu ra của một điểm dữ liệu sẽ bằng chính đầu ra của điểm dữ liệu đã biết
Học không giám sát: là một kĩ thuật của máy học nhằm tìm ra một mô hìnhhay cấu trúc bị ẩn bơi tập dữ liệu không được gán nhãn cho trước UL khác với SL
là không thể xác định trước output từ tập dữ liệu huấn luyện được Tùy thuộc vàotập huấn luyện kết quả output sẽ khác nhau Trái ngược với SL, tập dữ liệu huấnluyện của UL không do con người gán nhãn, máy tính sẽ phải tự học hoàn toàn
Có thể nói, học không giám sát thì giá trị đầu ra sẽ phụ thuộc vào thuật toán UL
Ứng dụng lớn phổ biến của học không giám sát là bài toán phân cụm
Trang 13 Học bán giám sát: Các bài toán khi có một số lượng lớn dữ liệu nhưng chỉ một phần trong chúng được dán nhãn Những bài toán này nằm giữa phương thưc học giám sát và học không giám sát.
1.2 Bài toán phân lớp dữ liệu
1.2.1 Quá trình phân lớp dữ liệu
Để xây dựng được mô hình phân lớp và đánh giá hiệu quả của mô hình cần phải thực hiện quá trình sau đây:
Bước 1: Chuẩn bị tập dữ liệu huấn luyện và rút trích đặc trưng
Công đoạn này được xem là công đoạn quan trọng trong các bài toán về ML vì
đây là input cho việc học đẻ tìm ra mô hình của bài toán Chúng ta phải biết cần chọn ra những đặc trưng tốt của dữ liệu, lược bỏ những đặc trưng không tốt của dữ liệu, gây nhiễu Ước lượng số chiều của dữ liệu bao nhiêu là tốt hay nói cách khác làchọn bao nhiêu feature Nếu số nhiều quá lớn gây khó khăn cho việc tính toán thì phải giảm số chiều của dữ liệu nhưng vẫn giữ được độ chính xác của dữ liệu
Ở bước này chúng ta cũng chuẩn bị bộ dữ liệu để test trên mô hình.Thông thường sẽ sử dụng cross-validation (kiểm tra chéo) để chia tập dataset thànhhai phàn, một phần phục vụ cho training và phần còn lại phục vụ cho mục đíchtesting trên mô hình Có hai cách thường sử dụng trong cross-validation là splitting
và k-fold
Bước 2: Xây dựng mô hình phân lớp
Mục đích của mô hình huấn luyện là tìm ra hàm F(x) và thông qua hàm f tìmđược để chúng ta gán nhãn cho dữ liệu Bước này thường được gọi là học haytraining
F(x)= y
Trong đó: x là các feature hay input đầu vào của dữ liệu
Y là nhãn dán lớp hay output đầu raThông thường để xây dựng mô hình phân lớp cho bài toán này chúng ta sửdungjcacs thuật toán học giám sát như KNN, NN, SVM, Decision tree, NavieBayers
Bước 3: Kiểm tra dữ liệu với mô hình
Trang 14Sau khi tìm được mô hình phân lớp ở bước hai, thì bước này chúng ta sẽ đưavào các dữ liệu mới đẻ kiểm tra trên mô hình phân lớp.
Bước 4: Đánh giá mô hình phân lớp và chọn ra mô hình tốt nhất
Bước cuối cùng chúng ta sẽ đánh giá mô hình bằng cách đánh giá mức độ lỗicủa dữ liệu testing và dữ liệu training thông qua mô hình tìm được Nếu không đạtđược kết quả mong muốn của chúng ta thì phải thay đổi các tham số của thuật toánhọc để tìm ra các mô hình tốt hơn và kiểm tra, đánh giá lại mô hình phân lớp vàcuối cùng chọn ra mô hình phân lớp tốt nhất cho bài toán của chúng ta
Trang 15CHƯƠNG 2: THUẬT TOÁN K-NEAREST NEIGHBOR
2.1 Thuật toán k-nearest neighbor
2.1.1 Định nghĩa
K-nearest neighbor (KNN) là một trong những thuật toán học có giám sát đơngiản nhất trong Machine Learning Ý tưởng của KNN là tìm ra output của dữ kiệudựa trên thông tin của những dữ liệu training gần nó nhất
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 đối tượng cần phân lớp với tất cả các đối tượng trongtraining data
Bước 3: sắp xếp khoảng cách theo thứ tự tăng dần và xác định K láng giềng gầnnhất với đối tượng cần phân lớp
Bước 4: lấy tất cả 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 lớp của K để xác định lớp cho đối tượng cần phân lớp
2.1.3 Ví dụ minh họa
Hình 2.1.3 ví dụ minh họa thuật toán KNN
Trang 16Giả sử bài toán được đặt ra: mình mới quen một người bạn, tuy nhiên mình làfan của Us-Uk vậy nên mình cần biết người bạn này có phải là fan của K-Pop haykhông Qua thời gian tìm hiểu mình đã thu thập được một số dữ liệu và đã biểu hiệndưới dạng hình vẽ trên.
Ta dễ dàng nhìn thấy có hai loại: hình vuông màu xanh biểu diễn cho nhữngngười là fan của K-pop, tam giác màu đỏ biểu diễn cho những người không là fancủa K-pop, hình tròn màu xanh là người bạn mình muốn biết có phải là fan K-pophay không, khoảng cách giữa chấm tròn và các điểm còn lại biểu diễn độ thân thiếtcủa bạn đó với những người bạn
Phương pháp đơn giản nhất để kiểm tra xem bạn đó chơi thân với người bạnnào nhất, tức là tìm xem điểm gần chấm xanh thuộc class nào (hình vuông hay tamgiác) Từ hình trên ta dễ dàng nhận thấy điểm gần chấm xanh nhất là hình tam giácmàu đỏ, do đó nó sẽ được phân vào lớp tam giác màu đỏ
Có một vấn đề trong phương pháp trên, xung quanh cấm xanh xuất hiện rấtnhiều hình vuông màu xanh nên việc xét điểm gần nhất là chưa khả thi Vì vậy, ta sẽxét k điểm gần nhất Giả sử, ta lấy K=3, dựa theo hình trên ta dễ dàng nhận ra có haihình tam giác đỏ và một hình vuông xanh có khoảng cách gần chấm xanh nhất, do
đó chấm xanh được phân vào lớp tam giác đỏ Lấy K=7, ta có năm hình vuông xanh
và hai hình tam giác đỏ, lúc này chấm xanh được xếp vào lớp hình vuông xanh.Trường hợp lấy K=4, ta nhận thấy sẽ có hai hình vuông xanh và hai hình tam giác
đỏ, đây là trường hợp có điểm bằng nhau, với trường hợp này KNN sẽ xử lý bằngcách so sánh tổng khoảng cách của các hình gần nhất với điểm ta đang xét
Do xuất hiện trường hợp có điểm bằng nhau, vì vậy người ta thường chọn k là số lẻ
Đó cũng là ý tưởng của KNN
Trang 172.1.4 Ví dụ về Knn nhiễu
Hình 2.1.4 Bản đồ minh họa knn nhiễu với k=1
Hình trên là bài toán phân lớp với ba lớp: đỏ, lam, lục Mỗi điểm dữ liệu mới
sẽ được gán nhãn theo màu của điểm đó mà nó thuộc về Trong hình này, chú ývùng khoanh tròn màu vàng, ta nhận thấy rằng điểm màu lục nằm giữa hai vùng lớnvới nhiều dữ liệu đỏ và lam, điểm này rất có thể là nhiễu dẫn đến việc dữ liệu testnếu rơi vào vùng này sẽ có nhiều khả năng cho kết quả sai lệch
2.1.5 Ưu điểm, nhược điểm của thuật toán
Ưu điểm:
- Dễ sử dụng và cài đặt
- Việc dự đoán kết quả của dữ liệu mới dễ dàng
- Độ phức tạp tính toán nhỏ
Nhược điểm:
- KNN nhiễu dễ đưa ra kết quả không chính xác khi k nhỏ
- Cần thời gian lưu training set, khi dữ liệu training và test tăng lên nhiều sẽmất nhiều thời gian tính toán
Trang 182.2 Khoảng cách trong không gian vector
Trong không gian một chiều, việc đo khoảng cách giữa hai điểm đã rất quen
thuộc: lấy trị tuyệt đối của hiệu giữa hai giá trị đó Trong không gian hai chiều, tứcmặt phẳng, chúng ta thường dùng khoảng cách Euclid để đo khoảng cách giữa hai
điểm.
Việc đo khoảng cách giữa hai điểm dữ liệu nhiều chiều, tức hai vector, là rấtcần thiết trong Machine Learning Chúng ta cần đánh giá xem điểm nào là điểm gầnnhất của một điểm khác; chúng ta cũng cần đánh giá xem độ chính xác của việc ướclượng; và trong rất nhiều ví dụ khác nữa
Và đó chính là lý do mà khái niệm norm ra đời Có nhiều loại norm khácnhau mà các bạn sẽ thấy ở dưới đây:
Để xác định khoảng cách giữa hai vector y và z, người ta thường áp dụng một hàm số lên vector hiệu x = y−z Một hàm số được dùng để đo các vector cần có một
Giả sử các vector x = [x1; x2…xn], y = [y1; y2…yn]
Nhận thấy khoảng cách Euclid chính là một norm, norm mày thường được gọi lànorm 2:
Trang 19Với p là một số không nhỏ hơn 1 bất kỳ, hàm số sau đây:
Được chứng minh thỏa mãn ba ddieuf kiện trên, và được gọi là norm p
Nhận thấy rằng khi p→0 thì biểu thức bên trên trở thành số các phần tử khác 0
của x Hàm số (2) khi p=0 được gọi là giả chuẩn (pseudo-norm) 0 Nó không phải là
norm vì nó không thỏa mãn điều kiện 2 và 3 của norm Giả-chuẩn này, thường được
ký hiệu là ||x||0, khá quan trọng trong ML vì trong nhiều bài toán, chúng ta cần có
ràng buộc “sparse”, tức số lượng thành phần “active” của x là nhỏ.
Có một vài giá trị của p thường được dùng:
- Khi p = 2 chúng ta có norm2 như ở trên.
- Khi p = 1 chúng ta có:
||x||1 = |x1| + |x2| + |x3| +…|xn| (3)
Là tổng các giá trị tuyệt đối của từng phần tử của x Norm 1 thường được dùng nhưsấp xỉ của norm 0 trong các bài toán có ràng buộc Dưới đây là một ví dụ so sánhnorm 1 và norm 2 trong không gian hai chiều:
Trang 20
Norm 2 (màu xanh) chính là đường chim bay nối giữa vector x và vector y Khoảng cách norm 1 giữa hai điểm này (màu đỏ) có thể diễn giải như là đường đi từ x đến y
trong một thành phố mà thành phố được tạo hình bàn cờ, chúng ta chỉ có thể đi theodọc bàn cờ chứ không thể đi theo đường thẳng
Khi p -> ∞, ta có norm p chính là trị tuyệt đối của phần tử lớn nhất củavector đó:
(4)