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

Tìm hiểu thuật toán gom cụm sử dụng liên kết đơn và cài đặt chương trình minh họa

18 1,2K 12
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

Tiêu đề Tìm hiểu thuật toán gom cụm sử dụng liên kết đơn và cài đặt chương trình minh họa
Tác giả Nguyễn Huy Đông, Nguyễn Văn Điệp, Nguyễn Tuấn Nghĩa, Bùi Đình Hiếu, Nguyễn Hồng Hiếu
Người hướng dẫn Trần Hùng Cường, Giáo viên hướng dẫn
Chuyên ngành Khoa học máy tính
Thể loại Bài tập lớn
Định dạng
Số trang 18
Dung lượng 196,22 KB

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

Nội dung

Tìm hiểu thuật toán gom cụm sử dụng liên kết đơn và cài đặt chương trình minh họa

Trang 1

111Equation Chapter 1 Section 1

BÀI TẬP LỚN :

NHẬP MÔN LÝ THUYẾT NHẬN DẠNG

ĐỀ TÀI: TÌM HIỂU THUẬT TOÁN GOM CỤM SỬ DỤNG LIÊN KẾT ĐƠN VÀ CÀI ĐẶT CHƯƠNG

TRÌNH MINH HỌA

Giáo viên hướng dẫn

Lớp

Nhóm thực hiện

: Trần Hùng Cường : KHMT2-K3

: Nhóm 13

1 Nguyễn Huy Đông

2 Nguyễn Văn Điệp

3 Nguyễn Tuấn Nghĩa

4 Bùi Đình Hiếu

5 Nguyễn Hồng Hiếu

Trang 2

Mục Lục

MỤC ĐÍCH NGHIÊN CỨU ĐỀ TÀI 2

I) VÀI NÉT TỔNG QUAN VỀ BÀI TOÁN NHẬN DẠNG ĐỐI TƯỢNG 3

1 Định nghĩa nhận dạng 3

2 Các dạng bài toán nhận dạng cơ bản 3

a Ví dụ cụ thể: 3

b Các phương pháp huấn luyện: 4

II) PHÂN TÍCH BÀI TOÁN GOM CỤM SỬ DỤNG LIÊN KẾT ĐƠN 5

1 Mục đích bài toán 5

Mô tả bài toán: 6

2 Cách giải quyết theo thuật toán 6

Tư tưởng chính: 7

3 Bài toán mẫu 7

a Đề bài 7

b Giải quyết 7

4 Cấu trúc dữ liệu 9

a Biểu diễn các đối tượng dữ liệu 9

b Biểu diễn các cụm đối tượng dữ liệu 10

c Biểu diễn danh sách các cụm đối tượng dữ liệu 10

d Lưu trữ kết quả thuật toán 10

5 Thuật toán chính 10

III) XÂY DỰNG CHƯƠNG TRÌNH 12

1 Ngôn ngữ và các công cụ hỗ trợ 12

2 Cài đặt thuật toán 13

a Cài đặt cụ thể cấu trúc dữ liệu 13

b Cài đặt các module quan trọng 14

3 Một số giao diện chính và kết quả chạy chương trình 16

4 Đánh giá 16

Một số bài toán thực tế có thể áp dụng vào chương trình như: 16

Đánh giá độ phức tạp và tính hiệu quả của thuật toán đã xây dựng: 16

Trang 3

MỤC ĐÍCH NGHIÊN CỨU ĐỀ TÀI

Việc nghiên cứu tìm hiểu đề tài gồm những mục đích sau:

1 Nghiên cứu tổng quát về bài toán nhận dạng đối tượng và phương pháp học không giám sát

2 Nghiên cứu các phương pháp phân cụm đối tượng và cụ thể là tập trung vào phương pháp phân cụm phân cấp

3 Xây dựng giải thuật bằng giả mã cho thuật toán phân cụm phân cấp sử dụng liên kết đơn, có đánh giá độ phức tạp, ưu nhược điểm của giải thuật

