Một trong những thuật toán thường được dùng trong Machine Learning 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ất rộng rãi trong các bài toán
Trang 1TRƯỜNG ĐẠI HỌC SÀI GÒN KHOA CÔNG NGHỆ THÔNG TIN
TIỂU LUẬN HỌC PHẦN KHAI PHÁ DỮ LIỆU
TÊN ĐỀ TÀI: TÌM HIỂU VỀ THUẬT TOÁN KNN: K-NEAREST NEIGHBOR CLASSIFICATION VÀ ỨNG DỤNG VÀO XỬ LÍ ẢNH
Họ tên thành viên trong nhóm:
LÊ THANH HUY -3118410149
TP Hồ Chí Minh, ngày 8 tháng 5 năm 2022
Trang 2Phân công
Huy
Khảo sát, thiết kế, viết báo cáo
60%
Phân tích
40%
Trang 3Mục lục
PHẦN 1: TỔNG QUAN 4
1.1.Lý do chọn đề tài: 4
1.2.Lịch sử nghiên cứu: 4
1.2.1 Dự đoán tuổi của bào ngư: 4
1.2.2 Sử dụng các thuật toán KNN để xác định người nhận của chương trình học bổng Smart Indonesia: 4
PHẦN 2: CƠ SỞ LÝ THUYẾT 5
2.1 Khai phá dữ liệu là gì: 5
2.2 Các giai đoạn khai phá dữ liệu: 6
2.3 Các bài toán khai phá dữ liệu cơ bản: 7
2.3.1.Bài toán khai thác các tập phổ biến: 7
2.3.2 Phân lớp và Dự báo : 8
2.4.Thuật toán K-NEAREST NEIGHBOR CLASSIFICATION: 8
2.4.1.Ý tưởng: 8
2.4.2.Lưu đồ giải thuật: 9
2.4.3.Thuật toán: 10
PHẦN 3: MỘT ỨNG DỤNG KHAI PHÁ DỮ LIỆU: 11
3.1 Bài toán: 11
3.2.Thực hiện: 11
3.3.Kết quả : 13
3.3.1.Ý nghĩa của ứng dụng: 13
3.3.2.Ưu nhược điểm và hướng phát triển: 13
Trang 4PHẦN 1: TỔNG QUAN
1.1.Lý do chọn đề tài:
Những năm gần đây, AI nổi lên như một 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 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 trong lĩnh vực này
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
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 ngày càng lớn Vì vậy nhu cầu để xử lý dữ liệu cũng lớn hơn, Machine Learning đang góp phần giải quyết các vấn đề này Một trong những thuật toán thường được dùng trong Machine Learning 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ất rộng rãi trong các bài toán phân lớp.Vì vậy nhóm chúng em muốn tìm hiểu để hiểu rõ hơn và ứng dụng
nó giải quyết các vấn đề về dữ liệu
1.2.Lịch sử nghiên cứu:
1.2.1 Dự đoán tuổi của bào ngư:
Tuổi của bào ngư có thể được tìm thấy bằng cách cắt vỏ của nó và đếm số vòng trên vỏ Trong Bộ dữ liệu bào ngư, bạn có thể tìm thấy các số đo tuổi của một số lượng lớn các con bào ngư cùng với rất nhiều các phép đo vật lý khác
Mục tiêu của dự án là phát triển một mô hình có thể dự đoán tuổi của một con bào ngư hoàn toàn dựa trên các phép đo vật lý khác Điều này sẽ cho phép các nhà nghiên cứu ước tính tuổi của bào ngư mà không cần phải cắt vỏ và đếm số vòng
1.2.2 Sử dụng các thuật toán KNN để xác định người nhận của chương trình học bổng Smart Indonesia:
Chương trình học bổng Thẻ thông minh Indonesia (KIP) là một chương trình học bổng của chính phủ
thông qua Bộ Tôn giáo của Cộng hòa Indonesia, được trao cho những sinh viên có học lực khá nhưng kinh tế yếu kém Đại học Nhà nước Hồi giáo Sultan Syarif Kasim, Riau nhận sinh viên mới hàng năm, nhưng chỉ tiêu cho chương trình học
Trang 5bổng KIP có giới hạn Với hạn ngạch giới hạn cho chương trình KIP, cần có một
hệ thống có thể phân loại dữ liệu gửi từ các sinh viên đăng ký chương trình KIP, để quá trình lựa chọn có thể
được thực hiện nhanh chóng, chính xác và phù hợp với hạn ngạch yêu cầu Trong nghiên cứu này, các thuật toán KModes và K-Nearest Neighbor (KNN) đã được sử dụng bằng cách sử dụng dữ liệu về thành tựu, học bạ và điểm thi quốc gia khi học cấp 3, thu nhập của bố, tình trạng của bố và tình trạng sở hữu nhà Quá trình được thực hiện bằng cách thực hiện các giai đoạn ban đầu, cụ thể là phân nhóm bằng thuật toán K Modes, sau đó xác thực hoặc kiểm tra dữ liệu bằng cách áp dụng phương pháp Xác thực chéo Tìm kiếm trong Lưới (GSCV) và cuối cùng là dự đoán bằng thuật toán KNN Thử nghiệm cho kết quả giá trị hiệu suất là 66,79%
PHẦN 2: CƠ SỞ LÝ THUYẾT
2.1 Khai phá dữ liệu là gì:
Data mining – khai phá dữ liệu là quá trình phân loại, sắp xếp các tập hợp dữ liệu
lớn để xác định các mẫu và thiết lập các mối liên hệ nhằm giải quyết các vấn đề nhờ phân tích dữ liệu Các MCU khai phá dữ liệu cho phép các doanh nghiệp có thể dự đoán được xu hướng tương lai
Quá trình khai phá dữ liệu là một quá trình phức tạp bao gồm kho dữ liệu chuyên sâu cũng như các công nghệ tính toán Hơn nữa, Data Mining không chỉ giới hạn trong việc trích xuất dữ liệu mà còn được sử dụng để chuyển đổi, làm sạch, tích hợp dữ liệu và phân tích mẫu
Có nhiều tham số quan trọng khác nhau trong Data Mining, chẳng hạn như quy tắc kết hợp, phân loại, phân cụm và dự báo Một số tính năng chính của Data Mining:
Dự đoán các mẫu dựa trên xu hướng trong dữ liệu
Tính toán dự đoán kết quả
Tạo thông tin phản hồi để phân tích
Tập trung vào cơ sở dữ liệu lớn hơn
Trang 6 Phân cụm dữ liệu trực quan
2.2 Các giai đoạn khai phá dữ liệu:
1) Nghiên cứu lĩnh vực
Ta cần nghiên cứu lĩnh vực cần sử dụng Data mining để xác định được những tri thức ta cần chắt lọc, từ đó định hướng để tránh tốn thời gian cho những tri thức không cần thiết
2) Tạo tập tin dữ liệu đầu vào
Ta xây dựng tập tin để lưu trữ các dữ liệu đầu vào để máy tính có thể lưu trữ và xử lý
3) Tiền xử lý, làm sạch, mã hóa
Ở bước này ta tiến hành bỏ bớt những dữ liệu rườm rà, không cần thiết, tinh chỉnh lại cấu trúc của dữ liệu và mã hóa chúng để tiện cho quá trình xử lý
4) Rút gọn chiều
Thông thường một tập dữ liệu có chiều khá lớn sẽ sinh ra một lượng dữ liệu khổng
lồ, ví dụ với n chiều ta sẽ có 2^n tổ hợp Do đó, đây là một bước quan trọng giúp giảm đáng kể hao tổn về tài nguyên trong quá trình xử lý tri thức Thông thường ta
sẽ dùng Rough set để giảm số chiều
5) Chọn tác vụ khai thác dữ liệu
Để đạt được mục đích ta cần, ta cần chọn được tác vụ khai thác dữ liệu sao cho phù hợp Thông thường có các tác vụ sau:
* Đặc trưng (feature): Chọn ra các đặc trưng quan trọng, kết hợp tốt với nhau để gia tăng kết
quả
* Phân biệt (discrimination)
* Kết hợp (association)
Trang 7* Phân lớp (classification)
* Gom cụm (clusterity)
* Xu thế (trend analysis)
* Phân tích độ lệch
* Phân tích hiếm
6) Chọn các thuật giải Khai thác dữ liệu
7) Khai thác dữ liệu: Tìm kiếm tri thức
Sau khi tiến hành các bước trên thì đây là bước chính của cả quá trình, ta sẽ tiến hành khai thác và tìm kiếm tri thức
8) Đánh giá mẫu tìm được
Ta cần đánh giá lại xem trong các tri thức tìm được, ta sẽ sử đụng được những tri thức nào, những tri thức nào dư thừa, không cần thiết
9) Biểu diễn tri thức
Ta biểu diễn tri thức vừa thu thập được dưới dạng ngôn ngữ tự nhiên và hình thức sao cho người dùng có thể hiểu được những tri thức đó
10) Trình bày thông tin :
Trong bước cuối cùng, thông tin sẽ được thể hiện dưới dạng cây, bảng, biểu đồ và
ma trận
2.3 Các bài toán khai phá dữ liệu cơ bản:
2.3.1.Bài toán khai thác các tập phổ biến:
Bài toán khai thác tập phổ biến (frequent itemset) là lớp bài toán rất quan trọng
trong lĩnh vực khai phá dữ liệu Mục tiêu của nó là tìm tất cả các tập mẫu, liên kết, tương quan hoặc cấu trúc nhân quả có độ phổ biến cao trong tập hợp tất cả các hạng
Trang 8mục hoặc đối tượng trong cơ sở dữ liệu giao dịch, cơ sở dữ liệu quan hệ và các kho thông tin dữ liệu khác
Bài toán khai thác các tập phổ biến được ứng dụng trong rất nhiều vấn đè, nổi tiếng nhất là Basket data analysis (dự đoán, gợi ý các món hàng thường được cho cùng vào giỏ hàng với món đồ A đã được chọn mua trước đó) Ngoài ra nó còn được ứng dụng trong lớp các bài toán: tiếp thị chéo, thiết kế danh mục, phân tích thua lỗ, phân cụm, phân loại, hệ thống khuyến nghị, v.v Và đặc biệt nó còn thể ứng dụng cho thiết kế các dịch vụ tiện ích trong nhà thông minh
2.3.2 Phân lớp và Dự báo :
Xây dựng các mô hình (chức năng) để mô tả và phân biệt khái niệm cho các lớp hoặc khái niệm để dự đoán trong tương lai Chẳng hạn, phân lớp quốc gia dựa theo khí hậu, hoặc phân lớp ô tô dựa theo tiêu tốn xăng
Dự đoán giá trị số chưa biết hoặc đã mất
2.4.Thuật toán K-NEAREST NEIGHBOR CLASSIFICATION:
2.4.1.Ý tưởng:
Thuật toán KNN cho rằng những dữ liệu tương tự nhau sẽ tồn tại gần nhau trong
một không gian, từ đó công việc của chúng ta là sẽ tìm k điểm gần với dữ liệu cần kiểm tra nhất Việc tìm khoảng cách giữa 2 điểm củng có nhiều công thức có thể
sử dụng, tùy trường hợp mà chúng ta lựa chọn cho phù hợp Đây là 3 cách cơ bản
để tính khoảng cách 2 điểm dữ liệu x, y có k thuộc tính:
Trang 9Từ đó ta có thể xác định được output của một dữ liệu mới dựa trên output của
K điểm gần nhất xung quanh nó.
Ý tưởng của thuật toán này là nó không học một điều gì từ tập dữ liệu học (nên KNN được xếp vào loại lazy learning
Lấy ví dụ: trong 1 tập các hình vuông màu đỏ và hình tròn màu xanh, ta có một hình tam giác và cần xác định nó thuộc màu nào trong tập đó
Ta lấy 3 giá trị có khoảng cách gần hình tam giác nhất Trong 3 hình gần hình tam giác có 2 hình màu tròn xanh và 1 hình vuông đỏ nên theo giải thuật knn thì hình tam giác sẽ là hình tròn xanh
Trang 10Thuật toán sẽ lấy các giá trị x, y trên trục tọa độ của hình tam giác để tiến hành tính toán khoảng cách đến các hình có giá trị x,y trên trục tọa độ theo công thức tính khoảng cách:
Ví dụ tọa độ hình tam giác là 2,3 Và có 1 điểm ở gần là 4,5 Công thức tính
Thực hiện tương tự với hết tất cả các hình còn lại và lựa chọn ra k khoảng cách gần nhất và theo ta chọn là 3 Nên cuối cùng ta xác định được nó là hình tròn xanh
2.4.2.Lưu đồ giải thuật:
Trang 112.4.3.Thuật toán:
Thuật toán của knn có thể được mô tả:
trong tập train
cho số lượng lớn nhất
Một vấn đề được đặt ra đó là có phải cứ chọn K càng lớn thì càng tốt, thì câu trả lời
đó là còn tùy thuộc vào dữ liệu đó như thế nào Không phải lúc nào K càng lớn thì
Trang 12cho kết quả tốt và ngược lại Việc lựa chọn tham số K của mô hình sẽ tiến hành thông qua thực nghiệm nhiều lần để chọn ra kết quả tốt nhất
Ưu điểm: Với các bước như trên, chúng ta nhận thấy rằng thuật toán của KNN rất đơn giản, dễ thực hiện, dễ cài đặt Việc dự đoán kết quả thật là dễ dàng, độ phức tạp của thuật toán nhỏ
Nhược điểm:
Bên cạnh đó sẽ tồn tại nhiều nhược điểm như:
(nên KNN được xếp vào loại lazy learning), mọi tính toán được thực hiện khi nó cần dự đoán nhãn của dữ liệu mới.Nếu tập train của chúng ta có kích thước rất lớn, thì việc duyệt qua tất cả các điểm dữ liệu để tính toán là rất mất thời gian, đặt biệt
là trong thời kỳ hiện nay thì dữ liệu thu thập được rất lớn
sẽ dẫn đễn kết quả không tốt
PHẦN 3: MỘT ỨNG DỤNG KHAI PHÁ DỮ LIỆU:
3.1 Bài toán:
Xây dựng 1 chương trình nhận diện chữ số bằng hình ảnh:
Từ 1 hình ảnh chứa chữ số nhất định có thể cho máy nhận diện được đó là chữ số bao nhiêu
3.2.Thực hiện:
Ngôn ngữ thực hiện: python
Ý tưởng: ta sử dụng dữ liệu train là 1 hình ảnh chứa nhiều kí tự, ta cắt dữ liệu hình ảnh đó ra thành các hình ảnh nhỏ là các dữ liệu train và gán các dữ liệu nhận dạng cho nó Khi ta đưa vào 1 hình ảnh cần nhận dạng là số bao nhiêu thì hệ thống sẽ xác định được chính xác nó là số bao nhiêu dựa và việc thực hiện thuật toán knn để tính khoảng cách từ hình ảnh cần xác nhận đến các hình ảnh trong dữ liệu train (lưu ý : chỉ nhận diện được các số từ 0 đến 9)
Triển khai:
Trang 13Với hình ảnh dữ liệu chứa dữ liệu train là digits.png
Ta cho chương trình đọc hình ảnh ra dưới dạng ảnh xám:
Ta cắt các ảnh nhỏ tương ứng với các số từ ảnh digits.png:
Chuyển dữ liệu ảnh về dạng array:
Tiến hành tạo các dữ liệu train và dữ liệu test, các dữ liệu sẽ được chuyển thành dạng mảng 1 chiều dưới dạng float :
Tiến hành gán nhãn cho dữ liệu train, ví dụ khi đó là hình số 0 sẽ được gán là 0
Trang 14Đưa vào dữ liệu nhận dạng(hình ảnh cần nhận dạng) ta cũng thực hiện việc chuyển đổi dữ liệu như dữ liệu train
Áp dụng thuật toán knn tiến hành nhận dạng , trong trường hợp này k là 5 (lấy 5 giá trị gần với dữ liệu cần nhận dạng nhất)
3.3.Kết quả :
Khi ta đưa hình ảnh số 3 thì chương trình sẽ in ra kết quả nhận dạng là 3
Ảnh nhận dạng:
Kết quả khi nhận diện với k=1:
Phần trăm chính xác:
Trang 15Kết quả khi nhận diện với k=5:
Phần trăm chính xác:
3.3.1.Ý nghĩa của ứng dụng:
Ứng dụng có thể nhận diện được 1 hình ảnh là chữ số bao nhiêu có thể áp dụng trong việc nhận dạng các loại hình ảnh khác khi có những dữ liệu train mới và mở rộng hơn
3.3.2.Ưu nhược điểm và hướng phát triển:
Ưu điểm :
Nhận diện được chữ số tương đối chính xác
Nhược điểm:
Ứng dụng còn hạn chế chỉ nhận diện được chữ số từ 0 đến 9
Ứng dụng chưa có giao diện chỉ sửa các thông số trong code để thay đổi kết quả
Hướng phát triển:
-Có thể áp dụng để nhận dạng hình ảnh chữ kí, nhận diện bảng số xe khi có thêm
dữ liệu train phù hợp
Trang 16Tài liệu tham khảo:
[1] Jiawei Han, Micheline Kamber, “Data Mining: Concepts and Techniques”, Second Edition, Morgan Kaufmann Publishers, 2006
[2] David Hand, Heikki Mannila, Padhraic Smyth, “Principles of Data Mining”, MIT Press, 2001
[3] David L Olson, Dursun Delen, “Advanced Data Mining Techniques”, Springer-Verlag, 2008
[4] Graham J Williams, Simeon J Simoff, “Data Mining: Theory, Methodology, Techniques, and Applications”, Springer-Verlag, 2006
[5] Hillol Kargupta, Jiawei Han, Philip S Yu, Rajeev Motwani, and Vipin Kumar,
“Next Generation of Data Mining”, Taylor & Francis Group, LLC, 2009
[6] Daniel T Larose, “Data mining methods and models”, John Wiley & Sons, Inc,
2006
[7] Ian H.Witten, Eibe Frank, “Data mining : practical machine learning tools and techniques”, Second Edition, Elsevier Inc, 2005
[8] Florent Messeglia, Pascal Poncelet & Maguelonne Teisseire, “Successes and new directions in data mining”, IGI Global, 2008
[9] Oded Maimon, Lior Rokach, “Data Mining and Knowledge Discovery Handbook”, Second Edition, Springer Science + Business Media, LLC 2005, 2010