1. Trang chủ
  2. » Giáo Dục - Đào Tạo

BÁO cáo bài tập lớn môn lập trình với python giới thiệu về thuật toán kmeans

19 519 1
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 19
Dung lượng 1,2 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 1

HỌ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 2

Mụ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 3

Danh 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 4

I 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 6

Hì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 7

III 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 8

Hì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 9

b Sơ đồ thuật toán

Bảng 2

Trang 10

c Sơ đồ thực thể quan hệ (ERD)

Bảng 3

Trang 11

V Kết quả của ứng dụng

1 Sơ đồ tổng quan ứng dụng được triển khai

Trang 12

2 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 13

Chọ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 14

Hình 6

Và kết quả đã xog và chúng ta sẽ thử nút reset

Hình 7

Trang 15

VI 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 16

Hì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 17

Hì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 18

Hì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 19

VII Tài liệu tham khảo

- Machinelearningcoban

- Visualizing K-Means Clustering

- Elbow method - Determining the number of clusters in a data set

Ngày đăng: 29/12/2021, 05:05

HÌNH ẢNH LIÊN QUAN

Hình 1 - BÁO cáo bài tập lớn môn lập trình với python giới thiệu về thuật toán kmeans
Hình 1 (Trang 6)
Hình 3 - BÁO cáo bài tập lớn môn lập trình với python giới thiệu về thuật toán kmeans
Hình 3 (Trang 8)
Bảng 2 - BÁO cáo bài tập lớn môn lập trình với python giới thiệu về thuật toán kmeans
Bảng 2 (Trang 9)
Bảng 3 - BÁO cáo bài tập lớn môn lập trình với python giới thiệu về thuật toán kmeans
Bảng 3 (Trang 10)
Tích thêm các điểm trong bảng - BÁO cáo bài tập lớn môn lập trình với python giới thiệu về thuật toán kmeans
ch thêm các điểm trong bảng (Trang 12)
Hình 5 - BÁO cáo bài tập lớn môn lập trình với python giới thiệu về thuật toán kmeans
Hình 5 (Trang 13)
Hình 6 - BÁO cáo bài tập lớn môn lập trình với python giới thiệu về thuật toán kmeans
Hình 6 (Trang 14)
Hình 9 - BÁO cáo bài tập lớn môn lập trình với python giới thiệu về thuật toán kmeans
Hình 9 (Trang 16)
Hình 10 - BÁO cáo bài tập lớn môn lập trình với python giới thiệu về thuật toán kmeans
Hình 10 (Trang 17)
Hình 11 - BÁO cáo bài tập lớn môn lập trình với python giới thiệu về thuật toán kmeans
Hình 11 (Trang 18)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w