4 Xây dựng chương trình mô phỏng thuật toán phân cụm phân cấp

sử dụng liên kết đơn để phân cụm các đối tượng trong một tập dữ liệu vào cho trước bằng phần mềm Visual Studio 2008 và các công cụ khác

Trang 4

I) VÀI NÉT TỔNG QUAN VỀ BÀI TOÁN NHẬN DẠNG ĐỐI TƯỢNG.

1 Định nghĩa nhận dạng.

“Nhận dạng đối tượng là một quá trình phân hoạch đối tượng thành các đối tượng con, chúng được gán vào từng lớp nhãn để được đối sánh với mẫu và đối sánh theo các quy luật biết trước nào đó”.

2 Các dạng bài toán nhận dạng cơ bản.

a Ví dụ cụ thể:

Có nhiều bài toán nhận dạng khác nhau phát sinh trong thực tế quá trình hoạt động lao động, sản xuất, quản lý của con người với những mục đích khác nhau

Ví dụ như bài toán phân loại cá trong dây chuyền thành các loại khác nhau theo tiêu chuẩn về loài

Hay như bài toán phân loại các loại hoa quả khác nhau trong dây chuyền sản xuất

Bài toán phân loại email, bài toán an ninh máy tính bằng vân tay…

Bài toán huấn luyện (learning):

- Một câu hỏi đặt ra là: tồn tại hay không một phương pháp giải quyết triệt

để bài toán phân loại, nhận dạng?

- Trả lời: kinh nghiệm nghiên cứu 40 năm cho thấy không tồn tại một phương pháp như vậy

- Nguyên nhân: bài toán đặt ra thuộc nhóm ill-posed

Trang 5

- Cách tiếp cận: (learning) giải quyết vấn đề dựa trên quá trình huấn luyện qua bản mẫu

- Huấn luyện: phương pháp sử dụng những thông tin kinh nghiệm từ môi trường kết hợp với những giá trị tri thức có sẵn để xây dựng các bộ phân loại và quá trình hiệu chỉnh từng bước hiệu quả phân loại

o Những thông tin kinh nghiệm: các mẫu huấn luyện

o Những tri thức: các bất biến, hàm liên quan

o Quá trình hiệu chỉnh từng bước hiệu quả phân loại

b Các phương pháp huấn luyện:

- Học có giám sát: (Supervised learning)

o Là quá trình gán nhãn lớp cho các đối tượng trong tập dữ liệu dựa trên một bộ các đối tượng huấn luyện và các thông tin về nhãn lớp đã biết

o Có thông tin đối tượng, thông tin phân loại kèm theo mẫu Nói cách khác ta đã biết đầu vào và đầu ra

o Dựa vào thông tin phân loại để tiến hành phân loại

o Một số phương pháp học có giám sát như:

 Học bằng phân tích(analytical learning)

 Mạng nơ- ron nhân tạo

 Kỹ thuật lan truyền ngược

 Boosting

 Thống kê Bayes

 Lập luận tình huống

 Học cây quyết định

 Thuật toán K Mean (K láng giềng gần nhất)

 Hồi quy Gauss …

- Học không có giám sát: (Unsupervised learning)

Trang 6

o Là quá trình phân chia một tập dữ liệu thành các lớp hay cụm (cluster)

dữ liệu tương tự nhau mà chưa biết trước các thông tin về nhãn lớp

o Chỉ biết thông tin đối tượng, không biết thông tin phân lớp

o Hệ thống phải tự động gom các đối tượng

o Một số phương pháp học không có giám sát:

 Các thuật toán phân cụm:

 Phân cụm phân hoạc

 Phân cụm phân cấp (trong khuôn khổ đề tài sẽ nghiên cứu kỹ lưỡng phương pháp này)

 Phân cụm dựa trên mật độ

 Phân cụm dựa trên lưới

 Phân cụm dựa trên mô hình

 Phân cụm có ràng buộc

- Học nửa giám sát: (Semi- Supervised learning)

o Là quá trình chia một tập dữ liệu thành các lớp con dựa trên một số thông tin bổ trợ cho trước

o Có thông tin phản hồi từng phần từ môi trường

KẾT ĐƠN.

1 Mục đích bài toán

Chúng ta tập trung xây dựng giai đoạn 1 trong thuật toán phân cụm phân

cấp, đó là giai đoạn “gom cụm” Giai đoạn 2 trong thuật toán là “tách cụm” hoạt

động ngược lại với giai đoạn 1

Trang 7

Mô tả bài toán:

- Dữ liệu vào: (Input)

o Cho một tập dữ liệu D gồm n đối tượng khác nhau trong không gian

k

R (n≥ 0, k>= 1) Nghĩa là nếu x  D thì x= (x0,x1, …xk 1), với xi

 R

o Cho một giá trị ngưỡng bất kỳ Step  R

- Dữ liệu ra: (Output) Nhận được một danh sách các cụm “dsCum” gồm m

(m≥ 0) cụm dữ liệu thỏa mãn các yêu cầu sau:

o Mỗi cụm có ít nhất 1 đối tượng

o Mỗi đối tượng chỉ thuộc về 1 cụm duy nhất

o Các đối tượng trong một cụm thì tương tự lẫn nhau, các đối tượng trong các cụm khác nhau thì phi tương tự lẫn nhau theo ngưỡng Step

o Giả sử xicj (j[0, m-1]), xi là tâm của cụm cj, khi đó để xr

j

c thì d(xi, xr )≤ Step.

 Mục đích của bài toán là từ một tập dữ liệu ban đầu, áp dụng thuật toán gom

cụm sử dụng liên kết đơn ta thu được một danh sách các cụm dữ liệu thỏa mãn các đối tượng trong cùng một cụm thì tương tự nhau, các đối tượng trong các cụm khác nhau thì phi tương tự nhau xét theo nghĩa về ngưỡng Step cho trước

2. Cách giải quyết theo thuật toán

Hàm tính toán độ tương tự giữa các đối tượng dữ liệu sử dụng là hàm

Euclide: d(x, y)=

1

2 0

k

i i

ix y

, trong đó x, y  D, x= (x0, x1, …, xk 1), y= (

Trang 8

y , y1, …, yk1), với xi, yi (i [0,k-1]) là các thuộc tính tương ứng của các đối

tượng x, y

Hàm tính toán độ tương tự giữa các cụm: sử dụng liên kết đơn giữa các cụm

d(ci , cj )= Min d{ ( ,x xi j),x c x cii, jj}

, với ci ,cj dsCum.

Tư tưởng chính:

- Ban đầu mỗi cụm chứa một đối tượng Nghĩa là m = n,xici .

- Sau đó tiến hành gom dần các cụm lại với nhau theo một giá trị ngưỡng

được tìm là ngưỡng= “giá trị Min dương trong các d(ci , cj )”, với ci ,cj

dsCum.

- Khi giá trị ngưỡng tìm được > Step hoặc các đối tượng thuộc cùng một cụm thì dừng lại Danh sách cụm ở bước trước chính là danh sách cụm cần tìm

3. Bài toán mẫu

a Đề bài

Trong không gian R2 cho 7 đối tượng như sau:

0

x = (1, 1), x1= (1, 3), x2= (2, 2), x3= (4, 4), x4= (4, 5), x5= (5, 4), x6= (5, 5)

Thực hiện thuật toán phân cụm phân cấp, sử dụng hàm đo độ tương tự giữa các đối tượng là hàm Euclide, giữa các cụm sử dụng liên kết đơn

b.Giải quyết

Giai đoạn gom cụm: Vì số đối tượng = 7≠ 0 nên tiến hành lặp đi lặp lại việc

gom cụm cho tới khi số cụm = 1, như sau:

