Hiệu quả cao của dFIN đạt được bằng ba kỹ thuật: 1 các tập mục được biểu diễn bằng DiffNodesets, đây là một cấu trúc rất cô đọng và nhỏ hơn nhiều, cóthể hỗ trợ rất nhiều cho quá trình kh
MÔ TẢ VẤN ĐỀ
Khai thác tập mục thường xuyên, lần đầu tiên được đề xuất bởi Agrawal et al, là một nhiệm vụ cơ bản và thiết yếu trong lĩnh vực khai thác dữ liệu vì nó đã được sử dụng rộng rãi trong nhiều ứng dụng khai thác dữ liệu quan trọng Các ứng dụng này bao gồm việc khám phá các quy tắc kết hợp, quy tắc tuần tự, mối tương quan, tập, v.v
Kể từ đề xuất đầu tiên về khai thác tập mục thường xuyên, hàng trăm thuật toán đã được đề xuất trên nhiều loại tiện ích mở rộng và ứng dụng khác nhau, từ các phương pháp khai thác dữ liệu có thể mở rộng, cho đến xử lý nhiều loại dữ liệu, các tác vụ khai thác mở rộng khác nhau và nhiều ứng dụng mới
Dựa trên DiffNodeset, chúng tôi thiết kế dFIN, một thuật toán hiệu quả để khai thác các tập mục phổ biến Hiệu quả cao của dFIN đạt được bằng ba kỹ thuật:
(1) các tập mục được biểu diễn bằng DiffNodesets, đây là một cấu trúc rất cô đọng và nhỏ hơn nhiều, có thể hỗ trợ rất nhiều cho quá trình khai thác các tập mục thường xuyên,
(2) nó sử dụng chiến lược tìm kiếm kết hợp để tìm các tập phổ biến trong cây liệt kê tập hợp và
(3) nó liệt kê trực tiếp các tập phổ biến mà không cần tạo ứng cử viên trong một số trường hợp
Một nghiên cứu hiệu suất sâu rộng đã được thực hiện để so sánh hiệu suất của dFIN với FIN, PrePost, FP-growth* và Eclat_g, những thuật toán khai thác hàng đầu hiện nay Nghiên cứu thử nghiệm sâu rộng của chúng tôi cho thấy dFIN hiệu quả và luôn chạy nhanh hơn các thuật toán khác.
DFIN là viết tắt của "Distributed Frequent Itemset Mining" (khai phá tập hợp mục phổ biến phân tán) DFIN là một thuật toán được sử dụng trong khai phá dữ liệu để tìm các tập hợp mục phổ biến trong các hệ thống phân tán
Thuật toán DFIN được thiết kế để xử lý dữ liệu lớn và phân tán trên nhiều nút xử lý Nó sử dụng phân chia dữ liệu và tính toán song song để tìm kiếm các tập hợp mục phổ biến mà xuất hiện với tần suất cao trong toàn bộ tập dữ liệu.
LƯU Ý :Minsup tỉ lệ nghịch đối với Frquent itemsets,với Minsup càng nhỏ thì Frequent itemsets sẽ cho ra càng nhiều vậy nên đối với người dùng như chúng ta,ta sẽ ưu tiên đặt minsup cao nhằm giảm thiểu Frquent itemsets giúp tăng tốc độ tìm kiếm và giảm thiểu bộ nhớ cần thiết để tìm kiếm Frquent itemsets Nhưng việc tăng minsup là một phương pháp giải quyết không mang tính hiệu quả cao vậy nên các thuật toán đã ra đời
DFin có thể áp dụng các kỹ thuật tối ưu hóa sau để cải thiện hiệu suất:
Cắt tỉa (Pruning): Kỹ thuật cắt tỉa giúp loại bỏ các itemset không cần thiết và giảm số lượng phép tính cần thực hiện DFin có thể sử dụng các phương pháp như cắt tỉa dựa trên ngưỡng hỗ trợ (support threshold) để loại bỏ các itemset có tần suất xuất hiện thấp hơn ngưỡng đã định trước Điều này giúp giảm độ phức tạp tính toán và tăng hiệu suất của thuật toán
Cải tiến quá trình tạo frequent itemset: DFin có thể sử dụng các cải tiến trong quá trình tạo frequent itemset từ dữ liệu giao dịch Một trong những cải tiến phổ biến là sử dụng cây FP-growth để thay thế quá trình tạo frequent itemset theo thuật toán Apriori Cây FP-growth giúp tạo frequent itemset một cách nhanh chóng và hiệu quả bằng cách sử dụng cấu trúc cây để lưu trữ thông tin về các itemset và tần suất của chúng.
BÀI TOÁN
nodesets-diffnodesets
-Định nghĩa 2 Gọi là tập có thứ tự các mục thường xuyên được sắp xếp theo thứ tự hỗ trợ giảm dần Đối với hai mục bất kỳ và , chúng ta biểu thị khi và chỉ khi đứng trước trong
Ví dụ: xét ví dụ 1, xét table 1: Ta có: c =>L1{a,b,c,e}.
-Quy ước 1 Một tập mục được coi là có thứ tự và tất cả các mục trong tập mục đó đều được sắp xếp theo thứ tự Ví dụ: tập mục bao g
-Định nghĩa 3 ( PP CODE) Cho một nút tron order, N.post-order, count) mã PP của
Ví dụ: (N.pre-order, N.post-order, count)
-Định nghĩa 4 Nodesets of items ( ) Cho một cây PPC, Tập nút của mục thường xuyên là một chuỗi có thứ tự của tất cả các mã PP của các nút đăng ký trong cây PPC, trong đó các mã PP được sắp xếp theo thứ tự tăng dần trước.
-Thuộc tính 3 Cho một mục, giả sử là Nodeset của nó Chúng tôi có cái đó và
Bằng chứng Theo Định nghĩa 4, ta có Đặt và là hai chỉ mục Theo Tính chất 2, ta có từ Do đó, Tính chất 3 đúng.
-Định nghĩa 5 (Nodesets of 2-itemsets) Cho các mục và , Tập nút của 2itemset , ký hiệu là Nodesets , được định nghĩa như sau:
Nodesets pre-order, count Nodesets Nodesets , nút tương ứng là tổ tiên của nút tương ứng với )} trong đó Nodesets và Nodesets lần lượt là Nodesets của mục
Nút xử lý 1 chứa mục "a" và mục “b”
=> thuộc vào tập nút Nodesets _i1i2.
Nút xử lý 2 chứa mục "a" và không chứa mục "b"
=> thuộc vào tập nút Nodesets _i1i2.
Nút xử lý 3 không chứa cả mục "a" và "B".
=> thuộc vào tập nút Nodesets _i1i2.
Nút xử lý 4 chứa mục "b" và không chứa mục "a"
=> không thuộc vào tập nút Nodesets _i1i2.
-Định nghĩa 6 (Nodesets của -itemset): Cho là một tập mục ( và ) Chúng tôi biểu thị Nodeset Nodeset và Nodeset Nodeset
Nodeset của , ký hiệu là Nodeset , được định nghĩa là giao điểm của Nodeset và Nodeset
Tức là Nodeset Nodeset Nodeset
-Định lý 1 Cho tập mục , ta ký hiệu Tập nút của nó là , độ hỗ trợ của , , bằng E.đếm.
-Định lý 2 Cho 2-itemset , chúng ta ký hiệu DiffNodeset của nó là Độ hỗ trợ của , , bằng với độ hỗ trợ count.
-Định nghĩa 7 (DiffNodesets of 2-itemsets) Cho item và , chúng ta biểu thị Tập nút của chúng lần lượt là Tập nút và Tập nút DiffNodeset của 2 -itemset , ký hiệu là
DiffNodesets , được định nghĩa như sau: trong đó Nodesets i và Nodesets i lần lượt là Nodesets của mục Ngoài ra, các phần tử 1 2 trong DiffNodesets được sắp xếp theo thứ tự tăng dần trước.
Nodeset i1 = {a, b, c} (các nút có nhãn i1)
Nodeset i2 = {A,d} (các nút có nhãn i2)
Nodeset b,c không có nút tổ tiên trong Tập nút i2
Do đó DiffNodesets i1i2 = {(b.pre-order, b.count), (c.pre-order, c.count)}
-Định nghĩa 8:(DiffNodesets của -itemsets) Cho là một tập mục ( và Chúng tôi biểu thị
Nodeset là Nodeset và Nodeset là Nodeset DiffNodeset của , ký hiệu là DiffNodeset , được định nghĩa như sau:
Ví dụ: các Nodeset của và và tương ứng Theo Định nghĩa 8, DiffNodeset của cd ce cde
Đ ỀỀ XUẤẤT THU T TOÁN Ậ
Thủ tục Xây dựng_Pattern_Tree (Nd, Cad_set, FIS_parent)
4 Với mỗi Cad_set Do
6 last_item ;// last_item là tập hợp con bằng cách xóa mục cuối cùng khỏi
11 Nd.equivalent_items Nd.equivalent_items ;
16 Nd.childnodes Nd.childnodes {Ndi};
17 Next_Cad_ set Next_Cad_ set {i};
22 tập hợp tất cả các tập con của equivalent_items;
27 FIT_Nd và FIS_parent ;
33 Đang xây dựng_Pattern_Tree ;
Nd là nút gốc của cây
Cad_set là tập hợp các mục tiêu lựa chọn
FIS_parent là tập FIS (frequent itemsets) của nút cha của Nd
Gán Nd.equivalent_items và Nd.childnodes là tập rỗng (bước 1 và 2).
Gán Next_Cad_set là tập rỗng (bước 3)
Duyệt qua từng phần tử i trong Cad_set (bước 4): Gán X bằng Nd.itemset (ban đầu Nd.itemset có thể là một tập rỗng)
(bước 5) Gán Y bằng tập hợp (X loại bỏ phần tử cuối cùng) kết hợp với phần tử i mới (bước 6)
Gán P bằng X kết hợp với phần tử i (bước 7).
Tính P.DiffNodeset bằng hiệu của tập X.DiffNodeset chia cho tập Y.DiffNodeset (bước 8)
Tính P.support bằng X.support trừ đi tổng của các phần tử E trong P.DiffNodeset (bước 9)
Nếu P.support bằng X.support (bước 10), tức là không có sự thay đổi trong hỗ trợ, thì thêm phần tử i vào tập Nd.equivalent_items (bước 11)
Nếu P.support lớn hơn hoặc bằng |DB| * ξ (bước 12), tức là hỗ trợ đủ lớn, thì tạo một nút mới
Ndi (bước 13) và gán nhãn Ndi.label bằng i (bước 14), tập mục Ndi.itemset bằng P (bước 15), sau đó thêm Ndi vào tập Nd.childnodes (bước 16) và thêm i vào tập Next_Cad_set (bước 17)
Sau khi hoàn thành vòng lặp, nếu tập Nd.equivalent_items khác rỗng (bước 21): Tạo tập SS là tập con của Nd.equivalent_items (bước 22).
Tạo tập PSet chứa tất cả các tập A mà A là tổng hợp của Nd.label và một tập con của SS (bước
Nếu FIS_parent là tập rỗng (bước 24), tức là Nd là nút gốc, gán FIT_Nd bằng PSet (bước 25)
Ngược lại, gán FIT_Nd bằng tập hợp các tập P' mà P' là tổng hợp của P1 và P2, với điều kiện P1 khác rỗng và thuộc PSet, và P2 khác rỗng và thuộc FIS_parent (bước 27)
Sau đó, thêm FIT_Nd vào tập F (bước 29)
Nếu tập Nd.childnodes khác rỗng (bước 31), đệ quy gọi thuật toán Constructing_Pattern_Tree với mỗi nút con Ndi của Nd (bước 33)
Nếu tập Nd.childnodes rỗng, kết thúc thuật toán và trả về (bước 35).
1.1 DFin (Distributed Frequent Itemset Mining) là một thuật toán được sử dụng để khai phá và tìm kiếm các itemset phổ biến từ dữ liệu phân tán Với tập dữ liệu lớn và phân tán trên nhiều nút xử lý, DFin cho phép khám phá các mẫu dữ liệu phổ biến một cách hiệu quả và song song trên các nút khác nhau.
DFin algorithm sẽ phân tán dữ liệu vào các nút xử lý khác nhau và thực hiện khai phá frequent itemset trên mỗi nút
Mỗi nút sẽ tính toán support local (support trong phạm vi của nút đó) của các item và gửi kết quả về nút gốc để tính toán support global (support trên toàn bộ tập dữ liệu)
Dựa trên support global, DFin algorithm sẽ xác định frequent itemset và trả về kết quả.
- cơ sở dữ liệu giao dịch (transactional database)
Tất cả các frequent itemset
Bước 1: quét cơ sở dữ liệu và tìm tất cả các support của itemset có kích thước là 1
Bước 2:Tính toán support global của các 1-itemset
Như ta có thể thấy {f},{g},{h},{i} =1 =1/5=0,2
đây là các infrequent itemset
Bước 3:Ta dùng những frequent itemset có kích thước là 1 và kết hợp lại để cho ra những itemsets có kích thước là 2
Bước 4:Tính toán support global của các 2-itemset Ở hình trên ta có thể thấy{ae},{cd},{ce},{de}=1/5=0,2