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

KHAI THÁC SONG SONG tập PHỔ BIẾN dựa TRÊN VECTOR BIT ĐỘNG

83 140 1

Đ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 83
Dung lượng 8,97 MB

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

Nội dung

Mặc dù các thuật toán song song và phân tán theo phương pháp truyền thống đã cải thiện được hiệu suất trong khai thác dữ liệu nhưng phải đối mặt với một số vấn đề khác cần giải quyết như

Trang 1

ĐẠI HỌC QUỐC GIA TP HCM

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN



NGUYỄN TẤN THÀNH

KHAI THÁC SONG SONG TẬP PHỔ BIẾN

DỰA TRÊN VECTOR BIT ĐỘNG

LUẬN VĂN THẠC SĨ NGÀNH: KHOA HỌC MÁY TÍNH

Mã số: 60.48.01.01

NGƯỜI HƯỚNG DẪN KHOA HỌC:

PGS TS Lê Hoài Bắc

TP HỒ CHÍ MINH – 2015

Trang 2

Xin cảm ơn Phòng Sau đại học đã nhiệt tình hỗ trợ về mặt thủ tục, giấy tờ Cuối cùng, xin chân thành cảm ơn cha mẹ, chị em, bạn bè và đồng nghiệp đã khích lệ, động viên, tạo điều kiện thuận lợi cho tôi trong suốt thời gian thực hiện luận văn

TP HCM, tháng 10 năm 2015

Tác giả luận văn Nguyễn Tấn Thành

Trang 3

LỜI CAM ĐOAN

Tôi xin cam đoan nội dung của luận văn này là công trình nghiên cứu của chính bản thân tôi Tất cả các tài liệu tham khảo từ các nghiên cứu có liên quan đều

đã được nêu rõ nguồn gốc trong phần tài liệu tham khảo Các số liệu, kết quả nêu trong luận văn là trung thực và chưa từng được ai công bố trong bất kỳ công trình nào khác

Tác giả luận văn Nguyễn Tấn Thành

Trang 4

MỤC LỤC

Chương 1 TẬP PHỔ BIẾN 13

1.1 Tập phổ biến 13

1.1.1 Định nghĩa 13

1.1.2 Các tính chất của tập phổ biến 14

1.1.3 Cách biểu diễn dữ liệu 14

1.2 Một số thuật toán khai thác tập phổ biến 16

1.2.1 Phương pháp sinh ứng viên – thuật toán Apriori: 16

1.2.2 Thuật toán Eclat 20

1.2.3 Thuật toán FP-Growth 21

1.2.4 Thuật toán BitTableFI 21

Chương 2 MỘT SỐ TIẾP CẬN TRONG KHAI THÁC SONG SONG TẬP PHỔ BIẾN 23 2.1 Nguyên lý thiết kế thuật toán song song 23

2.2 Một số thuật toán khai thác song song tập phổ biến 23

2.2.1 Hệ thống bộ nhớ phân tán và bộ nhớ chia sẻ 24

2.2.2 Mô hình song song dữ liệu và song song tác vụ 25

2.2.3 Chiến lược cân bằng tải động và tĩnh 25

2.2.4 Thuật toán khai thác song song tập phổ biến dựa trên Apriori 27

2.2.5 Khai thác song song tập phổ biến dựa trên Eclat 39

2.2.6 Khai thác song song tập phổ biến dựa trên FP-Growth 43

2.2.7 Thuật toán song song Apriori trên nền tảng Hadoop MapReduce 46

Chương 3 KHAI THÁC SONG SONG TẬP PHỔ BIẾN DỰA TRÊN MẢNG TÂM THU VÀ VECTOR BIT ĐỘNG 51

3.1 Khai thác tập phổ biến với vector bit động 51

3.1.1 Khái niệm 51

3.1.2 Cấu trúc vector bit động (DBV – Dynamic Bit Vector) 51

3.1.3 Thuật toán tìm phần giao giữa hai vector bit động 52

3.1.4 Một số nhận xét về thuật toán 53

3.1.5 Cách tính nhanh độ phổ biến của một tập mục 54

3.2 Khai thác song song tập phổ biến với mảng tâm thu 54

3.2.1 Khái quát về mảng tâm thu 54

3.2.2 Bài toán khai thác song song tập phổ biến sử dụng mảng tâm thu 56

3.2.3 Sử dụng phương pháp chia để trị trong khai thác song song tập phổ biến 62

3.2.4 Mảng tâm thu hai chiều 63

3.2.5 Thuật toán khai thác song song tập phổ biến với mảng tâm thu 2 chiều 64

Trang 5

3.3 Thuật toán khai thác song song tập phổ biến dựa trên mảng tâm thu và vector bit

động 67

Chương 4 KẾT QUẢ THỰC NGHIỆM VÀ ĐÁNH GIÁ 76

4.1 Kết quả thực nghiệm 76

4.2 Kết luận và đánh giá 80

4.3 Hướng nghiên cứu tiếp theo 81

Trang 6

DANH MỤC CÁC KÝ HIỆU VIẾT TẮT

File System)

Array Based Mining Algorithm)

động (Dynamic Bit Vector- Systolic Array Basic Mining Algorithm)

Trang 7

DANH MỤC CÁC BẢNG

Bảng 1.1 Cơ sở dữ liệu mẫu 13

Bảng 1.2 Minh họa dữ liệu định dạng theo chiều dọc 15

Bảng 1.3 Minh họa dữ liệu biểu diễn bằng ma trận bit 16

Bảng 1.4 Các tập phổ biến có 1 danh mục 18

Bảng 1.5 Các tập phổ biến có 2 danh mục 18

Bảng 1.6 Các tập phổ biến có 3 danh mục 19

Bảng 1.7 Các tập phổ biến có 4 danh mục 19

Bảng 2.1 Phân hoạch cơ sở dữ liệu D 29

Bảng 2.2 Tập phổ biến 1-itemset 30

Bảng 2.3 Tập phổ biến 2-itemset 30

Bảng 2.4 Tập phổ biến 3-itemset 31

Bảng 2.5 Tập phổ biến 4-itemset 32

Bảng 2.6: Tập phổ biến 5-itemset 32

Bảng 2.7 Tập phổ biến 1-itemset 35

Bảng 2.8 : Tập phổ biến 2-itemset 35

Bảng 2.9 Tập phổ biến 3-itemset 35

Bảng 2.10 Tập phổ biến 4-itemset 36

Bảng 2.11 Tập phổ biến 5-itemset 36

Bảng 2.12 CSDL minh họa thuật toán song song Eclat 41

Bảng 2.13 Phân hoạch CSDL cục bộ 44

Bảng 3.1 Bảng tra số bit 1 54

Bảng 3.2 Biểu diễn cấu trúc DBV cho mỗi item trong hình 3.7 68

Trang 8

DANH MỤC CÁC HÌNH

Hình 1.1 Thuật toán Apriori 17

Hình 2.1 Kiến trúc bộ nhớ chia sẻ trong khai thác dữ liệu [13] 24

Hình 2.2 Kiến trúc bộ nhớ phân tán trong khai thác dữ liệu [13] 24

Hình 2.3 Phân loại mô hình một số thuật toán song song điển hình [7] 26

Hình 2.4 Thuật toán Count Distribution [7] 28

Hình 2.5 Thuật toán song song Eclat [7] 41

Hình 2.6 Khai thác tập mục phổ biến sử dụng thuật toán song song Eclat 42

Hình 2.7 Cấu trúc FP-Tree cục bộ được xây dựng từ các phân hoạch cơ sở dữ liệu 44

Hình 2.8 Khai thác tập mục phổ biến sử dụng thuật toán song song FP-Growth 45

Hình 2.9 Minh họa quá trình sinh ra tập phổ biến 1-itemsets 47

Hình 2.10 Thuật toán Mapper, Combiner and Reducer [12] 49

Hình 3.1 Minh họa về cấu trúc DBV 51

Hình 3.2 Thí dụ về cách tìm phần giao giữa hai DBV 52

Hình 3.3 Thuật toán tìm phần giao giữa hai DBV 53

Hình 3.4 Một cell của mảng tâm thu 55

Hình 3.5 Một số mô hình phổ biến của mảng tâm thu 55

Hình 3.6 Chức năng của một cell trong mảng tâm thu 1 chiều 56

Hình 3.7 Thí dụ một bộ dữ liệu 57

Hình 3.8 Ma trận bit rút gọn với minsup=2 57

Hình 3.9 Ma trận bit chuyển đổi từ tập phần tử tương ứng với hình 3.8 58

Hình 3.10 Khởi tạo ban đầu của mảng tâm thu 58

Hình 3.11 Lần đầu tiên gửi giá trị đầu vào qua mảng tâm thu 60

Hình 3.12 Lần thứ hai gửi giá trị đầu vào qua mảng tâm thu 61

Hình 3.13 Lần thứ ba gửi giá trị đầu vào qua mảng tâm thu 62

Hình 3.14 Khởi tạo ban đầu của mảng tâm thu để khai thác tập phần tử có chứa “a” 63

Hình 3.15 Khai thác tập dữ liệu phổ biến với mảng tâm thu hai chiều 64

Hình 3.16 Thuật toán SABMA [9] 65

Hình 3.17 Chức năng của một bộ xử lý trong mảng tâm thu 67

Hình 3.18 Khởi tạo mảng tâm thu để khai thác tập mục có chứa “a” dựa trên DBV 69

Hình 3.19 Khởi tạo mảng tâm thu 2 chiều để khai thác tập phổ biến dựa trên DBV 69

Hình 3.20 Mã giả minh họa thuật toán DBV_SABMA 71

Hình 3.21 Minh họa giá trị khởi tạo cho lần di chuyển đầu tiên 72

Hình 3.22 Giá trị khởi tạo chuẩn bị cho lần di chuyển thứ 2 qua mảng tâm thu 74

Hình 3.23 Giá trị khởi tạo chuẩn bị cho lần di chuyển thứ 3 qua mảng tâm thu 74

Hình 4.1 Kết quả thử nghiệm với bộ dữ liệu Retail 77

Hình 4.2 Kết quả thử nghiệm với bộ dữ liệu T10I4D100K 77

Hình 4.3 Kết quả thử nghiệm với bộ dữ liệu Mushroom 78

Hình 4.4 Kết quả thử nghiệm với bộ dữ liệu giao dịch Coopmart 79

Trang 9

MỞ ĐẦU

1 Đặt vấn đề

Với tốc độ phát triển của công nghệ thông tin hiện nay, kho dữ liệu mà con người đang sở hữu vô cùng phong phú, đa dạng và không ngừng gia tăng với tốc độ chóng mặt Lượng dữ liệu khổng lồ này thực sự là nguồn tài nguyên rất giá trị bởi thông tin là yếu tố đóng vai trò then chốt trong các hoạt động, hỗ trợ rất hiệu quả cho con người trong quá trình ra quyết định Bài toán với yêu cầu đặt ra là làm sao khai thác được những thông tin có ích từ kho dữ liệu khổng lồ này đã dẫn đến một nhu cầu cấp thiết là cần phải có các kỹ thuật và công cụ để chuyển đổi lượng dữ liệu

to lớn này thành những tri thức có ích Khai thác dữ liệu là kỹ thuật khám phá các tri thức mới và phát hiện các thông tin tiềm ẩn có ích từ các cơ sở dữ liệu lớn Đây

là hướng tiếp cận có nhiều ý nghĩa, là lĩnh vực thời sự nhận được sự quan tâm của các nhà khoa học trong và ngoài nước Từ đó, kỹ thuật khai thác dữ liệu không ngừng phát triển và đã có nhiều kết quả đáng khích lệ, đặc biệt là trong các lĩnh vực hoạt động sản xuất kinh doanh, y học, …

Các kỹ thuật phát hiện tri thức và khai thác dữ liệu được thực hiện qua nhiều giai đoạn thường được sử dụng như kỹ thuật phân lớp, phân cụm, tổng hợp, tìm luật kết hợp, … Một trong những hướng tiếp cận hiệu quả nhận được nhiều sự quan tâm

từ các nhà nghiên cứu là khai thác luật kết hợp (association rules), là dạng luật biểu diễn tri thức khá đơn giản nhưng kết quả thu được lại có nhiều ý nghĩa trong việc phát hiện các luật tiềm ẩn trong cơ sở dữ liệu Thông tin mà dạng luật này đem lại rất đáng kể và hỗ trợ không nhỏ trong quá trình ra quyết định

Bài toán xác định luật kết hợp lần đầu tiên được Agrawal R giới thiệu và sau

đó được giải quyết trên cơ sở thuật toán Apriori [2] Phần lớn các thuật toán phát hiện luật kết hợp chia quá trình giải bài toán này thành hai giai đoạn: giai đoạn đầu tiên là xác định các tập phổ biến, là các tập phần tử mà số lần xuất hiện của chúng trong cơ sở dữ liệu đang khảo sát không nhỏ hơn một ngưỡng nào đó do người dùng quy định [2] Sau đó, từ các tập phổ biến thu được ở giai đoạn này, thuật toán sẽ chuyển sang giai đoạn kế tiếp để sinh luật kết hợp Trong hai giai đoạn trên, giai

Trang 10

đoạn 1 được xác định là khó khăn, phức tạp và tốn nhiều chi phí và được quan tâm khá nhiều từ các nhà nghiên cứu Thuật toán xác định tập phổ biến có độ phức tạp tính toán cỡ hàm mũ Mặt khác, cơ sở dữ liệu khảo sát thì ngày càng gia tăng về kích thước Vì thế, đã có nhiều thuật toán được đề xuất nhằm cải thiện hiệu quả tính toán trong quá trình khai thác tập phổ biến và đã có được nhiều kết quả khả quan Trong số các thuật toán này, có thể kể đến 3 lớp bài toán được sử dụng nhiều nhất

mà đại diện là các thuật toán như Apriori, Eclat và FP-Growth

Thuật toán Apriori được xây dựng với tư tưởng đơn giản là sẽ đi tìm các tập phổ biến chỉ chứa một phần tử trước tiên, sau đó sẽ sinh các ứng viên là các tập có hai phần tử để từ đó xác định các tập phổ biến có hai phần tử Quá trình này được lặp đến khi không còn ứng viên sinh ra Nhược điểm của phương pháp này là quá trình duyệt cơ sở dữ liệu sẽ thực hiện nhiều lần và phát sinh nhiều chi phí cho việc sinh và loại bỏ các ứng viên

Thuật toán Eclat được nhóm nghiên cứu Zaki đề xuất vào năm 1997 Trong thuật toán này, các tác giả đã đưa ra khái niệm lớp tương đương để giảm các tập ứng viên Ngoài ra, để hạn chế số lần quét cơ sở dữ liệu, tác giả sử dụng định dạng

dữ liệu theo chiều dọc và dựa vào phần giao tập định danh của các giao dịch (Transactions Identifier Set - TidSet) để tính nhanh tập phổ biến Vào năm 2003, cũng chính nhóm Zaki đưa ra cải tiến với kỹ thuật sử dụng Diffset (Different Set) nhằm nâng cao hiệu quả tính toán

Thuật toán FP-Growth được Han và các cộng sự đề xuất vào năm 2000 sử dụng cấu trúc FP-Tree (Frequent Pattern) để nén cơ sở dữ liệu và từ đó xác định tập phổ biến Ưu điểm của thuật toán là không sinh ứng viên và chỉ quét cơ sở dữ liệu hai lần Thuật toán này tiếp tục được cải tiến với tên gọi là FP-Growth* vào năm

2005 bởi các tác giả Grahne và Zhu

Ngoài các lớp thuật toán trên, kể từ năm 2007 đã có một số nghiên cứu đề xuất

sử dụng cấu trúc bit vector để nén tập dữ liệu khi khai thác tập phổ biến như thuật toán BitTableFI, Index-BitTableFI Đến năm 2011, thuật toán dựa trên cấu trúc vector bit động (DBV – Dynamic Bit Vector) đã được nghiên cứu để giảm không gian lưu trữ và cải thiện thời gian tính toán trong khai thác tập phổ biến

Trang 11

Tuy nhiên, cơ sở dữ liệu luôn có xu hướng tăng rất nhanh cả về số chiều (tập mục dữ liệu) và kích thước (số giao tác) Khai thác trên CSDL này theo tiếp cận của các thuật toán tuần tự đã trở nên bế tắc vì không chứng tỏ được khả năng mở rộng, cũng như hiệu suất về mặt thời gian Lý do chính nằm bên trong vấn đề này là khả năng xử lý, kích thước lưu trữ và bộ nhớ có hạn của một máy tính đơn Do đó, thuật toán song song và phân tán đã được nhiều nhà nghiên cứu quan tâm phát triển để thực hiện tính toán quy mô lớn nhằm khai thác tập phổ biến trên hệ thống có nhiều

bộ xử lý Năm 1996, nhóm nghiên cứu của Agrawal dựa trên nguyên lý Apriori đã

đề xuất ba thuật toán song song là thuật toán phân phối độ hỗ trợ (Count Distribution), thuật toán phân phối dữ liệu (Data Distribution) và thuật toán phân phối ứng viên (Candidate Distribution) Zaki và đồng sự cũng giới thiệu thuật toán khai thác song song dựa trên cấu trúc IT-Tree vào năm 1997 Đến đầu những năm

2000, có nhiều nhóm nghiên cứu như nhóm Yi Wang vào năm 2001, nhóm Moonesinghe vào năm 2004 cũng đề xuất một số thuật toán khai thác song song dựa trên thuật toán FP-Growth tuần tự Năm 2013, thuật toán song song theo nguyên lý Apriori dựa trên nền tảng Hadoop MapReduce đã được đề xuất nhằm tận dụng sức mạnh tính toán song song của mô hình cụm máy tính

Mặc dù các thuật toán song song và phân tán theo phương pháp truyền thống

đã cải thiện được hiệu suất trong khai thác dữ liệu nhưng phải đối mặt với một số vấn đề khác cần giải quyết như: chi phí trong phân hoạch dữ liệu đầu vào, cân bằng tải, chi phí truyền thông và đồng bộ để hợp nhất các thông tin cục bộ thành thông tin toàn cục Trong thời gian gần đây, kiến trúc phần cứng đã được nghiên cứu ứng dụng để tăng tốc độ thời gian xử lý của các thuật toán này Một số kiến trúc phần cứng điển hình như kiến trúc FPGA ( Field Programmable Gate Array), Mảng tâm thu (Systolic Array), GPU (Graphics Processing Unit)

Thách thức chung khi khai thác song song tập phổ biến là làm thế nào có thể phân chia dữ liệu giữa các máy tính sao cho các máy tính này có thể thực hiện được quá trình khai thác dữ liệu một cách độc lập mà không cần thiết phải chia sẻ thông tin và kết quả Để giải quyết vấn đề này, tác giả bài báo [9] đã đề xuất một tiếp cận mới “Khai thác song song tập phổ biến sử dụng mảng tâm thu”

Trang 12

2 Mục tiêu

Từ những vấn đề nêu trên, mục tiêu đặt ra của luận văn là:

− Tìm hiểu và nghiên cứu thuật toán khai thác song song tập phổ biến sao cho quá trình khai thác dữ liệu được thực hiện một cách độc lập giữa các bộ xử lý và hạn chế việc chia sẻ thông tin và kết quả

− Nghiên cứu và cải tiến thuật toán để góp phần nâng cao hiệu quả tính toán trong quá trình khai thác dữ liệu

− Cài đặt chương trình thử nghiệm để có cơ sở đánh giá kết quả nghiên cứu

3 Bố cục luận văn:

Luận văn được trình bày trong bốn chương, phần mở đầu, phần kết luận và tài liệu tham khảo với cấu trúc như sau:

Chương 1: Tập phổ biến

Chương này sẽ đề cập đến một số định nghĩa và tính chất của tập phổ biến Ngoài

ra, trong chương cũng trình bày một số thuật toán cơ bản khi khai thác dữ liệu theo phương pháp tuần tự

Chương 2: Một số tiếp cận trong khai thác song song tập phổ biến

Trong chương này, luận văn sẽ trình bày một số phương pháp và thuật toán khai thác song song tập phổ biến điển hình

Chương 3: Khai thác song song tập phổ biến dựa trên mảng tâm thu và vector bit động

Trong chương này, luận văn sẽ trình bày các nghiên cứu về sử dụng cấu trúc vector bit động trong khai thác dữ liệu và thuật toán khai thác song song tập phổ biến sử dụng kiến trúc mảng tâm thu Từ đó, đề xuất một thuật toán kết hợp cấu trúc vector bit động trong khai thác tập phổ biến với kiến trúc mảng tâm thu để nâng cao hiệu quả khai thác dữ liệu

Chương 4: Kết quả thực nghiệm và đánh giá

Chương này sẽ trình bày kết quả thực nghiệm và một số nhận xét đánh giá về vấn

đề đã được nghiên cứu

Trang 13

Tập các danh mục I, tập các giao dịch D và tập danh mục X I

Độ phổ biến của X trong D - ký hiệu là sup(X) - được định nghĩa là số giao dịch

mà X xuất hiện trong D

Ví dụ:

Cho một CSDL mẫu với số lượng giao dịch là 6

Tập danh mục {A, C, D, T, W}

Bảng 1.1 Cơ sở dữ liệu mẫu

Với CSDL mẫu trong bảng 1.1, ta có:

Tập danh mục I = {A, C, D, T, W} và tập giao dịch D gồm có 6 giao dịch: {ACTW, CDW, ACTW, ACDW, ACDTW, CDT}

Độ phổ biến của tập danh mục X1 = {A} là số giao dịch trong D có chứa {A}, do đó sup(X1) = 4

Tương tự, X2 = {A, T} => độ phổ biến của X2 là sup(X2) = 3

Định nghĩa tập phổ biến:

Trang 14

Tập X I được gọi là tập phổ biến nếu sup(X) minSup, với minSup là giá trị do người dùng chỉ định

Thí dụ:

Cũng với CSDL mẫu trong bảng 1.1, với minSup = 3 (50%) thì tập X2 = {A, T} là tập phổ biến vì có sup(X2) = 3  minSup Tương tự, với X3 = {A, C, T} thì sup(X3)

= 3  minSup và X3 cũng là tập phổ biến Ngược lại, với X4 = {C, D, T} thì sup(X4)

= 2 < minSup, do đó X4 không phải là tập phổ biến

1.1.2 Các tính chất của tập phổ biến

Tính chất 1:

Độ phổ biến của tập con lớn hơn tập cha

Cho hai tập phổ biến X, Y với X  Y thì sup(X)  sup(Y)

Tính chất 2 :

Mọi tập con của một tập phổ biến đều là tập phổ biến

X là tập phổ biến và Y  X thì sup(Y)  sup(X)  minSup, vì vậy Y cũng là tập phổ biến

Tính chất 3 :

Mọi tập cha của một tập không phổ biến thì cũng không phổ biến

X là tập không phổ biến và Y  X thì sup(Y)  sup(X) < minSup, vì vậy Y cũng không phải là tập phổ biến

1.1.3 Cách biểu diễn dữ liệu

Trong các cơ sở dữ liệu quan hệ, thông thường dữ liệu sẽ được lưu trữ theo chiều ngang Tức là các bảng dữ liệu hai chiều sẽ gồm N dòng tương ứng với các giao dịch, và M cột tương ứng với các danh mục Việc bố trí theo chiều ngang giúp cho việc xác định các danh mục thuộc về một giao dịch đơn giản nhanh chóng Tuy nhiên khi cần xác định một danh mục cụ thể thuộc vào những giao dịch nào thì cách

bố trí theo chiều ngang lại gây ra khó khăn, khi đó ta phải duyệt tất cả các giao dịch

có trong CSDL và ghi nhận những giao dịch có chứa danh mục cụ thể đó

Trang 15

Thí dụ :

Trong CSDL mẫu ở bảng 1.1, muốn biết danh mục A xuất hiện trong những giao dịch nào thì ta phải duyệt hết tất cả các danh mục xem giao dịch nào chứa A thì liệt kê ra, kết quả các giao dịch chứa A là tập {1, 3, 4 , 5}

Có thể nhận thấy với các CSDL lớn thì việc xác định những giao dịch có chứa một danh mục là rất tốn kém Trong lúc đó việc xác định những giao dịch có chứa một danh mục cụ thể lại là công việc thường xuyên để tính độ phổ biến của một tập danh mục Để tăng tốc độ khai thác tìm tập phổ biến, chúng ta có thể sử dụng cách bố trí dữ liệu theo chiều dọc Nghĩa là bảng dữ liệu có sự đảo chiều, các dòng biến thành các cột và ngược lại :

Thí dụ : CSDL mẫu trong bảng 1.1 được biểu diễn theo chiều dọc như sau :

Bảng 1.2 Minh họa dữ liệu định dạng theo chiều dọc

Trang 16

quản lý bộ nhớ vì bảng dữ liệu gia tăng kích thước theo chiều ngang thay vì theo chiều dọc

Ngoài ra, danh sách giao dịch cũng có thể biểu diễn bằng cách nén trong ma trận bit Theo cách này, nếu mục dữ liệu I xuất hiện trong giao dịch t thì bit thứ i của t trong ma trận bit sẽ mang giá trị 1, ngược lại nó sẽ có giá trị 0 Với dữ liệu được nén theo phương pháp này, thì ma trận bit được sử dụng theo chiều dọc Cách định dạng này có thể giảm không gian bộ nhớ hơn định dạng dữ liệu ngang và định dạng dữ liệu dọc Tuy nhiên, phương pháp này chỉ đạt hiệu quả tốt nhất trên ma trận đặc (có nhiều bit 1)

Thí dụ : CSDL mẫu trong bảng 1.1 được nén trong ma trận bit như sau:

Bảng 1.3 Minh họa dữ liệu biểu diễn bằng ma trận bit

1.2 Một số thuật toán khai thác tập phổ biến

1.2.1 Phương pháp sinh ứng viên – thuật toán Apriori:

Phương pháp sinh ứng viên để tìm tập phổ biến được Agrawal [2] đề xuất từ năm 1993 với thuật toán Apriori Ý tưởng của thuật toán Apriori dựa trên kết luận:

nếu một tập danh mục là phổ biến thì tất cả tập con của nó cũng phải phổ biến (tính chất 2 – tập phổ biến) Do vậy không thể có trường hợp một tập phổ biến có tập con

là không phổ biến hay nói cách khác tập phổ biến nhiều danh mục hơn chỉ có thể được tạo ra từ các tập phổ biến ít danh mục hơn Nguyên lý hoạt động cơ bản của thuật toán Apriori như sau:

− Bắt đầu từ các tập phổ biến chỉ có một danh mục

Trang 17

- Dùng tập phổ biến kích thước k-1 phần tử để tạo các tập ứng cử k phần tử

- Duyệt cơ sở dữ liệu và đối sánh mẫu để đếm số lần xuất hiện của các tập ứng viên trong các giao tác, nếu số lần xuất hiện của tập ứng viên lớn hơn hoặc bằng minsup thì là tập phổ biến, ngược lại không phải tập phổ biến

− Quá trình lặp lại cho đến khi không còn tập phổ biến nào được tạo ra

Hình 1.1 Thuật toán Apriori

Diễn giải thuật toán :

- Bước đầu tiên của thuật toán đơn giản chỉ tính các danh mục xuất hiện để xác

định tập hợp của các tập phổ biến 1 danh mục

- Lặp bước k :

+ Tập hợp Lk-1 được sử dụng để tạo nên tập ứng viên Ck : sử dụng hàm

apriori-gen được miêu tả là hàm lấy Lk-1 (tập hợp của các tập phổ biến k-1

danh mục ) là đầu vào và trả về Ck là tập hợp của tất cả các tập chứa k danh mục phát sinh từ tập hợp Lk-1 bằng cách hợp các tập k-1 danh mục trong tập hợp Lk-1 Chú ý một ứng viên thuộc Ck thì tất cả các tập con của ứng viên đó phải có mặt trong Lk-1 (theo tính chất 2 của tập phổ biến)

Thuật toán Apriori

Input: cơ sở dữ liệu D, minsup

Output: L

1) L1 ={tập hợp 1 danh mục};

2) For (k = 2; Lk-1 ≠ ; k++) do begin

3) Ck = apriori-gen (Lk-1); // Tạo ứng viên mới

4) Forall giao tác t  D do begin //duyệt CSDL

5) Ct = subset(Ck, t); //các tập danh mục ứng viên có trong giao tác t

Trang 18

+ Bước kế tiếp, duyệt CSDL để tính độ phổ biến của các ứng viên trong tập hợp Ck Từ đó, tính được tập hợp Lk

+ Nếu Lk =  thì dừng lại

- Hợp của các Lk chính là các tập phổ biến cần tìm

Thí dụ minh họa : Xét CSDL mẫu trong bảng 1.1 với minSup =50% = 50% * 6 = 3

Bước 1 : Duyệt CSDL để tìm ra L1 là các tập phổ biến có 1 danh mục có độ phổ biến  3 :

Bảng 1.4 Các tập phổ biến có 1 danh mục Database (D)

Bước 2 : tính tập ứng viên C2 dựa trên L1 bằng phép hợp Sau đó duyệt CSDL tính

độ phổ biến của các ứng viên thuộc C2, loại bỏ những ứng viên có độ phổ biến bé hơn minSup, để tạo thành L2 là các tập phổ biến có 2 danh mục

Bảng 1.5 Các tập phổ biến có 2 danh mục

L 1

Danh mục

Độ phổ biến

Độ phổ biến

Trang 19

Bước 3 : Tương tự bước 2 tạo C3 và L3 từ L2 Chú ý khi tạo C3 thì loại bỏ những ứng viên có tập con 2 danh mục không nằm trong L2 Từ L2 để tạo C3 có thể bằng cách từ tập hợp tất cả danh mục có trong L2, rồi lần lượt kiểm tra các tập danh mục

3 thuộc tính trong tập hợp đó theo chú ý ở dòng trên

Bảng 1.6 Các tập phổ biến có 3 danh mục

Bước 4 : Tạo C4 và L4 từ L3

Bảng 1.7 Các tập phổ biến có 4 danh mục

Bước 5 : Tạo C5 và L5 từ L4 Ta có C5 = 

Như vậy thuật toán dừng lại ở bước 5 vì L5 = 

Kết quả : với minSup =50% thì :

Tập hợp các tập phổ biến = L1 L2  L3  L4

= {A, C, D, T, W, AC, AT, AW, CD, CT, CW, DW, TW, ACT, ACW, ATW, CDW, CTW, ACTW}

Hạn chế của thuật toán Apriori:

Để xác định độ phổ biến của các tập ứng viên, thuật toán Apriori phải quét lại toàn bộ giao dịch trong CSDL, do đó sẽ tiêu tốn rất nhiều thời gian khi phải quét CSDL nhiều lần để kiểm tra một lượng lớn các ứng viên, đặc biệt khi số danh mục

L 3

Danh mục

Độ phổ biến

L 4

Danh mục

Độ phổ biến

Trang 20

lớn Những hạn chế này sẽ được khắc phục với các phương pháp không sinh ứng viên sẽ tìm hiểu ở phần tiếp theo

1.2.2 Thuật toán Eclat

Thuật toán Eclat được đề xuất bởi Zaki và các đồng sự, tiếp cận của thuật toán này dựa trên cấu trúc IT-Tree (Itemset Tidset-tree) và các lớp tương đương Dữ liệu khai thác được định dạng theo chiều dọc, sử dụng chiến lược tìm kiếm theo chiều sâu để khai thác tập phổ biến

Ý tưởng thuật toán

- Quét dữ liệu lần đầu để xây dựng tid của từng item đơn

- Bắt đầu với tập phổ biến 1-phần tử, phần tử phổ biến có (k+1) phần tử được hình thành từ tập k phần tử Thực hiện phép giao các tid của tập phổ biến có k phần tử để tính toán các tid của tập phổ biến (k+1) phần tử

- Tiến trình này lặp lại cho đến khi không còn tập phổ biến hoặc tập ứng viên nào

Đánh giá:

Ưu điểm chính của thuật toán Eclat là sử dụng cách tổ chức dữ liệu theo chiều dọc, CSDL được bố trí thành một danh sách các item Mỗi item xác định một danh sách các định danh của giao dịch có nó, ký hiệu tid-List

- Nếu tid-List đã được sắp theo thứ tự tăng dần thì độ hỗ trợ của k-itemset ứng viên có thể được tính toán bởi phép giao các tid-List của hai (k-1)-subset bất

kỳ Với cách tổ chức này, thuật toán không cần phải duy trì cấu trúc dữ liệu phức tạp, không như cây băm và cũng không phải sinh ra tất cả các k-subset của các giao dịch hoặc thực hiện các thao tác tìm kiếm trên cây băm

- Các tid-List chứa tất cả các thông tin liên quan về một tập phần tử Vì vậy, khi tính độ hỗ trợ cho một tập phần tử không cần phải quét toàn bộ CSDL Vì tất cả các thông tin về một lớp tương đương được nhóm cùng nhau nên có thể sinh ra các tập phổ biến trước khi chuyển sang lớp tiếp theo

Thuật toán dựa vào phần giao giữa các Tidset để tính nhanh độ phổ biến nên chỉ cần quét CSDL một lần, tuy nhiên lại tốn không gian để lưu trữ tid-List Khi số tập phổ biến lớn thì hiệu suất thời gian khai thác không cao Để khắc phục hạn chế này, chính nhóm tác giả Zaki trong công trình nghiên cứu đã đề xuất sử dụng

Trang 21

Diffset (Different set – hiệu của Tidset X và Tidset Y với X, Y là 2 tập phổ biến) để giảm không gian lưu trữ

1.2.3 Thuật toán FP-Growth

Thuật toán Apriori được coi là thuật toán nền tảng về khai thác tập phổ biến bằng cách sử dụng kỹ thuật tỉa để rút gọn kích thước của các tập ứng viên Tuy nhiên, thuật toán gặp phải hai chi phí lớn: sinh ra số lượng khổng lồ các tập ứng viên, phải duyệt cơ sở dữ liệu nhiều lần

Để khắc phục những chi phí lớn của thuật toán Apriori, nhóm tác giả Jiawei Han, Jian Pei và Yiwen Yin đã đề xuất thuật toán FP-Growth [3] vào năm 2000 Thuật toán này sử dụng một cấu trúc cây FP-Tree để lưu trữ thông tin tập phổ biến của dữ liệu gốc ở một dạng nén trong bộ nhớ và dùng phương pháp duyệt cây theo chiều rộng để tìm tập phổ biến

Ý tưởng thuật toán

- Xây dựng cây FP-Tree để nén dữ liệu Những nút trong cây được gán nhãn bằng tên các item và được sắp xếp theo tần suất xuất hiện của các item

- Thiết lập cơ sở điều kiện cho mỗi phần tử phổ biến (mỗi nút trên cây FP) Thiết lập cây FP điều kiện (Conditional FP tree) từ cơ sở điều kiện đó

- Khai thác đệ qui cây FP điều kiện để xác định tập phổ biến

Đánh giá:

Điểm nổi bật của thuật toán này là chỉ quét cơ sở dữ liệu hai lần, và không cần phát sinh tập ứng viên Chính điều này làm cho FP-Growth nhanh hơn Apriori Trong nghiên cứu của mình, Han đã chứng minh rằng phương pháp của ông nhanh hơn so với các phương pháp tuần tự khác trong việc khai thác tập phổ biến như các thuật toán Apriori, Eclat,…

1.2.4 Thuật toán BitTableFI

Thuật toán BitTableFI [6] sử dụng kỹ thuật nén tập dữ liệu dựa trên cấu trúc BitTable Theo cách nén này, dữ liệu được bố trí dưới dạng dãy các bit, mỗi một tập mục sẽ chiếm |T| bit Vì vậy, mỗi tập mục sẽ chiếm |T|/8 + 1 byte Khi tạo ra một tập mục mới XY từ hai tập mục X và Y, Bitlist của XY sẽ được tính dựa trên Bitlist của các tập mục có trong XY bằng cách lấy phần giao giữa các byte có trong các

Trang 22

Bitlist Do lực lượng của hai vectơ bit là bằng nhau nên kết quả sẽ cho ra một vectơ bit (Bitlist) có chiều dài là |T|/8 + 1 byte Thuật toán khai thác tập phổ biến theo cấu trúc này được các tác giả tiếp cận dựa vào nguyên lý Apriori [1] Điểm khác biệt chính là cách tính độ phổ biến: thuật toán Apriori tính độ phổ biến bằng cách quét lại CSDL, còn BitTableFI chỉ cần tính phần giao trên các vectơ bit Độ phổ biến của itemset kết quả có thể được tính nhanh dựa vào số bit 1 có trong vectơ bit Thuật toán Index-BitTableFI được nhóm tác giả Wei-Song đề xuất để cải tiến BitTableFI Các tác giả dựa vào khái niệm subsume để gộp các tập mục Cách gộp như sau: đầu tiên, sắp xếp các tập mục tăng theo độ phổ biến, xét mỗi tập mục i với các tập mục đứng sau nó (theo thứ tự đã sắp xếp), nếu Bitlist i là con của Bitlist j thì j thuộc về tập subsume của i Việc tạo ra subsume và khai thác tập phổ biến dựa trên subsume cải tiến đáng kể thời gian khai thác tập phổ biến

Trang 23

Chương 2 MỘT SỐ TIẾP CẬN TRONG KHAI THÁC

SONG SONG TẬP PHỔ BIẾN

2.1 Nguyên lý thiết kế thuật toán song song

Khi thiết kế thuật toán, nếu có một số thao tác có thể thực hiện đồng thời thì những thuật toán đó được gọi là thuật toán song song Nói một cách tổng quát, thuật toán song song là một tập các tiến trình hoặc các tác vụ có thể thực hiện đồng thời

và có thể trao đổi dữ liệu với nhau để kết hợp cùng giải quyết bài toán đặt ra

Có năm nguyên lý chính trong việc thiết kế thuật toán song song:

+ Nguyên lý lập lịch: giảm thiểu các bộ xử lý sử dụng trong thuật toán sao

cho thời gian tính toán không tăng khi xét theo khía cạnh độ phức tạp

+ Nguyên lý hình ống: được áp dụng khi bài toán xuất hiện một dãy các thao

tác T1, T2, …, Tn trong đó, Ti+1 thực hiện sau khi Ti kết thúc

+ Nguyên lý chia để trị: chia bài toán thành từng phần nhỏ hơn, tương đối

độc lập với nhau và giải quyết chúng đồng thời

+ Nguyên lý điều khiển tương tranh: sử dụng nếu hai tiến trình cùng muốn

truy xuất vào cùng một nguồn dữ liệu thì khả năng tranh chấp dữ liệu có thể xảy ra

2.2 Một số thuật toán khai thác song song tập phổ biến

Nhiều nhà nghiên cứu kỳ vọng phương pháp khai thác song song tập phổ biến

sẽ là một giải pháp để khắc phục những bế tắc của các thuật toán tuần tự, cung cấp khả năng dễ mở rộng để xử lý tập dữ liệu lớn và cải thiện hiệu suất về mặt thời gian

Để thực hiện đạt hiệu quả tốt trên hệ thống có nhiều bộ xử lý là điều không đơn giản Thách thức chính của các thuật toán song song bao gồm chi phí tối thiểu

để truyền thông và đồng bộ dữ liệu, cân bằng tải, tìm kiếm phương pháp định dạng

và phân hoạch dữ liệu hiệu quả, chi phí tối thiểu I/O (điều này đặc biệt quan trọng trong khai thác tập phổ biến)

Thiết kế thuật toán song song thường có ba thành phần chính [7]: Kiến trúc phần cứng, mô hình song song và chiến lược cân bằng tải

Trang 24

Hình 2.1 Kiến trúc bộ nhớ chia sẻ trong khai thác dữ liệu [13]

Một tiếp cận khác là xây dựng hệ thống có nhiều bộ xử lý, trong đó mỗi bộ xử

lý có vùng nhớ riêng Trong kiến trúc bộ nhớ phân tán, mỗi bộ xử lý chỉ truy cập trực tiếp đến bộ nhớ của riêng nó Một bộ xử lý nào đó muốn truy cập bộ nhớ cục

bộ của bộ xử lý khác, hệ thống phải dùng cơ chế truyền thông điệp để gửi bản sao

dữ liệu từ bộ xử lý này đến bộ xử lý khác

Hình 2.2 Kiến trúc bộ nhớ phân tán trong khai thác dữ liệu [13]

Global Data Mining

Local Local Local

Trang 25

Mặc dù kiến trúc bộ nhớ chia sẻ rất dễ lập trình nhưng gặp hạn chế về mặt băng thông và khả năng mở rộng hệ thống Kiến trúc bộ nhớ phân tán thông qua cơ chế truyền thông điệp khắc phục được vấn đề này nhờ mô hình kết nối mạng, nhưng khó khăn hơn trong lập trình

Kiến trúc thứ ba, rất phổ biến, là mô hình kết hợp kiến trúc bộ nhớ phân tán và

bộ nhớ chia sẻ Chứa trong mô hình này là hệ thống bộ nhớ chia sẻ - bộ nhớ phân tán dựa trên nền tảng phần cứng hoặc phần mềm Những hệ thống theo kiến trúc này thường phân tán bộ nhớ vật lý giữa các nút nhưng cung cấp không gian địa chỉ của bộ nhớ toàn cục trên mỗi bộ xử lý

2.2.2 Mô hình song song dữ liệu và song song tác vụ

Song song dữ liệu (Data Parallelism) và song song tác vụ (Task Parallelism) là hai mô hình được sử dụng trong các thuật toán song song Trong khai thác tập phổ biến, song song dữ liệu tương ứng trong trường hợp này là CSDL ban đầu sẽ được phân hoạch giữa các bộ xử lý Mỗi bộ xử lý làm việc trên dữ liệu được phân hoạch cục bộ của nó nhưng thực thi thao tác tính toán giống nhau để đếm độ hỗ trợ cho tập mục ứng viên toàn cục Đối với mô hình song song tác tác vụ, mỗi bộ xử lý sẽ thực hiện thao tác tính toán khác nhau một cách độc lập, chẳng hạn như đếm một số tập rời nhau của tập ứng viên nhưng cần phải truy cập toàn bộ CSDL

Trong kiến trúc bộ nhớ chia sẻ, mỗi bộ xử lý có thể truy cập toàn bộ CSDL, nhưng trong kiến trúc bộ nhớ phân tán quá trình truy cập CSDL cần phải được sao chép dữ liệu cục bộ và truyền thông giữa các bộ xử lý với nhau Do đó ý tưởng kết hợp cả hai mô hình song song dữ liệu và song song tác vụ trong thiết kế thuật toán song song là tiếp cận đầy tiềm năng, hứa hẹn mang lại nhiều đột phá trong khai thác song song tập phổ biến

2.2.3 Chiến lược cân bằng tải động và tĩnh

Trong chiến lược cân bằng tải tĩnh (Static Load Balancing), trước tiên phân hoạch công việc giữa các bộ xử lý bằng cách sử dụng hàm đánh giá dựa trên kinh nghiệm (heuristic), sau đó không có sự điều chỉnh dữ liệu hoặc tính toán tiếp theo nào để khắc phục khi mất cân bằng tải xảy ra Cân bằng tải động (Dynamic Load Balancing ) giải quyết vấn đề này bằng cách phân phối lại công việc theo cách lấy một phần công việc nặng của những bộ xử lý đã được phân hoạch, giao lại cho

Trang 26

những bộ xử lý có công việc ít hơn Thao tác tính toán này đòi hỏi phải di chuyển

dữ liệu bởi vì bộ xử lý có trách nhiệm thực hiện tác vụ này cần đến dữ liệu có liên quan Cân bằng tải động vì vậy phải gánh chịu thêm chi phí cho quá trình di chuyển

dữ liệu và chi phí cho việc sử dụng kỹ thuật để phát hiện ra sự mất cân bằng tải có xảy hay không Tuy nhiên, cân bằng tải động là cần thiết nếu có sự mất cân bằng tải lớn và quá trình tải dữ liệu thay đổi theo thời gian Cân bằng tải động đặc biệt quan trọng trong môi trường đa người dùng với những nền tảng không đồng nhất, trong

đó có tốc độ mạng và các bộ xử lý có kiến trúc khác nhau Môi trường thuộc loại này thường bao gồm các máy chủ song song, cụm hoặc siêu cụm máy tính có kiến trúc không đồng nhất (ngày nay nó trở thành điện toán lưới, đám mây)

Đa số các nhà nghiên cứu những thuật toán khai thác song song tập phổ biến hiện nay thường chỉ sử dụng chiến lược cân bằng tải tĩnh để phân hoạch dữ liệu ban đầu cho các nút trong mạng Bởi vì họ cho rằng môi trường không đồng nhất có tính chất quá sâu về lĩnh vực chuyên môn

Hình 2.3 Phân loại mô hình một số thuật toán song song điển hình [7]

Hình 2.3 minh họa một số thuật toán khai thác song song tập phổ biến sử dụng mô hình và kiến trúc trong thiết kế của mình Thí dụ: Thuật toán CountDist sử dụng

HD

APM

ParEclat ParMaxEclat ParClique ParMaxClique

Trang 27

chiến lược cân bằng tải tĩnh, bộ nhớ phân tán và mô hình song song dữ liệu Thuật toán DataDist sử dụng chiến lược cân bằng tải tĩnh, bộ nhớ phân tán và mô hình song song tác vụ Theo đó, kiến trúc bộ nhớ phân tán là lựa chọn chiếm ưu thế, mô hình kết hợp song song tác vụ và song song dữ liệu cũng được quan tâm nghiên cứu Tuy nhiên, đa số các phương pháp đều sử dụng chiến lược cân bằng tải tĩnh (hoặc sử dụng cân bằng tải động rất hạn chế) trong phân hoạch dữ liệu ban đầu

2.2.4 Thuật toán khai thác song song tập phổ biến dựa trên Apriori

Có ba thuật toán được nhóm Agrawal đề xuất khi khai thác song song tập phổ biến dựa trên nguyên lý Apriori là thuật toán phân phối đếm (Count Distribution), thuật toán phân phối dữ liệu (Data Distribution) và thuật toán phân phối ứng viên (Candidate Distribution) [4] Các thuật toán này được thiết kế trên hệ thống máy tính song song với kiến trúc bộ nhớ phân tán, có tính chất như sau:

+ Hệ thống có N bộ xử lý (Processor), mỗi bộ xử lý Pi (1<=i<=n) có bộ nhớ trong và bộ nhớ ngoài độc lập với các bộ xử lý còn lại trong hệ thống

+ N bộ xử lý này có thể truyền thông với nhau nhờ vào hệ thống mạng sử dụng

cơ chế truyền thông điệp (Message Passing)

Phần sau đây sẽ lần lượt trình bày các thuật toán này

2.2.4.1 Thuật toán phân phối đếm (CD - Count Distribution)

Thuật toán song song đầu tiên được nhóm tác giả Agrawal đề xuất vào năm

1996 là thuật toán CD [4] Đây là thuật toán tiêu biểu áp dụng mô hình song song

dữ liệu Thuật toán sử dụng kiến trúc bộ nhớ phân tán, mỗi bộ xử lý có bộ nhớ trong

và bộ nhớ ngoài riêng Các bộ xử lý này được kết nối với nhau bởi một mạng truyền thông và có thể truyền thông tin cho nhau bằng cơ chế truyền thông điệp

Ý tưởng thuật toán

- Cơ sở dữ liệu D được phân mảnh thành {D1, D2,…, Dp} và phân bố lần lượt cho các bộ xử lý Pi (1 i p) Thuật toán được mô tả thông qua 3 bước cơ bản

+ Bước 1: tìm các phép đếm độ hỗ trợ cục bộ của các ứng viên Ck trong phân mảnh cơ sở dữ liệu cục bộ Di

Trang 28

+ Bước 2: mỗi bộ xử lý trao đổi các phép đếm độ hỗ trợ cục bộ của tất cả

các ứng viên để lấy các phép đếm độ hỗ trợ toàn cục của tất cả các ứng viên

+ Bước 3: các tập phổ biến toàn cục Lk được xác định và các ứng viên có kích thước k+1 được sinh ra bằng cách áp dụng hàm apriori_gen() cho

CSDL đã được phân hoạch

Trao đổi số đếm cục bộ ứng viên

Trao đổi số đếm cục bộ ứng viên

Trao đổi số đếm cục bộ ứng viên

Đếm các item