Vòng lặp 1:

Trang 9

- Sử dụng hàm tính khoảng cách Euclide ta có được ma trận khoảng cách giữa các đối tượng như sau:

0

x x1 x2 x3 x4 x5 x6 0

1

2

3

4

5

6

- Ngưỡng đầu tiên là Step 0 = 1

- Nhóm các cụm theo Step 0 ta được các cụm mới sau: c0= {x0}, c1= {x1

}, c2= {x2}, c3={x3, x4, x5, x6}

- Vì số cụm = 3 ≠ 1 nên chuyển sang vòng lặp 2

Vòng lặp 2:

- Sử dụng hàm tính khoảng cách theo liên kết đơn ta có được ma trận khoảng cách giữa các cụm đối tượng như sau:

- Ngưỡng thứ 2 tìm được là Step 1= 2

- Nhóm các cụm theo Step 1 ta được các cụm mới sau: c0= {x0, x1, x2},

1

c = {x3, x4, x5, x6}

- Vì số cụm = 2 ≠ 1nên chuyển sang vòng lặp 3

0

c c1 c2 c3

Trang 10

1

2

3

Vòng lặp 3:

- Sử dụng hàm tính khoảng cách theo liên kết đơn ta có được ma trận khoảng cách giữa các cụm đối tượng như sau:

0

c c1 0

1

- Ngưỡng thứ 3 tìm được là Step 2= 8

- Nhóm các cụm theo Step 2 ta được các cụm mới sau: c0= {x0, x1, x2,

3

x , x4, x5, x6}

- Vì số cụm = 1 nên dừng thuật toán tại đây

Giai đoạn tách cụm: Tiến hành ngược lại giai đoạn gom cụm.

4. Cấu trúc dữ liệu

a Biểu diễn các đối tượng dữ liệu

Các đối tượng trong tập dữ liệu D được biểu diễn trong một cấu trúc dạng

ma trận:

- Mỗi hàng của ma trận biểu diễn 1 đối tượng

- Mỗi cột của ma trận biểu diễn 1 thuộc tính của đối tượng

- Phần tử tại hàng thứ i, cột thứ j chỉ ra giá trị thuộc tính thứ j của đối tượng thứ i

Như vậy các đối tượng sẽ được gán cho mình một chỉ số để phân biệt, đó chính là chỉ số hàng của ma trận biểu diễn đối tượng đó

Trang 11

b.Biểu diễn các cụm đối tượng dữ liệu

Các cụm là tập hợp của các đối tượng Mỗi cụm sẽ là một danh sách các đối tượng nào đó Để đơn giản chúng ta chỉ lưu danh sách các chỉ số của các đối tượng Nghĩa là các chỉ số hàng của ma trận biểu diễn các đối tượng trong tập dữ liệu D

c. Biểu diễn danh sách các cụm đối tượng dữ liệu

Danh sách các cụm đối tượng sẽ là một danh sách tuyến tính lưu trữ các cụm Mỗi phần tử của danh sách cụm sẽ là 1 cụm

d.Lưu trữ kết quả thuật toán

Sau khi kết thúc thuật toán ta thu được 2 danh sách:

- Danh sách các ngưỡng: danh sách này lưu trữ các ngưỡng cố định được tìm ra theo thuật toán Nó là một danh sách tuyến tính với kiểu của phần

tử là kiểu số thực R (float)

- Danh sách các danh sách cụm: danh sách này lưu trữ các danh sách cụm

dữ liệu đã được gom lại theo các ngưỡng cố định được tìm ra theo thuật toán bên trên

Chú ý: Cụ thể các cấu trúc sẽ được trình bày trong phần chương trình Demo

bên dưới, sử dụng ngôn ngữ C# để biểu diễn

5. Thuật toán chính

Sử dụng đầu bài trong phần “Mục đích bài toán” và cấu trúc dữ liệu như

trên và áp dụng tư tưởng chính đã trình bày ta đi xây dựng thuật toán chi tiết như sau:

Input:

- Ma trận đối tượng “maTranDT”: chứa giá trị các thuộc tính của các đối

tượng

- Giá trị ngưỡng nhập từ người dùng: Step R

Trang 12

Output: Nhận được một danh sách các cụm thỏa mãn điều kiện các đối

tượng trong cùng một cụm thì tương tự lẫn nhau và ngược lại các đối tượng ở các cụm khác nhau thì phi tương tự theo một giá trị ngưỡng nào đó được tìm ra trong thuật toán

Thuật toán: thuật toán chia ra 5 bước như sau

Bước 1: Khởi tạo danh sách các cụm sao cho mỗi cụm chỉ chứa một đối

tượng duy nhất

Bước 2: Tìm ra giá trị ngưỡng Step theo nguyên tắc lấy giá trị Min dương

trong ma trận khoảng cách các cụm

Bước 3: Nhóm các cụm của danh sách cụm theo giá trị ngưỡng Step tìm

được tạo ra danh sách cụm mới

Bước 4: Lặp lại bước 2, 3 đến khi nào số cụm = 1 thì dừng lại.

Bước 5: Tìm ra giá trị ngưỡng trong danh sách ngưỡng thỏa nó là giá trị lớn

nhất ≤ Step Tìm ra vị trí của ngưỡng tìm được trong danh sách ngưỡng Trả ra kết quả danh sách cụm tại vị trí mốc tìm được

Giả mã:

Begin

dsCum = KhoiTaoDanhSachCum(maTranDT);

// Khởi tạo danh sách cụm sao mỗi cụm chứa một đối tượng

if (socum <> 0) Begin

listDsCum[0] = dsCum;// đưa dsCum vào đầu listDsCum dsNguong[0] = 0;// ngưỡng đầu tiên = 0

if (soCum<>1) Begin

i = 0;

While (socum<> 1) Begin

Trang 13

dsNguong.Length++;// tăng chiều dài dsNguong lên 1 dsNguong[++i] = TimNguong(maTranDT,dsCum);

dsCum= NhomCumTheoNguong(maTranDT,dsCum,dsNguong[i]) // nhóm dsCum theo ngưỡng tìm được tạo ra một dsCum mới listDsCum.Length++;// tăng chiều dài listDsCum lên 1 listDsCum.Length[i] = dsCum;

End;

End;

End;

Step = TimNguong(Step, dsNguong);// Tìm ra giá trị ngưỡng phù hợp moc = TimMoc(dsNguong, Step);// Tìm ra vị trí của ngưỡng trong dsNguong return listDsCum[moc];// Kết quả là danh sách cụm thỏa mãn yêu cầu bài toán End;

Các module quan trọng phải xây dựng:

- KhoiTaoDanhSachCum(MaTran maTranDT)

- TimNguong(MaTran maTranDT, DanhSachCum dsCum)

- NhomCumTheoNguong(MaTran maTranDT, DanhSachCum dsCum, float Step)

1 Ngôn ngữ và các công cụ hỗ trợ

Chương trình được xây dựng bằng ngôn ngữ C#

Sử dụng công cụ Visual Studio C# 2008, dữ liệu được load vào từ một file dạng excel (*.xls hoặc *.xlsx) Cụ thể file dữ liệu demo được đặt trong thư mục Debug của chương trình có tên DU_LIEU.xls Bên trong file này có 2 bài toán đã được lập sẵn làm demo, được đặt trong 2 sheet của file

Lần lượt các bài toán mẫu là:

- Sheet1: số đối tượng 7, độ rộng không gian đối tượng R2

0

x = (1, 1), x1= (1, 3), x2= (2, 2), x3= (4, 4), x4= (4, 5), x5= (5, 4), x6= (5, 5)

Trang 14

- Sheet2: số đối tượng 5, độ rộng không gian đối tượng R2

0

