1. Trang chủ
  2. » Luận Văn - Báo Cáo

PHÂN cụm dữ LIỆU với GIẢI THUẬT k MEANS (DATA CLUSTERING WITH k MEANS ALGORITHM)

20 334 2

Đ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 20
Dung lượng 1,13 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ề phân cụm dữ liệu Bản chất của phân cụm ta có thể hiểu là các qui trình tìm cách nhóm các đối tượng đã cho vào các cụm clusters, sao cho các đối tượng trong cùng 1 cụm tươ

Trang 1

TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH

KHOA ĐÀO TẠO CHẤT LƯỢNG CAO NGÀNH CÔNG NGHỆ THÔNG TIN



BÁO CÁO ĐỒ ÁN 1

ĐỀ TÀI: PHÂN CỤM DỮ LIỆU VỚI GIẢI THUẬT K-MEANS

(DATA CLUSTERING WITH K-MEANS ALGORITHM)

GVHD: TS Trần Nhật Quang

TP Hồ Chí Minh, tháng 12 năm 2018

MỤC LỤC

DANH MỤC CÁC HÌNH 1 DANH MỤC CÁC BẢNG 2

Trang 2

NỘI DUNG 3

I Mô tả project 3

1 Lý do xây dựng phần mềm 3

2 Giới thiệu về phân cụm dữ liệu 3

3 Giới thiệu về thuật toán k-means 5

4 Use case diagram 6

5 Mô tả use case diagram 6

II Thực hiện 8

1 Thiết kế lớp 8

2 Cài đặt và kiểm thử 10

2.1 Phân cụm dữ liệu giả lập 10

2.1 Phân cụm dữ liệu thực tế 13

III Phân công công việc của các thành viên 17

IV Kết luận 18

TÀI LIỆU THAM KHẢO 19

Trang 3

DANH MỤC CÁC HÌNH

Hình 1 Các loại kỹ thuật phân cụm[5] 3

Hình 2 Use Case Diagram 6

Hình 3 Kiểm thử với dữ liệu 2 chiều không chồng lấp F1_score = 1 10

Hình 4 Kiểm thử với dữ liệu 3 chiều không chồng lấp F1_score = 1 11

Hình 5 Kiểm thử với dữ liệu 2 chiều chồng lấp F1_score=0.6962 12

Hình 6 Kiểm thử với dữ liệu 3 chiều chồng lấp F1_score=0.7976 13

Hình 7 Ảnh chưa thêm nhiễu 14

Hình 8 Cú pháp thêm nhiễu cho từng tấm hình 14

Hình 9 Tất cả hình ảnh đã được thêm nhiễu 15

Hình 10 Một số ảnh của dữ liệu đầu vào 15

Hình 11 Kiểm thử với dữ liệu thực tế F1_score max = 1 16

Hình 12 Kiểm thử với dữ liệu thực tế F1_score có thể là nhỏ nhất = 0.5180 16

Hình 13 Kiểm thử với dữ liệu thực tế (gán tâm) F1_score = 1 17

1

Trang 4

DANH MỤC CÁC BẢNG

Bảng 1 Mô tả Actor 6

Bảng 2 Mô tả Use case diagram 7

Bảng 3 Thiết kế lớp 8

Bảng 4 Các Phương Thức của lớp ClassData 8

Bảng 5 Các phương thức của lớp Class_K_mean 9

Bảng 6 Phân công công việc 17

Trang 5

NỘI DUNG

I. Mô tả project

1 Lý do xây dựng phần mềm

Với tình hình phát triển của công nghệ hiện nay, thì hiện tại các dữ liệu đã có thể được lưu trữ rất nhiều trên các thiết bị lưu trữ Vậy nên việc phân loại những tập dữ liệu lớn này ngày càng trở nên khó khăn hơn Con người với cách làm thủ công thì sẽ tốn rất rất nhiều thời gian, thậm chí không thể phân loại hết được Do đó, việc xây dựng một phần mềm có thể giúp con người phân loại những dữ liệu là một nhu cầu thiết yếu Trong

