TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN
======* * * ======
ĐỒ ÁN CHUYÊN NGÀNH
NGÀNH: KHOA HỌC MÁY TÍNH
ĐỀ TÀI: PHÂN LOẠI RƯỢU SỬ DỤNG MƠ HÌNH
K-NEAREST NEIGHBORS VÀ PCA
GVHD : TS. Nguyễn Mạnh Cường
Lớp : 20231IT6052002
Nhóm : 12
Thành viên : 1. Trần Việt Anh
2. Đỗ Đức Phú
3. Hà Long Vũ
Hà Nội, Năm 2023
MỤC LỤC
LỜI CẢM ƠN ....................................................................................................... 6
LỜI MỞ ĐẦU ....................................................................................................... 7
CHƯƠNG 1: TỔNG QUAN ................................................................................. 9
1.1.
Tìm hiểu về Machine Learning (Học Máy) .......................................... 9
1.1.1.
Khái niệm ........................................................................................ 9
1.1.2.
Vai trò của Machine Learning ........................................................ 9
1.1.3.
Một số kỹ thuật trong Machine Learning ..................................... 10
1.1.4.
Một số phương pháp của Machine Learning ................................ 10
1.2.
Tìm hiểu về bài toán phân loại rượu ................................................... 13
1.2.1.
Tổng quan về bài tốn phân loại rượu .......................................... 13
1.2.2.
Ứng dụng của cơng nghệ phân loại rượu trong đời sống hiện nay14
1.3.
Mục tiêu và phương pháp nghiên cứu ................................................. 15
1.3.1.
Mục tiêu nghiên cứu...................................................................... 15
1.3.2.
Phạm vi nghiên cứu ....................................................................... 16
CHƯƠNG 2: CÁC PHƯƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ ......................... 18
2.1. Một số kĩ thuật giải quyết bài toán ........................................................... 18
2.1.1 Thuật toán K-Nearest Neighbor (KNN) ............................................. 18
2.1.2 Logistic Regression ............................................................................ 21
2.1.3 Convolutional Neural Network (CNN) .............................................. 24
2.1.4 Support Vector Machine (SVM) ........................................................ 30
2.1.5 K-means .............................................................................................. 31
2.2. Đề xuất mơ hình để giải quyết bài tốn .................................................... 34
2.2.1 Mơ hình KNN (K-Nearest Neighbors) ............................................... 34
2.2.2 Thuật toán hỗ trợ (PCA) ..................................................................... 35
CHƯƠNG 3: XÂY DỰNG MƠ HÌNH .............................................................. 38
3.1. Giới thiệu về bộ dữ liệu ............................................................................ 38
3.2 Các thư viện chính được sử dụng cho mơ hình phân loại. ........................ 39
3.3. Tiền xử lý dữ liệu ..................................................................................... 40
3.4. Xây dựng mơ hình KNN .......................................................................... 45
KẾT LUẬN ......................................................................................................... 49
TÀI LIỆU THAM KHẢO ................................................................................... 50
3
MỤC LỤC HÌNH ẢNH
Hình 1.1. Supervised learning ............................................................................. 10
Hình 1.2. Unsupervised learning ......................................................................... 11
Hình 1.3. Semi-supervised learning .................................................................... 12
Hình 1.4. Reinforcement learning ....................................................................... 13
Hình 2.1. Ví dụ minh họa của thuật tốn KNN................................................... 18
Hình 2.2. KNN nhiễu .......................................................................................... 19
Hình 2.3: Mảng ma trận RGB 6x6x3 .................................................................. 25
Hình 2.4: Mơ hình train của mạng ...................................................................... 25
Hình 2.5: Mơ hình lớp tích chập ......................................................................... 26
Hình 2.6: Ma trận có bộ lọc 3x3 ......................................................................... 26
Hình 2.7: Feature map ......................................................................................... 26
Hình 2.8: Khi áp dụng các Kernel khác nhau ..................................................... 27
Hình 2.9: Lớp tích chập hoạt động với stride là 2 .............................................. 28
Hình 2.10. Chuyển các giá trị tuyến tính ............................................................ 28
Hình 2.11: Max Pooling 2x2 ............................................................................... 29
Hình 2.12: Ví dụ mơ hình SVM .......................................................................... 30
Hình 2.13: Ví dụ mơ hình SVM (2) .................................................................... 30
Hình 2.14: Ví dụ thuật tốn K-means ................................................................. 33
Hình 3.1. Thư viện Numpy ................................................................................. 39
Hình 3.2. Thư viện Matplotlib ............................................................................ 39
Hình 3.3. Thư viện Pandas .................................................................................. 40
Hình 3.4. Thư viện Scikit-learn........................................................................... 40
Hình 3.5. Một vài mẫu dữ liệu ............................................................................ 41
Hình 3.6. Thơng tin các cột thuộc tính ................................................................ 41
Hình 3.7. Phân phối dữ liệu................................................................................. 42
Hình 3.8. Số các giác khuyết thiếu của từng thuộc tính...................................... 43
Hình 3.9. Số lượng các nhãn ............................................................................... 43
Hình 3.10. Mối quan hệ của từng thuộc tính của tập dữ liệu huấn luyện ........... 44
4
Hình 3.11. Mối quan hệ của từng thuộc tính của tập dữ liệu huấn luyện sau khi
chuẩn hóa dữ liệu ................................................................................................ 45
Hình 3.12. Kết quả mơ hình khi chưa áp dụng PCA .......................................... 46
Hình 3.13.Ma trận hỗn loạn khi chưa áp dụng PCA ........................................... 46
Hình 3.14. Kết quả mơ hình khi áp dụng PCA ................................................... 47
Hình 3.15. Ma trận hỗn loạn khi mơ hình áp dụng PCA .................................... 47
5
LỜI CẢM ƠN
Lời đầu tiên nhóm chúng em xin gửi lời cảm ơn sâu sắc đến giáo viên
người trực tiếp hướng dẫn, giảng dạy chúng em trong suốt quá trình học tập,
nghiên cứu và hoàn thành đề tài. Trong bài tốn phân loại rượu có rất nhiều
phương pháp có thể được áp dụng để giải quyết vấn đề như: mô hình
SVM(Support Vector Machine), mơ hình CNN (Convolutional Neural Network)
hay mơ hình KNN (K-Nearest Neighbor),... Mỗi mơ hình đều có điểm mạnh
riêng của mình và đều cho ra kết quả và độ chính xác cao và nhóm bọn em đã
thực hiện chọn mơ hình KNN (K-Nearest Neighbors) .
Trong q trình nghiên cứu và làm đề tài, do năng lực, kiến thức, trình độ
bản thân chúng em cịn hạn hẹp nên khơng tránh khỏi những thiếu sót. Vì thế
chúng em mong mỏi nhận được sự thơng cảm và những góp ý từ quý thầy cô
cũng như các bạn trong lớp.
Chúng em xin chân thành cảm ơn
LỜI MỞ ĐẦU
Rượu từ lâu đã là một loại thức uống truyền thống và phổ biến trên khắp
thế giới, đã trở thành một biểu tượng của nền văn hóa và ẩm thực độc đáo. Sự đa
dạng về loại rượu, cùng với sự thay đổi các thành phần hóa học trong quá trình
sản xuất và chế biến, tạo nên sự phức tạp trong việc phân loại và xác định nguồn
gốc của chúng. Do đó việc nghiên cứu và phân loại rượu đã trở thành một lĩnh
vực quan trọng, đặc biệt đối với nền công nghiệp thực phẩm, thương mại, y tế,..
ngày nay.
Trong bài báo cáo đồ án này, chúng tôi tập trung vào việc phân loại rượu
sử dụng mơ hình K-Nearest Neighbors và PCA. Mơ hình K-Nearest Neighbors
(KNN): KNN là một thuật toán học máy đơn giản nhưng mạnh mẽ trong việc
phân loại dữ liệu. Điểm mạnh của KNN nằm ở khả năng phân loại hiệu quả và
độ linh hoạt khi khơng u cầu một mơ hình tốn học cụ thể. Phân tích thành
phần chính (PCA): PCA là một phương pháp giảm chiều dữ liệu, giúp loại bỏ sự
phức tạp và giảm số chiều của dữ liệu mà vẫn bảo toàn được thơng tin quan
trọng.
Sự kết hợp giữa thuật tốn KNN và phương pháp PCA cho phép chúng tôi
nắm bắt các yếu tố quan trọng trong sự đa dạng các thành phần dữ liệu về rượu,
đồng thời tối ưu hóa quá trình phân loại và cung cấp một cách tiếp cận hiệu quả
để giải quyết vấn đề này.
Nội dung báo cáo đồ án này sẽ bao gồm 3 chương:
Chương 1: TỔNG QUAN
Trong chương 1 này nhóm sẽ bắt đầu bằng việc trình bày tổng quan về
vấn đề phân loại rượu, mơ tả sơ lược về mục tiêu của mơ hình phân loại và các
ứng dụng thực tế của bài toán.
Chương 2: CÁC PHƯƠNG PHÁP GIẢI QUYẾT VẤN ĐỀ
Sau khi nắm được mục tiêu của mơ phân loại nhóm em sẽ đề cập chi tiết
về mơ hình KNN và phương pháp PCA và một số mơ hình học máy phân loại
khác để từ đó đưa ra lý do chọn 2 phương pháp đã nêu, trình bày cách áp dụng
mơ hình KNN và phương pháp PCA cho quá trình thực hiện phân loại rượu.
Chương 3: THỰC NGHIỆM
Trong chương này, nhóm sẽ thực hiện việc phân tích và làm sạch bộ dữ
liệu để phù hợp với mơ hình phân loại từ đó có được kết quả và nhận xét về hiệu
suất của mơ hình và sự quan trọng của việc sử dụng KNN và PCA trong việc
phân loại rượu.
8
CHƯƠNG 1: TỔNG QUAN
1.1.
Tìm hiểu về Machine Learning (Học Máy)
1.1.1. Khái niệm
Là một lĩnh vực của trí tuệ nhân tạo liên quan đến việc nghiên cứu và xây
dựng các kĩ thuật cho phép các hệ thống học tự động từ dữ liệu để giải quyết các
vấn đề cụ thể. Ví dụ các mát có thể học cách phân loại thư điện tử có phải thư
rác hay khơng và tự động sắp xếp vào các thư mục tương ứng.
Machine Learning có liên quan thống kê với cả hai lĩnh vực đều nghiên
cứu việc phân tích dữ liệu, nhưng khác với thống kê, học máy tập trung vào sự
phức tạp của các giải thuật trong việc thực thi tính tốn.Machine Learning có
hiện nay được áp dụng rộng rãi bao gồm truy tìm dữ liệu, máy phân tích thị
trường chứng khốn, phân loại tiếng nói và chữ viết …
1.1.2. Vai trị của Machine Learning
Ngày nay, hầu hết các ngành nghề khi phải làm việc với lượng dữ liệu lớn
đang dần nhận thấy sự quan trọng của machine learning. Nhiều ngành nghề đã
áp dụng chúng vào trong thực tiễn.
o Dịch vụ tài chính: Có thể thấy ngành nghề này liên quan đến những con
số và dữ liệu rất cao, chúng được sử dụng để xác định những thông tin
quan trọng về dữ liệu và ngăn chặn gian lận. Phân tích được các cơ hội
đầu tư tránh những rủi ro.
o Chính phủ: Các cơ quan an ninh cộng đồng và các đơn vị cơng ích đã sử
dụng cho các ứng dụng như phân tích dữ liệu cảm biến, phát hiện gian lận
và hành vi trộm cắp danh tính.
o Chăm sóc sức khỏe: Các thiết bị đeo trên người là ứng dụng dựa trên
machine learning, chúng có thể phân tích cảm biến để đánh giá sức khỏe
của bệnh nhân theo thời gian thực và đưa ra cảnh báo kịp thời.
o Dầu khí: ngành dầu khí sử dụng để tìm kiếm những nguồn năng lượng
mới. Phân tích được các chất khống phía dưới lịng đất và dự đốn lỗi
cảm biến của những máy lọc dầu.
o Giao thông vận tải: Phân tích mơ hình và xu hướng cho các địa hình cho
ngành vận tải. Đưa ra những tuyến đường hiệu quả hơn và dự đoán những
vấn đề tiềm ẩn về lợi nhuận.
1.1.3. Một số kỹ thuật trong Machine Learning
• Trợ lý cá nhân ảo (Virtual Personal Assistants)
• Phân loại khn mặt , giọng nói , vân tay , chữ , số ,…
• Chuyển đổi lời nói thành văn bản
• Xử lý ngơn ngữ tự nhiên
• Chuyển đổi văn bản thành giọng nói
• Ứng dụng trong các mạng xã hội
• Tự động phân loại
1.1.4. Một số phương pháp của Machine Learning
- Học có giám sát (supervised learning):
Hình 1.1. Supervised learning
Học máy có giám sát yêu cầu thực hiện huấn luyện thuật toán với cả dữ
liệu đầu vào sẽ được gắn nhãn. Các thuật tốn học tập có giám sát phù hợp với
các tác vụ sau:
10
• Phân loại nhị phân: Chia dữ liệu thành hai loại.
• Phân loại nhiều lớp: Lựa chọn giữa nhiều hơn hai loại câu trả lời.
• Mơ hình hồi quy: Dự đốn các giá trị liên tục.
• Ghép nối: Kết hợp các dự đốn của nhiều mơ hình học máy để tạo ra dự
đốn chính xác
- Học khơng có giám sát (unsupervised learning):
Hình 1.2. Unsupervised learning
Các thuật tốn học máy khơng giám sát không yêu cầu dữ liệu phải được
gắn nhãn. Hầu hết các loại học sâu, bao gồm cả mạng thần kinh nhân tạo, đều là
các thuật tốn khơng được giám sát. Các thuật tốn học tập khơng giám sát tốt
cho các tác vụ sau:
• Phân cụm: Tách tập dữ liệu thành các nhóm dựa trên sự giống nhau.
• Phát hiện bất thường: Xác định các điểm dữ liệu bất thường trong tập dữ
liệu.
• Khai thác liên kết: Xác định các tập hợp các mục trong tập dữ liệu thường
xuyên xảy ra cùng nhau.
• Giảm kích thước: Giảm số lượng biến trong tập dữ liệu.
- Học bán giám sát (semi-supervised learning):
11
Hình 1.3. Semi-supervised learning
Học máy bán giám sát hoạt động khi các nhà khoa học cung cấp một
lượng nhỏ dữ liệu đào tạo được gắn nhãn cho một thuật toán. Từ đó, thuật tốn
tìm hiểu các kích thước của tập dữ liệu, sau đó nó có thể áp dụng cho dữ liệu
mới, chưa được gắn nhãn. Hiệu suất của các thuật toán thường được cải thiện
khi chúng đào tạo trên các tập dữ liệu được gắn nhãn. Tuy nhiên việc ghi nhãn
dữ liệu có thể tốn thời gian và tốn kém. Học máy bán giám sát đặt nền tảng
trung gian giữa hiệu suất của học máy có giám sát và hiệu quả của học máy
không giám sát. Một số lĩnh vực sử dụng phương pháp học máy bán giám sát
bao gồm:
• Dịch máy: Dạy các thuật tốn dịch ngơn ngữ dựa trên ít hơn một từ điển
đầy đủ các từ.
• Phát hiện gian lận: Xác định các trường hợp gian lận khi bạn chỉ có một
vài ví dụ tích cực.
• Dán nhãn dữ liệu: Các thuật toán được đào tạo trên tập dữ liệu nhỏ có thể
học cách áp dụng nhãn dữ liệu cho các tập lớn hơn một cách tự động.
- Học tăng cường (reinforcement learning):
12
Hình 1.4. Reinforcement learning
Học máy tăng cường hoạt động bằng cách lập trình một thuật tốn với
một mục tiêu riêng biệt và một bộ quy tắc được chỉ định để hồn thành mục tiêu
đó. Các nhà khoa học cũng lập trình thuật tốn để tìm kiếm phần thưởng tích
cực – mà nó nhận được khi thực hiện một hành động có lợi cho mục tiêu cuối
cùng – và tránh các hình phạt – mà nó nhận được khi thực hiện một hành động
khiến nó càng xa mục tiêu cuối cùng. Học máy tăng cường thường được sử dụng
trong các lĩnh vực như:
• Robot: Robot có thể học cách thực hiện các nhiệm vụ trong thế giới thực
bằng cách sử dụng kỹ thuật này.
• Trị chơi video: Học máy tăng cường đã được sử dụng để dạy bot chơi
một số trò chơi điện tử.
• Quản lý nguồn lực: Với nguồn lực hữu hạn và một mục tiêu xác định, việc
học máy tăng cường có thể giúp doanh nghiệp lập kế hoạch phân bổ
nguồn lực.
1.2.
Tìm hiểu về bài tốn phân loại rượu
1.2.1. Tổng quan về bài toán phân loại rượu
Bài toán phân loại rượu là một bài toán trong lĩnh vực nhận dạng và phân
loại. Mục tiêu của bài toán này là xác định loại rượu dựa trên các đặc trưng của
nó. Điều này có thể được thực hiện bằng cách sử dụng các thuật toán máy học
và kỹ thuật khai thác dữ liệu.
13
Trong quá trình phân loại rượu, các đặc trưng quan trọng của rượu được
sử dụng để tạo ra một mô hình phân loại. Các đặc trưng này có thể bao gồm các
yếu tố như thành phần hóa học, hương vị, màu sắc, quốc gia sản xuất, loại nho,
độ cồn, và nhiều yếu tố khác. Thơng qua việc phân tích và xử lý dữ liệu, một mơ
hình phân loại được xây dựng để tự động phân loại các loại rượu dựa trên những
đặc trưng này.
Có nhiều thuật tốn khác nhau có thể được áp dụng vào bài toán phân loại
rượu, tùy thuộc vào quy mô dữ liệu, đặc trưng của rượu và yêu cầu cụ thể của
bài toán. Dưới đây là một số thuật toán phổ biến và thường được sử dụng trong
phân loại rượu:
- Support Vector Machine – SVM.
- Convolutional Neural Network (CNN).
- K-Nearest Neighbors – KNN.
- K-means
- Logistic Regression
1.2.2. Ứng dụng của công nghệ phân loại rượu trong đời sống hiện nay
Cơng nghệ phân loại rượu có nhiều ứng dụng trong đời sống hiện nay.
Dưới đây là một số ví dụ về các ứng dụng của cơng nghệ phân loại rượu:
- Hướng dẫn mua sắm và đánh giá rượu: Cơng nghệ phân loại rượu có thể
được sử dụng để tạo ra các ứng dụng di động hoặc trang web giúp người
dùng lựa chọn rượu phù hợp với sở thích và nhu cầu của họ. Cơng nghệ
này có thể phân loại rượu dựa trên đặc trưng và mô tả của rượu để đưa ra
các đề xuất mua sắm và đánh giá từ người dùng khác.
- Quản lý kho rượu: Trong các nhà hàng, quầy bar hoặc cửa hàng rượu,
công nghệ phân loại rượu có thể giúp quản lý và phân loại kho rượu một
cách hiệu quả. Các hệ thống tự động có thể phân loại rượu theo loại, quốc
gia sản xuất, độ tuổi và giá trị, giúp tạo ra các báo cáo, đánh giá và quản
lý kho rượu một cách thuận tiện và chính xác.
14
- Chống giả và đảm bảo chất lượng: Công nghệ phân loại rượu cũng có thể
được sử dụng để phát hiện hàng giả và đảm bảo chất lượng rượu. Các hệ
thống phân loại rượu có thể so sánh thơng tin về đặc trưng của một chai
rượu với các dữ liệu đã được xác định trước để xác định tính xác thực của
rượu và ngăn chặn sự giả mạo.
- Tư vấn rượu cá nhân: Cơng nghệ phân loại rượu có thể được sử dụng để
tạo ra các hệ thống tư vấn rượu cá nhân. Dựa trên thơng tin về sở thích và
lịch sử tiêu dùng của người dùng, các hệ thống này có thể đề xuất và gợi ý
các loại rượu phù hợp với khẩu vị và sở thích cá nhân.
- Phân loại rượu trong quy trình sản xuất: Cơng nghệ phân loại rượu có thể
được áp dụng trong quy trình sản xuất rượu để giúp phân loại các loại
rượu theo chất lượng, hương vị, và đặc trưng khác. Điều này giúp đảm
bảo rằng sản phẩm cuối cùng đáp ứng các tiêu chuẩn chất lượng và sự
đồng nhất của một nhãn hiệu rượu.
Công nghệ phân loại rượu mang lại nhiều lợi ích và ứng dụng trong ngành
công nghiệp rượu và đời sống hàng ngày của chúng ta, từ mua sắm và tư vấn
rượu cho đến quản lý kho rượu và đảm bảo chất lượng sản phẩm.
1.3.
Mục tiêu và phương pháp nghiên cứu
1.3.1. Mục tiêu nghiên cứu
Nghiên cứu nhằm áp dụng và tối ưu hóa thuật tốn K-Nearest Neighbors
(KNN) để phân loại các loại rượu dựa trên các thuộc tính nhất định. Mục tiêu cụ
thể bao gồm:
• Thu thập và tiền xử lý dữ liệu:
- Thu thập dữ liệu chính xác và đầy đủ về các loại rượu cùng các thuộc tính
liên quan.
- Tiền xử lý dữ liệu để loại bỏ nhiễu và chuẩn hóa để tối ưu hóa hiệu suất
KNN.
• Tối ưu hóa tham số và phát triển mơ hình KNN:
15
- Lựa chọn tham số K tối ưu cho KNN thông qua thử nghiệm và đánh giá
hiệu suất.
- Phát triển một mơ hình KNN chính xác và hiệu quả dựa trên dữ liệu tiền
xử lý.
• Xây dựng mơ hình phân loại rượu:
Tạo ra một ứng dụng hoặc giao diện đơn giản sử dụng mơ hình KNN để
phân loại rượu theo các thuộc tính được nhập từ người dùng.
• Đánh giá và so sánh:
- Đánh giá hiệu suất của mơ hình KNN so với các phương pháp phân loại
khác.
- So sánh ưu nhược điểm của KNN với các thuật toán khác để đưa ra kết
luận về sự hiệu quả của KNN trong bài toán phân loại rượu.
Mục tiêu là xây dựng một hệ thống phân loại rượu sử dụng KNN có hiệu
suất cao, linh hoạt và dễ triển khai trong thực tế.
1.3.2. Phạm vi nghiên cứu
- Đối Tượng Nghiên Cứu:
Nghiên cứu tập trung vào việc phân loại các loại rượu dựa trên các thuộc
tính hóa học hoặc vị giác, sử dụng thuật toán K-Nearest Neighbors (KNN). Các
loại rượu bao gồm rượu vang đỏ, rượu vang trắng, rượu mạnh, và các loại rượu
khác có sẵn từ các nguồn dữ liệu như bộ dữ liệu UCI Machine Learning hoặc
Wine Spectator.
- Phạm Vi Phương Pháp Nghiên Cứu:
• Thu thập dữ liệu: Sử dụng dữ liệu hóa học và vị giác của các loại rượu từ
các nguồn đáng tin cậy như trang web chính thống của các nhà sản xuất
rượu, cơ sở dữ liệu UCI Machine Learning hoặc Wine Spectator.
• Tiền xử lý dữ liệu: Thực hiện các bước tiền xử lý như chuẩn hóa dữ liệu,
loại bỏ dữ liệu thiếu, và chuyển đổi các đặc trưng thành định dạng phù
hợp cho thuật toán KNN.
16
• Xây dựng mơ hình KNN: Sử dụng thuật tốn KNN để xây dựng mơ hình
phân loại các loại rượu dựa trên các đặc trưng đã được xác định.
• Đánh giá và tối ưu hóa mơ hình: Đánh giá hiệu suất của mơ hình KNN
thơng qua các độ đo như độ chính xác (accuracy), độ precision, độ recall,
và F1-score. Tiến hành tối ưu hóa các tham số của mơ hình như số lân cận
(k) để đạt được kết quả tốt nhất.
- Hạn Chế Phạm Vi Nghiên Cứu:
• Loại dữ liệu: Nghiên cứu chỉ tập trung vào việc sử dụng dữ liệu hóa học
và vị giác của rượu để phân loại, không xem xét các yếu tố khác như
nguồn gốc địa lý hay quy trình sản xuất.
• Thuật tốn: Giới hạn việc sử dụng chỉ một thuật tốn phân loại, đó là KNearest Neighbors (KNN), để tập trung vào việc tìm hiểu và đánh giá hiệu
suất của thuật toán này trong bài toán phân loại rượu.
- Dự Kiến Đầu Ra:
Dự kiến kết quả của nghiên cứu sẽ bao gồm một mô hình phân loại rượu
sử dụng thuật tốn KNN có hiệu suất đánh giá tốt trên các dữ liệu thử nghiệm,
được đo lường thơng qua các độ đo chính xác và độ tin cậy.
17
CHƯƠNG 2: CÁC PHƯƠNG PHÁP GIẢI QUYẾT VẤN
ĐỀ
2.1. Một số kĩ thuật giải quyết bài toán
2.1.1 Thuật toán K-Nearest Neighbor (KNN)
• Định nghĩa
K-láng giềng gần nhất (K Nearest Neighbor - KNN) là một trong những
thuật tốn học có giám sát đơn giản nhất trong Machine Learning. Ý tưởng của
KNN là tìm ra output của dữ liệu dữ trên thơng tin của những dữ liệu training
gần nó nhất.
• 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
trong training 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ần nhấ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.
• Ví dụ minh họa
Hình 2.1. Ví dụ minh họa của thuật tốn KNN
18
Bài tốn được đặt ra: Bạn có điểm của một môn học nhưng bạn không
biết thuộc loại nào (Giỏi, khá). Giả sử bạn không biết bất kỳ quy tắc nào để phân
loại cả. Ta dễ dàng thấy: Hình vng đỏ biểu diễn cho những bạn có điểm Khá,
hình tam giác xanh biểu diễn cho những bạn có điểm Giỏi. Điểm chấm xanh lá
là điểm của mình muốn tìm thuộc loại nào. Có một cách giải quyết là bạn phải đi
khảo sát những người xung quanh. Để biết điểm của mình thuộc loại nào thì bạn
phải đi hỏi những đứa có điểm gần số điểm mình nhất. Giả sử trong lớp 50 đứa,
mình khảo sát 3 đứa gần điểm mình nhất và được dữ liệu như hình trên. Với K =
3 dựa theo hình trên ta dễ dàng nhận ra có hai hình tam giác xanh và một hình
vng đỏ có khoảng cách gần nhất với điểm chấm xanh và với tỷ lệ tam giác
xanh nhiều hơn hình vng đỏ ta có thể đốn được điểm của mình là điểm Khá.
• Ví dụ về KNN nhiễu
Hình 2.2. KNN nhiễu
Ví dụ 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 label 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àu Lụ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ểm nà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ăng cho kết quả khơng chính xác.
19
• Khoảng cách trong không gian vector
Trong không gian một chiều, khoảng cách giữa hai điểm là trị tuyệt đối
giữa hiệu giá trị của hai điểm đó. Trong khơng gian nhiều chiều, khoảng cách
giữa hai điểm có thể được định nghĩa bằng nhiều hàm số khác nhau, trong đó độ
dài đường thẳng nối hai điểm chỉ là một trường hợp đặc biệt trong đó. Nhiều
thơng tin bổ ích (cho Machine Learning) có thể được tìm thấy tại Norms (chuẩn)
của vector trong tab Math.
• Ưu điểm của thuật tốn
- Phương pháp KNN là một trong những phương pháp phân loại đơn giản nhất
và dễ hiểu. Nó khơng u cầu kiến thức chun sâu về tốn học hay lập trình
máy tính, do đó có thể được áp dụng cho nhiều vấn đề phân loại trong thực
tế.
- KNN không yêu cầu giả định về phân phối của dữ liệu, nó có thể áp dụng
cho các tập dữ liệu phức tạp và không tuân theo phân phối chuẩn.
- KNN có thể được áp dụng cho nhiều loại dữ liệu, bao gồm cả dữ liệu số và
dữ liệu phân loại. Nó cũng có thể được sử dụng cho các bài toán phân loại đa
lớp.
- KNN có khả năng đạt được độ chính xác cao khi số lượng điểm dữ liệu lớn
và các điểm dữ liệu có khoảng cách giữa nhau đủ xa
- KNN có khả năng phân loại dữ liệu mới mà không cần phải tính tốn lại tồn
bộ mơ hình. Nó chỉ cần xác định khoảng cách giữa dữ liệu mới và các điểm
dữ liệu cũ, sau đó chọn K hàng xóm gần nhất và phân loại dữ liệu mới dựa
trên chúng.
• Nhược điểm của thuật toán
- KNN nhạy cảm với nhiễu và giá trị ngoại lai: do các điểm gần nhau sẽ xếp
vào cùng một nhóm, ngồi ra nếu tồn tại giá trị ngoại lai sẽ ảnh hưởng đáng
kể đến kết quả phân loại
- Phụ thuộc vào số lượng hàng xóm (K): Số lượng hàng xóm được xác định
bởi giá trị của K. Nếu chọn giá trị K quá lớn, phân loại sẽ trở nên quá đơn
20
giản và không đủ linh hoạt để phân loại các trường hợp phức tạp. Ngược lại,
nếu chọn giá trị K quá nhỏ, phân loại sẽ trở nên quá phức tạp và dễ bị ảnh
hưởng bởi nhiễu
- Tính tốn phức tạp: Việc tính tốn khoảng cách giữa các điểm dữ liệu có thể
làm phương pháp KNN trở nên chậm khi số lượng điểm dữ liệu lớn. Điều
này có thể ảnh hưởng đến hiệu suất của phương pháp khi tiếp cận các tập dữ
liệu lớn.
- Không tốt với các tập dữ liệu có số chiều lớn: Khi số chiều của tập dữ liệu
tăng lên, khoảng cách giữa các điểm dữ liệu sẽ trở nên giống nhau và khơng
cịn đủ ý nghĩa để phân loại các điểm dữ liệu.
- Không hỗ trợ học tập: KNN khơng cung cấp q trình học tập, nghĩa là nó
khơng học được các đặc trưng của tập dữ liệu để cải thiện kết quả phân loại.
Thay vào đó, nó chỉ đơn giản là lưu trữ tồn bộ tập dữ liệu và dùng lại các
điểm dữ liệu để phân loại.
2.1.2 Logistic Regression
• Định nghĩa
Thuật tốn Logistic Regression (Hồi quy Logistic) là một phương pháp
thống kê được sử dụng trong bài toán phân loại, đặc biệt là trong trường hợp
phân loại nhị phân (hai nhãn). Nó được sử dụng để dự đoán xác suất của một sự
kiện xảy ra dựa trên một tập hợp các đặc trưng (biến độc lập) liên quan.
• Cách hoạt động
Mơ hình Logistic Regression hoạt động bằng cách ước lượng xác suất xảy
ra của một sự kiện dựa trên một tập hợp các đặc trưng (biến độc lập).
Đầu vào: Tập dữ liệu huấn luyện gồm các mẫu có đặc trưng (biến độc lập) và
nhãn (biến phụ thuộc) đã được gán nhãn cho từng lớp phân loại.
Bước 1: Chuẩn bị dữ liệu
o Tiền xử lý dữ liệu: Bao gồm chuẩn hóa đặc trưng, xử lý các giá trị thiếu,
và chia thành tập huấn luyện và tập kiểm tra.
Bước 2: Khởi tạo tham số
21
o Khởi tạo trọng số w và bias b ban đầu. Các giá trị ban đầu có thể là 0 hoặc
được chọn ngẫu nhiên.
Bước 3: Tính tốn đầu ra và xác suất
o Tính tổng trọng số z bằng cách lấy tổng tích của giá trị đặc trưng và trọng
số tương ứng: z = w₁x₁ + w₂x₂ + ... + wₙxₙ + b
o Áp dụng hàm sigmoid cho tổng trọng số để tính tốn xác suất dự đốn: p
= 1 / (1 + e^(-z))
Bước 4: Tính tốn hàm mất mát
o Sử dụng hàm mất mát (thường là Cross-Entropy Loss) để đánh giá độ sai
khác giữa giá trị dự đoán và nhãn thực tế: J(w) = -(1/N) * Σ[yᵢ * log(pᵢ) +
(1 - yᵢ) * log(1 - pᵢ)]
Bước 5: Cập nhật tham số
o Sử dụng phương pháp tối ưu hóa như Gradient Descent, cập nhật các
trọng số để giảm hàm mất mát: wⱼ = wⱼ - α * (∂J(w) / ∂wⱼ) và b = b - α *
(∂J(w) / ∂b), trong đó α là learning rate (tỷ lệ học tập).
Bước 6: Lặp lại quá trình huấn luyện
o Tiếp tục lặp lại các bước trên bằng cách cập nhật tham số cho đến khi đạt
được sự hội tụ hoặc điều kiện dừng khác được đáp ứng.
Bước 7: Đánh giá mơ hình
o Sử dụng tập dữ liệu kiểm tra để đánh giá hiệu suất của mơ hình, bao gồm
độ chính xác (accuracy) và các độ đo đánh giá khác như độ phủ (recall),
độ chính xác (precision), F1-score, v.v.
• Ưu điểm của thuật tốn
- Đơn giản và dễ hiểu: Logistic Regression là một thuật toán đơn giản và dễ
hiểu, khơng địi hỏi kiến thức tốn cao cấp và có thể được áp dụng một cách
nhanh chóng.
- Tính linh hoạt: Thuật tốn Logistic Regression có thể được áp dụng vào các
bài toán phân loại nhị phân và đa nhãn. Nó cũng có thể được mở rộng để xử
22
lý các vấn đề phân loại đa lớp thông qua các phương pháp như One-vs-Rest
hoặc Softmax Regression.
- Xử lý tốt với dữ liệu lớn: Logistic Regression có thể xử lý tốt với các tập dữ
liệu lớn mà không gặp vấn đề về hiệu suất. Thuật tốn có thể được tối ưu hóa
và huấn luyện nhanh chóng trên các tập dữ liệu lớn.
- Có thể xác định độ quan trọng của đặc trưng: Logistic Regression cung cấp
thông tin về độ quan trọng của từng đặc trưng trong việc phân loại. Điều này
cho phép hiểu rõ hơn về ảnh hưởng của từng đặc trưng lên kết quả dự đoán.
- Khả năng giải thích kết quả: Kết quả của Logistic Regression có thể được
giải thích dễ dàng và logic, giúp hiểu rõ hơn về quyết định của mơ hình.
Trọng số của từng đặc trưng cung cấp thơng tin về đóng góp của chúng vào
kết quả phân loại.
- Tolerant với nhiễu và giá trị thiếu: Logistic Regression có khả năng xử lý dữ
liệu nhiễu và giá trị thiếu một cách tương đối tốt. Nó có khả năng chịu được
sự nhiễu và thích nghi với các điểm dữ liệu bất thường.
• Nhược điểm của thuật toán
- Giới hạn trong phân loại phi tuyến: Logistic Regression mơ hình hóa các
quan hệ tuyến tính giữa các đặc trưng và đầu ra. Do đó, nó khơng thể xử lý
tốt các quan hệ phi tuyến phức tạp giữa đặc trưng và nhãn.
- Dễ bị ảnh hưởng bởi giá trị nhiễu: Logistic Regression có thể nhạy cảm với
các giá trị nhiễu hoặc điểm dữ liệu bất thường. Các điểm nhiễu có thể có ảnh
hưởng lớn đến hướng của ranh giới phân loại và có thể dẫn đến kết quả dự
đốn khơng chính xác.
- Khả năng bị overfitting: Nếu khơng kiểm sốt tốt việc q khớp (overfitting),
Logistic Regression có thể tạo ra một mơ hình q phức tạp và khơng thể
tổng quát hóa tốt cho dữ liệu mới. Điều này xảy ra khi mơ hình q phức tạp
so với sự phân bố thực sự của dữ liệu huấn luyện.
- Yêu cầu đặc trưng độc lập: Logistic Regression yêu cầu rằng các đặc trưng
độc lập với nhau, tức là khơng có tương quan hoặc phụ thuộc tuyến tính
23
mạnh giữa chúng. Nếu có sự tương quan mạnh hoặc đa cộng tuyến, kết quả
dự đốn của mơ hình có thể khơng chính xác hoặc khơng ổn định.
- Khả năng xử lý dữ liệu lớn bị hạn chế: Mặc dù Logistic Regression có khả
năng xử lý tốt với dữ liệu lớn, nó có thể gặp khó khăn khi số lượng đặc trưng
(biến) rất lớn so với kích thước mẫu huấn luyện. Điều này có thể dẫn đến
hiện tượng quá khớp và yêu cầu các phương pháp xử lý dữ liệu phù hợp.
- Khơng thích hợp cho bài tốn phân loại đa lớp: Logistic Regression ban đầu
chỉ được thiết kế để giải quyết bài toán phân loại nhị phân. Mặc dù có thể mở
rộng để xử lý bài tốn đa lớp, nhưng khơng hiệu quả bằng các thuật tốn
phân loại
2.1.3 Convolutional Neural Network (CNN)
• Định nghĩa
Trong mạng neural, mơ hình mạng neural tích chập (CNN) là 1 trong
những mơ hình để phân loại và phân loại hình ảnh. Trong đó, xác định đối
tượng và phân loại khuôn mặt là 1 trong số những lĩnh vực mà CNN được sử
dụng rộng rãi. CNN phân loại hình ảnh bằng cách lấy 1 hình ảnh đầu vào, xử
lý và phân loại nó theo các hạng mục nhất định (Ví dụ: Chó, Mèo, Hổ, ...).
Máy tính coi hình ảnh đầu vào là 1 mảng pixel và nó phụ thuộc vào độ phân
giải của hình ảnh. Dựa trên độ phân giải hình ảnh, máy tính sẽ thấy H x W x
D (H: Chiều cao, W: Chiều rộng, D: Độ dày). Ví dụ: Hình ảnh là mảng ma
trận RGB 6x6x3 (3 ở đây là giá trị RGB).
24
Hình 2.3: Mảng ma trận RGB 6x6x3
Về kỹ thuật, mô hình CNN để training và kiểm tra, mỗi hình ảnh đầu
vào sẽ chuyển nó qua 1 loạt các lớp tích chập với các bộ lọc (Kernals), tổng
hợp lại các lớp được kết nối đầy đủ (Full Connected) và áp dụng hàm
Softmax để phân loại đối tượng có giá trị xác suất giữa 0 và 1. Hình dưới đây
là tồn bộ luồng CNN để xử lý hình ảnh đầu vào và phân loại các đối tượng
dựa trên giá trị. Mạng neural với nhiều lớp tích chập
Hình 2.4: Mơ hình train của mạng
• Lớp tích chập - Convolution Layer
Tích chập là lớp đầu tiên để trích xuất các tính năng từ hình ảnh đầu vào.
Tích chập duy trì mối quan hệ giữa các pixel bằng cách tìm hiểu các tính
năng hình ảnh bằng cách sử dụng các ô vuông nhỏ của dữ liệu đầu vào. Nó là
1 phép tốn có 2 đầu vào như ma trận hình ảnh và 1 bộ lọc hoặc hạt nhân.
25