Luận văn Khai phá song song luật kết hợp mờ

Mở đầu Hơn một thập niên trở lại đây, khai phá dữ liệu (KPDL) đã trở thành một trong những hướng nghiên cứu chính trong lĩnh vực khoa học máy tính và công nghệ tri thức. Hàng loạt nghiên cứu, đề xuất ra đời đã được thử nghiệm và ứng dụng thành công vào đời sống cùng với hơn mười năm lịch sử cho thấy rằng KPDL là một lĩnh vực nghiên cứu ổn định, có một nền tảng lý thuyết vững chắc chứ không phải được xem là “sớm nở tối tàn” như một số ít nhà tin học nghi ngờ tại thủa ban đầu của lĩnh vực này. KPDL bao hàm rất nhiều hướng tiếp cận. Các kỹ thuật chính được áp dụng trong lĩnh vực này phần lớn được thừa kế từ lĩnh vực cơ sở dữ liệu (CSDL), machine learning, trí tuệ nhân tạo, lý thuyết thông tin, xác suất thống kê, và tính toán hiệu năng cao. Các bài toán chủ yếu trong KPDL là phân lớp/dự đoán (classification/prediction), phân cụm (clustering), khai phá luật kết hợp (association rules mining), khai phá chuỗi (sequence mining), v.v. Lĩnh vực này cũng là điểm hội tụ và giao thoa của rất nhiều lĩnh vực khác. KPDL đã và đang được ứng dụng thành công vào thương mại, tài chính & thị trường chứng khoán, sinh học, y học, giáo dục, viễn thông, .v.v. Ý thức được đây là một lĩnh vực nghiên cứu có nhiều triển vọng, tôi đã chọn hướng nghiên cứu Khai phá song song luật kết hợp mờ cho đề tài luận văn của mình. Luận văn được xây dựng dựa trên nền các nghiên cứu đã có trong lĩnh vực khai phá luật kết hợp kể từ năm 1993, đồng thời tôi cũng mạnh dạn trình bày một vài đề xuất của riêng mình mà hai trong số những đề xuất đó là “nêu lên mối liên hệ giữa luật kết hợp mờ và lý thuyết tập mờ” và “thuật toán song song khai phá luật kết hợp mờ”. Luận văn được tổ chức thành 5 chương như sau: ã Chương I trình bày tổng quan về KPDL như định nghĩa thế nào là KPDL và khám phá tri thức từ cơ sở dữ liệu, các bước chính trong quá trình khám phá tri thức. Chương này cũng đề cập đến các kỹ thuật và hướng tiếp cận chính trong KPDL và phân loại các hệ thống khai phá theo nhiều tiêu chí khác nhau. Phần cuối của chương này phác họa những ứng dụng chính của - 2 - lĩnh vực này và những hướng nghiên cứu đang và sẽ được chú trọng trong thời gian tới. ã Chương II trình bày về bài toán “khai phá luật kết hợp”. Để đi vào những nghiên cứu cụ thể ở hai chương sau, chương này cung cấp những hiểu biết cần thiết về bài toán khai phá luật kết hợp. Phần cuối chương sẽ là tổng hợp những đề xuất chính trong hơn 10 năm lịch sử tồn tại và phát triển của bài toán này. ã Chương III trình bày về “khai phá luật kết hợp mờ”. Phần đầu của chương phát biểu lại bài toán khai phá luật kết hợp với thuộc tính số và thuộc tính hạng mục cùng các phương pháp rời rạc hóa dữ liệu cho bài toán này. Dạng luật kết hợp này cùng với các phương pháp rời rạc hóa đi kèm có một vài hạn chế như ngữ nghĩa của luật hay vấn đề “điểm biên gãy”. Luật kết hợp mờ được đề xuất như một hướng khắc phục các nhược điểm của bài toán trên. Bên cạnh sự tổng hợp về các nghiên cứu trước đó về dạng luật này, luận văn cũng nêu lên mối liên hệ giữa luật kết hợp và lý thuyết tập mờ và giải quyết câu hỏi “tại sao lại chọn phép tích đại số và phép lấy min cho toán tử T-norm”. Phần cuối của chương này là một đề xuất về cách chuyển đổi luật kết hợp mờ về dạng luật kết hợp mờ với thuộc tính số dựa vào ngưỡng wf tương ứng với các tập mờ f của từng thuộc tính mờ. ã Chương IV tập trung vào bài toán ”khai phá song song luật kết hợp”. Phần đầu của chương này, luận văn tóm tắt lại các thuật toán đã được đề xuất và thử nghiệm thành công. Các thuật toán này giống nhau ở một điểm là phải đồng bộ hóa dù nhiều hay ít trong suốt quá trình tính toán và đây chính là nhược điểm cần khắc phục. Nắm bắt được tính chất của luật kết hợp mờ, luận văn đã đề xuất một thuật toán mới theo đó các bộ xử lý (BXL) trong hệ thống song song hạn chế được tối đa quá trình trao đổi dữ liệu và đồng bộ hóa. Thuật toán khai phá song song luật kết hợp mờ này được xem là gần lý tưởng bởi ngoài việc tránh được nhược điểm truyền thông, nó còn đạt được sự cân bằng tải giữa các BXL nhờ một chiến thuật chia tập thuộc tính ứng cử viên phù hợp. ã Chương V tổng kết luận văn bằng việc nêu lại những công việc đã thực hiện và kết quả đạt được của luận văn này. Ngoài ra, chương này cũng đề - 3 - cập những vấn đề chưa được giải quyết hoặc giải quyết thấu đáo trong toàn luận văn cũng như công việc và hướng nghiên cứu trong tương lai. Mục lục Mở đầu . 1 Mục lục 4 Danh sách hình vẽ . 6 Danh sách bảng biểu 7 Bảng từ viết tắt 8 Chương I. Tổng quan về Khai phá dữ liệu 9 1.1 Khai phá dữ liệu 9 1.1.1 Tại sao lại Khai phá dữ liệu? . 9 1.1.2 Định nghĩa Khai phá dữ liệu 10 1.1.3. Các bước chính trong Khám phá tri thức (KDD) 11 1.2 Các hướng tiếp cận và các kỹ thuật áp dụng trong Khai phá dữ liệu 12 1.2.1 Các hướng tiếp cận và các kỹ thuật chính trong Khai phá dữ liệu 12 1.2.2 Các dạng dữ liệu có thể khai phá . 13 1.3 Ứng dụng của Khai phá dữ liệu 14 1.3.1 Ứng dụng của Khai phá dữ liệu . 14 1.3.2 Phân loại các hệ Khai phá dữ liệu 14 1.4 Những vấn đề được chú trọng trong Khai phá dữ liệu 15 Chương II. Luật kết hợp 17 2.1 Tại sao lại luật kết hợp? 17 2.2 Phát biểu bài toán khai phá luật kết hợp . 18 2.3 Những hướng tiếp cận chính trong khai phá luật kết hợp . 20 Chương III. Khai phá luật kết hợp mờ 23 3.1 Luật kết hợp có thuộc tính số 23 - 5 - 3.1.1 Luật kết hợp có thuộc tính số . 23 3.1.2 Các phương pháp rời rạc hóa . 24 3.2 Luật kết hợp mờ 27 3.2.1 Rời rạc hóa thuộc tính dựa vào tập mờ 27 3.2.2 Luật kết hợp mờ (fuzzy association rules) . 29 3.2.3 Thuật toán khai phá luật kết hợp mờ 33 3.2.4 Chuyển luật kết hợp mờ về luật kết hợp với thuộc tính số 38 3.2.5 Thử nghiệm và kết luận 38 Chương IV. Khai phá song song luật kết hợp mờ . 39 4.1 Một số thuật toán song song khai phá luật kết hợp . 40 4.1.1 Thuật toán phân phối độ hỗ trợ 40 4.1.2 Thuật toán phân phối dữ liệu 41 4.1.3 Thuật toán phân phối tập ứng cử viên 43 4.1.3 Thuật toán sinh luật song song . 46 4.1.4 Một số thuật toán khác . 47 4.2 Thuật toán song song cho luật kết hợp mờ . 47 4.2.1 Hướng tiếp cận . 47 4.2.2 Thuật toán song song cho luật kết hợp mờ 51 4.3 Thử nghiệm và kết luận . 52 Chương V. Kết luận 53 Những vấn đề đã được giải quyết trong luận văn này . 53 Công việc nghiên cứu trong tương lai . 54 Tài liệu tham khảo . 56