đồ án này, sử dụng thuật toán k-means clustering để viết ra phần mềm nhằm giải quết vấn

đề trên

2 Giới thiệu về phân cụm dữ liệu

Bản chất của phân cụm ta có thể hiểu là các qui trình tìm cách nhóm các đối tượng

đã cho vào các cụm (clusters), sao cho các đối tượng trong cùng 1 cụm tương tự (similar) nhau và các đối tượng khác cụm thì không tương tự (disimilar) nhau[5]

Hình 1 Các loại kỹ thuật phân cụm[5]

Mục đích của phân cụm là tìm ra bản chất bên trong các nhóm dữ liệu Các thuật toán phân cụm (Clustering Algorthms) đều sinh ra các cụm (clusters)

Trang 6

Kỹ thuật phân cụm được áp dụng trong rất nhiều lĩnh vực như [5]:

 Marketing: Góm nhóm những sản phẩm độc đáo,khách hàng…

 Sinh học: Dùng để phân cụm nhưng loài động, thực vật theo một số thuốc tính,…

 Medicine: Phân loại thuốc theo thuốc tính của vi khuẩn tăng hiệu quả thuốc

 Khoa học máy tính: xử lý ngôn ngữ tự nhiên, phân loại hình ảnh,

 Xã hội: xác định nhưng khu vực thường xảy ra các vụ phạm tội, phân cụm các

trường có thuộc tính tương tự,

 Hóa học: tìm những cấu trúc tương đồng của nhiều hợp chất hóa học khác nhau,

 Library: Theo dõi độc giả, sách, dự đoán nhu cầu của độc giả…

 Insurance, finance: Phân nhóm các đối tượng sử dụng bảo hiểm và các dịch vụ tài

chính, dự đoán xu hướng (trend) của khách hàng, phát hiện gian lận tài chính (identifying frauds)

 WWW: Phân loại tài liệu (document classification), phân loại người dùng web

(clustering weblog)…

Các phương pháp đánh giá thường được sử dụng dể đánh giá chất lượng phân cụm gồm: accuracy score, confusion matrix, ROC curve, Area Under the Curve, Precision and Recall, F1 score, Top R error[2] Mỗi một phương pháp lại có những thuốc tính đánh giá riêng vậy nên tùy bài toán mà ta chọn ra phương pháp phù hợp nhất Và trong đồ án này chúng em sử dụng F1 score (một trường hợp đặc biệt của F measure [6]) để đánh giá

F1 score là một trung bình điều hoà (harmonic mean) của Precision và Recall[3]

 TP (True Positive): được định nghĩa 2 điểm dữ liệu tương tự nhau được phân vào cùng một cụm

 FP (False Positive): được định nghĩa 2 điểm dữ liệu khác nhau được phân vào cùng một cụm

 TN (True Negative): được định nghĩa 2 điểm dữ liệu khác nhau được phân khác cụm nhau

 FN (False Negative): được đinh nghĩa 2 điểm dữ liệu giống nhau được phân vào các cụm khác nhau

Trang 7

Precision được định nghĩa là tỉ lệ số điểm đã thuộc và vẫn thuộc lớp dương (TP) sau khi phân cụm trong số nhưng điểm được phân loại thuộc lớp dương (TP+FP)

Recall được định nghĩa ngược lại, là tỉ lệ số điểm đã và vẫn thuộc lớp âm (TN) sau khi phâm cụm trong số những điểm được phân loại thuộc lớp âm (TN+FN)

precision= TP TP+ FP recall= TP TP+FN

F 1score=2 precision recall precision+recall

3 Giới thiệu về thuật toán k-means

Thuật toán k-means được MacQueen giới thiệu trong bài báo của ông vào năm