x = (0, 1), x1= (0, 2), x2= (1, 1), x3= (4, 3), x4= (2, 3)

Chương trình chạy trên nền NetFrameWork 3.5 hoặc cao hơn

2 Cài đặt thuật toán

a Cài đặt cụ thể cấu trúc dữ liệu

- Ma trận biểu diễn các đối tượng trong tập dữ liệu D:

o Các biến thành viên:

 private int soHang;// biểu diễn số hàng của ma trận

 private int soCot;// biểu diễn số cột của ma trận

 private float[,] giaTri;

// mảng 2 chiều biểu diễn giá trị các thuộc tính của từng đối tượng cụ thể

o Các thuộc tính và phương thức

(Xin xem chi tiết trong class MaTran trong chương trình kèm theo)

- Cụm các đối tượng dữ liệu:

o Các biến thành viên:

 private int soDT;// biểu diễn số đối tượng có trong cụm

 private int[] dsDT;

// mảng 1 chiều lưu trữ các chỉ số hàng biểu diễn đối tượng trong ma trận đối // tượng

o Các thuộc tính và phương thức

(Xin xem chi tiết trong class Cum trong chương trình kèm theo)

- Danh sách các cụm:

o Các biến thành viên:

 private int soCum;// biểu diễn số cụm có trong danh sách cụm

 private Cum[] dsCum;

// mảng 1 chiều lưu trữ các cụm trong danh sách cụm

Trang 15

o Các thuộc tính và phương thức

(Xin xem chi tiết trong class DanhSachCum trong chương trình kèm theo)

b Cài đặt các module quan trọng

- KhoiTaoDanhSachCum(MaTran maTranDT): nhiệm vụ chính của module này là

khởi tạo ra một danh sách các cụm, sao cho mỗi cụm có một đối tượng duy nhất, mỗi đối tượng thuộc một cụm duy nhất.

public static DanhSachCum KhoiTaoDanhSachCum ( MaTran maTranDT )

{

DanhSachCum dsCum = new DanhSachCum ();

{

{

{

}

}

- TimNguong(MaTran maTranDT, DanhSachCum dsCum): nhiệm vụ chính của

module này là tìm ra giá trị ngưỡng tại mỗi vòng lặp thuật toán để tiến hành gom nhóm các cụm lại với nhau theo giá trị ngưỡng tìm được.

public static float TimNguong ( MaTran maTranDT , DanhSachCum dsCum )

{

MaTran maTranD = TaoMaTranD ( maTranDT , dsCum );

return MaTran TimMinDuong ( maTranD );

}

- NhomCumTheoNguong(MaTran maTranDT, DanhSachCum dsCum, float Step):

nhiệm vụ chính của module này là tạo ra một danh sách cụm mới bằng cách nhóm các cụm của danh sách cũ theo giá trị ngưỡng Step cho trước.

public static DanhSachCum NhomCumTheoNguong ( MaTran maTranDT , DanhSachCum dsCum , float

step )

{

#region Tim ra danh sach cac cum can ghep lai voi nhau theo tieu chi khoang cach giua chung = step

Trang 16

DanhSachCum ds = TimDsCumCanGhep ( maTranDT , dsCum , step );

#endregion

#region Ghep cac cum lai co trong danh sach can ghep

for ( int = 0; i < ds SoCum ; i ++)

{

{

{

}

}

{

{

}

}

#endregion

}

- GomCumLkDon (MaTran maTranDT ): đây là module cuối quan trọng nhất, nơi mà

tất cả công việc bắt đầu và kết thúc, module này sẽ tạo ra 2 danh sách: danh sách các ngưỡng và danh sách các danh sách cụm tương ứng với danh sách ngưỡng đó.

public void GomCumLkDon ( MaTran maTranDT )

{

DanhSachCum dsCum = KhoiTaoDanhSachCum ( maTranDT );

{

{

{

Ngày đăng: 30/11/2013, 14:03

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