pdf60 trang | Chia sẻ: maiphuongtl | Lượt xem: 1664 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Luận văn Khai phá song song luật kết hợp mờ, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ong đó, ⊕ là toán tử S-norm (hay còn gọi là T-đối chuẩn). Nếu áp dụng ⊕ là phép lấy max ta có mP→Q(u, v) = max(1- mP, mQ) (Dienes). Nếu áp dụng ⊕ là tổng xác suất thì mP→Q(u, v) = 1- mP + mP.mQ (Mizumoto). Còn nếu áp dụng ⊕ là tổng bị chặn thì mP→Q(u, v) = min(1, 1- mP + mQ) (Lukaciewicz) .v.v. • Chúng ta có thể hiểu kéo theo mờ “nếu u là P thì v là Q” chỉ có giá trị chân lý lớn khi cả hai hàm thuộc ở hai vế đều có giá trị lớn, tức là có thể sử dụng toán tử T-norm: mP→Q(u, v) = ⊗(mP, mQ). Nếu áp dụng phép lấy min cho ⊗ thì ta có mP→Q(u, v) = min(mP, mQ) (Mamdani). Nếu áp dụng phép lấy tích đại số thì mP→Q(u, v) = mP . mQ (Mamdani) [DMT03]. Luật kết hợp mờ cũng là một trong những dạng luật kéo theo mờ, do đó nó cũng phải “tuân thủ” về mặt ngữ nghĩa của dạng luật này. Theo cách hiểu của Mamdani thì chúng ta có thể sử dụng toán tử T-norm cụ thể là với phép lấy min và phép tích đại số. Đây chính là một trong những lý do tại sao tôi chọn phép lấy min và phép tích đại số cho toán tử T-norm ở công thức (3.6). 3.2.3 Thuật toán khai phá luật kết hợp mờ Thuật toán khai phá luật kết hợp mờ được chia làm hai pha như sau: • Pha 1: Tìm tất cả các tập thuộc tính mờ phổ biến dạng có độ hỗ trợ lớn hơn độ hỗ trợ cực tiểu của người dùng nhập vào: fs() ≥ fminsup. • Pha 2: Sinh các luật kết hợp mờ tin cậy từ các tập phổ biến đã tìm thấy ở pha thứ nhất. Pha này đơn giản và tốn kém ít thời gian hơn so với pha trên. Nếu là một tập thuộc tính mờ phổ biến thì luật kết hợp được sinh ra từ X có dạng '\ '\' ' AAisXXAisX fc⎯→⎯ , với X’ là tập con khác rỗng của X, X \ X’ là hiệu của hai tập hợp, A’ là tập con khác rỗng của A và là tập các tập mờ tương ứng với các thuộc tính trong X’, A \ A’ là hiệu hai tập hợp, fc là độ tin cậy của luật thỏa mãn fc ≥ fminconf (do người dùng xác định). - 34 - Đầu vào của thuật toán (inputs): CSDL D với tập thuộc tính I và tập bản ghi T, độ hỗ trợ tối thiểu fminsup và độ tin cậy tối thiểu fminconf. Đầu ra của thuật toán (outputs): tập tất cả các luật kết hợp mờ tin cậy. Bảng các ký hiệu (notations): Ký hiệu Ý nghĩa D CSDL (dạng quan hệ hoặc giao dịch) I Tập các mục (thuộc tính) trong D T Tập các giao dịch (hoặc bản ghi) trong D DF CSDL mờ (được tính toán từ CSDL ban đầu thông qua hàm thuộc của các tập mờ tương ứng với từng thuộc tính) IF Tập các mục (thuộc tính) trong DF, mỗi mục hay thuộc tính đều được gắn với một tập mờ. Mỗi tập mờ f đều có môt ngưỡng wf như trong công thức (3.7) TF Tập các giao dịch (hoặc bản ghi) trong DF, các giá trị thuộc tính trong mỗi giao dịch hoặc bản ghi đã được chuyển sang một giá trị thuộc khoảng [0, 1] nhờ hàm thuộc của các tập mờ tương ứng với từng thuộc tính. Ck Tập các tập mục (thuộc tính) có kích thước k Fk Tập các tập mục (thuộc tính) phổ biến có kích thước k F Tập tất cả các tập mục (thuộc tính) phổ biến fminsup Độ hỗ trợ tối thiểu fminconf Độ tin cậy tối thiểu Bảng 9 - Bảng các ký hiệu sử dụng trong thuật toán khai phá luật kết hợp mờ Thuật toán: 1 BEGIN 2 (DF, IF, TF) = FuzzyMaterialization(D, I, T); 3 F1 = Counting(DF, IF, TF, fminsup); 4 k = 2; 5 while (Fk-1 ≠ ∅) { 6 Ck = Join(Fk-1); 7 Ck = Prune(Ck); 8 Fk = Checking(Ck, DF, fminsup); 9 F = F ∪ Fk; 10 k = k + 1; 11 } 12 GenerateRules(F, fminconf); 13 END Bảng 10 - Thuật toán khai phá luật kết hợp mờ - 35 - Thuật toán trong bảng 10 sử dụng một số chương trình con sau đây: • Chương trình con (DF, IF, TF) = FuzzyMaterialization(D, I, T): hàm này thực hiện nhiệm vụ chuyển đổi từ CSDL D ban đầu sang CSDL DF với các thuộc tính được gắn thêm các tập mờ và giá trị các thuộc tính ở các bản ghi trong T được ánh xạ thành một giá trị thuộc khoảng [0, 1] thông qua hàm thuộc của các tập mờ tương ứng với các thuộc tính. Ví dụ, với CSDL D trong bảng 8, sau khi thực hiện hàm này, chúng ta sẽ có: IF = {[Tuổi, Tuổi_trẻ] (1), [Tuổi, Tuổi_trung_niên] (2), [Tuổi, Tuổi_già] (3), [Cholesterol, Cholesterol_thấp] (4), [Cholesterol, Cholesterol_cao] (5), [Đường_trong_máu, Đường_trong_máu_0] (6), [Đường_trong_máu, Đường_trong_máu_1] (7), [Bệnh_tim, Bệnh_tim_không] (8), [Bệnh_tim, Bệnh_tim_có] (9)} Như vậy IF bao gồm 9 thuộc tính đã được mờ hóa so với 4 thuộc tính ban đầu trong CSDL D. Mỗi thuộc tính mới là một cặp nằm trong ngoặc vuông bao gồm tên thuộc tính ban đầu và tên của tập mờ gắn với thuộc tính ấy. Ví dụ, thuộc tính Tuổi ban đầu sau khi mờ hóa ta sẽ đươc ba thuộc tính mới là [Tuổi, Tuổi_trẻ] (1), [Tuổi, Tuổi_trung_niên] (2), [Tuổi, Tuổi_già] (3). Ngoài ra chương trình con FuzzyMaterialization sẽ ánh xạ giá trị các thuộc tính ban đầu sang các giá trị thuộc khoảng [0, 1] nhờ hàm thuộc của các tập mờ. Ví dụ, bảng sau đây được tính toán dựa trên CSDL D ở bảng 8: T 1 2 3 C 4 5 Đ 6 7 B 8 9 60 0.00 0.41 0.92 206 0.60 0.40 0 1 0 2 0 1 54 0.20 0.75 0.83 239 0.56 0.44 0 1 0 2 0 1 54 0.20 0.75 0.83 286 0.52 0.48 0 1 0 2 0 1 52 0.29 0.82 0.78 255 0.54 0.46 0 1 0 2 0 1 68 0.00 0.32 1.00 274 0.53 0.47 1 0 1 2 0 1 54 0.20 0.75 0.83 288 0.51 0.49 1 0 1 1 1 0 46 0.44 0.97 0.67 204 0.62 0.38 0 1 0 1 1 0 37 0.59 0.93 0.31 250 0.54 0.46 0 1 0 1 1 0 71 0.00 0.28 1.00 320 0.43 0.57 0 1 0 1 1 0 74 0.00 0.25 1.00 269 0.53 0.47 0 1 0 1 1 0 29 0.71 0.82 0.25 204 0.62 0.38 0 1 0 1 1 0 70 0.00 0.28 1.00 322 0.43 0.57 0 1 0 2 0 1 67 0.00 0.32 1.00 544 0.00 1.00 0 1 0 1 1 0 Bảng 11 - TF - giá trị các thuộc tính tại các bản ghi đã được mờ hóa Chú ý, các chữ cái trong dòng đầu tiên của bảng trên có nghĩa như sau: T (Tuổi), C (Cholesterol), Đ (Đường trong máu), B (Bệnh tim). - 36 - Do hàm thuộc của mỗi tập mờ f có một ngưỡng wf nên chỉ chỉ những giá trị nào vượt ngưỡng wf mới được tính đến, ngược lại những giá trị không vượt ngưỡng được xem bằng 0 (theo công thức 3.7). Ngưỡng wf phụ thuộc vào mỗi hàm thuộc và từng thuộc tính. Những ô được tô màu trong bảng 11 cho biết giá trị của những ô đó vượt ngưỡng (các thuộc tính trong bảng 11 đều lấy wf bằng 0.5). Những ô không được tô màu được xem có giá trị bằng 0. • Chương trình con F1 = Counting(DF, IF, TF, fminsup): hàm này sinh ra F1 là tập tất cả các tập phổ biến có lực lượng bằng 1. Các tập thuộc tính phổ biến này phải có độ hỗ trợ lớn hơn hoặc bằng fminsup. Ví dụ, áp dụng công thức (3.6) với toán tử T-norm (⊗) là tích đại số và fminsup bằng 46% ta được bảng sau: Tập thuộc tính Độ hỗ trợ Là tập phổ biến? fminsup = 46% {[Tuổi, Tuổi_trẻ]} (1) 10 % Không {[Tuổi, Tuổi_trung_niên]} (2) 45 % Không {[Tuổi, Tuổi_già]} (3) 76 % Có {[Cholesterol, Cholesterol_thấp]} (4) 43 % Không {[Cholesterol, Cholesterol_cao]} (5) 16 % Không {[Đường_trong_máu, Đường_trong_máu_0]} (6) 85 % Có {[Đường_trong_máu, Đường_trong_máu_1]} (7) 15 % Không {[Bệnh_tim, Bệnh_tim_không]} (8) 54 % Có {[Bệnh_tim, Bệnh_tim_có]} (9) 46 % Có Bảng 12 - C1 - tập tất cả các tập thuộc tính có lực lượng bằng 1 Như vậy F1 = {{3}, {6}, {8}, {9}} • Chương trình con Ck = Join(Fk-1): hàm này thực hiện việc sinh ra tập các tập thuộc tính mờ ứng cử viên có lực lượng k từ tập các tập thuộc tính mờ phổ biến lực lượng k-1 là Fk-1. Cách kết nối sử dụng trong hàm Join được thể hiện thông qua ngôn ngữ SQL như sau: INSERT INTO Ck SELECT p.i1, p.i2, …, p.ik-1, q.ik-1 FROM Lk-1 p, Lk-1 q WHERE p.i1 = q.i1, …, p.ik-2 = q.ik-2, p.ik-1 < q.ik-1 AND p.ik-1.o ≠ q.ik-1.o; Trong đó, p.ij và q.ij là số hiệu của thuộc tính mờ thứ j trong p và q, còn p.ij.o và q.ij.o là số hiệu thuộc tính gốc của thuộc tính mờ thứ j trong p và q. Ví dụ, C2 = {{3, 6}, {3, 8}, {3, 9}, {6, 8}, {6, 9}}. Tập thuộc tính {8, 9} là không hợp lệ vì cả (8) và (9) có cùng một thuộc tính gốc ban đầu là Bệnh_tim. - 37 - • Chương trình con Ck = Prune(Ck): chương trình con này sử dụng tính chất “mọi tập con khác rỗng của tập phổ biến cũng là tập phổ biến và mọi tập chứa tập không phổ biến đều là tập không phổ biến” (downward closure property) để cắt tỉa những tập thuộc tính nào trong Ck có tập con lực lượng k-1 không thuộc tập các tập thuộc tính phổ biến Fk-1. Sau khi cắt tỉa, C2 = {{3, 6}, {3, 8}, {3, 9}, {6, 8}, {6, 9}}. • Chương trình con Fk = Checking(Ck, DF, fminsup): chương trình con này duyệt qua CSDL DF để cập nhật độ hỗ trợ cho các tập thuộc tính trong Ck. Sau khi duyệt xong, Checking sẽ chỉ chọn những tập phổ biến (có độ hỗ trợ lớn hơn hoặc bằng fminsup) để đưa vào trong Fk. Ví dụ, với C2 ở trên, sau khi thực hiện Checking, ta được F2 = {{3,6}, {6,8}}. Tập thuộc tính Độ hỗ trợ Là tập phổ biến? {3, 6} 62 % Có {3, 8} 35 % Không {3, 9} 41 % Không {6, 8} 46 % Có {6, 9} 38 % Không Bảng 13 - F2 - tập thuộc tính phổ biến có lực lượng bằng 2 • Chương trình còn GenerateRules(F, fminconf): sinh luật kết hợp mờ tin cậy từ tập các tập phổ biến F. Với ví dụ trên, sau pha thứ nhất, ta được tập các tập phổ biến F = F1 ∪ F2 = {{3}, {6}, {8}, {9}, {3,6}, {6,8}} (F3 không có vì C3 bằng tập rỗng). Dưới đây là bảng liệt kê các luật mờ được sinh ra từ F: STT Luật Độ hỗ trợ Độ tin cậy 1 Người già 76 % 2 Đường trong máu ≤ 120 mg/ml 85 % 3 Không bị bệnh tim 54 % 4 Bị bệnh tim 46 % 5 Người già => Đường trong máu ≤ 120 mg/ml 62 % 82 % 6 Đường trong máu ≤ 120 mg/ml => Người già 62 % 73 % 7 Đường trong máu ≤ 120 mg/ml => Không bị bệnh tim 46 % 54 % 8 Không bị bệnh tim => Đường trong máu ≤ 120 mg/ml 46 % 85 % Bảng 14 - Các luật mờ được sinh ra từ CSDL trong bảng 8 Với độ tin cậy cực tiểu là 70%, luật thứ 7 ở bảng trên bị loại. - 38 - 3.2.4 Chuyển luật kết hợp mờ về luật kết hợp với thuộc tính số Theo công thức 3.7, mỗi hàm thuộc của một tập mờ f đều có một ngưỡng wf. Những giá trị nào bé hơn ngưỡng wf thì xem như bằng 0. Nhờ ngưỡng wf, chúng ta có thể khử mờ để đưa luật kết hợp mờ về dạng gần giống với luật kết hợp với thuộc tính số (quantitative association rules). Ví dụ, với luật “Người già => Đường trong máu ≤ 120 mg/ml, độ hỗ trợ 62%, độ tin cậy 82%” trong bảng 14, chúng ta có thể đưa về dạng sau “Tuổi ≥ 46 => Đường trong máu ≤ 120 mg/ml, độ hỗ trợ 62%, độ tin cậy 82%”. Chúng ta thấy, giá trị nhỏ nhất còn vượt quá ngưỡng wTuổi_già (= 0.5) trong thuộc tính [Tuổi, Tuổi_già] là 0.67. Tuổi tương ứng với giá trị mờ bằng 0.67 chính là 46. Trong thuộc tính này, bất cứu người nào có tuổi lớn hơn hoặc bằng 46 thì đều có giá trị hàm mờ lớn hơn hoặc bằng 0.67. “Tuổi ≥ 46 => Đường trong máu ≤ 120 mg/ml, độ hỗ trợ 62%, độ tin cậy 82%” hoàn toàn là một luật kết hợp với thuộc tính số. Vì đa phần hàm thuộc của các tập mờ có đạo hàm ít thay đổi (thường là hàm đơn điệu hoặc số lần đạo hàm đổi dấu là rất ít) nên việc khử mờ tương đối đơn giản. 3.2.5 Thử nghiệm và kết luận • Thử nghiệm với kích thước dữ liệu (số bản ghi tăng dần) và thời gian tìm kiếm luật • Thử nghiệm kết quả bằng cách biến thiên độ hỗ trợ và độ tin cậy • Thử nghiệm số luật tìm được khi biến thiên các trọng số hàm thuộc của các tập mờ • Thử nghiệm với các toán tử T-norm khác nhau (phép lấy min và tích đại số) • Thử nghiệm chuyển từ luật kết hợp mờ sang luật kết hợp với thuộc tính được đánh trọng số - 39 - Chương IV. Khai phá song song luật kết hợp mờ Một trong những bước quan trọng của khai phá luật kết hợp là tìm tất cả các tập thuộc tính phổ biến trong CSDL. Đây là bước tương đối phức tạp và tốn nhiều thời gian của CPU (CPU-bound) lẫn thời gian vào ra (I/O-bound) nên các nhà làm tin học đã bỏ nhiều công sức để cải tiến những thuật toán cũ hoặc tìm ra các thuật toán mới nhằm tăng tốc độ tìm kiếm [AS94] [MTV94] [BCJ01] [PHM01] [ZH99] [PBTL99]. Những thuật toán này đều ở dạng tuần tự (sequential algorithms) và làm việc tương đối tốt với những CSDL có kích cỡ không quá lớn (tiêu chí đánh giá CSDL lớn hay nhỏ phụ thuộc vào số thuộc tính và số bản ghi). Tuy nhiên, những thuật toán này sẽ giảm tính hiệu quả một cách đáng kể khi gặp phải những CSDL lớn (hàng trăm megabyte trở lên) do hạn chế về dung lượng bộ nhớ trong và tốc độ tính toán của một máy tính đơn lẻ. Với sự phát triển bùng nổ của công nghệ phần cứng, theo đó các hệ máy tính song song có sức mạnh tính toán vượt trội ra đời đã mở ra một hướng tiếp cận mới trong KPDL, đó là KPDL song song. Từ năm 1995 trở lại đây, các nhà nghiên cứu đã không ngừng đề xuất các thuật toán song song và phân tán cho bài toán phát hiện luật kết hợp [AM95] [PCY95] [AS96] [HKK97] [ZHL98] [ZPO01] [DP01]. Những thuật toán song song khá đa dạng do một phần chúng được thiết kế phụ thuộc vào kiến trúc của từng hệ máy tính song song cụ thể. Trong phần đầu tiên của chương này tôi muốn trình bày sơ lược một số thuật toán song song đã đuợc đề xuất và thử nghiệm. Phần tiếp theo tôi xin đề xuất một thuật toán song song cho bài toán khai phá luật kết hợp mờ chạy trên hệ thống PC- Cluster với cơ chế truyền thông điệp của MPI (Message Passing Interface) [MPIS95] [EMPI97] [JDMPI97]. Đây là một thuật toán khá lý tưởng bởi nó hạn chế tối đa được quá trình đồng bộ hóa và trao đổi dữ liệu trong trong tiến trình song song hóa. Tuy nhiên, hạn chế của thuật toán này là chỉ làm việc được với luật kết hợp mờ và luật kết hợp với thuộc tính số và do đó nó phù hợp với CSDL dạng quan hệ hơn là dạng giao dịch. - 40 - 4.1 Một số thuật toán song song khai phá luật kết hợp Trong phần này, tôi xin trình bày một số thuật toán song song đã được đề xuất và thử nghiệm. Các thuật toán này được thiết kế trên hệ máy tính song song không chia sẻ (shared-nothing architecture) có tính chất như sau: • Hệ có N bộ xử lý (BXL - processor), mỗi BXL Pi này có bô nhớ trong (RAM) và bộ nhớ ngoài (thường là ổ đĩa) độc lập với các BXL còn lại trong hệ thống. • N BXL này có thể truyền thông với nhau nhờ một mạng tốc độ cao sử dụng cơ chế truyền thông điệp (message passing). 4.1.1 Thuật toán phân phối độ hỗ trợ Thuật toán song song phân phối độ hỗ trợ (count distribution) dựa trên nền thuật toán Apriori [AS94]. Trong thuật toán này, N là số BXL, Pi là BXL thứ i, Di là phần dữ liệu được gắn với BXL Pi (CSDL D ban đầu được chia ra làm N phần, mỗi phần gắn với một BXL). Thuật toán bao gồm các bước sau: • (1) Bước 1, với k = 1, tất cả N BXL đều nhận được Lk là tập tất cả các tập thuộc tính phổ biến có lực lượng bằng 1. • (2) Bước 2, với mọi k > 1, thuật toán thực hiện lặp đi lặp lại các bước sau: o (2.1) Mỗi BXL Pi tạo ra tập các tập thuộc tính ứng cử viên Ck bằng cách kết nối các tập thuộc tính phổ biến trong Lk-1. Nhớ rằng, tất cả các BXL đều có thông tin về Lk-1 giống hệt nhau nên chúng sinh ra Ck cũng giống hệt nhau. o (2.2) Mỗi BXL Pi duyệt qua CSDL Di của riêng nó để cập nhật độ hỗ trợ cục bộ cho các tập thuộc tính ứng cử viên trong Ck. Đây chính là quá trình các BXL thực hiện song song với nhau. o (2.3) Sau khi đã cập nhật xong độ hỗ trợ cục bộ cho các tập thuộc tính ứng cử viên trong Ck, các BXL tiến hành truyền thông cho nhau để thu được độ hỗ trợ toàn cục. Ở bước này, các BXL bắt buộc phải đồng bộ hóa với nhau. o (2.4) Các BXL căn cứ vào độ hỗ trợ tối thiểu minsup để chọn ra tập những tập thuộc tính phổ biến Lk từ tập các ứng cử viên Ck. - 41 - o (2.5) Mỗi BXL có quyền kết thúc tại bước này hoặc tiếp tục thực hiện lặp lại bước 2.1. Hình sau đây minh họa nguyên lý làm việc của thuật toán này. Hình 7 - Thuật toán phân phối độ hỗ trợ trên hệ 3 BXL 4.1.2 Thuật toán phân phối dữ liệu Ưu điểm nổi bật của thuật toán phân phối độ hỗ trợ là không cần truyền dữ liệu giữa các BXL trong quá trình tính toán. Do đó, chúng có thể hoạt động độc lập và không đồng bộ với nhau trong khi duyệt dữ liệu trên bộ nhớ hoặc ổ đĩa cục bộ. Tuy nhiên, nhược điểm của thuật toán này là không khai thác hết sức mạnh tổng hợp của N bộ nhớ ứng với N BXL của toàn hệ thống. Giả sử mỗi BXL có dung lượng bộ nhớ cục bộ là |M| thì số tập thuộc tính ứng cử 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 |M|. Khi số BXL 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 N x |M|, nhưng với thuật toán phân phối độ hỗ trợ ở trên, chúng ta cũng chỉ đếm được m tập thuộc tính ứng cử viên do tính chất của thuật toán là tất cả các BXL đều có tập Ck giống hệt nhau. Thuật toán phân phối dữ liệu (data distribution) được thiết kế với mục đích tận dụng được sức mạnh tổng hợp của bộ nhớ hệ thống khi số BXL tăng lên. Trong thuật toán này, mỗi BXL tiến hành cập nhật độ hỗ trợ cho một số các tập thuộc - 42 - tính ứng cử viên của riêng nó. Do đó, khi số BXL trong hệ thống tăng lên, thuật toán này có thể cập nhật độ hỗ trợ cho rất nhiều các tập thuộc tính ứng cử viên trong một pha. Nhược điểm của thuật toán này là mỗi BXL phải truyền và nhận dữ liệu ở mỗi pha nên nó chỉ khả thi khi hệ thống có một môi trường truyền thông nhanh và ổn định giữa các nút trong hệ thống. Thuật toán song song phân phối dữ liệu (data distribution) cũng dựa trên nền thuật toán Apriori [AS94]. Trong thuật toán này, N là số BXL, Pi là BXL thứ i, Di là phần dữ liệu được gắn với BXL Pi (CSDL D ban đầu được chia ra làm N phần, mỗi phần gắn với một BXL). Thuật toán bao gồm các bước sau: • (1) Bước 1: tương tự như trong thuật toán phân phối độ hỗ trợ • (2) Bước 2: với k > 1: o (2.1) Mỗi BXL Pi tạo tập các tập thuộc tính ứng cử viên Ck từ tập các tập thuộc tính phổ biến Lk-1. Nó không thao tác tất cả trên Ck mà chỉ giữ lại một phần của Ck được chia đều cho N BXL. Phần được giữ lại cho BXL Pi được xác định nhờ định danh tiến trình (process identification) mà không cân truyền thông giữ các tiến trình. Các Cki được chia thỏa mãn: Cki ∩ Ckj = ∅ (với mọi i ≠ j) và kik N i CC = =1 U . o (2.2) BXL Pi chỉ đếm độ hỗ trợ cho các tập mục ứng cử viên trong Cki bằng cách sử dụng dữ liệu cục bộ Di của nó và dữ liệu nhận được từ các BXL khác trong hệ thống. o (2.3) Sau khi đếm xong độ hỗ trợ, mỗi BXL Pi chọn ra tập những tập thuộc tính phổ biến cục bộ Lki từ Cki tương ứng. Nhớ rằng Lki ∩ Lkj = ∅ (với mọi i ≠ j) và kik N i LL = =1 U . o (2.4) Các BXL tiến hành trao đổi Lki cho nhau sao cho tất cả các BXL đều nhận được Lk để sinh Ck+1 cho lần lặp tiếp theo. Bước này cần sự đồng bộ hóa giữa các BXL. Sau khi nhận được bước Lk, mỗi BXL có thể độc lập quyết định ngừng làm việc hoặc tiếp tục thực hiện bước lặp tiếp theo. - 43 - Hình sau đây minh họa nguyên lý làm việc của thuật toán này. Hình 8 - Thuật toán phân phối dữ liệu trên 3 BXL 4.1.3 Thuật toán phân phối tập ứng cử viên Hạn chế của hai thuật toán trên (count & data distribution) ở chỗ do mọi giao dịch hoặc bản ghi trong CSDL đều có thể hỗ trợ một tập thuộc tính ứng cử viên nào đó nên các giao dịch hay bản ghi phải được đối sánh với tất cả các tập thuộc tính ứng cử viên. Điều này dẫn đến việc thuật toán phân phối độ hỗ trợ phải lưu giữ tập các tập ứng cử viên giống nhau trên mọi BXL và thuật toán phân phối dữ liệu phải gửi dữ liệu cho nhau trong quá trình cập nhật độ hỗ trợ. Hơn nữa, hai thuật toán này 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 BXL hoàn thành công việc sớm phải “chờ đợi” các BXL hoàn thành công việc muộn hơn. Nguyên nhân của vấn đề này là do hai thuật toán trên mới chia công việc cho các BXL một cách “công bằng” chứ chưa chia một cách vừa “công bằng” vừa “khôn ngoan”. Thuật toán phân phối tập ứng cử viên (candidate distribution) cố gắng chia tập ứng cử viên sao cho các BXL có thể độc lập làm việc và hạn chế tối đa công việc đồng bộ hóa. Bắt đầu một pha l nào đó (l được xác định dựa theo kinh nghiệm), - 44 - thuật toán này chia tập thuộc tính phổ biến Ll-1 cho các BXL sao cho mỗi BXL Pi có thể tạo ra tập ứng cử viên Cmi (m ≥ l) độc lập với các BXL khác (Cmi ∩ Cmj = ∅, ∀i ≠ j). Đồng thời, dữ liệu cũng được chia lại sao cho mỗi BXL Pi có thể cập nhật độ hỗ trợ cho các tập ứng cử viên trong Cmi độc lập với các BXL khác. Đúng thời gian đó, dữ liệu được phân chia lại sao cho mỗi BXL Pi có thể cập nhật độ hỗ trợ cho các tập thuộc tính ứng cử viên trong Cmi một cách độc lập với các BXL khác. Nhớ rằng, sự phân chia dữ liệu phụ thuộc rất nhiều vào bước phân chia tập ứng cử viên trước đó. Nếu phân chia tập ứng cử viên không “khéo léo” thì chúng ta không thể có một phân hoạch dữ liệu cho các BXL 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 BXL. Sau khi phân hoạch Lk-1, các BXL làm việc độc lập với nhau. Việc cập nhật độ hỗ trợ cho tập các ứng cử viên cục bộ không đòi hỏi các BXL phải truyền thông với nhau. Chỉ có một sự phụ thuộc duy nhất giữa các BXL 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 cử 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 BXL không cần phải đợi để nhận đầy đủ thông tin này từ các BXL khác. Các BXL cố gắng cắt tỉa được càng nhiều càng tốt nhờ vào những thông tin đến từ các BXL khác. Những thông tin đến muộn sẽ được sử dụng cho lần cắt tỉa tiếp theo. Thuật toán phân phối tập ứng cử viên bao gồm những bước sau: • (1) Bước 1 (k < l): sử dụng một trong hai thuật toán phân phối độ hỗ trợ hoặc phân phối dữ liệu. • (2) Bước 2 (k = l): o (2.1) Phân chia Lk-1 cho N BXL. Chúng ta sẽ xem xét cách phân chia ở phần sau. Quá trình phân chia này là giống hệt nhau và được thực hiện song song trên các BXL. o (2.2) Mỗi BXL Pi sẽ sử dụng Lik-1 để tạo ra Cki của nó. o (2.3) Pi sẽ cập nhật độ hỗ trợ cho các tập ứng cử viên trong Cki và CSDL sẽ được phân chia lại ngay sau đó. o (2.4) Sau đó, 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 BXL khác. Nó tạo ra N-1 bộ đệm nhận dị bộ để nhận các - 45 - Lkj từ các BXL khác. Những Lkj này cần thiết cho bước cắt tỉa các tập ứng cử viên trong Cik+1. o (2.5) Pi sinh ra Lki từ Cki và truyền thông lan truyền (broadcast) dị bộ tới N-1 bộ vi xử lý khác. • (3 Bước 3 (k > l): o (3.1) Mỗi BXL Pi thu thập tất cả những tập phổ biến từ các BXL khác. Thông tin về các tập phổ biến này sẽ được dùng để cắt tỉa. Các tập thuộc tính nhận được từ BXL j sẽ có độ dài k-1, nhỏ hơn k-1 (nếu là BXL chậm), hoặc lớn hơn k-1 (nếu là BXL nhanh). o (3.2) Pi tạo ra Cki dựa vào Lik-1. Một trường hợp có thể xảy ra là Pi không nhận được Ljk-1 từ các BXL khác, do đó Pi cần phải “cẩn thận” trong khoảng thời gian cắt tỉa. o (3.3) Pi thực hiện duyệt dữ liệu để cập nhật độ hỗ trợ cho các tập thuộc tính trong Cki. Sau đó nó tính toán Lki từ Cki và truyền dị bộ thông tin về Lki tới N-1 BXL còn lại trong hệ thống. Chiến lược phân chia dữ liệu: Chúng ta xem xét cách phân chia dữ liệu của thuật toán này thông qua một ví dụ đơn giản sau đây. Cho L3 = {ABC, ABD, ABE, ACD, ACE, BCD, BCE, BDE, CDE}. Tiếp đó L4 = {ABCD, ABCE, ABDE, ACDE, BCDE}, L5 = {ABCDE} và L6 = ∅. Chúng ta xét tập ε = {ABC, ABD, ABE} với các thành viên của nó có chung phân đầu là AB. Nhớ rằng, các tập thuộc tính ABCD, ABCE, ABDE và ABCDE cũng có chung tiền tố AB. Do đó, giả sử rằng các thuộc tính trong tập thuộc tính được sắp theo thứ tự từ vựng, chúng ta có thể phân chia các tập phổ biến trong Lk dựa vào tiền tố có độ dài k-1 đầu tiên của các tập, nhờ vậy các BXL có thể làm việc độc lập với nhau. Cài đặt thuật toán này trong thực tế phức tạp hơn rất nhiều bởi hai lý do. Lý do thứ nhất là một BXL có thể phải nhận các tập thuộc tính phổ biến được tính toán bởi các BXL khác cho bước cắt tỉa tiếp theo. Trong ví dụ trên, BXL được gán tập ứng cử viên ε phải biết BCDE có phải là tập phổ biến hay không mới quyết định được có cắt tỉa tập ABCDE hay không, nhưng tiền tố của BCDE là BC nên BCDE lại thuộc về một BXL khác. Lý do thứ hai là chúng ta phải tính toán cân bằng tải cho các BXL trong hệ thống. - 46 - 4.1.3 Thuật toán sinh luật song song Cho một tập phổ biến l, chương trình con sinh luật kết hợp sẽ sinh ra luật dạng a => (l – a), trong đó a là một tập con khác rỗng của l. Độ hỗ trợ của luật chính là độ hỗ trợ của tập phổ biến l (tức là s(l)), còn độ tin cậy của luật là tỷ số s(l)/s(a). Để sinh luật hiệu quả, chúng ta tiến hành duyệt các tập con của l có kích thước lớn trước tiên và sẽ tiếp tục xét các tập con nhỏ hơn khi luật vừa sinh thỏa mãn độ tin cậy tối thiểu (minconf). Ví dụ, l là tập phổ biến ABCD, nếu luật ABC => D không thỏa mãn độ tin cậy tối thiểu thì luật AB => CD cũng không thỏa mãn do độ hỗ trợ của AB luôn lớn hơn hoặc bằng ABC. Như vậy chúng ta không cần xét các luật mà vế trái là tập con của ABC vì chúng không thỏa mãn độ tin cậy tối thiểu. Thuật toán sinh luật tuần tự [AS94] thể hiện ý tưởng trên như sau: // Simple algorithm Forall frequent itemset lk, k > 1 do Call gen_rules(lk, lk); // The gen_rules generates all valid rules α => (l - α), for all α ⊂ am Procedure gen_rules(lk : frequent k-itemset, am : frequent m-itemset) Begin 1 A = {(m-1)-itemsets am-1 | am-1 ⊂ am} 2 Forall am-1 ∈ A do begin 3 conf = s(lk)/s(am-1); 4 if (conf ≥ minconf) then begin 5 output the rule am-1 => (lk – am-1); 6 if (m – 1 > 1) then 7 Call gen_rules(lk, am-1); 8 end 9 end End Bảng 15 - Thuật toán sinh luật kết hợp tuần tự Để sinh luật song song, chúng ta chia tập các tập thuộc tính phổ biến cho tất cả các BXL trong hệ thống. Mỗi BXL sinh luật trên các tập phổ biến được phân chia cho nó sử dụng thuật toán trên. Trong thuật toán sinh luật song song, để tính độ tin cậy của một luật, BXL có thể cần phải tham chiếu đến độ hỗ trợ của một tập phổ biến nằm trên một BXL khác. Vì lý do này, các BXL nên có thông tin về toàn bộ các tập phổ biến truớc khi thực hiện thuật toán sinh luật song song. - 47 - 4.1.4 Một số thuật toán khác Ngoài ba thuật toán nêu trên, các nhà nghiên cứu trong lĩnh vực này đã đề xuất thêm khá nhiều thuật toán khai phá luật kết hợp song song khác. Thuật toán phân phối dữ liệu thông minh (Intelligent Data Distribution Algorithm) [HKK97] được đề xuất dựa trên thuật toán phân phối dữ liệu với một bước cải tiến trong việc truyền dữ liệu giữa các BXL trong thời gian tính toán. Thay vì truyền dữ liệu giữa cặp BXL, các BXL trong thuật toán này được tổ chức thành một vòng logic và chúng tiến hành truyền dữ liệu theo vòng tròn này. Thuật toán MLFPT (Multiple Local Frequent Pattern Tree) [ZHL98] là thuật toán dựa trên FP-growth. Thuật toán này giảm được số lần duyệt qua CSDL, không cần tạo ra tập ứng cử viên và cân bằng tải giữa các BXL trong hệ thống. Thuật toán khai phá luật kết hợp song song do [ZPO01] đề xuất khác với các thuật toán khác ở chỗ nó làm việc trên hệ thống đa xử lý đối xứng (SMP, còn được gọi là shared-everything system) thay vì trên hệ song song phân tán không chia sẻ tài nguyên (shared-nothing system). 4.2 Thuật toán song song cho luật kết hợp mờ Các thuật toán song song được đề xuất trước đây thường phải đồng bộ hóa giữa các BXL bởi chúng hoặc phải truyền thông tin về tập ứng cử viên (thuật toán phân phối độ hỗ trợ, thuật toán phân phối ứng cử viên) hoặc phải truyền dữ liệu cho nhau (thuật toán phân phối dữ liệu). Do phải truyền thông và đồng bộ hóa trong suốt quá trình tính toán nên các thuật toán trên không được xem là song song lý tưởng. Với cách tiếp cận luật kết hợp mờ ở phần trên, tôi xin đề xuất một thuật toán song song gần lý tưởng để khai phá dạng luật này. Thuật toán “lý tưởng” ở chỗ các BXL trong hệ thống gần như không phải truyền thông với nhau trong suốt quá trình tính toán, chúng chỉ cần truyền thông với nhau một lần duy nhất khi thuật toán kết thúc để tập hợp các luật khai phá được từ các BXL trong hệ thống. 4.2.1 Hướng tiếp cận Theo bài toán khai phá luật kết hợp mờ tuần tự trong phần trên, mỗi thuộc tính iu trong I được gắn với một tập các tập mờ uiF như sau: - 48 - { }kiiii uuuu fffF ,...,, 21= Ví dụ, với CSDL trong bảng 8, chúng ta có: 1i F = FTuổi = {Tuổi_trẻ, Tuổi_trung_niên, Tuổi_già} (với k = 3) 2i F = FCholesterol = {Cholesterol_thấp, Cholesterol_cao} (với k = 2) Luật kết hợp mờ có dạng: X is A ⇒ Y is B. Trong đó: • X, Y ⊆ I là các tập thuộc tính. X = {x1, x2, …, xp}, Y = {y1, y2, …, yq}. xi ≠ xj (nếu i ≠ j) và yi ≠ yj (nếu i ≠ j). • A = {fx1, fx2, …, fxp}, B = {fy1, fy2, …, fyq} là tập các tập mờ tương ứng với các thuộc tính trong X và Y. fxi ∈ Fxi và fyj ∈ Fyj. Mỗi thuộc tính mờ không phải chỉ là tên thuộc tính mà là một cặp bao gồm [ + ]. Với I = {Tuổi, Cholesterol, Đường_trong_máu, Bệnh_tim} như trong bảng 8 thì tập các thuộc tính mờ sẽ là: IF = {[Tuổi, Tuổi_trẻ] (1), [Tuổi, Tuổi_trung_niên] (2), [Tuổi, Tuổi_già] (3), [Cholesterol, Cholesterol_thấp] (4), [Cholesterol, Cholesterol_cao] (5), [Đường_trong_máu, Đường_trong_máu_0] (6), [Đường_trong_máu, Đường_trong_máu_1] (7), [Bệnh_tim, Bệnh_tim_không] (8), [Bệnh_tim, Bệnh_tim_có] (9)} Bảng 16 - Tập các thuộc tính mờ sau khi mờ hóa từ CSDL ở bảng 8 Như vậy, sau khi mờ hóa IF sẽ bao gồm 9 thuộc tính mờ so với 4 thuộc tính ban đầu. Sau khi mờ hóa, giá trị các bản ghi tại các thuộc tính của CSDL ban đầu cũng được chuyển về khoảng [0, 1] nhờ các hàm thuộc tương ứng. Yêu cầu của bài toán là tìm tất cả các luật kết hợp mờ trên tập thuộc tính IF và tập các bản ghi TF. Như chúng ta đã biết, tập các thuộc tính mờ (cả vế trái lẫn vế phải) của luật kết hợp mờ không chứa bất kỳ hai thuộc tính mờ nào có cùng thuộc tính nguồn (thuộc tính không mờ trong I) ban đầu. Ví dụ, những luật “Tuổi_già AND Cholesterol_cao AND Tuổi_trẻ => Bệnh_tim_có” hoặc “Đường_trong_máu > - 49 - 120 AND Bệnh_tim_không => Bệnh_tim_có” là không hợp lệ bởi trong luật thứ nhất Tuổi_già và Tuổi_trẻ là hai thuộc tính mờ có cùng một nguồn gốc ban đầu là Tuổi, còn trong luật thứ hai, Bệnh_tim_không và Bệnh_tim_có cũng là hai thuộc tính mờ bắt nguồn từ thuộc tính Bệnh_tim ban đầu. Có hai lý do để khẳng định điều này. Thứ nhất, các thuộc tính mờ có cùng một nguồn gốc thường có giá trị mờ “loại trừ lẫn nhau” nên nếu chúng cùng xuất hiện trong một tập phổ biến thì độ hỗ trợ của tập phổ biến đó thường là nhỏ và có thể là rất nhỏ trong trường hợp chúng loại trừ nhau thật sự. Ví dụ, giá trị hàm thuộc đối với tập mờ Tuổi_già của một đối tượng nào đó mà cao thì giá trị hàm thuộc đối với tập mờ Tuổi_trẻ là nhỏ, vì không có người nào lại “vừa già vừa trẻ”. Lý do thứ hai là những luật kết hợp mờ như thế thường không được tự nhiên và có ít ý nghĩa. Như vậy, những luật kết hợp liên quan đến các thuộc tính có chung nguồn gốc là hoàn toàn độc lập với nhau, do đó chúng ta có thể tìm kiếm chúng bằng một thuật toán song song gần lý tưởng. Giả sử trong hệ thống của chúng ta có 6 BXL, chúng ta sẽ tìm cách chia IF thành sáu phần cho 6 BXL này như sau: Với BXL P1: IF1 = {[Tuổi, Tuổi_trẻ] (1), [Cholesterol, Cholesterol_thấp] (4), [Đường_trong_máu, Đường_trong_máu_0] (6), [Đường_trong_máu, Đường_trong_máu_1] (7), [Bệnh_tim, Bệnh_tim_không] (8), [Bệnh_tim, Bệnh_tim_có] (9)} = {1, 4, 6, 7, 8, 9} Với BXL P2: IF2 = {1, 5, 6, 7, 8, 9} Với BXL P3: IF3 = {2, 4, 6, 7, 8, 9} Với BXL P4: IF4 = {2, 5, 6, 7, 8, 9} Với BXL P5: IF5 = {3, 4, 6, 7, 8, 9} Với BXL P6: IF6 = {3, 5, 6, 7, 8, 9} Như vậy, chúng ta đã chia đều được 9 thuộc tính mờ cho 6 BXL, mỗi BXL được 6 thuộc tính. Hai thuộc tính được đưa ra để phân chia là Tuổi và Cholesterol. Đây là cách chia tối ưu bởi tích giữa số lượng tập mờ gắn với thuộc tính Tuổi (là - 50 - 3) và số lượng tập mờ gắn với thuộc tính Cholesterol (là 2) vừa bằng số lượng BXL trong hệ thống (là 6). Trong trường hợp chia tối ưu là chúng ta chia đều được tập các thuộc tính mờ cho tất cả các BXL trong hệ thống, tuy nhiên cũng có trường hợp chúng ta sử dụng một giải pháp chia “chấp nhận được” có nghĩa là có một vài BXL trong hệ thống được “nghỉ ngơi”. Sau đây tôi xin đề xuất một thuật toán chia tập thuộc tính mờ cho các BXL, thuật toán này dựa trên chiến lược quay lui (backtracking) và sẽ dừng ngay khi tìm được nghiệm đầu tiên. Trong trường hợp không tìm được nghiệm đúng, thuật toán sẽ trả về một nghiệm “chấp nhận được”. Cho CSDL D với I = {i1, i2, …, in} là tập n thuộc tính, T = {t1, t2, …, tm} là tập m bản ghi. Sau khi gắn các tập mờ cho các thuộc tính (còn gọi là quá trình mờ hóa), ta có CSDL DF với TF là tập các bản ghi mà các giá trị tại các trường thuộc đoạn [0, 1] (tính toán thông qua hàm thuộc của các tập mờ) và tập các thuộc tính mờ IF = {[i1, fi11], …, [i1, fi1k1], [i2, fi21], …, [i2, fi2k2], …, [in, fin1], …, [in, finkn]}. Trong đó, fiju là tập mờ thứ u được gắn với thuộc tính ij và kj là số lượng tập mờ gắn với thuộc tính ij. Ví dụ, với CSDL D ở bảng 8, chúng ta có I = {Tuổi, Cholesterol, Đường_trong_máu, Bệnh_tim} và sau khi mờ hóa thì DF có IF như ở bảng 16. Khi đó, k1 = 3, k2 = 2, k3 = 2, k4 = 2 tương ứng là số lượng tập mờ gắn với 4 thuộc tính trong I. Đặt tập FN = {k1} ∪ {k2} ∪ … ∪ {kn} = {s1, s2, …, sv} (v ≤ n vì có thể tồn tại những cặp ki và kj giống nhau) và N là số lượng BXL trong hệ thống, bài toán phân chia tập thuộc tính mờ cho các BXL như sau: tìm một tập con Fn (khác rỗng) của FN sao cho tích các phần tử trong Fn bằng số lượng BXL (là N) trong hệ thống. Trong trường hợp không tìm thấy nghiệm đúng thì thuật toán sẽ trả về một nghiệm “chấp nhận được” tức là tích của các phần tử trong Fn là xấp xỉ dưới của N. Bài toán này có thể giải quyết bằng chiến lược quay lui. Với ví dụ trên, FN = {3} ∪ {2} ∪ {2} ∪ {2} = {3, 2}. Thuật toán: BOOLEAN Subset(FN, N, Idx) 1 k = 1; 2 Idx[1] = 0; 3 S = 0; 4 while (k > 0) { - 51 - 5 Idx[k]++; 6 if (Idx[k] <= sizeof(FN)) { 7 if (S * FN[Idx[k]] <= N) { 8 if (S * FN[Idx[k]] == N) 9 return TRUE; 10 else { 11 S *= FN[Idx[k]]; 12 Idx[k + 1] = Idx[k]; 13 k++; 14 } 15 } 16 } else { 17 k--; 18 S /= FN[Idx[k]]; 19 } 20 } 21 return FALSE; FindSubset(FN, N, Idx, Fn) 1 for (n = N; n > 0; n--) 2 If (Subset(FN, n, Idx)) { 3 Fn = {FN[i] | i ∈ Idx} 4 return; 5 } Bảng 17 - Thuật toán hỗ trợ việc chia tập thuộc tính mờ cho các BXL Trong ví dụ trên, sau khi tính toán, Fn sẽ bằng {3, 2}. Thuật toán trên cũng đảm bảo việc tìm nghiệm “chấp nhận được” trong trường hợp không tìm được nghiệm đúng do trong hàm FindSubset chúng ta đã giảm dần n để tìm xấp xỉ dưới của N. 4.2.2 Thuật toán song song cho luật kết hợp mờ Đầu vào (inputs): CSDL D với tập thuộc tính I và tập bản ghi T. Số lượng BXL N. Độ hỗ trợ tối thiểu minsup và độ tin cậy tối thiểu minconf. Đầu ra (outputs): tập tất cả các luật kết hợp mờ. Thuật toán song song khai phá luật kết hợp mờ bao gồm các bước sau: • (1) Mờ hóa CSDL D để chuyển về DF với tập thuộc tính mờ IF và tập bản ghi TF. - 52 - • (2) Dùng thuật toán trong bảng 17 để phân chia tập IF cho N BXL trong hệ thống. • (3) Tùy theo việc phân chia tập thuộc tính mờ ở bước (2) để phân chia dữ liệu cho các BXL. Mỗi BXL Pi chỉ cần những trường liên quan đến tập thuộc tính mờ được phân cho nó. • (4) Mỗi BXL Pi sử dụng thuật toán tuần tự tìm luật kết hợp mờ trong bảng 10 để sinh luật. Đây là quá trình các BXL làm việc song song và độc lập với nhau. • (5) Tập hợp luật sinh được trên tất cả các BXL trong toàn hệ thống chính là đầu ra của thuật toán này. Thuật toán này không chỉ áp dụng được với luật kết hợp mờ mà còn áp dụng được với luật kết hợp với thuộc tính số và thuộc tính hạng mục (quantitive & categorical association rules). 4.3 Thử nghiệm và kết luận • Thử nghiệm với số thuộc tính tăng dần và thời gian tìm kiếm luật • Thử nghiệm với kích thước dữ liệu (số bản ghi tăng dần) và thời gian tìm kiếm luật • Thử nghiệm với số BXL tăng dần và thời gian tìm kiếm luật - 53 - Chương V. Kết luận Những vấn đề đã được giải quyết trong luận văn này Với cách tiếp cận dựa trên những đề xuất đã có trong lĩnh vực nghiên cứu về KPDL, bản luận văn này là một sự tổng hợp những nét chính trong khai phá dữ liệu nói chung và khai phá luật kết hợp nói riêng cùng với một vài đề xuất mới. Sau đây là những điểm chính mà luận văn đã tập trung giải quyết. Trong chương một, luận văn đã trình bày một cách tổng quan nhất về KPDL - cụ thể là định nghĩa về KPDL và những mục đích, động cơ thúc đẩy các nhà tin học chú trọng vào lĩnh vực nghiên cứu này. Phần này cũng trình bày sơ lược những kỹ thuật chính, những hướng tiếp cận được áp dụng để giải quyết các bài toán nhỏ hơn, cụ thể hơn như bài toán phân lớp, phân loại, .v.v. Nói tóm lại, chương này cung cấp cho người đọc một cái nhìn chung nhất về lĩnh vực nghiên cứu này. Chương hai phát biểu lại bài toán khai phá luật kết hợp co R Agrawal đề xuất năm 1993. Ngoài việc phát biểu các khái niệm một cách hình thức, chương này còn phác họa một số nhánh nghiên cứu cụ thể như luật kết hợp với thuộc tính trọng số, luật kết hợp mờ, khai phá song song luật kết hợp, .v.v. Mục tiêu của chương này là trình bày tất cả những khái niệm cơ bản trong bài toán khai phá luật kết hợp và những mở rộng của bài toán này. Dựa trên những đề xuất của [SA96] [MY98] [AG00] [KFW98], chương ba của luận văn đã trình bày sơ lược về luật kết hợp với thuộc tính trọng số cùng với những ưu, nhược điểm của nó. Tuy nhiên, mục tiêu chính của phần này là trình bày về luật kết hợp mờ, một dạng luật kết hợp mở rộng mềm dẻo hơn, gần gũi hơn của dạng luật kết hợp cơ bản trong chương hai. Những nội dung trình bày trong [AG00] [KFW98] quá vắn tắt và chưa nói lên hết được ý nghĩa của luật kết hợp mờ và đặc biết là mối quan hệ “tế nhị” giữa luật kết hợp mờ và phép kéo theo trong logic mờ. Luận văn lý giải được tại sao lại sử dụng hoặc phép lấy min hoặc phép tích đại số cho toán tử T-norm (T-chuẩn) trong công thức (3.6). Phần này cũng nêu lại thuật toán tìm luật kết hợp mờ trong [AG00] [KFW98] dựa trên thuật toán Apriori cùng với một vài sửa đổi nhỏ. Cuối chương này là một đề xuất về cách chuyển đổi từ luật kết hợp mờ sang luật kết hợp với thuộc tính trọng số. Đề - 54 - xuất này làm nổi bật ưu điểm của luật kết hợp mờ là khi cần thì nó cũng có thể được chuyển về dạng luật kết hợp thông thường một cách dễ dàng. Chương bốn của luận văn đề xuất một thuật toán song song mới áp dụng cho bài toán khai phá luật kết hợp mờ. Với thuật toán này, các bộ xử lý trong hệ thống giảm được tối đa công việc truyền thông và đồng bộ hóa trong suốt quá trình tính toán. Sở dĩ thuật toán hoạt động khá “lý tưởng” như vậy là nhờ cách chia tập thuộc tính ứng cử viên một cách vừa công bằng vừa khôn khéo. Công bằng ở chỗ tập ứng cử viên được chia đều cho các bộ xử lý, còn khôn khéo ở chỗ các tập ứng cử viên sau khi chia cho từng bộ xử lý là hoàn toàn độc lập với nhau. Nhược điểm của thuật toán này là chỉ áp dụng cho luật kết hợp với thuộc tính số và luật kết hợp mờ cũng như chỉ thực hiện trên các hệ thống song song không chia sẻ (shared- nothing systems). Trong quá trình thực hiện luận văn cũng như trong thời gian trước đó, tôi đã cố gắng tập trung nghiên cứu bài toán này cũng như đã tham khảo khá nhiều tài liệu liên quan. Tuy nhiên, do thời gian và trình độ có hạn nên không tránh khỏi những hạn chế và thiếu sót nhất định. Tôi thật sự mong muốn nhận được những góp ý cả về chuyên môn lẫn cách trình bày của luận văn từ bạn đọc. Công việc nghiên cứu trong tương lai Khai phá luật kết hợp là bài toán được khá nhiều nhà nghiên cứu quan tâm bởi nó được ứng dụng rộng rãi trong các lĩnh vực cũng như chứa đựng nhiều hướng mở rộng khác nhau. Ngay trong luận văn này, tôi cũng chỉ chọn một hướng nhỏ để nghiên cứu. Trong thời gian tới, chúng tôi sẽ mở rộng nghiên cứu của mình ra một số hướng sau: • Khai phá luật kết hợp mờ với thuộc tính được đánh trọng số. Mục đích của bài toán này là tìm cách gắn trọng số cho các thuộc tính để biểu thị mức độ quan trọng của chúng đối với luật. Ví dụ, khi khai phá luật kết hợp liên quan đến bệnh tim mạch thì những thông tin về huyết áp, lượng đường trong máu và cholesterol quan trọng hơn là thông tin về trọng lượng và tuổi tác, do đó chúng được gắn trọng số lớn hơn. Bài toán này thực ra không mới mẻ mà đã được một vài người đề xuất, tuy nhiên nó chưa được giải quyết thuấu đáo. - 55 - • Thuật toán khai phá dữ liệu song song ở trên chỉ áp dụng cho hệ thống song song không chia sẻ (shared-nothing systems). Trong thời gian tới, chúng tôi sẽ nghiên cứu để cài đặt nó trên hệ thống song song chia sẻ như hệ đa xử lý đối xứng chẳng hạn. • Mặc dù bài toán khai phá luật kết hợp là độc lập với cơ sở dữ liệu mà nó thao tác, tuy nhiên tôi mong muốn ứng dụng nó vào một cơ sở dữ liệu cụ thể để có thể tinh chỉnh và đưa ra được thông số tối ưu. - 56 - Tài liệu tham khảo Tài liệu tiếng Việt: [1]. [PDD99] Phan Đình Diệu. Lô Gích trong Các Hệ Tri Thức. Khoa Công nghệ, Đại học Quốc gia Hà Nội. Hà Nội - 1999. [2]. [DMT03] Đinh Mạnh Tường. Trí tuệ nhân tạo. Khoa Công nghệ, Đại học Quốc gia Hà Nội. Hà Nội – 2003. Tài liệu tiếng Anh: [3]. [AR95] Alan Rea. Data Mining – An Introduction. The Parallel Computer Centre, Nor of The Queen’s University of Belfast. [4]. [AG00] Attila Gyenesei. A Fuzzy Approach for Mining Quantitative Association Rules. Turku Centre for Computer Science, TUCS Technical Reports, No 336, March 2000. [5]. [AM95] Andreas Mueller. Fast Sequential and Parallel Algorithms for Association Rule Mining: A Comparison. Department of Computer Science, University of Maryland-College Park, MD 20742. [6]. [LHM99] Bing Liu, Wynne Hsu, and Yiming Ma. Mining Association Rules with Multiple Minimum Supports. In ACM SIGKDD International Conference on KDD & Data Mining (KDD-99), August 15-18, 1999, San Diego, CA, USA. [7]. [KV01] Boris Kovalerchuk and Evgenii Vityaev. Data Mining in Finance – Advances in Relational and Hybrid Methods. Kluwer Academic Publishers, Boston – Dordrecht - London. 2001. [8]. [MHT02] Bui Quang Minh, Phan Xuan Hieu, Ha Quang Thuy. Some Parallel Computing Experiments with PC-Cluster. In Proc. of Conference on IT of Faculty of Technology, VNUH. Hanoi 2002. [9]. [KFW98] Chan Man Kuok, Ada Fu, and Man Hon Wong. Mining Fuzzy Association Rules in Databases. Department of Computer Science and Engineering, The Chinese University of Hong Kong, Shatin, New Territories, Hong Kong. - 57 - [10]. [THH02] Do Van Thanh, Pham Tho Hoan, and Phan Xuan Hieu. Mining Association Rules with different supports. In Proc. of the National Conference on Information Technology, Nhatrang, Vietnam, May 2002. [11]. [BCJ01] Doug Burdick, Manuel Calimlim, and Johannes Gehrke. MAFIA: A Maximal Frequent Itemset Algorithm for Transactional Databases. Department of Computer Science, Cornell University. [12]. [HKK97] Eui-Hong (Sam) Han, George Karypis, and Vipin Kumar. Scalable Parallel Data Mining for Association Rules. Department of Computer Science, University of Minnesota, 4-192 EECS Building, 200 Union St. SE, Minneapolis, MN 55455, USA. [13]. [PHM01] Jian Pei, Jiawei Han, and Runying Mao. CLOSET: An Efficient Algorithm for Mining Frequent Closed Itemsets. Intelligent Database Systems Research Lab, School of Computing Science, Simon Fraser University, Burnaby, B.C., Canada. [14]. [HK02] Jiawei Han and Micheline Kamber. Data Mining: Concepts and Techniques. University of Illinois, Morgan Kaufmann Publishers 2002. [15]. [HF95] Jiawei Han and Yongjian Fu. Discovery of Multiple-Level Association Rules from Large Databases. In Proc. of the 21st International Conference on Very Large Dadabases, Zurich, Switzerland, Sep 1995. [16]. [LZDRS99] Jinyan Li, Xiuzhen Zhang, Guozhu Dong, Kotagiri Ramamohanarao, and Qun Sun. Efficient Mining of High Confidence Association Rules without Support Thresholds. Department of CSSE, The University of Melbourne, Parkville, Vic, 3052, Australia. [17]. [HG00] Jochen Hipp, Ulrich Guntzer, and Gholamreza Nakhaeizadeh. Algorithms for Association Rule Mining – A General Survey and Comparison. ACM SIGKDD, July 2000, Volume 2, Issue 1 – page 58 – 64. [18]. [PCY95] Jong Soo Park, Ming-Syan Chen, and Philip S. Yu. Efficient Parallel Data Mining for Association Rules. In Fourth International Conference on Information and Knowledge Management, Baltimore, Maryland, Nov 1995. - 58 - [19]. [PYC98] Jong Soon Park (Sungshin Women’s Univ, Seoul, Korea), Philip S. Yu (IBM T.J. Watson Res. Ctr.), and Ming-Syan Chen (National Taiwan Univ., Taipei, Taiwan). Mining Association Rules with Adjustable Accuracy. [20]. [MTV94] Heikki Mannila, Hannu Toivonen, and A. Inkeri Verkamo. Efficient Algorithms for Discovering Association Rules. In KDD-1994: AAAI Workshop on Knowledge Discovery in Databases, pages 181-192, Seattle, Washington, July 1994. [21]. [LAZ65] L. A. Zadeh. Fuzzy sets. Informat. Control, 338-353, 1965. [22]. [KMRTV94] M. Klemettinen, H. Mannila, P. Ronkainen, H. Toivonen, and A.I. Verkamo. Finding Interesting Rules from Large Sets of Discovered Association Rules. In Proc. 3rd International Conference on Information and Knowledge Management, pages 401-408, Gaithersburg, Maryland, November 1994. [23]. [MM00] Manoel Mendonca. Mining Software Engineering Data: A Survey. University of Maryland, Department of Computer Science, A. V. Williams Building #3225 College Park, MD 20742. 2000. [24]. [ZH99] Mohammed J. Zaki and Ching-Jui Hsiao. CHARM: An Efficient Algorithm for Closed Association Rules Mining. RPI Technical Report 99- 10, 1999. [25]. [ZO98] Mohammed J. Zaki and Mitsunori Ogihara. Theoretical Foundations of Association Rules. In 3rd ACM SIGMOD Workshop on Research Issues in Data Mining and Knowledge Discovery, June 1998. [26]. [ZPO01] Mohammed J. Zaki, Srinivasan Parthasarathy, and Mitsunori Ogihara. Parallel Data Mining for Association Rules on Shared-Memory Systems. In Knowledge and Information Systems, Vol. 3, Number 1, pages 1-29 February 2001. [27]. [MPIS95] MPI: A Message-Passing Interface Standard, Message Passing Interface Forum, June 12, 1995. [28]. [EMPI97] MPI-2: Extensions to the Message-Passing Interface, Message Passing Interface Forum, July 18, 1997 - 59 - [29]. [JDMPI97] MPI-2 Journal of Development, Message Passing Interface Forum, July 18, 1997. [30]. [PBTL99] Nicolas Pasquier, Yves Bastide, Rafik Taouil, and Lotfi Lakhal. Discovering Frequent Closed Itemsets for Association Rules. Laboratoire d’Informatique, Université Blaise Pascal – Clermont-Ferrand II, Complexe Scientifique des Cézeaux. [31]. [ZHL98] Osmar R. Zaiane, Mohammad El-Hajj, and Paul Lu. Fast Parallel Association Rule Mining Without Candidacy Generation. University of Alberta, Edmonton, Alberta, Canada. [32]. [DP01] Qin Ding and William Perrizo. Using Active Networks in Parallel Mining of Association Rules. Computer Science Department, North Dakota State University, Fargo ND 58105-5164. [33]. [AY98] R. Agrawal and P. Yu. Online Generation of Association Rules. In IEEE International Conference on Data Mining, February 1998. [34]. [AS96] Rakesh Agrawal and John Shafer. Parallel mining of association rules: Design, implementation and experience. Research Report RJ 10004, IBM Almaden Research Center, San Jose, California, February 1996. [35]. [AS94] Rakesh Agrawal and Ramakrishnan Srikant. Fast Algorithms for Mining Association Rules. In Proc. of the 20th International Conference on Very Large Databases, Santiago, Chile, Sep 1994. [36]. [AIS93] Rakesh Agrawal, Tomasz Imielinski, and Arun Swami. Mining association rules between sets of items in large databases. In Proc. of theACM SIGMOD Conference on Management of Data, pages 207-216, Washington, D.C., May 1993. [37]. [SA95] Ramakrishnan Srikant and Rekesh Agrawal. Mining Generalized Association Rules. In Proc. of the 21st International Conference on Very Large Databases, Zurich, Switzerland. Sep 1995. [38]. [SA96] Ramakrishnan Srikant and Rakesh Agrawal. Mining Quantitative Association Rules in Large Relational Tables. IBM Almaden Research Center, San Jose, CA 95120. - 60 - [39]. [MY98] R. J. Miller and Y. Yang. Association Rules over Interval Data. Department of Computer & Information Science, Ohio State University, USA. [40]. [PMPIP] RS/6000 SP: Practical MPI Programming, Yukiya Aoyama & Jun Nakano, International Technical Support Organization, www.redbooks.ibm.com [41]. [MS00] T. Murai and Y. Sato. Association Rules from a Point of View of Modal Logic and Rough Sets. In proceeding of the forth Asian Fuzzy Symposium, May 31, June 3, 2000, Tsukuba, Japan, pp, 427-432. [42]. [HHMT02] Tran Vu Ha, Phan Xuan Hieu, Bui Quang Minh, and Ha Quang Thuy. A Model for Parallel Association Rules Mining from The Point of View of Rough Set. In Proc. of International Conference on East-Asian Language Processing and Internet Information Technology, Hanoi, Vietnam, January 2002. [43]. [FSSU96] Usama M. Fayyad, Gregory Piatetsky-Shapiro, Padhraic Smyth, and Ramasamy Uthurusamy. Advances in Knowledge Discovery and Data Mining. AAAI Press / The MIT Press 1996. [44]. [WYY01] Wei Wang, Jiong Yang, and Philip S. Yu. Efficient Mining of Weighted Association Rules (WAR). IBM Watson Research Center. [45]. [WMPPP] Writing Message-Passing Parallel Programs with MPI, Neil MacDonald, Elspeth Minty, Tim Harding, Simon Brown, Edinburgh Parallel Computing Centre, The University of Edinburgh. [46]. [ZKM01] Zijian Zheng, Ron Kohavi, and Llew Mason. Real World Performance of Association Rule Algorithms. Blue Martini Software, 2600 Campus Drive, San Mateo, CA 94403, USA. [47]. [ZHJ91] Zimmermann H. J. Fuzzy Set Theory and Its Applications. Kluwer Academic Publishers, 1991.

Các file đính kèm theo tài liệu này:

  • pdfMSc03_Phan_Xuan_Hieu_Thesis.pdf
Tài liệu liên quan