1967 [4] k-means là một thuật toán phân hoạch thuộc nhóm các thuật toán máy học không cần sự định hướng trước (unsupervised machine learning) được biết đến khá rộng rãi Thuật toán này không cần quá trình huấn luyện để học, ghi nhớ các mô hình tri thức tách biệt với quá trình chạy Điều này cũng đồng nghĩa với việc, k-means cho ra kết quả cuối cùng không thể đoán trước và rất khác nhau dù cho cùng dữ liệu đầu vào

k-means được sử dụng khi ta có một tập hợp gồm nhiều dữ liệu không được dán nhãn (dữ liệu chưa được phân loại theo nhóm hay danh mục) Mục tiêu của thuật toán là tìm ra k nhóm của tập dữ liệu này với k cho trước Thuật toán xử lý dựa trên thao tác lặp (iterative) để gán mỗi điểm dữ liệu vào 1 trong k nhóm dự vào thuộc tính (feature) đã cho của từng điểm dữ liệu Các điểm dữ liệu được phân nhóm (cluster) theo tiêu chí tương đồng về các thuộc tính của chúng Kết quả của thuật toán k-means là[7]:

- k điểm trung tâm (centroid) của k nhóm (cluster) k điểm này có thể được dùng

để tiếp tục gán nhãn cho dữ liệu mới khi chúng được thêm vào tập dữ liệu ban đầu

- Nhãn cho tập điểm dữ liệu (mỗi điểm dữ liệu được gán cho một nhóm xác định ứng với một điểm trung tâm)

Mô tả tóm tắt các bước của thuật toán:

Đầu vào: Dữ liệu và số k (cụm) cần tìm.

Trang 8

Đầu ra: Các tâm và cụm dữ liệu thuộc các tâm đấy.

Bước 1: Chọn ngẫu nhiên k tâm (centroid) cho k cụm (cluster)

Bước 2: Tính khoảng cách giữa các đối tượng đến k tâm

Bước 3: Phân mỗi điểm dữ liệu vào cụm (cluster) có tâm (centroid) gần nó nhất

Bước 4 Xác đinh lại tâm mới Bằng việc tính giá trị trung bình của các điểm dữ liệu thuộc từng cụm (cluster)

Bước 5: Quay lại bước 2 đến khi các tâm không xê dịch hoặc gặp điều kiện dừng

4 Use case diagram

5 Mô tả use case diagram

Bảng 1 Mô tả Actor

TT Tên Actor Ý nghĩa

1 User

Người dùng thông thường chỉ được sử dụng phần mềm ( program, program1, program3 ) không được thực hiện các thao tác ảnh hưởng đến chương trình (ClassData &

class_k_means)

Hình 2 Use Case Diagram

Trang 9

Bảng 2 Mô tả Use case diagram

TT Tên use case Ý nghĩa

1 Dùng dữ

liệu giả lập

Phân cụm

 Người dùng (user) nhập vào tất cả các giá trị sau:số điểm được tạo ra trong mỗi cụm (m), số chiều (dim),

số cụm (k), số chiều của dữ liệu (dim), điều kiện dừng (minDist), khoảng giá trị toạ độ của mỗi điểm trong mỗi cụm (zonedata) cần tạo ra khớp với số cụm

 Đủ các yêu cầu trên thì chương trình sẽ bắt đầu chạy chương trình sẽ tạo ra dữ liệu giả lập dựa trên dữ liệu nhập vào -> khởi tạo tâm -> phân cụm -> tính F1-score

 Sau khi chạy chương trình, với dữ liệu 2 hoặc 3 chiều thì sẽ có bước vẽ đồ thị và xuất F1-score Còn với những dữ liệu nhiều chiều hơn thì sẽ không thể

vẽ đồ thị nhưng vẫn suất F1-score

2 Dùng dữ

liệu thực tế

(hình ảnh)

Phân cụm

 Người dùng (user) nhập vào tất cả các giá trị sau: số

