Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 16

TRƯỜ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

GIÁO VIÊN HƯỚNG DẪN: TS.ĐINH THỊ THU HƯƠNG

TP. Hồ Chí Minh, ngày 8 tháng 5 năm 2022


Phân công
Stt Thành viên Nhiệm vụ Tỷ lệ
1 Lê Thanh Khảo sát, 60%
Huy thiết kế, viết
báo cáo
2 Khảo sát, 40%
Phân tích
Mụ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
PHẦ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
bổ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.
 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)


* 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
mụ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:
Từ đó 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.
Thuậ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
khoảng cách được áp dụng là: √ ( 2−4 )2 +(3−5)2=2.8
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:


2.4.3.Thuật toán:
Thuật toán của knn có thể được mô tả:
 Xác định tham số K số láng giềng gần nhất
 Tính khoảng cách của đối tượng cần phân lớp tới tất cả các đối tượng có trong tập
train
 Lấy k đối tượng cho khoảng cách nhỏ nhất
 Trong các giá trị vừa lấy, ta thống kê số lượng của mỗi lớp, chọn phân lớp 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ì
cho 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ư:

 Ý 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), 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
 KNN rất nhạy cảm với dữ liệu nhiễu, đặc biệt là khi ta chọn K nhỏ. Việc này 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:
Vớ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
Đư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:


Kế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
Tà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.

You might also like