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

15 1.2K 12
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

Đ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

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

Equation 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 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 Mục Lục 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 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 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 các công cụ khác. Trang 2/ 15 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 đố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 - 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 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) Trang 3/ 15 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 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 đầ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) 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. II) PHÂN TÍCH BÀI TOÁN GOM CỤM SỬ DỤNG LIÊN KẾT ĐƠN. Trang 4/ 15 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. 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= ( 0 x , 1 x , … 1k x − ), với i x ∈ 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ử i x ∈ j c (j ∈ [0, m-1]), i x là tâm của cụm j c , khi đó để r x ∈ j c thì d( i x , r x )≤ 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 Trang 5/ 15 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 i y x − = − ∑ , trong đó x, y ∈ D, x= ( 0 x , 1 x , …, 1k x − ), y= ( 0 y , 1 y , …, 1k y − ), với i x , i y (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( i c , j c )= { ( , ), , } i j i i j j Min d x x x c x c ∀ ∈ ∈ , với i c , j c ∈ dsCum. Tư tưởng chính: - Ban đầu mỗi cụm chứa một đối tượng. Nghĩa là m = n, i x ∈ i c . - 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( i c , j c )”, với i c , j c ∈ 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 2 R cho 7 đối tượng như sau: 0 x = (1, 1), 1 x = (1, 3), 2 x = (2, 2), 3 x = (4, 4), 4 x = (4, 5), 5 x = (5, 4), 6 x = (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 Trang 6/ 15 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: - 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 1 x 2 x 3 x 4 x 5 x 6 x 0 x 0 2 2 18 5 5 32 1 x 2 0 2 10 13 17 20 2 x 2 2 0 8 13 13 18 3 x 18 10 8 0 1 1 2 4 x 5 13 13 1 0 2 1 5 x 5 17 13 1 2 0 1 6 x 32 20 18 2 1 1 0 - 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: 0 c = { 0 x }, 1 c = { 1 x }, 2 c = { 2 x }, 3 c ={ 3 x , 4 x , 5 x , 6 x } - 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: 0 c = { 0 x , 1 x , 2 x }, 1 c = { 3 x , 4 x , 5 x , 6 x } Trang 7/ 15 - Vì số cụm = 2 ≠ 1nên chuyển sang vòng lặp 3. 0 c 1 c 2 c 3 c 0 c 0 2 2 18 1 c 2 0 2 10 2 c 2 2 0 8 3 c 18 10 8 0 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 1 c 0 c 0 8 1 c 8 0 - 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: 0 c = { 0 x , 1 x , 2 x , 3 x , 4 x , 5 x , 6 x } - 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 Trang 8/ 15 - 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 đó. 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” cấu trúc dữ liệu như trên á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. 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 ngược lại các đối tượng ở các Trang 9/ 15 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 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: Trang 10/ 15

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

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan