LỜI MỞ ĐẦU Machine Learning là một lĩnh vực của trí tuệ nhân tạo nghiên cứu và phát triển các thuật toán và mô hình để giúp máy tính học hỏi từ dữ liệu một cách tự động và cải thiện hiệu suất theo thời gian. Học máy có rất nhiều ứng dụng trong các lĩnh vực như y tế, tài chính, marketing, công nghệ thông tin và nhiều lĩnh vực khác. Tìm hiểu thuật toán KNN và ứng dụng cho bài toán phân loại rượu là một chủ đề rất thú vị và hấp dẫn trong lĩnh vực Machine Learning. Thuật toán KNN (KNearest Neighbors) là một trong những thuật toán phân loại đơn giản và hiệu quả nhất trong Machine Learning. Thuật toán này dựa trên nguyên lý rằng các điểm dữ liệu có các đặc trưng tương tự sẽ nằm gần nhau trong không gian đặc trưng. Trong bài toán phân loại rượu, chúng ta có một tập dữ liệu chứa thông tin về các loại rượu và nhãn cho biết chúng thuộc loại rượu nào. Chúng ta có thể sử dụng thuật toán KNearest Neighbors (KNN) để phân loại các loại rượu dựa trên các đặc trưng của chú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: HỌC MÁY CHỦ ĐỀ NGHIÊN CỨU TÌM HIỂU THUẬT TOÁN KNN VÀ ỨNG DỤNG CHO BÀI TOÁN PHÂN LOẠI RƯỢU Hà Nội, 2023 1 MỤC LỤC CHƯƠNG 1 TỔNG QUAN VỀ HỌC MÁY 7 1.1 Đặt vấn đề .7 1.2 Machine Learning là gì? 8 1.3 Các phương pháp Machine Learning 9 1.3.1 Supervised machine learning 9 1.3.2 Unsupervised machine learning 9 1.3.3 Semi-supervised learning 10 1.4 CÁc thuật toÁn phổ biến của Machine Learning .10 1.5 Ứng dụng thực tế của Machine Learnings 10 CHƯƠNG 2: BÀI TOÁN VÀ PHƯƠNG PHÁP SỬ DỤNG 12 2.1 Thuật toán Decision Tree 12 2.1.1 Xây dựng cây quyết định .12 2.1.2 Phân loại mẫu dữ liệu mới 13 2.1.3 Ưu điểm và nhược điểm 13 2.2 Thuật toán Random Forest 13 2.2.1 Xây dựng Random Forest 13 2.2.2 Ưu điểm và nhược điểm của Random Forest .14 2.3 Thuật toán K-Nearest Neighbors (KNN) 14 2.3.1 Xây dựng KNN .15 2.3.2 Ưu điểm và nhược điểm của KNN 15 2.4 Thuật toán Naive Bayes .15 2.4.1 Xây dựng Naive Bayes 16 2.4.2 Ưu điểm của Naive Bayes 16 2.4.3 Nhược điểm của Naive Bayes .16 2 2.5 Thuật toán Support Vector Machine (SVM) .17 2.5.1 Xây dựng SVM .17 2.5.2 Phân loại mẫu dữ liệu mới 17 2.5.3 Ưu điểm của SVM .17 CHƯƠNG 3: ỨNG DỤNG THUẬT TOÁN KNN CHO BÀI TOÁN PHÂN LOẠI RƯỢU .18 3.1 Phân tích thuật toán KNN (K-Nearest Neighbors) 18 3.1.1 Lý do chọn thuật toán 18 3.1.2 Quy trình làm việc của thuật toán KNN .18 3.1.3 Ví dụ minh họa 19 3.1.4 Ví dụ về KNN nhiễu 19 3.1.5 Phân tích toán học .20 3.2 Các thư viện chính được sử dụng .24 3.3 Bộ dữ liệu Wine 24 3.4 Cài đặt môi trường .25 3.5 Thực hiện xây dựng mô hình .29 3.6 Kết quả đạt được 31 KẾT LUẬN 33 TÀI LIỆU THAM KHẢO 33 3 MỤC LỤC HÌNH ẢNH Hình 1 : Mối quan hệ gin Al, Machine Learning và Deep Learning .7 Hình 2 : Ví dụ về thuật toán KNN 19 Hình 3 : Bản đồ minh họa KNN nhiễu với K=1 .19 Hình 4 : Giao diện trang chủ của PyCharm tại JetBrains .26 Hình 5 : Tùy vào nhu cầu của bạn, hãy lựa chọn tải về phiên bản phù hợp .26 Hình 6 : Màn hình chào mừng của PyCharm 27 Hình 7 : Lựa chọn thư mục chứa PyCharm 27 Hình 8 : Hướng dẫn một số cài đặt PyCharm 28 Hình 9 : Chọn Install để bắt đầu cài đặt 28 Hình 10 : Kết thúc quá trình cài đặt bằng cách nhấn Finish 29 4 LỜI CÁM ƠN Lời đầu tiên cho phép nhóm chúng em gửi lời cám ơn sâu sắc tới thầy cô trong Khoa Công nghệ thông tin đã truyền đạt những kiến thức và viết thành giáo trình để chúng em có cơ hội học tập Đó là những kiến thức quý báu và bổ ích Để hoàn thành được bài tập lớn này, đặc biệt nhóm chúng em xin được bày tỏ sự tri ân và chân thành cảm ơn giảng viên TS Trần Hùng Cường người trực tiếp hướng dẫn, chỉ bảo nhóm chúng em trong suốt quá trình học tập và nghiên cứu để hoàn thành bài tập lớn này Nhờ có sự giúp đỡ của thầy nhóm chúng em đã có thể hoàn thành bài tập một cách tốt nhất và đạt được những kết quả khả quan Trong quá trình nghiên cứu và làm báo cáo do năng lực, kiến thức còn hạn hẹp nên không tránh khỏi những thiếu sót Nhóm chúng 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 Một lần nữa, em xin chân thành cảm ơn thầy/cô vì sự hỗ trợ và đóng góp của mình trong quá trình thực hiện bài tập lớn này Nhóm em xin chân thành cảm ơn! 5 LỜI MỞ ĐẦU Machine Learning là một lĩnh vực của trí tuệ nhân tạo nghiên cứu và phát triển các thuật toán và mô hình để giúp máy tính học hỏi từ dữ liệu một cách tự động và cải thiện hiệu suất theo thời gian Học máy có rất nhiều ứng dụng trong các lĩnh vực như y tế, tài chính, marketing, công nghệ thông tin và nhiều lĩnh vực khác Tìm hiểu thuật toán KNN và ứng dụng cho bài toán phân loại rượu là một chủ đề rất thú vị và hấp dẫn trong lĩnh vực Machine Learning Thuật toán KNN (K-Nearest Neighbors) là một trong những thuật toán phân loại đơn giản và hiệu quả nhất trong Machine Learning Thuật toán này dựa trên nguyên lý rằng các điểm dữ liệu có các đặc trưng tương tự sẽ nằm gần nhau trong không gian đặc trưng Trong bài toán phân loại rượu, chúng ta có một tập dữ liệu chứa thông tin về các loại rượu và nhãn cho biết chúng thuộc loại rượu nào Chúng ta có thể sử dụng thuật toán K-Nearest Neighbors (KNN) để phân loại các loại rượu dựa trên các đặc trưng của chúng Chương 1 của bài tập lớn này sẽ giới thiệu cơ sở lý thuyết của Machine Learning, bao gồm các khái niệm cơ bản như supervised learning, unsupervised learning, Ngoài ra, chương này cũng sẽ giới thiệu về bài toán phân loại và các phương pháp tiếp cận khác nhau để giải quyết bài toán này Chương 2 sẽ tập trung vào thuật toán KNN và các quy trình của nó vào bài toán phân loại rượu Chúng em tìm hiểu cách thuật toán KNN hoạt động, các tham số quan trọng của thuật toán và cách lựa chọn giá trị tối ưu cho các tham số này và lấy ví dụ về thuật toán KNN Chương 3 sẽ trình bày về quá trình thử nghiệm của chúng em trên tập dữ liệu rượu Chúng em sẽ đánh giá hiệu suất của thuật toán KNN trên tập dữ liệu này và tính độ chính xác của tập dữ liệu Qua bài tập lớn này, nhóm chúng em đã có cơ hội tìm hiểu sâu hơn về thuật toán KNN và các ứng dụng của nó trong bài toán phân loại rượu Chúng em cũng sẽ có thể áp dụng các kiến thức đó để giải quyết các bài toán phân loại khác trong Machine Learning 6 CHƯƠNG 1 TỔNG QUAN VỀ HỌC MÁY 1.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ạng cô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 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 Theo đà phát triển của công nghệ, ứng dụng trí tuệ nhân tạo luôn là xu hướng cô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 MI (Machine Learning) là một lĩnh vực của trí tuệ nhân tạo được sinh ra từ 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ải lập trình để xử lý các nhiệm vụ cụ thể nào đó Các ứng dụng của 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 Hình 1 : Mối quan hệ gin Al, 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 7 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 (KNN) Ứ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ài toán phân lớp Cụ thể thì trong bài tập lớn này nhóm chúng em sẽ ứng dụng thuật toán KNN vào bài toán phân loại rượu Để áp dụng thuật toán KNN cho bài toán phân loại rượu, chúng ta cần xác định các đặc trưng quan trọng để phân loại Các đặc trưng này có thể bao gồm nồng độ cồn, độ axit, độ đường, màu sắc, v.v Khi đã xác định các đặc trưng, chúng ta sẽ sử dụng tập dữ liệu huấn luyện để huấn luyện mô hình KNN Sau đó, chúng ta sẽ sử dụng mô hình đã huấn luyện để phân loại các chai rượu mới dựa trên các đặc trưng của chúng Tóm lại, thuật toán KNN là một trong những thuật toán phổ biến trong Machine Learning được sử dụng để phân loại dữ liệu dựa trên khoảng cách giữa chúng và các điểm dữ liệu trong tập huấn luyện Áp dụng thuật toán KNN cho bài toán phân loại rượu có thể giúp chúng ta phân loại các chai rượu mới dựa trên các đặc trưng của chúng 1.2 Machine Learning là gì? Machine Learning (hay học máy) là một lĩnh vực của trí tuệ nhân tạo (AI) mà nghiên cứu cách để máy tính học hỏi từ dữ liệu mà không cần được lập trình một cách cụ thể Thay vì chỉ đơn giản là thực hiện các chỉ thị được lập trình trước đó, máy tính được lập trình để tìm ra các mô hình và kết luận từ dữ liệu đầu vào Machine Learning được áp dụng rộng rãi trong nhiều lĩnh vực khác nhau, bao gồm kinh doanh, y học, khoa học dữ liệu, thị giác máy tính, xử lý ngôn ngữ tự nhiên, và robot học Với sự phát triển của công nghệ và dữ liệu, Machine Learning đang trở thành một công cụ quan trọng để giải quyết các vấn đề và tạo ra giá trị mới trong nhiều lĩnh vực 8 1.3 Các phương pháp Machine Learning 1.3.1 Supervised machine learning Supervised learning còn được gọi là học máy có giám sát, được định nghĩa bằng cách sử dụng các tập dữ liệu được gắn nhãn để huấn luyện các thuật toán phân loại dữ liệu hoặc dự đoán kết quả một cách chính xác Khi dữ liệu đầu vào được đưa vào mô hình, mô hình sẽ điều chỉnh trọng lượng của nó cho đến khi nó được lắp một cách thích hợp Điều này xảy ra như một phần của quá trình xác nhận chéo để đảm bảo rằng mô hình tránh trang bị quá nhiều hoặc trang bị thiếu thông tin Supervised machine learning giúp các tổ chức giải quyết nhiều vấn đề trong thế giới thực trên quy mô lớn, chẳng hạn như phân loại thư rác trong một thư mục riêng biệt từ hộp thư đến của bạn Một số phương pháp được sử dụng trong Supervised machine learning bao gồm: logistic regression, neural networks, linear regression, naive bayes, random forest, và support vector machine (SVM) 1.3.2 Unsupervised machine learning Unsupervised machine learning là phương pháp sử dụng các thuật toán máy học để phân tích và phân cụm các tập dữ liệu không được gắn nhãn Không cần sự can thiệp của con người, các thuật toán này có thể phát hiện ra các mẫu hoặc nhóm dữ liệu ẩn Khả năng phát hiện ra những điểm tương đồng và khác biệt trong thông tin của phương pháp này khiến nó trở nên lý tưởng cho việc phân tích dữ liệu khám phá, chiến lược bán chéo (cross-sell), phân khúc khách hàng cũng như nhận dạng hình ảnh và mẫu Unsupervised machine learning cũng được sử dụng để giảm số lượng các tính năng trong một mô hình thông qua quá trình giảm kích thước Phân tích thành phần chính (PCA) và phân tích giá trị đơn lẻ (SVD) là hai cách tiếp cận phổ biến cho việc này 9 Các thuật toán khác được sử dụng trong học tập không giám sát bao gồm: k-means clustering, neural networks, và probabilistic clustering methods 1.3.3 Semi-supervised learning Semi-supervised learning cung cấp một phương pháp hiệu quả giữa học tập có giám sát và không giám sát Trong quá trình đào tạo, nó sử dụng một tập dữ liệu có nhãn nhỏ hơn để hướng dẫn phân loại và trích xuất tính năng từ một tập dữ liệu lớn hơn, không được gắn nhãn Phương pháp Semi-supervised learning có thể giải quyết vấn đề không có đủ dữ liệu được gắn nhãn cho thuật toán học có giám sát Nó cũng hữu ích nếu quá tốn kém để gắn nhãn đủ dữ liệu 1.4 CÁc thuật toÁn phổ biến của Machine Learning Neural networks: Mô phỏng cách thức hoạt động của bộ não con người, với một số lượng khổng lồ các nút xử lý được liên kết Neural networks là thuật toán được dùng trong việc nhận dạng các mẫu và đóng một vai trò quan trọng trong các ứng dụng bao gồm dịch ngôn ngữ tự nhiên, nhận dạng hình ảnh, nhận dạng giọng nói và tạo hình ảnh Linear regression: Thuật toán này được sử dụng để dự đoán các giá trị số, dựa trên mối quan hệ tuyến tính giữa các giá trị khác nhau Logistic regression: Thuật toán giúp đưa ra dự đoán cho các biến phản hồi phân loại, chẳng hạn như câu trả lời “có/không” cho các câu hỏi Nó có thể được sử dụng cho các ứng dụng như phân loại thư rác và kiểm soát chất lượng trên dây chuyền sản xuất Clustering: Các thuật toán phân cụm có thể xác định các mẫu trong dữ liệu để nó có thể được nhóm lại Máy tính có thể giúp các nhà khoa học dữ liệu bằng cách xác định sự khác biệt giữa các mục dữ liệu mà con người đã bỏ qua Decision trees: Là thuật toán được sử dụng để dự đoán giá trị số (hồi quy) và phân loại dữ liệu Decision trees sử dụng một chuỗi phân nhánh của các quyết định được liên kết có thể được biểu diễn bằng sơ đồ cây Một trong 10 3.1.3 Ví dụ minh họa Ví dụ về phân loại KNN: Hình 2 : Ví dụ về thuật toán KNN Mẫu thử nghiệm (chấm màu xanh lá cây) nên được phân loại thành hình vuông màu xanh lam hoặc hình tam giác màu đỏ Nếu k = 3 (vòng tròn đường liền khối) nó được gán cho các tam giác màu đỏ vì có 2 hình tam giác và chỉ có 1 hình vuông bên trong vòng tròn bên trong Nếu k = 5 (vòng tròn đường đứt nét), nó được gán cho các hình vuông màu xanh lam (3 hình vuông so với 2 hình tam giác bên trong vòng tròn bên ngoài) 3.1.4 Ví dụ về KNN nhiễu Hình 3 : Bản đồ minh họa KNN nhiễu với K=1 19 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ớn vớ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 test nếu rơi vào vùng này sẽ có nhiều khả năng cho kết quả sai lệch 3.1.5 Phân tích toán học Không có hàm mất mát hay bài toán tối ưu nào cần thực hiện trong quá trình huấn luyện KNN Mọi tính toán được tiến hành ở bước kiểm tra Vì KNN ra quyết định dựa trên các điểm gần nhất nên có hai vấn đề ta cần lưu tâm Thứ nhất, khoảng cách được định nghĩa như thế nào Thứ hai, cần phải tính toán khoảng cách như thế nào cho hiệu quả Với vấn đề thứ nhất, mỗi điểm dữ liệu được thể hiện bằng một vector đặc trưng khoảng cách giữa hai điểm chính là khoảng cách giữa hai vector đó Có nhiều loại khoảng cách khác nhau tùy vào bài toán, nhưng khoảng cách được sử dụng nhiều nhất là khoảng cách Euclid Vấn đề thứ hai cần được lưu tâm hơn, đặc biệt với các bài toán có tập huấn luyện lớn và vector dữ liệu có kích thước lớn Giả sử các vector huấn luyện là các cột của ma trận X ∈ RdxN với d và N lớn KNN sẽ phải tính khoảng cách từ một điểm dữ liệu mới z ∈ Rd đến toàn bộ N điểm dữ liệu đã cho và chọn ra K khoảng cách nhỏ nhất Nếu không có cách tính hiệu quả, khối lượng tính toán sẽ rất lớn Tiếp theo, chúng ta cùng thực hiện một vài phân tích toán học để tính các khoảng cách một cách hiệu quả Ở đây khoảng cách được xem xét là khoảng cách Euclid 3.1.5.1 Khoảng cách từ một điểm tới từng điểm trong một tập hợp Khoảng cách Euclid từ một điểm z tới một điểm xi trung tập huấn luyện được định nghĩa bởi || z-xi ||2 Người ta thường dùng bình phương khoảng cách Euchid || z-xi ||22 để tránh phép tính căn bậc hai Việc bình phương này không ảnh hưởng tới thứ tự của các khoảng cách Để ý rằng 20