dữ liệu thuộc mỗi cụm của dữ liệu thực tế (m), số cụm của dữ liệu thực tế (k), số chiều của dữ liệu thực

tế (dim), điều kiện dừng (minDist), tên tên đường dẫn chứa dữ liệu thực tế (foder)

 Đủ các yêu cầu trên thì chương trình sẽ bắt đầu chạy, chương trình đọc dữ liệu thật vào chương trình -> khởi tạo true_lb -> khởi tạo tâm -> phân cụm -> tính F1-score

 Sau khi chạy chương trình sẽ xuất ra giá trị F1-score vì giá trị số chiều (dim) lớn = 1024 nên không thể vẽ

đồ thị

Trang 10

II. Thực hiện

1 Thiết kế lớp

Bảng 3 Thiết kế lớp

TT Tên lớp Tên các sinh viên phụ trách viết Mục đích chính của lớp trong chương trình

1 ClassData Hứa Văn Lâm

Nguyễn Hoàng Kim

Dùng để tạo/đọc dữ liệu và vẽ đồ thị

2 Class_K_means Dùng để phân cụm dữ liệu và tínhF1-score.

Bảng 4 Các Phương Thức của lớp ClassData

TT Tên phương thức Mục đíchchính Tên file, sttdòng chứa

khai báo

Tên các

SV phụ trách viết 1

genData(obj,zonedata)

Input: obj(obj.m, obj.k, obj.dim),

zonedata

Output: dataAray, true_lb

Tạo dữ liệu giả lập

ClassData

m Dòng 11

Cả hai

2

PlotData(obj,b)

Input:obj(obj.dim,

obj.dataArray),b(b.learned)

Output: Đồ thị biểu diễn dữ liệu

Vẽ đồ thị cho dữ liệu

ClassData

m Dòng 36

Cả hai

3

docfile(obj)

Input: obj, image

Output: obj.dataArray

Đọc image

ClassData

m Dòng 19

Hứa Văn Lâm

Trang 11

Bảng 5 Các phương thức của lớp Class_K_mean

TT Tên phương thức Mục đích chính Tên file, stt dòng chứa

khai báo

Tên các

SV phụ trách viết 1

Compute_Dist(pA,pB)

Input: pA, pB

Output: Dist

Tính khoảng cách giữa 2 điểm

Class_K_me ans.m

Dòng 13

Cả hai

1

initCenter(obj,a)

Input: obj(obj.k),

a(a.m,a.dataArray)

Output: Centers

Tạo trọng tâm ngẫu nhiên cho mỗi cụm

Class_K_me ans.m

Dòng 20

Hứa Văn Lâm

2

Clustering(obj,a)

Input: obj(obj.k, obj.dataCenter,

obj.minDist), a(a.m, a.dataArray)

Output: Trả về từng cụm dữ liệu và

label được học từ thuật toán

Thực hiện phân cụm

dữ liệu

Class_K_me ans.m

Dòng 28

Hứa Văn Lâm

3

Compute_F1_score(obj,a)

Input: obj(obj.learned_lb),

a(a.true_lb)

Output: Kết quả của F1 thuộc đoạn

[0;1]

Tính toán

độ chính xác của thuật toán

Class_K_me ans.m

Dòng 86

Cả hai

Trang 12

2 Cài đặt và kiểm thử

2.1 Phân cụm dữ liệu giả lập

Với dữ liệu là những điểm 2 chiều (x,y) và không chồng lấp lên nhau thì ta có kết quả F1_score luôn bằng = 1

Dữ liệu 2 chiều:

Với dữ liệu 3 chiều không chồng lấp ta cũng được kết quả tương tự:Hình 3 Kiểm thử với dữ liệu 2 chiều không chồng lấp F1_score = 1

Hình 4 Kiểm thử với dữ liệu 3 chiều không chồng lấp F1_score = 1

Trang 13

