1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Một số cải tiến thuật toán Index-BitTableFI cho khai thác tập tin phổ biến

9 17 0

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 9
Dung lượng 184,85 KB

Nội dung

Bài viết trình bày một số cải tiến của thuật toán Index-BitTbaleFI bao gồm: 1) Chỉ tổ chức dữ liệu BitTable theo chiều dọc để tiết kiệm bộ nhớ; 2) Kiểm tra subsume đơn giản bằng cách xét xem g(item) có là con của g(j) hay không? Công việc này không tốn nhiều thời gian; 3) Cải tiến phương pháp duyệt theo chiều sâu nhằm hạn chế việc tính phần giao giữa các tid.

Các cơng trình nghiên cứu, phát triển ứng dụng CNTT-TT Tập V-1, Số (29), tháng 6/2013 Một số cải tiến thuật toán Index-BitTableFI cho khai thác tập tin phổ biến Improvements of Index-BittableFI Algorithm for Mining Frequent Itemsets Lê Hồi Bắc, Nguyễn Thị Bảo Chi, Võ Đình Bảy Abstract: Index-BitTableFI is an algorithm based on BitTable which is very effective in recent (Song & Yang, 2008) It finds out itemsets based on BitTable in vertical and horizontal, and also sets up sorting array and equivalent computing method to fast identify itemsets which occur concurrently with representative items Although Index-BitTableFI algorithm reduces considerablely cost of finding out candidate itemsets and computing the support, but if number of transactions and items is large then intersection computing of vector-bits in BitTable still costs time Besides, finding out frequent itemsets in depth has not used property of equivalent computing method yet To resolve this problem, some improvements for improving more performance of Index-BitTableFI algorithm are proposed in this research I GIỚI THIỆU Từ toán khai thác luật kết hợp đề xuất vào năm 1993 đến nay, có nhiều thuật toán phát triển để khai thác tập phổ biến như: Apriori [2], DCP[5], CBAR[7], FP-growth [4], Eclat [8], v.v… Gần đây, tiếp cận dựa định dạng liệu dọc đề xuất, số phải kể đến hai thuật toán BitTableFI [3] Index-BitTableFI [6] Với thuật toán BitTableFI, cấu trúc BitTable dùng theo chiều ngang chiều dọc để nén liệu Việc phát sinh tập ứng viên trở nên nhanh việc tính tốn độ hỗ trợ tương ứng thực thi hiệu so với thuật tốn Apriori [1] Tuy nhiên tình với số lượng lớn tập phổ biến, tập nhiều phần tử ngưỡng hỗ trợ nhỏ, thuật toán phải chịu chi phí bất thường chi phí tính tốn lớn, việc lưu trữ ứng viên địi hỏi khơng gian nhớ lớn tính tốn độ hỗ trợ ứng viên phức tạp Để giải vấn đề này, thuật toán IndexBitTableFI đề xuất, cấu trúc BitTable sử dụng theo chiều ngang chiều dọc, tìm kiếm kép thực khơng gian tìm kiếm giảm đáng kể Tuy nhiên, việc nén liệu BitTable theo chiều dọc ta cần nén liệu theo chiều ngang để vận dụng phương pháp tính tốn tương đương, số lượng item thường nhỏ nhiều lần so với số lượng giao tác Mặt khác thuật toán chưa vận dụng triệt để tính chất phương pháp tính tốn tương đương, báo này, chúng tơi đề xuất số cải tiến bao gồm: không cần lưu trữ liệu theo chiều ngang, việc tính tốn tương đương dựa liệu dọc sẵn có, đồng thời vận dụng triệt để phương pháp tìm kiếm itemset phổ biến theo chiều sâu II TẬP PHỔ BIẾN VÀ THUẬT TOÁN INDEXBITTABLEFI II.1 Một số định nghĩa Cho sở liệu (CSDL) D gồm tập item I = {i1, i2, …, in} tập giao tác T = {t1, t2, …, tm} giao tác t chứa tập item, nghĩa t = {ik1, ik2, , ikj} Trong ikj ∈ I (1≤ kj ≤ n) Định nghĩa 1: độ hỗ trợ itemset X, kí hiệu sup(X), số giao tác D có chứa X - 30 - Các cơng trình nghiên cứu, phát triển ứng dụng CNTT-TT Định nghĩa 2: Cho X itemset, X gọi tập phổ biến sup(X) ≥ minsup, minsup ngưỡng độ hỗ trợ tối thiểu người dùng xác định Bảng Minh họa liệu nén vào bảng BitTable Tid A B C D E F G 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 1 1 1 0 1 1 10 1 1 Nhiệm vụ q trình khai thác tập phổ biến tìm tất itemset CSDL có độ hỗ trợ lớn minsup Bổ đề [1]: Mọi tập tập phổ biến tập phổ biến, tập cha tập không phổ biến tập khơng phổ biến Ví dụ: Cho CSDL D Bảng Bảng CSDL D Tid Item A, B, C, E, F A, C, G E A, C, D, E, G A, C, E, G E A, B, C, E, F A, C, D A, C, E, G 10 A, C, E, G Với minsup=2, ta có sup(AC)=8>minsup nên AC tập phổ biến II.2 Cấu trúc BitTable BitTable tập số nguyên mà diện biểu thị cho item Nếu item thứ i xuất giao tác t bit thứ i t BitTable mang giá trị 1, ngược lại mang giá trị Với liệu nén, BitTable sử dụng theo chiều dọc Nếu kích cỡ (số giao tác) item S, kích cỡ sở liệu lớn kích cỡ W nhớ kích cỡ Bảng Bảng BitTable A B C D E F G 219 130 219 190 130 80 3 3 II.3 Mảng Index cách xây dựng Mảng Index xây dựng dựa hàm sau: g(X)={t∈D│X ⊆ t} tập giao tác có chứa itemset X Ví dụ: g(A) = {1, 2, 4, 5, 7, 8, 9,10}, g(B) = {1, 2, 4, 5, 7, 8, 9,10} Để tính g(AB), cần lấy phần giao g(A) với g(B), nghĩa g(AB) = g(A)∩g(B)= {1, 2, 4, 5, 7, 8, 9, 10}∩{1, 7} = {1,7} Định nghĩa 4: Mảng Index mảng có kích thước m Trong đó, m số lượng tập phổ biến 1-item Mỗi phần tử mảng đơi (item, subsume) Trong : subsume(item) = { j ∈ I item ≺ j ∧ g (item) ⊆ g ( j )} mảng BitTable là: S + sử dụng để lưu j đứng sau item W trữ liệu nén Bảng biểu diễn thập phân item bảng Chẳng hạn, xét item A (Bảng 2), ta có dãy bit 11011011,11, nghĩa cần byte để lưu dãy bit byte đầu chứa giá trị 219 byte thứ chứa giá trị Tập V-1, Số (29), tháng 6/2013 Nghĩa là: subsume gồm tập item j, cho j đứng sau item tập giao tác chứa item j phải bao phủ tập giao tác có chứa item Thuật toán 1: Xây dựng bảng Index [6] Input: CSDL D, ngưỡng độ hỗ trợ tối thiểu minsup - 31 - Các cơng trình nghiên cứu, phát triển ứng dụng CNTT-TT Output: Mảng Index Nhận thấy có bit candidate Duyệt D xóa item không phổ biến Sắp xếp danh sách tập phổ biến 1-item tăng dần theo sup: a1,a2, ,am Với phần tử j mảng Index thực hiện: Gán Index[j].item =aj Xây dựng BitTable từ sở liệu Với phần tử j mảng Index thực hiện: Gán Index[j].subsume=Ø Gán candidate = ∩ t∈g ( index[ j ].item ) t Với i > j thực 10 Nếu giá trị bit thứ i candidate 11 Đưa index[i].item vào index[j].subsume 12 Xuất mảng Index Ví dụ: Xét CSDL bảng với minsup=2, ta có kết bảng 4, bảng bảng Bảng CSDL D sau xóa bỏ item không phổ biến xếp tăng dần theo độ hỗ trợ Tid Item Sắp xếp item A, B, C, E, F B, F, A, C, E A, C, G G, A, C E E A, C, D, E, G D, G, A, C, E A, C, E, G G, A, C, E E E A, B, C, E, F B, F, A, C, E A, C, D D, A, C A, C, E, G G, A, C, E 10 A, C, E, G G, A, C, E B Ø Tập V-1, Số (29), tháng 6/2013 Bảng Bảng Index ban đầu D F G A C Ø Ø Ø Ø Ø Bit tương ứng với item B, bit thứ tương ứng với item F, bit tương ứng với item: A, C, E Vậy tính từ vị trí sau item B trở ta có subsume(B) = FACE Tiến trình tương tự, ta có mảng Index Bảng B FACE Bảng Bảng Index kết D F G A C AC ACE AC C Ø E Ø II.3.1 Định lý [6] Nếu Index[j].item tập phổ biến sup(Index[j].item)=minsup khơng tồn item i cho Index[j].item ≺ i i∉Index[j].subsume(item) (Index[j].item∪i) tập phổ biến II.3.2 Định lý [6] Nếu item phần tử đại diện subsume(item) = a1,a2, ak, kết hợp item với (2k-1) tập khác rỗng a1, a2, , ak độ hỗ trợ chúng sup(item) E Ø Bước thực việc tìm subsume(B) Do bảng BitTable, cột B có Tid Tid có giá trị 1, điều có nghĩa có Tid Tid chứa item B mà Vậy ta lấy Tid giao với Tid 7: Thuật toán 2: Index-BitTableFI [6] Input: Mảng Index, minsup Output: Danh sách tập phổ biến Với thành phần Index[j] mảng Index thực Xuất Index[j].item sup(Index[j].item) Nếu Index[j].subsume=Ø Nếu (sup(Index[j].item) >minsup) Depth_First(Index[j].item, t(Index[j].item)) // t(Index[j].item) tập tập phổ biến 1-phần tử Candidate = 010111&1010111=1010111 - 32 - Các cơng trình nghiên cứu, phát triển ứng dụng CNTT-TT 10 11 12 13 // đứng sau Index[j].item mảng Index Ngược lại thực Với s_item⊆Index[j].subsume thực Xuất (Index[j].item∪s_item) sup(Index[j].item) Nếu (sup(Index[j].item) >minsup) Gán tail = t(Index[j].item) \ items∈Index[j].subsume Depth_First (Index[j].item,tail) Với tập s_item⊆Index[j].subsume thực Depth_First (Index[j].item ∪ s_item,tail) Thuật toán 3: Depth_First [6] Input: Itemset, tail Output: Xuất tập phổ biến độ hỗ trợ chúng Depth_First(itemset,tail) Nếu tail=Ø return Với thành phần i ∈ tail thực Gán f_itemset=itemset∪i Nếu sup(f_itemset) ≥ minsup Xuất f_itemset sup(f_itemset) Gán tail = tail \ i //loại i khỏi tail Depth_First(f_itemset,tail) Tập V-1, Số (29), tháng 6/2013 subsume(B) = FACE nên ta việc kết hợp B với tập FACE để tạo 16 tập phổ biến với độ hỗ trợ độ hỗ trợ B Chính nhờ mà nhiều itemset khơng cần tính độ hỗ trợ nên thuật tốn tiết kiệm chi phí III MỘT SỐ CẢI TIẾN III.1 Nhận xét Việc tính tốn Index[i].subsume thuật toán (bước - 8) thực cách giao tất giao tác có chứa mục liệu Index[i].item bảng BitTable theo chiều ngang Trong trường hợp số lượng Tid, số item lớn q trình giao tid có chứa Index[i].item nhiều thời gian Trong số lượng item thường nhỏ nhiều so với số lượng Tid Mặt khác, subsume(item) gồm item j đứng sau item (định nghĩa 1) Quá trình tìm tất tập phổ biến phải lưu trữ liệu theo dạng (ngang dọc) cần nhiều nhớ để lưu trữ Giải pháp: • Chỉ sử dụng bảng BitTable nén theo chiều dọc để tìm nhanh subsume (item) • Việc kiểm tra g(item) ⊆ g(j) thực đơn giản cách kiểm tra Tid(item) có Tid(j) hay khơng Hình minh họa kết thuật tốn IndexBitTableFI CSDL Bảng Có thể thấy, Hình Danh sách tập phổ biến - 33 - Các cơng trình nghiên cứu, phát triển ứng dụng CNTT-TT Thuật toán 4: xây dựng bảng Index_S Input: CSDL D, ngưỡng hỗ trợ minsup Output: Mảng Index Duyệt D xóa item khơng phổ biến Sắp xếp danh sách tập phổ biến 1-item tăng dần theo sup: a1,a2, ,am Với phần tử j mảng Index thực hiện: Gán Index[j].item = aj Xây dựng BitTable từ sở liệu Với phần tử j mảng Index thực hiện: Gán Index[j].subsume=Ø Với i>j thực Nếu g(Index[j].item) ⊆ g(Index[i].item) đưa index[i].item vào index[j].subsume Ví dụ: với bảng BitTable (Bảng 3) ta có: A BitTable B C D 219 130 219 17 E F 190 130 G 88 Ta thực phép kiểm tra trình bày Hình E 190 F ⊆ 130 Hình Minh họa tính subsume(E) Tập V-1, Số (29), tháng 6/2013 • Sau bước thứ 12 lại mở rộng theo chiều sâu danh sách tail cho (Index[j].item∪s_item), s_item⊆Index[j].subsume • Theo định lý 2, ta có sup(Index[j].item)=sup(Index[j].item∪s_item) mở rộng theo chiều sâu cho (Index[j].item∪s_item) tail, giống mở rộng chiều sâu cho (Index[j].item) tail Hai bước hoàn toàn giống kết b Đối với thuật tốn (Depth_Fist): • Mỗi lần kiểm tra sup(f_itemset) xem có thỏa minsup hay khơng q trình giao tid nên tốn nhiều chi phí Chính điều này, bước thứ thuật toán Index-BitTableFI ta ghi nhận lại kết mục liệu tail mà Index[j].item kết hợp được, đồng thời lưu trữ lại độ hỗ trợ Sau đó, đến bước thứ 13 thay tìm kiếm theo chiều sâu cho tập Index[j].subsume, ta kết hợp với danh sách kết bước với độ hỗ trợ sẵn có Vì vậy, tiết kiệm chi phí tính tốn độ hỗ trợ, q trình xử lý nhanh Thuật toán 5: Index_BitTableFI_S Input: mảng Index, minsup Output: Danh sách tập phổ biến Nếu kết phép kiểm tra đưa F vào subsume(E) Tương tự ta tiến hành kiểm tra E với G III.2 Nhận xét Với kết danh sách tập phổ biến Hình ta có nhận xét sau: a Đối với thuật tốn (Index-BitTableFI): • Ở bước thứ 9, sup(Index[j].item) >minsup thuật tốn mở rộng theo chiều sâu (gọi Depth_First) danh sách tail cho Index[j].item - 34 - Với thành phần Index[j] mảng Index thực Xuất Index[j].item sup(Index[j].item) Nếu Index[j].subsume=Ø Nếu (sup(Index[j].item) >minsup) Depth_First(Index[j].item, t(Index[j].item)) //t(Index[j].item) tập tập phổ biến 1phần tử //đứng sau Index[j].item mảng Index Ngược lại thực Với s_item⊆Index[j].subsume thực Xuất (Index[j].item∪s_item) sup(Index[j].item) Nếu (sup(Index[j].item) >minsup) Các cơng trình nghiên cứu, phát triển ứng dụng CNTT-TT 10 11 12 13 14 Gán tail = t(Index[j].item) \ items∈Index[j].subsume Depth_First_S(Index[j].item,tail,kq) Với tập s_item⊆Index[j].subsume thực Với phần tử s_kq danh sách kq Xuất (s_item∪s_kq.item) s_kq.sup Thuật toán 6: Depth_First_S Input: Itemset, tail, kq Output: Xuất tập phổ biến độ hỗ trợ chúng Depth_First_S(itemset,tail,kq) Nếu tail=Ø return Với thành phần i ∈ tail thực Gán f_itemset=itemset ∪ i Nếu sup(f_itemset) ≥ minsup 4.1 Thêm i sup(f_itemset) vào danh sách kq Xuất f_itemset sup(f_itemset) Gán tail=tail \ i //loại i khỏi tail Depth_First_S(f_itemset,tail,kq) Tập V-1, Số (29), tháng 6/2013 • Tính tail(G)=E, ta tính sup(GE)=4>minsup nên xuất: GE:4 • Vì sup(GE) = 4, mà sup(G) = sup(GA) = sup(GC) = sup(GAC) nên xuất: GAE:4, GCE:4, GACE:4 Kết trình tìm tập phổ biến nhanh giảm bớt số lần tính tốn độ hỗ trợ tập ứng viên VI KẾT QUẢ THỰC NGHIỆM Các kết thực nghiệm thực máy laptop HP, duo core 2.1GHz, 3GB RAM, thuật toán cài đặt C# 2008 Khai thác luật kết hợp dựa liệu chi tiết gọi điện thoại nguồn số liệu cước bổ sung khác cước thông tin di động, cước quốc tế, cước internet GPC, VTI VDC cung cấp Viễn thơng Ninh Thuận Các thuộc tính liệu khách hàng gồm: Trong kq danh sách dùng để lưu trữ mục liệu tail mà kết hợp Index[j].item với độ hỗ trợ tương ứng Ví dụ: Khi xét tới item G, ta có sup(G)=5 subsume(G)=AC • Xuất: G:5 • Kết hợp G với tất tập subsume(G)=AC xuất: GA:5, GC:5, GAC:5 Bảng CSDL khách hàng Tên thuộc tính Ý nghĩa Ma_kh Mã khách hàng So_dt Số điện thoại Ten_kh Tên khách hàng Địa khách Dc_kh hàng Mã đơn vị, khách hàng Ma_donvi thuộc đơn vị quản lý Ø B:2 D:2 BF:2,BA:2, DA:2, BC:2,BE:2, DC:2, BFA:2, DAC:2 BFC:2, BFE:2, BAC:2, BAE:2, BCE:2, BFAC:2, BFAE:2, BFCE:2, BACE:2, BFACE:2 F:2 G:5 FA:2, GA:5 GC:5 FC:2, FE:2, FAC:2, GAE:4 FAE:2, GCE:4 FCE:2, FACE:2 A:8 E :8 GE:4 AC:8 AE:6 CE:6 GAC:5 GACE:4 Hình Minh họa nhận xét - 35 - C:8 ACE:6 Các cơng trình nghiên cứu, phát triển ứng dụng CNTT-TT Tập V-1, Số (29), tháng 6/2013 Các thuộc tính liệu chi tiết gọi gồm: Voip biết gọi liên tỉnh hay quốc tế? có sử dụng dịch vụ 171 hay khơng? v.v Bảng CSDL chi tiết gọi Tên thuộc tính Ý nghĩa Ma_kh Mã khách hàng So_may Số chủ gọi Sm_den Số bị gọi Huong Hướng gọi Datc Ngày gọi Gio_bd Giờ bắt đầu Gio_kt Giờ kết thúc Timeo Thời gian gọi Là liên tỉnh, quốc tế, nội Loai hạt Gọi theo truyền thống, Voip hay 171 Nha_cc Nhà cung cấp dịch vụ Chọn nguồn liệu từ danh sách khách hàng chi tiết gọi năm 2008 năm 2009, tháng đầu năm 2010, từ tháng 01/2010 đến tháng 06/2010, tiến hành tích hợp loại cuớc thành liệu doanh thu khách hàng Từ liệu tiến hành tổng hợp thành liệu doanh thu khách hàng, gồm số thuộc tính sau: Bảng 10 Dữ liệu doanh thu sau chuyển đổi dạng giao tác Tid Item LT