Nhận tập mục phổ biến item

1-Sinh ứng viên 2-item Đếm các 2-item ĐẾM SONG SONG

Nhận tập mục phổ biến item

2-Sinh ứng viên 3-item Đếm các 3-item ĐẾM SONG SONG

Trang 29

3) count(Ck, Di); // bộ xử lý thứ i

// bước 2: Trao đổi các số đếm hỗ trợ cục bộ với các bộ xử lý khác để thu

//được các số đếm hỗ trợ toàn cục trong D

4) forall itemset X  Ck do begin

Trang 33

Đánh giá: Trong thuật toán phân tán đếm, giao tiếp được giảm thiểu vì chỉ có

độ hỗ trợ được trao đổi giữa các bộ xử lý trong mỗi lần lặp Trong tất cả các bước khác, mỗi quá trình hoạt động độc lập, chỉ dựa trên phân vùng cơ sở dữ liệu cục bộ Tuy nhiên, kể từ khi tập ứng viên và tập phổ biến được nhân rộng trên tất cả các bộ

xử lý, bộ nhớ tổng hợp không được sử dụng hiệu quả Giả sử, mỗi bộ xử lý có dung lượng bộ nhớ cục bộ là |M| thì số tập mục ứng viên được cập nhật độ hỗ trợ trong mỗi pha bị giới hạn bởi hằng số m phụ thuộc vào |M| Khi số bộ xử lý trong hệ thống tăng từ 1 đến N, hệ thống sẽ có một bộ nhớ tổng hợp với dung lượng là N x

|M|, nhưng với thuật toán phân tán độ hỗ trợ ở trên, ta cũng chỉ đếm được m tập mục ứng viên do tính chất của thuật toán là tất cả các bộ xử lý đều có tập Ck giống nhau Trong trường hợp đó, khả năng mở rộng sẽ bị suy giảm đáng kể khi số lượng

các bộ xử lý được bổ sung

2.2.4.2 Thuật toán phân phối dữ liệu (DD - Data Distribution)

Thuật toán DD [4] cũng được đề xuất bởi nhóm tác giả Agrawal vào năm

1996 Thuật toán DD là thuật toán tiêu biểu trong mô hình song song tác vụ

Trong thuật toán DD, cơ sở dữ liệu D được phân mảnh thành {D1, D2,…, Dp}

vì mỗi bộ xử lý làm việc với một tập dữ liệu không đầy đủ, do đó việc trao đổi dữ liệu giữa các bộ xử lý là cần thiết Ngoài ra, các tập ứng viên cũng được phân hoạch

và phân phối cho tất cả các bộ xử lý, mỗi bộ xử lý làm việc với tập ứng viên khác nhau

Ý tưởng thuật toán

- Thuật toán được mô tả thông qua 3 bước cơ bản

+ Bước 1: mỗi bộ xử lý quét phần CSDL cục bộ để lấy các phép đếm cục

bộ của các ứng viên được phân hoạch cho nó

+ Bước 2: mỗi bộ xử lý trao đổi phần CSDL cục bộ của nó đến các bộ xử

lý khác và nhận các phân hoạch CSDL khác từ các bộ xử lý đó Sau đó quét các phân hoạch CSDL nhận được để lấy các phép đếm độ hỗ trợ toàn cục trong toàn CSDL

+ Bước 3: mỗi bộ xử lý tính toán các tập phổ biến trong phân hoạch ứng

viên của nó, thay đổi với tất cả các bộ xử lý khác để nhận được tất cả

Trang 34

các tập phổ biến, và sau đó sinh ra các ứng viên, phân hoạch và phân phối các ứng viên cho tất cả các bộ xử lý

- Thuật toán DD lặp các bước 1 – 3 cho đến khi không có các ứng viên nào được sinh ra

// bước 2: truyền các mảnh cơ sở dữ liệu cục bộ đến các bộ xử lý khác, nhận

//các CSDL cục bộ từ các bộ xử lý truyền đến, quét Dj(1≤j≤p, j≠i) để tính số

đếm //hỗ trợ toàn cục

4) broadcast (Di);

5) for (j=1; (j≤p and j≠i);j++) do begin

6) receive (Dj) from processor j;

Trang 35

Cho cơ sở dữ liệu D gồm 10 giao dịch với 14 item, minsup=20%, được phân hoạch cho 3 bộ xử lý như trong bảng 2.1

abc 1 ade 1 bef 1 abc 2 ade 1 bef 2

Trang 36

abf 1 aef 0 cdg 0 abf 2 aef 2 cdg 1

Đánh giá: Theo thuật toán này, mỗi bộ xử lý cần phải trao đổi mảnh CSDL

cục bộ của nó đến các bộ xử lý khác và nhận các phân mảnh CSDL khác từ các bộ

xử lý đó Sau đó, quét các phân mảnh CSDL nhận được để lấy các phép đếm độ hỗ trợ toàn cục trong CSDL Vì thế dễ dẫn đến quá tải trong giao tiếp và dư thừa tính toán

2.2.4.3 Thuật toán phân phối ứng viên (CaD-Candidate Distribution)

Hạn chế của hai thuật toán trên (Count Distribution và Data Distribution) là do mọi giao tác trong cơ sở dữ liệu giao dịch đều có thể hỗ trợ một tập mục ứng viên nào đó nên các giao tác phải được đối sánh với tất cả các tập mục ứng viên Điều

Trang 37

này dẫn đến thuật toán phân phối độ hỗ trợ phải lưu lại tập các tập ứng viên giống nhau trên tất cả các bộ xử lý và thuật toán phân phối dữ liệu phải truyền dữ liệu cho nhau trong quá trình cập nhật độ hỗ trợ Mặt khác, hai thuật toán trên phải tiến hành đồng bộ hóa ở cuối mỗi pha thực hiện song song để trao đổi độ hỗ trợ cục bộ hoặc tập các tập phổ biến cho nhau Yêu cầu đồng bộ hóa trong suốt thời gian thực hiện của thuật toán sẽ làm giảm hiệu suất thực hiện của hệ thống do các bộ xử lý hoàn thành xong công việc phải chờ các bộ xử lý hoàn thành công việc sau đó

Thuật toán phân phối tập ứng viên (Candidate Distribution) [4] do nhóm tác giả Agrawal đề xuất vào năm 1996, thuật toán này cố gắng chia tập ứng viên sao cho các bộ xử lý có thể độc lập làm việc và hạn chế tối đa chi phí truyền thông cho

thao tác đồng bộ hóa Bắt đầu từ một pha l nào đó (l được chọn dựa theo kinh

nghiệm), thuật toán này chia tập mục phổ biến Ll-1 cho các bộ xử lý sao cho mỗi bộ

xử lý Pi có thể tạo ra tập ứng viên 𝐶𝑚𝑖 (m>=l) độc lập với các bộ xử lý khác ( 𝐶𝑚𝑖 ∩

𝐶𝑚𝑗 = ∅ (với mọi i  j)) Đồng thời, dữ liệu cũng được chia lại sao cho mỗi bộ xử

lý Pi có thể cập nhật độ hỗ trợ cho các tập ứng viên trong 𝐶𝑚𝑖 độc lập với các bộ xử

lý khác Cũng trong thời gian đó, dữ liệu được phân chia lại cho mỗi bộ xử lý Pi có thể cập nhật độ hỗ trợ cho các tập mục ứng viên trong 𝐶𝑚𝑖 một cách độc lập với các

bộ xử lý khác Lưu ý là, sự phân chia dữ liệu phụ thuộc rất nhiều vào bước phân chia tập ứng viên trước đó Nếu phân chia tập ứng viên không tốt thì không thể có một phân hoạch dữ liệu cho các bộ xử lý mà chỉ có một phân chia tương đối, nghĩa

là có thể có những phần dữ liệu trùng lặp trên các bộ xử lý

Sau khi phân hoạch Lk-1, các bộ xử lý làm việc độc lập với nhau Việc cập nhật

độ hỗ trợ cho tập các ứng viên cục bộ không đòi hỏi các bộ xử lý phải truyền thông với nhau Chỉ có một sự phụ thuộc duy nhất giữa các bộ xử lý là chúng phải gửi cho nhau những thông tin cần cho việc cắt tỉa các ứng viên không cần thiết Tuy nhiên, những thông tin này có thể được truyền cho nhau theo chế độ dị bộ và các bộ xử lý không cần phải đợi để nhận đầy đủ thông tin này từ các bộ xử lý khác Những thông tin đến sau sẽ được sử dụng cho lần cắt tỉa tiếp theo

Thuật toán này bao gồm các bước sau:

+ Bước 1: Với k < l, sử dụng một trong hai thuật toán phân tán độ hỗ trợ hay thuật

toán phân tán dữ liệu

Trang 38

+ Bước 2: Với k = l:

▪ Bước 2.1: phân chia Lk-1 cho N bộ xử lý Cách phân chia sẽ được trình bày ở bước sau Quá trình phân chia này giống hệ nhau và được thực hiện song song trên các bộ xử lý

▪ Bước 2.2: Mỗi bộ xử lý Pi sẽ sử dụng 𝐿𝑖𝑘−1 để tạo ra 𝐶𝑘𝑖 của nó

▪ Bước 2.3: Pi sẽ cập nhật độ hỗ trợ cho các tập ứng viên trong 𝐶𝑘𝑖 và cơ sở dữ liệu sẽ được phân chia lại ngay sau đó

▪ Bước 2.4: Ở bước này, Pi thực hiện trên dữ liệu cục bộ và tất cả dữ liệu nhận được từ các bộ xử lý khác Nó tạo ra N-1 bộ đệm dị bộ để nhận các 𝐿𝑗𝑘 từ các

bộ xử lý khác Những 𝐿𝑗𝑘 này cần thiết cho bước cắt tỉa các tập ứng viên trong 𝐶𝑘+1𝑖

▪ Bước 2.5: Pi sinh ra 𝐿𝑖𝑘 từ 𝐶𝑘𝑖 và truyền thông dị bộ đến tất cả N-1 bộ xử lý khác

+ Bước 3: Trường hợp k > l:

▪ Bước 3.1: Mỗi bộ xử lý Pi thu thập tất cả những tập phổ biến từ các bộ xử lý khác Thông tin từ các tập phổ biến này sẽ được dùng để cắt tỉa Các tập mục nhận được từ bộ xử lý j sẽ có độ dài k-l, nhỏ hơn k-l nếu là bộ xử lý chậm, hoặc lớn hơn k-l nếu là bộ xử lý nhanh

▪ Bước 3.2: Pi tạo ra 𝐶𝑘𝑖 dựa vào 𝐿𝑖𝑘−1 Một trường hợp có thể xảy ra là Pi

không nhận được 𝐿𝑗𝑘−1 từ các bộ xử lý khác Do đó, Pi cần phải chú ý trong khoảng thời gian cắt tỉa

▪ Bước 3.3: Pi thực hiện duyệt dữ liệu để cập nhật độ hỗ trợ cho các tập mục trong 𝐶𝑘𝑖 Sau đó, nó tính toán 𝐿𝑖𝑘 từ 𝐶𝑘𝑖 và truyền dị bộ thông tin về 𝐿𝑖𝑘 tới N-

Trang 39

2.2.4.4 Thuật toán HD (Hybrid Distribution)

Thuật toán HD [4] được đề xuất bởi nhóm tác giả Han vào năm 1997 Tiếp cận của thuật toán HD là kỹ thuật kết hợp cả hai thuật toán Count Distribution và Data Distribution HD là thuật toán song song điển hình áp dụng cả hai mô hình song song dữ liệu và song song tác vụ

Ý tưởng thuật toán

- Giả sử P bộ xử lý được sắp xếp trong lưới 2 chiều có r dòng và P/r cột CSDL được phân hoạch bằng nhau giữa P bộ xử lý

- Tập ứng viên Ck được phân hoạch ngang qua các cột của của lưới này (P/n phân hoạch với mỗi cột có một mảnh các tập ứng viên), và mảnh các tập ứng viên trên mỗi cột được nhân đôi trên tất cả các bộ xử lý dọc theo mỗi hàng cho cột đó Lúc này, thuật toán phân phối dữ liệu bất kỳ có thể được thi hành một cách độc lập dọc theo mỗi cột của lưới, số đếm toàn cục của mỗi tập con Ck đạt được bằng cách thực hiện thao tác thu gọn dọc theo mỗi cột của lưới như trong mô hình song song dữ liệu Kiến trúc lưới giả định có thể được xem như tổng quát hoá của 2 mô hình song song dữ liệu

và song song tác vụ, có nghĩa là, nếu số cột trong lưới là 1, nó thu gọn thành mô hình song song tác vụ, còn nếu số dòng là 1, thì nó thu gọn thành mô hình song song dữ liệu

Đánh giá: Bằng cách phân phối kiểu lai, sự quá tải trong giao tiếp khi di

chuyển CSDL sẽ được giảm, khi các phân mảnh CSDL chỉ cần được di chuyển dọc theo các cột của lưới bộ xử lý thay vì trên toàn lưới HD cũng tự động chuyển thành

CD ở các bước sau để giảm tải trong giao tiếp

2.2.5 Khai thác song song tập phổ biến dựa trên Eclat

Zaki và các đồng sự của ông đã đề xuất thuật toán song song tập phổ biến dựa trên thuật toán tuần tự Eclat Đây là thuật toán song song dựa trên kiến trúc bộ nhớ chia sẻ Thuật toán dùng phương pháp nhóm các tập phổ biến có liên quan với nhau bằng cách sử dụng lược đồ phân chia lớp tương đương, mỗi lớp tương đương chứa các tập ứng viên có quan hệ tương đương với nhau

Việc phân lớp tương đương được thực hiện như sau: Gọi Lk là tập chứa các tập mục phổ biến, giả sử Lk được sắp theo thứ tự tự điển Có thể phân hoạch các tập

Trang 40

mục trong Lk thành các lớp tương đương bằng cách chọn k-1 thành viên đầu tiên giống nhau trong Lk đưa vào cùng một lớp Ta ký hiệu lớp tương đương chứa a là

Sa=[a] Trong phạm vi một lớp, ứng viên k-itemset được sinh ra bằng cách kết nối

tất cả (|𝑆𝑖|2 ) = |Si|(|Si|-1)/2 cặp tiền tố là định danh của lớp Trong đó, |Si| là số phần

tử của lớp có định danh là i Các k-itemset ứng viên được sinh ra từ các lớp khác nhau sẽ độc lập với nhau

Thuật toán song song Eclat bố trí dữ liệu theo chiều dọc Theo phương pháp này, một cơ sở dữ liệu bao gồm một danh sách các item và mỗi item xác định danh sách các định danh của giao tác có chứa item đó gọi là Tid-list Cách tổ chức dữ liệu này có được các ưu điểm sau:

▪ Nếu Tid-list được sắp xếp theo thứ tự tăng dần thì độ hỗ trợ của ứng viên itemset có thể được tính toán bởi phép lấy giao các Tid-list của hai tập bất kỳ

k-có k-1 items

▪ Danh sách định danh của các giao tác Tid-list chứa tất cả các thông tin liên quan đến một tập mục Vì vậy, khi tính độ hỗ trợ của một tập mục không cần phải quét toàn bộ cơ sở dữ liệu

Thuật toán song song Eclat được thực hiện theo trình tự các bước như sau:

+ Bước 1: Giai đoạn khởi tạo

− Duyệt qua các phân hoạch cơ sở dữ liệu cục bộ

− Tính độ hỗ trợ cục bộ cho tất cả các tập mục 2-itemset

− Xây dựng độ hỗ trợ tổng thể cho các tập mục chứa L2

+ Bước 2: Giai đoạn biến đổi

− Phân hoạch L2 thành các lớp tương đương

− Lập lịch L2 trên tập các bộ xử lý P

− Thực hiện phân hoạch cơ sở dữ liệu cục bộ theo chiều dọc

− Truyền các Tid-list có liên quan đến các bộ xử lý khác

− Nhận các Tid-list từ các bộ xử lý khác bằng L2 cục bộ

+ Bước 3: Giai đoạn thực hiện song song

− Thực hiện lặp song song mỗi lớp tương đương E2 trong L2 cục bộ để sinh ra các tập phổ biến trước khi chuyển đến lớp tiếp theo

Ngày đăng: 23/12/2018, 06:15

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