Giới thiệu về thuật toán KmeansTrong thuật toán K-means clustering, chúng ta không biết nhãn label của từng điểm dữ liệu.. Mục đích là làm thể nào để phân dữ liệu thành các cụm cluster k
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
KHOA CÔNG NGHỆ THÔNG TIN
o0o BÁO CÁO BÀI TẬP LỚN
Môn: Lập trình với Python
Giảng viên hướng dẫn: Nguyễn Hoàng Anh
Sinh viên thực hiện: Nguyễn Tiến Hải - B19DCCN217
Nguyễn Văn Bến - B19DCCN065 Chu Ngọc Quang - B19DCCN519 Nguyễn Quang Thiện - B19DCCN668
Đỗ Như Đức - B19DCCN189
Trang 2Mục lục
I Danh sách thành viên nhóm và nhiệm vụ……….3
II Giới thiệu thuật toán……… 4
III Tóm tắt thuật toán……… 6
IV Giới thiệu ứng dụng……… 7
1 Tổng quan về ứng dụng……… 7
2 Giao diện của ứng dụng……… 7
3 Các nút chức năng của chúng……….7
4 Phân tích thiết kế của ứng dụng……… 8
a Sơ đồ khối các chức năng của ứng dụng……….8
b Sơ đồ thuật toán……… 9
c Sơ đồ thực thể quan hệ (ERD)………
10 V Kết quả của ứng dụng……… 11
1 Sơ đồ tổng quan ứng dụng được triển khai ……… 11
2 Các kết quả thực hiện được……… 12
VI Kết luận………15
1 Hạn chế……….15
a Chúng ta cần biết số lượng cluster cần clustering……….15
b Nghiệm cuối cùng phụ thuộc vào các centers được khởi tạo ban đầu………… 15
c Các cluster cần có số lượng điểm gần bằng nhau……….16
d Khi mỗi cluster nằm phía trong luster khác……… 17
2 Kết luận……….18
VII Tài liệu tham khảo……… 19
Trang 3Danh sách bảng biểu
Bảng 1: Sơ đồ khối các chức năng của ứng dụng……… 7
Bảng 2: Sơ đồ thuật toán……… 8
Bảng 3: Sơ đồ thực thể quan hệ (ERD)……… 9
Bảng 4 : Sơ đồ tổng quan ứng dụng được triển khai………10
Danh sách hình ảnh Hình 1………4
Hình 2………5
Hình 3………6
Hình 4……… 11
Hình 5……… 12
Hình 6……… 12
Hình 7……… 13
Hình 8……… 14
Hình 9……… 15
Hình 10………16
Hình 11………17
Trang 4I Danh sách thành viên nhóm và nhiệm vụ
Nguyễn Quang Thiện: - Xây dựng ý tưởng
- Tìm hiểu, xây dựng, chỉnh sửa code
- Làm phần giới thiệu và kết quả ứng dụng Nguyễn Văn Bến: - Xây dựng ý tưởng
- Tìm hiểu ứng dụng
- Làm biểu đồ tổng quát của ứng dụng
Nguyễn Tiến Hải: - Xây dựng ý tưởng
- Tổng hợp nội dung
- Làm báo cáo
- Làm slide
Chu Ngọc Quang: - Xây dựng ý tưởng
- Tìm hiểu ứng dụng
- Làm sơ đồ thực thể quan hệ (ERD)
Đỗ Như Đức: - Xây dựng ý tưởng
- Tìm hiểu ứng dụng
- Làm sơ đồ khối các chức năng của của ứng dụng
- Thuyết trình
Trang 5
II Giới thiệu về thuật toán Kmeans
Trong thuật toán K-means clustering, chúng ta không biết nhãn (label) của từng điểm dữ liệu Mục đích là làm thể nào để phân dữ liệu thành các cụm (cluster) khác nhau
sao cho dữ liệu trong cùng một cụm có tính chất giống nhau.
Ví dụ: Một công ty muốn tạo ra những chính sách ưu đãi cho những nhóm khách
hàng khác nhau dựa trên sự tương tác giữa mỗi khách hàng với công ty đó (số năm là khách hàng; số tiền khách hàng đã chi trả cho công ty; độ tuổi; giới tính; thành phố; nghề nghiệp; …) Giả sử công ty đó có rất nhiều dữ liệu của rất nhiều khách hàng nhưng chưa
có cách nào chia toàn bộ khách hàng đó thành một số nhóm/cụm khác nhau Nếu một người biết Machine Learning được đặt câu hỏi này, phương pháp đầu tiên anh (chị) ta nghĩ đến sẽ là K-means Clustering Vì nó là một trong những thuật toán đầu tiên mà anh
ấy tìm được trong các cuốn sách, khóa học về Machine Learning Sau khi đã phân ra được từng nhóm, nhân viên công ty đó có thể lựa chọn ra một vài khách hàng trong mỗi nhóm để quyết định xem mỗi nhóm tương ứng với nhóm khách hàng nào Phần việc cuối cùng này cần sự can thiệp của con người, nhưng lượng công việc đã được rút gọn đi rất nhiều
Ý tưởng đơn giản nhất về cluster (cụm) là tập hợp các điểm ở gần nhau trong một không gian nào đó (không gian này có thể có rất nhiều chiều trong trường hợp thông tin
về một điểm dữ liệu là rất lớn) Hình bên dưới là một ví dụ về 3 cụm dữ liệu (từ giờ tôi sẽ
viết gọn là cluster).
Trang 6Hình 1
Giả sử mỗi cluster có một điểm đại diện (center) màu vàng Và những điểm xung
quanh mỗi center thuộc vào cùng nhóm với center đó Một cách đơn giản nhất, xét một điểm bất kỳ, ta xét xem điểm đó gần với center nào nhất thì nó thuộc về cùng nhóm với
center đó Tới đây, chúng ta có một bài toán thú vị: Trên một vùng biển hình vuông lớn
có ba đảo hình vuông, tam giác, và tròn màu vàng như hình trên Một điểm trên biển được gọi là thuộc lãnh hải của một đảo nếu nó nằm gần đảo này hơn so với hai đảo kia Hãy xác định ranh giới lãnh hải của các đảo.
Hình dưới đây là một hình minh họa cho việc phân chia lãnh hải nếu có 5 đảo khác nhau được biểu diễn bằng các hình tròn màu đen:
Hình 2
Chúng ta thấy rằng đường phân định giữa các lãnh hải là các đường thẳng (chính xác hơn thì chúng là các đường trung trực của các cặp điểm gần nhau) Vì vậy, lãnh hải của một đảo sẽ là một hình đa giác
Trang 7III Tóm tắt thuật toán
Đầu vào: Dữ liệu XX và số lượng cluster cần tìm KK.
Đầu ra: Các center MM và label vector cho từng điểm dữ liệu YY.
1 Chọn KK điểm bất kỳ làm các center ban đầu
2 Phân mỗi điểm dữ liệu vào cluster có center gần nó nhất
3 Nếu việc gán dữ liệu vào từng cluster ở bước 2 không thay đổi so với vòng lặp trước nó thì ta dừng thuật toán
4 Cập nhật center cho từng cluster bằng cách lấy trung bình cộng của tất các các điểm dữ liệu đã được gán vào cluster đó sau bước 2
5 Quay lại bước 2
Chúng ta có thể đảm bảo rằng thuật toán sẽ dừng lại sau một số hữu hạn vòng lặp Thật vậy, vì hàm mất mát là một số dương và sau mỗi bước 2 hoặc 3, giá trị của hàm mất
mát bị giảm đi Theo kiến thức về dãy số trong chương trình cấp 3: nếu một dãy số giảm
và bị chặn dưới thì nó hội tụ! Hơn nữa, số lượng cách phân nhóm cho toàn bộ dữ liệu là
hữu hạn nên đến một lúc nào đó, hàm mất mát sẽ không thể thay đổi, và chúng ta có thể dừng thuật toán tại đây
IV Giới thiệu ứng dụng
1 Tổng quan về ứng dụng
Ứng dụng này được áp dụng trên thuật toán Kmeans để giải quyết các vấn đề về chia điểm, các vật,… Các đối tượng có đặc điểm gần giống nhau sẽ được nhóm thành một nhóm chung Trong ứng dụng này các đối tượng đã được mô tả bằng các điểm và chia chúng thành các nhóm mà ta cho trước
2 Giao diện của ứng dụng
Trang 8Hình 3
3 Các nút và chức năng của chúng
K : tương ứng với số nhóm cần thêm(k >0 , k<=8)
Ramdom: tạo các điểm ngẫu nhiên trong bảng
Run: thay đổi màu của các điểm trong bảng khi bảng đã có điểm
Reset: trở lại vị trí ban đầu
Agorithm: sẻ trả lại kết quả tối ưa hóa nhất mà nút Run hướng đến
Error : tính tổng khoảng cách từ các điểm đến các các điểm trung tâm của chúng (error càng nhỏ thì kết quả càng tối ưu)
4 Phân tích thiết kế của ứng dụng
a Sơ đồ khối các chức năng của ứng dụng
Bảng 1
Trang 9b Sơ đồ thuật toán
Bảng 2
Trang 10c Sơ đồ thực thể quan hệ (ERD)
Bảng 3
Trang 11V Kết quả của ứng dụng
1 Sơ đồ tổng quan ứng dụng được triển khai
Trang 122 Các kết quả thực hiện được
Tích thêm các điểm trong bảng
Hình 4
Trang 13Chọn số nhóm và chọn ramdom rồi chọn run
Hình 5
Sau khi chọn hàm agorithm để hàm tối ưa nhất
Trang 14Hình 6
Và kết quả đã xog và chúng ta sẽ thử nút reset
Hình 7
Trang 15VI Kết luận
1 Hạn chế
Có một vài hạn chế của thuật toán K-means clustering:
a Chúng ta cần biết số lượng cluster cần clustering
Trong thuật toán K-means, chúng ta cần biết được đại lượng K là số lượng clusters Trong thực tế, nhiều trường hợp chúng ta không xác định được giá trị này Có một số phương pháp giúp xác định số lượng clusters, bạn có thể tham khảo Elbow method - Determining the number of clusters in a data set
b Nghiệm cuối cùng phụ thuộc vào các centers được khởi tạo ban đầu
Tùy vào các center ban đầu mà thuật toán có thể có tốc độ hội tụ rất chậm, ví dụ:
Trang 16Hình 9
Có cách khắc phục đó là:
Chạy K-means clustering nhiều lần với các center ban đầu khác nhau rồi chọn cách có hàm mất mát cuối cùng đạt giá trị nhỏ nhất
c Các cluster cần có số lượng gần bằng nhau
Dưới đây là một ví dụ với 3 cluster với 20, 50, và 1000 điểm Kết quả cuối cùng không chính xác
Trang 17Hình 10
d Khi một cluster nằm phía trong 1 cluster khác
Đây là ví dụ kinh điển về việc K-means clustering không thể phân cụm dữ liệu Một cách tự nhiên, chúng ta sẽ phân ra thành 4 cụm: mắt trái, mắt phải, miệng, xunh quanh mặt Nhưng vì mắt và miệng nằm trong khuôn mặt nên K-means clustering không thực hiện được:
Trang 18Hình 11
2 Kết luận
Mặc dù có những hạn chế, K-means clustering vẫn cực kỳ quan trọng trong và ứng dụng của thuật toán Kmeans mạng lại rất nhiều lợi ích cho công việc thực tiến liên quan đến những công việc phải phân cụm đối tượng Ví dụ như phân cụm các sinh viên cùng tỉnh, phân cụm khách hang, …
Trang 19VII Tài liệu tham khảo
- Machinelearningcoban
- Visualizing K-Means Clustering
- Elbow method - Determining the number of clusters in a data set