Thuật toán song song khai thác tập sinh tối thiểu của tập phổ biến đóng

6 30 0
Thuật toán song song khai thác tập sinh tối thiểu của tập phổ biến đóng

Đang tải... (xem toàn văn)

Thông tin tài liệu

Trong bài viết này, chúng tôi đề xuất thuật toán song song MCP-mGCFI khai thác nhanh tập sinh tối thiểu của tập phổ biến đóng trên bộ xử lý đa nhân. Thuật toán đề xuất dễ dàng mở rộng trên nhiều hệ thống tính toán phân tán như Hadoop, Spark. Kết quả thực nghiệm trên bộ dữ liệu thực của UCI và bộ dữ liệu giả lập của trung tâm nghiên cứu IBM Almaden, cho thấy thuật toán đề xuất hiệu quả.

Thuật Toán Song Song Khai Thác Tập Sinh Tối Thiểu Tập Phổ Biến Đóng Phan Thành Huấn1,2 Bộ môn Tin học, Trường Đại học Khoa học Xã hội Nhân văn, ĐHQG.HCM-VN Khoa Toán – Tin học, Trường Đại học Khoa học Tự nhiên, ĐHQG.HCM-VN Email: huanphan@hcmussh.edu.vn Tóm tắt - Trong khai thác liệu, khai thác luật kết hợp kỹ thuật quan trọng nghiên cứu nhiều Đặc biệt kỹ thuật khai thác luật kết hợp xác khơng dư thừa, số tác giả đề xuất khai thác luật kết hợp từ tập sinh tối thiểu tập phổ biến đóng Trong viết này, chúng tơi đề xuất thuật tốn song song MCP-mGCFI khai thác nhanh tập sinh tối thiểu tập phổ biến đóng xử lý đa nhân Thuật toán đề xuất dễ dàng mở rộng nhiều hệ thống tính tốn phân tán Hadoop, Spark Kết thực nghiệm liệu thực UCI liệu giả lập trung tâm nghiên cứu IBM Almaden, cho thấy thuật tốn đề xuất hiệu Từ khóa - Bộ xử lý đa nhân, luật kết hợp, tập sinh tối thiểu, tập phổ biến đóng, thuật tốn song song MCP-mGCFI I GIỚI THIỆU Năm 1993, R.Agrawal đề xuất mơ hình khai thác luật kết hợp từ liệu giao dịch dạng nhị phân theo hai giai đoạn [1]: sinh tập phổ biến (Frequent Itemset - FI) sinh luật tin cậy kết hợp từ tập phổ biến Khi đó, số lượng tập mục phổ biến sinh lớn chiếm nhiều thời gian Một số tác giả giới đề xuất thuật tốn sinh tập phổ biến đóng (Closed Frequent Itemset - CFI) [2-3], tập không dư thừa có kích thước nhỏ FI nhiều lần (CFI ⊆ FI) Tuy nhiên, để sinh luật kết hợp xác khơng dư thừa, số tác giả đề xuất khai thác tập sinh tối thiểu tập phổ biến đóng (minimal Generators Closed Frequent Itemset – mGCFI) [4-9] thuật toán SSMG[4], Zart[5], MG-CHARM[6], DefMe[9] Các thuật tốn tựa Apriori, tìm kiếm theo chiều sâu sử dụng cấu trúc SETree, IT-Tree – thuật toán tốn nhiều nhớ đọc liệu nhiều lần; không hiệu loại liệu có mật độ dày thưa Trong viết này, chúng tơi đề xuất thuật tốn khai thác song song tập sinh tối thiểu Thuật toán đề xuất theo hướng tiếp cận song song liệu chức năng, thuật toán liên quan viết: - Xây dựng mảng Index_COOC chứa itemset đồng xuất itemset xuất giao dịch item hạt nhân; - Dựa Index_COOC xây dựng nLOOC-Tree; - Thuật toán SEQ-mGCFI khai thác tập sinh tối thiểu tập phổ biến đóng dựa nLOOC-Tree; - Thuật toán song song MCP-mGCFI khai thác nhanh tập sinh tối thiểu tập phổ biến đóng BXLĐN Trong phần 2, báo trình bày khái niệm tập phổ biến, tập phổ biến đóng tập sinh tối thiểu Phần 3, xây dựng thuật toán xác định mảng chứa itemset xuất giao dịch item hạt nhân, thuật toán sinh nLOOC-Tree thuật toán SEQ-mGCFI khai thác tập sinh tối thiểu Phần 4, nhóm tác giả dựa thuật toán Phần để xây dựng thuật toán song song MCP-mGCFI khai thác hiệu xử lý đa nhân Kết thực nghiệm trình bày phần kết luận phần II CÁC KHÁI NIỆM CƠ BẢN A Tập phổ biến Cho I = {i1, i2, , im} tập gồm m mục hàng, mục hàng gọi item Tập item X ={i1, i2, , ik}, ∀ij ∈ I (1≤ j ≤ k) gọi itemset, itemset có k item gọi k-itemset Ɗ liệu giao dịch, gồm n ghi gọi tập giao dịch T = {t1, t2, , tn}, giao dịch tk ={ik1, ik2, , ikm}, ikj ∈ I (1≤ kj ≤ m) Định nghĩa 1: Độ phổ biến (support) itemset X ⊆ I, ký hiệu sup(X), số giao dịch Ɗ có chứa X Định nghĩa 2: Cho X ⊆ I, X gọi itemset phổ biến sup(X) ≥ minsup, với minsup ngưỡng phổ biến tối thiểu Cho liệu giao dịch Ɗ Bảng Bảng Dữ liệu giao dịch Ɗ cho ví dụ Mã giao dịch t1 A C t2 t3 A C t4 t5 t6 A A t7 t8 A A B t9 t10 A A B Tập item E F G E C C C C C C D H F G G E E E D E E F G G Dữ liệu Bảng 1, có items I ={A, B, C, D, E, F, G, H} 10 giao dịch T = {t1, t2, t3, t4, t5, t6, t7, t8, t9, t10} Định nghĩa 3: Cho X ⊆ I, X gọi itemset phổ biến đóng X itemset phổ biến khơng có tập cha độ phổ biến Tập hợp chứa itemset phổ biến đóng gọi tập phổ biến đóng, ký hiệu CFI Định nghĩa 4: Cho X ⊆ I, X ∈CFI, tất itemset thực X có độ phổ biến với X gọi itemset sinh itemset phổ biến đóng X Tập hợp chứa itemset sinh itemset phổ biến đóng gọi tập sinh tập phổ biến đóng, ký hiệu GCFI 176 Định nghĩa 5: Cho X ⊆ I, ∀ X ∈ mGCFI ⊆ GCFI, khơng tồn tập X có độ phổ biến với X Ta nói mGCFI tập chứa itemset sinh tối thiểu itemset phổ biến đóng Bảng Tập CFI, GCFI mGCFI Ɗ với minsup = CFI #CFI=6 k-itemset E AC FAC, GAC, EAC GEAC GCFI #GCFI=13 F, G, A, C FA, FC, GE, GA, GC, EA, EC GEA, GEC mGCFI #mGCFI=7 F, G, A,C GE, EA, EC Trong Bảng 2, cho thấy tập phổ biến đóng CFI, tập sinh GCFI tập sinh tối thiểu mGCFI tập phổ biến đóng chứa k-itemset có số lượng CFI = 6, GCFI =13, mGCFI = 7, tỷ suất mGCFI GCFI = 13 × 100% = 54% Qua đó, ta dễ dàng thấy mGCFI ⊆ GCFI B Tổ chức lưu trữ liệu giao dịch Lưu trữ liệu giao dịch dạng bit cấu trúc liệu hiệu [10] Chuyển liệu giao dịch thành ma trận nhị phân BiM, dòng tương ứng với giao dịch cột tương ứng với item Nếu item thứ ik xuất giao dịch tj bit thứ i dòng tj BiM mang giá trị 1, ngược lại mang giá trị III CÁC THUẬT TOÁN ĐỀ XUẤT A Tập chiếu items xuất giao dịch với item hạt nhân có thứ tự Tập chiếu item ik liệu giao dịch Ɗ: π (ik)={t∈ Ɗ│ik ∈t} tập giao dịch có chứa item ik sup(ik) = |π ( ik)| (1) Tập chiếu itemset X={i1, i2, , ik}, ∀ij ∈ I (1 ≤ j ≤ k): π(X) = {π(i1) ∩ π(i2)… π(ik)} sup(X) = |π(X)| (2) Ví dụ 1: Theo Bảng 1, có π (A) = {t1, t2, t4, t5, t7, t8, t9, t10} π (B) = {t7, t9} Khi đó, π (AB) = π (A)∩π (B)= {t1, t2, t4, t5, t7, t8, t9, 10}∩{t7, t9} = {t7, t9}, π (B) ⊆ π (A) π (AB) ⊆ π (A) Để tránh trùng lặp không gian sinh, đưa Định nghĩa 7– item có thứ tự theo độ phổ biến: Định nghĩa 6: (Rút gọn khơng gian tìm kiếm) Cho ik ∈ I (i1 ≺ i2 ≺ … ≺ im) thứ tự theo độ phổ biến, ta gọi ik item hạt nhân Tập Xlexcooc ⊆ I gọi đồng xuất có thứ tự với item ik: Xlexcooc tập item xuất ik π ( ik) ≡ π ( ik ∪xlexcooc) , ∀ Xlexcooc∈ Ƥ≥1(Xlexcooc) Ký hiệu, Xlexcooc = lexcooc(ik) Định nghĩa 7: Cho ik ∈ I (i1 ≺ i2 ≺ … ≺ im) thứ tự theo độ phổ biến, ta gọi ik item hạt nhân Tập Ylexlooc ⊆ I chứa item xuất có thứ tự với ik giao dịch, không đồng xuất hiện: 1≤|π ( ik∪ylexlooc) | < |π ( ik)| , ∀ ylexlooc∈ Ƥ≥1(Ylexlooc) Ký hiệu, Ylexlooc = lexlooc(ik) Ví dụ 2: Xem item G item hạt nhân, ta xác định item xuất với item B giao dịch looc(G) = {B, D, E, F} có π (G) = {t2, t4, t5, t9, t10} π (GB) = {t9}, π (GE) = {t5, t9, t10} Trong phần này, chúng tơi trình bày thuật tốn sinh item đồng xuất xuất giao dịch với item hạt nhân, lưu trữ vào mảng Index_COOC Mỗi phần tử Index_COOC gồm có thành phần thông tin: - Index_COOC[k].item: item hạt nhân thứ k; - Index_COOC[k].sup:độ phổ biến item hạt nhân thứ k; - Index_COOC[k].cooc: item đồng xuất item hạt nhân thứ k dạng bit; - Index_COOC[k].looc: item xuất item hạt nhân thứ k giao dịch dạng bit; Mã giả thuật toán Xây dựng Index_COOC Đầu vào: Dữ liệu giao dịch Ɗ Đầu ra: Ma trận BiM, mảng Index_COOC 10 11 12 13 14 15 16 Với phần tử k mảng Index_COOC: Index_COOC[k].item = ik Index_COOC[k].sup = Index_COOC[k].cooc= 2m - Index_COOC[k].looc= Với giao dịch ti thực hiện: Lưu giao dịch ti vào ma trận BiM Với item k có giao dịch ti thực hiện: Index_COOC[k].cooc &= vectorbit(ti) Index_COOC[k].looc |= vectorbit(ti) Index_COOC[k].sup + + Sắp xếp mảng Index_COOC tăng dần theo sup Với phần tử k mảng Index_COOC: Index_COOC[k].cooc= lexcooc(ik) Index_COOC[k].looc= lexlooc(ik) Trả mảng Index_COOC, ma trận BiM Minh họa thuật tốn 1: thực từ dịng đến 11 Khởi tạo mảng Index_COOC: (thành phần cooc looc biểu diễn dạng bit) số item m = item sup cooc looc A B C D E F G H 11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 G H Duyệt giao dịch từ t1 đến t10: Đọc t1: {A, C, E, F} có dạng bit 10101100 A B C D E F item 0 1 1 sup ) cooc looc 10101100 11111111 10101100 11111111 10101100 10101100 11111111 11111111 10101100 00000000 10101100 00000000 10101100 10101100 00000000 00000000 Duyệt … đến t10: {A, C, E, F, G} có dạng bit 10101110 item sup cooc looc A B C D E F G H 10100000 11101000 10100000 10110000 00001000 10100100 10100010 00001001 11111110 11101010 11111110 10110110 11101111 10111110 11111110 00001001 Dòng 10, xếp theo độ phổ biến item, ta có Index_COOC sau: item sup cooc looc H B E D A, C, E A, C Ø G F, G F G E A C A, C A, C Ø C A D, E, G B, D, E, F A, B, C, F, G, H B, D, E, F, G B, D, E, F, G Thực rút gọn dịng 13, 14 15, ta có Bảng sau: Bảng Index_COOC có thứ tự theo độ phổ biến item item sup cooc looc H E Ø B A, C, E G D A, C F, G F A, C G, E G A, C E E Ø A, C A C Ø C Ø Ø Bảng 3, minh họa kết trả mảng Index_COOC từ thuật tốn Mảng Index_COOC có thành phần cooc looc biểu diễn theo item B Thuật toán sinh nLOOC-Tree Từ Index_COOC xây dựng chứa mẫu xuất giao dịch với item hạt nhân Mỗi có 177 nút gốc item hạt nhân nút items xuất giao dịch với item hạt nhân Mỗi nút có thành phần: - nLOOC_Tree[k].item: item xuất với item hạt nhân (nút gốc); - nLOOC_Tree[k].sup: độ phổ biến item xuất với item hạt nhân; Mã giả thuật toán 2: Xây dựng nLOOC-Tree Đầu vào: Ma trận BiM, Mảng Index_COOC Đầu ra: Danh sách nLOOC-Tree Với phần tử k mảng Index_COOC: nLOOC_Tree[k].item = Index_COOC[k].item nLOOC_Tree[k].sup = Index_COOC[k].sup Với item ik ∈ giao dịch tℓ : Với item ij ∈ Index_COOC[k].looc: Nếu ij ∉ nút nút gốc nLOOC-Tree[k] Thêm nút ij vào nút gốc nLOOC-Tree[k] Ngược lại Thêm nút ij vào nút gốc nLOOC-Tree[k] 10 Cập nhật sup nút ij nút gốc nLOOC-Tree[k] 11.Trả danh sách nLOOC-Tree Hình Cây nLOOC-Tree theo Index_COOC Bảng Cây nLOOC-Tree có đặc trưng sau: - Chiều cao nhỏ số lượng item xuất giao dịch với item hạt nhân (các item có thứ tự theo độ phổ biến) - Mỗi đường đơn (single-path) mẫu có thứ tự từ nút gốc (item hạt nhân) đến nút độ phổ biến mẫu độ phổ biến nút (ik→ik+1→…→iℓ) - Mỗi phân đoạn đường đơn (sub-single-path) từ nút gốc đến nút đường đơn mẫu thứ tự độ phổ biến mẫu độ phổ biến nút cuối phân đoạn đường đơn Ví dụ 3: Xét item hạt nhân F, có đường đơn {F → G → E} sup(FGE) = 1; phân đoạn đường đơn {F → G} sup(FG) = độ phổ biến nút G C Thuật toán khai thác tập sinh tối thiểu Thuật toán SEQ-mGCFI (SEQuential-minimal Generators Closed Frequent Itemsets): khai thác tập sinh tối thiểu dựa nLOOC-Tree chứa item xuất giao dịch với item hạt nhân Trong phần này, chúng tơi trình bày bổ đề dùng để loại bỏ item hạt nhân itemset sinh tối thiểu itemset phổ biến đóng Bổ đề 1: Xlexcooc = lexcooc(ik) sup(ik ∪ xsub) = sup(ik), ∀ xsub ∈ Ƥ≥1(Xlexcooc) Chứng minh: lexcooc(ik) = Xlexcooc, ∀ xsub ∈ Ƥ≥1(Xlexcooc) Theo Định nghĩa 6, ta có π(ik ∪ xsub) = π(ik) ∩ π(xsub) = π(ik) theo phương trình (1), (2) sup(ik ∪ xsub) = sup(ik), ∀ xsub ∈ Ƥ≥1(Xlexcooc) ■ Ví dụ 4: Xét item F, với sup(F) = Ta có, lexcooc(F) = {A, C} itemset kết hợp {A, C, AC} sup(F) = sup(FA) = sup(FC) = sup(FAC) = Bổ đề 2: ∀ik ∈ mGCFI, Xlexcooc = lexcooc(ik) {ik ∪ xsub} ∉ mGCFI, ∀ xsub ∈ Ƥ≥1(Xlexcooc) Chứng minh: lexcooc(ik) = Xlexcooc, ∀ xsub ∈ Ƥ≥1(Xlexcooc) Theo bổ đề 1, ta có sup(ik ∪ xsub) = sup(ik) mà ik ∈ mGCFI, nên {ik ∪ xsub} ∉ mGCFI (Định nghĩa 5)■ Ví dụ 5: Xét item F với minsup = Ta có, {F}∈ mGCFI lexcooc(F) = {A, C} sup(F) = sup(FA) = sup(FC) = sup(FAC) = 3, nên {FA, FC, FAC}∉ mGCFI Hệ 1: (theo bổ đề 2) ∀ ik ∈ I, sup(ik) ≥ minsup lexcooc(ik) = {∅} ik ∉ mGCFI Bổ đề 3: ∀ ik ∈ I, Ylexlooc = lexlooc(ik): sup(ik ∪ ylexlooc) < sup(ik), ∀ ylexlooc ∈ Ƥ≥1(Ylexlooc) Chứng minh: sup(ik∪ ylexlooc) < sup(ik), theo định nghĩa 7, hiển nhiên π(ik∪ ylexlooc) = π(ik) ∩ π(i1) ∩ …∩ π(ij) ⊂ π(ik), ∀ i1,j∈ ylexlooc■ Ví dụ 6: Xét item G ≺ E, E∈lexlooc(G)={E} Ta có, sup(GE) = < sup(G)= Hệ 2: (theo bổ đề 1, định nghĩa 5) ∀ sspj ∈ nLOOC-Tree(ik) ⊆ Ƥ≥1(lexlooc(ik)), sup(sspj) ≥ minsup sup(sspj+1) < minsup sspj ∈ mGCFI Ví dụ 7: Xét item F, minsup = Các đường sup(F → G) = sup(F → E) = ≥ minsup, nên {FG, FE}∈ mGCFI Hệ 3: (tập sinh tối thiểu từ item đồng xuất hoàn toàn) ∀ ik-1 ≺ ik ∈ I, sup(ik-1) = sup(ik) ik ∈ lexcooc(ik-1) itemsets sinh tối thiểu từ item hạt nhân ik-1, ∀{ik-1∪X} ∈ mGCFI sinh thêm cách thay item hạt nhân ik, ∀{ik∪X}∈ mGCFI Mã giả thuật toán 3: SEQ-mGCFI Đầu vào: Index_COOC, minsup Đầu ra: Tập sinh tối thiểu mGCFI Với Index_COOC[k].sup ≥ minsup Nếu (Index_COOC[k].cooc ≠{∅}) //hệ mGCFI[k]=mGCFI[k]∪ ∪Index_COOC[k].item Nếu (Index_COOC[k].looc ≠{∅}) nLOOC_Tree(Index_COOC[k].item) SSP ← GenPath(Index_COOC[k].item) Với sspj ∈ SSP Nếu (sup(sspj)≥minsup)∧(sup(sspj+1)

Ngày đăng: 26/10/2020, 00:44

Hình ảnh liên quan

Năm 1993, R.Agrawal đã đề xuất mô hình cơ bản khai thác luật kết hợp từ dữ liệu giao dịch dạng nhị phân theo hai  giai đoạn [1]: sinh tập phổ biến (Frequent Itemset - FI) và sinh  luật tin cậy kết hợp từ tập phổ biến - Thuật toán song song khai thác tập sinh tối thiểu của tập phổ biến đóng

m.

1993, R.Agrawal đã đề xuất mô hình cơ bản khai thác luật kết hợp từ dữ liệu giao dịch dạng nhị phân theo hai giai đoạn [1]: sinh tập phổ biến (Frequent Itemset - FI) và sinh luật tin cậy kết hợp từ tập phổ biến Xem tại trang 1 của tài liệu.
Bảng 2. Tập CFI, GCFI và mGCFI trên Ɗ với minsup 3 - Thuật toán song song khai thác tập sinh tối thiểu của tập phổ biến đóng

Bảng 2..

Tập CFI, GCFI và mGCFI trên Ɗ với minsup 3 Xem tại trang 2 của tài liệu.
Hình 1. Cây nLOOC-Tree theo Index_COOC ở Bảng 3. - Thuật toán song song khai thác tập sinh tối thiểu của tập phổ biến đóng

Hình 1..

Cây nLOOC-Tree theo Index_COOC ở Bảng 3 Xem tại trang 3 của tài liệu.

Từ khóa liên quan

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

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

Tài liệu liên quan