Bài viết Giải thuật hiệu năng cao khai thác tập sinh của tập đóng phổ biến trình bày việc đề xuất giải thuật song song MCP-GCFI khai thác nhanh tập sinh của tập đóng phổ biến trên bộ xử lý đa nhân. Giải thuật đề 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.
ISSN 1859-1531 - TẠP CHÍ KHOA HỌC VÀ CƠNG NGHỆ ĐẠI HỌC ĐÀ NẴNG, SỐ VOL 18, NO 5.2, 2020 55 GIẢI THUẬT HIỆU NĂNG CAO KHAI THÁC TẬP SINH CỦA TẬP ĐÓNG PHỔ BIẾN HIGH-PERFORMANCE ALGORITHM IN MINING GENERATORS OF CLOSED FREQUENT ITEMSETS Phan Thành Huấn Đại học Quốc gia Tp Hồ Chí Minh; 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ập đóng phổ biến liệu giao dịch.Trong viết này, đề xuất giải thuật song song MCP-GCFI khai thác nhanh tập sinh tập đóng phổ biến xử lý đa nhân Giải thuật đề 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 có mật độ dày UCI liệu giả lập có mật độ thưa trung tâm nghiên cứu IBM Almaden, cho thấy giải thuật đề xuất hiệu Abstract - Association-rule mining is one of the most important and well-researched techniques of Data Mining Particularly, the techniques of mining are exact association rules and non-redundant, some authors have proposed mining these association rules from generators of closed frequent item sets In this paper, we propose the parallel MCP-GCFI algorithm to fast mining generators of closed frequent item sets on Multi-Core processor, as well as to expand the algorithm on distributed computing systems such as Hadoop, Spark The experimental results show that the proposed algorithms perform faster than other existing algorithms on both real-life datasets of UCI and synthetic datasets generated by IBM Almaden Từ khóa - Bộ xử lý đa nhân; tập đóng phổ biến; tập sinh tập đóng; giải thuật song song MCP-GCFI Key words - Multi-core processor; closed frequent itemset; generator itemsets; parallel MCP-GCFI algorithm 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, 2]: Phát sinh tập phổ biến (Frequent Itemset FI) sinh luật kết hợp từ tập phổ biến Khi đó, số lượng itemset phổ biến sinh lớn chiếm nhiều thời gian Nhiều tác giả có đề xuất giải thuật sinh tập đóng phổ biến (Closed Frequent Itemset - CFI) [3-5], tập khơng dư thừa có kích thước nhỏ FI nhiều lần (CFIFI) Tuy nhiên, để sinh luật kết hợp xác khơng dư thừa, nhiều tác giả có đề xuất khai thác tập luật kết hợp từ tập sinh tập đóng phổ biến (Minimal/ Generator Closed Frequent Itemset – mGCFI/GCFI) [6-10] giải thuật GrGrowth [6], Zart [8] DefMe [9, 10] Các giải thuật tựa Apriori, tìm kiếm theo chiều sâu dùng cấu trúc FP-Tree, IT-Tree – giải thuật tốn nhiều nhớ/ đọc liệu nhiều lần không hiệu loại liệu giao dịch có mật độ dày thưa Trong nghiên cứu, tác giả đề xuất giải thuật khai thác song song tập sinh Giải thuật đề xuất theo hướng tiếp cận song song liệu chức năng, giải thuật liên quan viết: - Phát sinh mảng IndexCOOC lưu trữ items xuất đồng thời items xuất nhấtmột giao dịchvới item-hạt-nhân; - Dựa IndexCOOC phát sinh nLOOCTree; - Giải thuật SEQ-GCFI khai thác tập sinh tập đóng phổ biến dựa nLOOCTree; - Giải thuật song song MCP-GCFI khai thác nhanh tập sinh xử lý đa nhân (BXLĐN) Trong nghiên cứu tác giả trình bày: Các vấn đề tập phổ biến, tập đóng phổ biến tập sinh tập đóng phổ biến; Giải thuật xây dựng mảng chứa itemset đồng xuất xuất với item-hạt-nhân giao dịch, giải thuật sinh nLOOCTree giải thuật SEQGCFI khai thác tập sinh; Trên sở giải thuật xây dựng giải thuật song song MCP-GCFI khai thác hiệu xử lý đa nhân; Và cuối kết thực nghiệm, hướng phát triển cho nghiên cứu Vấn đề tập phổ biến Cho I = {i1, i2, , im} tập gồm m thuộc tính, thuộc tính gọi item Tập itemX ={i1, i2, , ik}, ij I (1 j k) gọi itemset, itemset gồm có k item ký hiệu k-itemset Ɗ liệu chứa giao dịch, gồm có n ghi liệu gọi tập chứa giao dịch T = {t1, t2, , tn}, với giao dịch tk ={ik1, ik2, , ikm}, ikj I (1 kj m) Định nghĩa 1: Cho itemset X I số lượng giao dịch Ɗ có chứa X gọi độ phổ biến (support) itemset X Ký hiệu, sup(X) Định nghĩa 2: Cho itemset X I, sup(X)≥minsup X gọi itemset phổ biến (minsup: ngưỡng phổ biến tối thiểu cho trước) Định nghĩa 3: Cho XFI, X gọi itemset phổ biến đóng X khơng có tập cha độ phổ biến Ký hiệu, CFI tập chứa itemset phổ biến đóng Định nghĩa 4: Cho XCFI, tất itemset thực X có độ phổ biến với X gọi itemset sinh X Ký hiệu, GCFI tập chứa itemset sinh Cho tập liệu giao dịch Ɗ Bảng Bảng Dữ liệu Ɗ sử dụng cho Ví dụ TID t1 t2 t3 O 1 Q R 1 Items S U 1 V 1 W 1 Z Phan Thành Huấn 56 t4 t5 t6 t7 t8 t9 t10 1 1 1 1 1 1 1 1 1 1 1 Dữ liệu Bảng 1, gồm items I ={O; Q; R; S; U; V; W; Z} có 10 giao dịch T = {t1; t2; t3; t4; t5; t6; t7; t8; t9; t10} Bảng Sinh tập CFI GCFI Ɗ với minsup = k-itemset Tập CFI (#CFI=6) U V, W, O, R OR VO, VR, WO, WR, WU, UO, UR VOR, WOR, UOR WUO, WUR WUOR Tập GCFI (#GCFI=13) Bảng 2, liệt kê theo k-itemset tập CFI GCFI ngưỡng minsup = Số phần tử tập |CFI| = |GCFI| = 13 Tỷ suất |CFI|/|GCFI| = 6/13100% 46% Giải thuật đề xuất 3.1 Tập chiếu items xuất giao dịch với item-hạt-nhân có thứ tự [11] Tập chiếu itemik liệu giao dịch Ɗ: (ik)={t Ɗ│ikt} tập giao dịch có chứa item ik sup(ik) = | ( ik)| Giải thuật Tạo dựng mảng IndexCOOC Đầu vào: Tập liệu Ɗ Đầu ra: IndexCOOC, Ma trận BiM (1) Với phần tử k IndexCOOC: IndexCOOC[k].item= ik IndexCOOC[k].sup = IndexCOOC[k].cooc= 2m - IndexCOOC[k].looc= Với giao dịch ti thực hiện: Lưu ti vào BiM Với item k có ti thực hiện: IndexCOOC[k].cooc&=vectorbit(ti) IndexCOOC[k].looc |=vectorbit(ti) IndexCOOC[k].sup + + Mảng IndexCOOC xếp tăng theo sup Với phần tử k IndexCOOC: IndexCOOC[k].cooc= lexcooc(ik) IndexCOOC[k].looc= lexlooc(ik) Trả IndexCOOC, BiM 10 11 12 13 14 15 16 Minh họa giải thuật 1: thực từ dòng đến 11 Khởi tạo cho mảng IndexCOOC: (cooc looc minh họa theo hexa) số item từ liệu Ɗ cho Bảng m = item O Q R S U V W Z sup 0 0 0 0 cooc 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF looc 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 Tập chiếu itemset X={i1, i2, , ik}, ij I (1 j k): (X) = {(i1) (i2)… (ik)} Duyệt giao dịch đầu tiênt1: {O,R, V} dạng bit tương ứng 10100010(0xA2) sup(X) = |(X)| (2) Để rút gọn không gian sinh, tác giả đưa Định nghĩa (Ƥk(X) – powerset X có k item): item O Q R S U V W Z sup 1 1 0 cooc 0xA2 0xFF 0xA2 0xFF 0xA2 0xA2 0xFF 0xFF looc 0xA2 0x00 0xA2 0x00 0xA2 0xA2 0x00 0x00 Định nghĩa 5: Cho ik I (i1 i2 … im) thứ tự theo sup, ta gọi ik item-hạt-nhân Xlexcooc I gọi xuất đồng thời có thứ tự với ik: Xlexcooc tập item có thứ tự theo sup, xuất đồng thời với ik nghĩa ( ik) ( ikxlexcooc) , xlexcooc Ƥ1(Xlexcooc), i j Xlexcooc, i k ij Ký hiệu, lexcooc(ik) = Xlexcooc Định nghĩa 6: Cho ik I (i1 i2 … im) thứ tự theo sup, ta gọi ik item-hạt-nhân Xlexlooc I gồm items có thứ tự xuất với ik giao dịch, không xuất đồng thời: 1|(ikxlexlooc)|