Ở đây chúng em có ví dụ trên nhưng tập dữ liệu 2 và 3 chiều, qua đó không có nghĩa là nhiều chiều thì không thể phân cụm Mà chỉ là việc vẽ đồ thị cho những dữ liệu nhiều hơn 3 chiều là điều bất khả thi Chúng ta vẫn biết được F1_score của những tập dữ liệu nhiều hơn 3 chiều

Đối với những cụm dữ liệu chồng lấp: đây là một ví dụ mà thuật toán k-means sẽ chạy không hiệu quả Số điểm thuộc khu vực chồng lấp càng nhiều thì thuật toán càng không hiệu quả

Với dữ liệu 2 chiều chồng lấp ta thu được kết quả sau:

Hình 5 Kiểm thử với dữ liệu 2 chiều chồng lấp F1_score=0.6962

Trang 14

Với dữ liệu 3 chiều cũng tương tự, qua nhiều lần kiểm thử thì kết quả F1-score không một lần nào có thể lên được giá trị 1:

2.1 Phân cụm dữ liệu thực tế

Trong thực tế, việc phân loại tự động những hình ảnh giống rất cần thiết Vì với số lượng hình ảnh lớn thì việc lựa chọn thủ công sẽ tốn nhiều thời gian

Trong thí nghiệm này, hình ảnh của các chữ số từ 0 – 9 được phân loại sử dụng thuật toán k-means Mỗi hình có kích cỡ 32 x 32 = 1024 pixels

Hình 6 Kiểm thử với dữ liệu 3 chiều chồng lấp F1_score=0.7976

Trang 15

Hình 7 Ảnh chưa thêm nhiễu

Cách tạo các file hình: Những hình ảnh trên chúng em sử dụng phần mềm Paint để thiết kế với kích thước khung ảnh là 32*32 và gán ký tự số (từ 0->9) vào mỗi hình ảnh Vậy chúng em đã tạo ra 10 hình ban đầu và mỗi hình có 9 bản sao chép Và sau đó chúng

em sử dụng hàm Imnoise trong Matlab để thêm nhiễu vào những tấm hình đó nhằm mục đích tạo sự khác biệt cho 9 bản sao chép của mỗi hình Sau khi thêm nhiễu chúng em đã xuất tất cả những tấm hình đó ra một thư mục mới có tên là folder (thư mục chứa 100 ảnh

đã được thêm nhiễu) Vậy mỗi hình hoàn toàn khác nhau nhờ những điểm nhiễu được tạo ra một cách ngẫu nhiên

Hình 8 Cú pháp thêm nhiễu cho từng tấm hình

Những tấm hình đã được thêm nhiễu

Trang 16

Hình 9 Tất cả hình ảnh đã được thêm nhiễu

Kiểm thử với dữ liệu mô phỏng là tất cả giá trị pixel của 100 hình đã được thêm nhiễu Ở đây phần mềm sẽ đáp ứng nhu cầu phân loại hình ảnh cho 100 hình này, bao

Hình 10 Một số ảnh của dữ liệu đầu vào

Trang 17

gồm 10 cụm: hình 0, hình 1, hình 2, hình 3, hình 4, hình 5, hình 6, hình 7, hình 8, hình 9 Tập dữ liệu: folder (100 hình ảnh đã được thêm nhiễu)

Do hiệu suất của thuật toán k-means phụ thuộc vào việc khởi tạo tâm, nên khi khởi tạo tâm 1 cách ngẫu nhiên, chương trình cho ra kết quả khác nhau Cụ thể, trong những lần chạy thử chúng em thu được kết quả: giá trị F1_score nằm trong khoảng từ 0.5180

đến 1

Hình 12 Kiểm thử với dữ liệu thực tế F1_score có thể là nhỏ nhất = 0.5180 Hình 11 Kiểm thử với dữ liệu thực tế F1_score max = 1

Trang 18

Ngược lại, khi khởi tạo tâm bằng các phần tử của các nhóm khác nhau, chương trình luôn hoạt động rất tốt F1_score=1 Có nghĩa là việc lựa chọn tâm ban đầu có sự ảnh hưởng lớn tới kết quả

III Phân công công việc của các thành viên

Bảng 6 Phân công công việc

Tên Sinh Viên Đóng góp Mô tả khái quát công việc Hứa Văn Lâm 70%

Tìm kiếm thông tin cho chương trình (những thông tin liên quan đến k-means), viết code cho chương trình, viết báo cáo

Nguyễn Hoàng Kim 30% Tìm hiểu một số thông tinliên quan đến k-means,

F1-score

Hình 13 Kiểm thử với dữ liệu thực tế (gán tâm) F1_score = 1

Trang 19

IV Kết luận

Chương trình đã giải quyết được vấn đề phân cụm dữ liệu, giả lập và thực tế Cụ thể, chương trình đã có thể phân cụm dữ liệu và được kiểm chứng ở những dữ liệu kiểm thử ở trên Vậy nên chương trình đã phần nào được gọi là ổn định và khá tốt

Khó khăn lớn nhất của nhóm đó là giới hạn thời gian làm đồ án, khá ít và vào khoảng thời gian cuối kỳ nên có rất ít thời gian cho chương trình (ứng dụng) này Tuy nhiên nhờ có thầy Trần Nhật Quang, thầy đã đôn đốc, nhắc nhở chúng em nên vấn đề đã tạm được giải quyết

Ưu điểm của chương trình áp dụng thuật toán k-means này là: nó khá dễ cho việc cài đặt và sử dụng Ngôn ngữ Matlab cùng với IDE của nó khá dễ sử dụng vậy nên việc code khá dễ dàng Với chương trình này thì dữ liệu tách rời thì độ chính xác rất cao Và việc khởi tạo số cụm một cách hợp lý cũng đưa ra những kết quả tốt

Nhược điểm của chương trình: đối với dữ liệu chồng lấp thì không được cao Và việc yêu cầu số lượng cụm và khởi tạo tâm theo số cụm một cách ngẫu nhiên, thì cũng gây ảnh hưởng lớn đến kết quả, được minh chứng ở thí nghiệm phân cụm dữ liệu thực tế

ở trên, vậy nên việc phải khởi tạo tâm của từng cụm một cách hợp lý cũng cần được lưu

ý

Trang 20

TÀI LIỆU THAM KHẢO

[1] Tiep Vu (2017, January 1) Bài 4: K-means Clustering Retrieved from

https://machinelearningcoban.com/2017/01/01/kmeans/

[2] Tiep Vu (2018, January 3) Bài 33: Các phương pháp đánh giá một hệ thống phân lớp Retrieved from

https://machinelearningcoban.com/2017/08/31/evaluation/

[3] ClustEval | F1-Score (n.d.) Retrieved from

https://clusteval.sdu.dk/1/clustering_quality_measures/18

[4] MacQueen, J (1967, June) Some methods for classification and analysis of

multivariate observations In Proceedings of the fifth Berkeley symposium on

mathematical statistics and probability (Vol 1, No 14, pp 281-297).

[5] Thuật toán K-Means với bài toán phân cụm dữ liệu - BIS (n.d.) Retrieved from http://bis.net.vn/forums/t/374.aspx

[6] Evaluation of clustering (n.d.) Retrieved from https://nlp.stanford.edu/IR-book/html/htmledition/evaluation-of-clustering-1.html

[7] K-Mean và ứng Dụng (n.d.) Retrieved from https://www.ieev.org/2017/05/k-mean-va-ung-dung.html

[8] Clustering - K-means (n.d.) Retrieved from

https://home.deib.polimi.it/matteucc/Clustering/tutorial_html/kmeans.html

Ngày đăng: 12/06/2019, 14:33

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