Ngày đăng: 25/10/2020, 22:52

HÌNH ẢNH LIÊN QUAN

Ví dụ: Cho CSDL D như trong Bảng 1 - Một số cải tiến thuật toán Index-BitTableFI cho khai thác tập tin phổ biến
d ụ: Cho CSDL D như trong Bảng 1 (Trang 2)
Bảng 1. CSDL D - Một số cải tiến thuật toán Index-BitTableFI cho khai thác tập tin phổ biến
Bảng 1. CSDL D (Trang 2)
Ví dụ: Xét CSDL trên bảng 1 với minsup=2, ta có kết qu ả như bảng 4, bảng 5 và bảng 6 - Một số cải tiến thuật toán Index-BitTableFI cho khai thác tập tin phổ biến
d ụ: Xét CSDL trên bảng 1 với minsup=2, ta có kết qu ả như bảng 4, bảng 5 và bảng 6 (Trang 3)
Hình 1 minh họa kết quả của thuật toán Index- Index-BitTableFI  trên  CSDL  ở  Bảng  1 - Một số cải tiến thuật toán Index-BitTableFI cho khai thác tập tin phổ biến
Hình 1 minh họa kết quả của thuật toán Index- Index-BitTableFI trên CSDL ở Bảng 1 (Trang 4)
Bảng 7. CSDL khách hàng Tên thuộc tính  Ý nghĩa  - Một số cải tiến thuật toán Index-BitTableFI cho khai thác tập tin phổ biến
Bảng 7. CSDL khách hàng Tên thuộc tính Ý nghĩa (Trang 6)
Bảng 8. CSDL chi tiết cuộc gọi - Một số cải tiến thuật toán Index-BitTableFI cho khai thác tập tin phổ biến
Bảng 8. CSDL chi tiết cuộc gọi (Trang 7)
Bảng 9. CSDL doanh thu khách hàng - Một số cải tiến thuật toán Index-BitTableFI cho khai thác tập tin phổ biến
Bảng 9. CSDL doanh thu khách hàng (Trang 7)
Chú thích: Ma_kh trong Bảng 8 là khóa ngoại của Ma_kh trong Bảng 8, Ma_donvi trong Bảng 9 là khóa  ngo ại  của  Ma_donvi  trong  Bảng  7 - Một số cải tiến thuật toán Index-BitTableFI cho khai thác tập tin phổ biến
h ú thích: Ma_kh trong Bảng 8 là khóa ngoại của Ma_kh trong Bảng 8, Ma_donvi trong Bảng 9 là khóa ngo ại của Ma_donvi trong Bảng 7 (Trang 7)
Hình 4. Thời gian thực thi trên dữ liệu cước năm 2008 - Một số cải tiến thuật toán Index-BitTableFI cho khai thác tập tin phổ biến
Hình 4. Thời gian thực thi trên dữ liệu cước năm 2008 (Trang 8)
Hình 5. Thời gian thực thi trên dữ liệu cước năm 2009 - Một số cải tiến thuật toán Index-BitTableFI cho khai thác tập tin phổ biến
Hình 5. Thời gian thực thi trên dữ liệu cước năm 2009 (Trang 8)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN