Twu của các giao dịch

Một phần của tài liệu (LUẬN án TIẾN sĩ) phát triển một số thuật toán hiệu quả khai thác tập mục trên cơ sở dữ liệu có sự phân cấp các mục (Trang 95)

ID twu t1 3 2 2 6 9 5 2 6 5 7 = 0,68 t2 2 5 3 9 5 3 5 3 5 = 1,12 t3 3 2 2 6 2 9 2 2 5 6 2 5 2 8 = 0,84 t4 3 3 2 5 9 5 6 3 5 5 = 0,76 t5 3 2 2 5 2 6 9 3 5 2 6 5 2 9 = 0,84 t6 2 5 6 5 6 5 7 = 0,43 Sum_twu = 4,67

Dòng 4, tập F (1-itemset phổ biến) gồm {A, B, C, D, E, G, H, K} nhƣ Bảng 3.7: Bảng 3.7. Tập 1-itemset phổ biến mục wus F A 68 84 76 84 4 76 = 0,65 A B 68 2 84 76 84 43 4 76 = 1,0 B C 2 76 84 43 4 76 = 0,67 C D 68 84 84 43 4 76 = 0,6 D E 68 2 84 76 84 4 76 = 0,91 E F 84 84 43 4 76 = 0,45 G 68 2 84 76 84 43 4 76 = 1,0 G H 68 84 76 84 43 4 76 = 0,76 H K 68 2 84 76 84 43 4 76 = 1,0 K

Từ dòng 6 đến dòng 16 thủ tục đệ quy CREATE_HIT-tree() xây dựng

cây HIT-tree, sau khi xây dựng xong cây HIT-tree với ngƣỡng minwus, các

tập mục tại các nut trên cây HIT-tree là FWUI cần khai thác. Cây HIT-tree với ngƣỡng minwus = 0,6 của CSDL HD nhƣ Hình 3.5.

Hình 3.5. Cây HIT-tree với CSDL HD và minwus = 0,6

Xét nút A trên cây HIT-tree:

A kết hợp với B: tidset(AB) = tidset(A) tidset(B) = {1, 3, 4, 5} {1, 2, 3,

4, 5, 6} = {1, 3, 4, 5}, wus(AB) = 0,68 >minwus⟹ kết nạp AB vào HIT-tree.

A kết hợp với C: tidset(AC) = tidset(A) tidset(C) = {1, 3, 4, 5} {2, 4,

5, 6} = {4, 5}, wus(AC) = 0,34 < minwus ⟹ không kết nạp AC vào HIT-tree. Tƣơng tự kết nạp {AE, AG, AK} vào HIT-tree.

A kết hợp với H, không xét do H là cha của A trên cây phân cấp.

Tƣơng tự với các nút B, C, D, E, G, H, K ta có cây HIT-tree nhƣ Hình 3.5 có các nút là FWUI.

3.3. Một số cải tiến nâng cao hiệu quả khai thác FWUI trên HQDB 3.3.1. Cấu trúc EDBV 3.3.1. Cấu trúc EDBV

Thuật toán Eclat đƣợc Zaki và các đồng sự [49] đề xuất dựa trên IT-tree có hiệu quả về mặt thời gian so với các phƣơng pháp khác. Tuy nhiên bộ nhớ dùng để lƣu trữ tidset của các tập mục là rất lớn, đây chính là hạn chế của

phƣơng pháp này. Giải quyết đƣợc vấn đề bộ nhớ sẽ nâng cao hiệu quả về mặt thời gian của tiếp cận này.

Zaki và các đồng sự [50] đề xuất sử dụng kĩ thuật diffset thay cho tidset. Kĩ thuật diffset là một giải pháp hiệu quả nhằm rút gọn bộ nhớ so với tidset, đồng thời giúp tính nhanh độ hỗ trợ trong bài tốn khai thác FI. Tuy nhiên, do đặc điểm diffset là lấy phần bù của tidset nên diffset khơng có hiệu quả trên các CSDL thƣa.

Vo và các đồng sự [38] đề xuất DBV nhằm rút gọn bộ nhớ lƣu trữ tidset bằng BitTable [13] và rút ngắn thời gian tính tốn. Cách tiếp cận này khá hiệu quả khi loại bỏ hoàn toàn các byte 0 ở đầu và cuối trên bit-vector và sử dụng phép AND trên bit để tính giao tidset của hai tập mục. Đồng thời sử dụng một mảng LOOKUP để định nghĩa trƣớc số lƣợng các bit 1 trong các byte, điều này giúp tính nhanh độ hỗ trợ của các tập mục thơng qua DBV. Từ đó DBV đƣợc sử dụng với mảng mà mỗi phần tử là một byte. Đây là một hạn chế lớn của DBV, do khi tính giao giữa hai DBV của các tập mục phải sử dụng nhiều phép toán AND trên bit giữa các byte của hai DBV.

Cấu trúc MBiS đƣợc đề xuất và trình bày trong chƣơng 2 là cấu trúc lƣu giữ các đoạn bit 1 liên tiếp nhau trên BitTable. MBiS có đặc điểm là xác định giao giữa các tidset thông qua MBiS rất nhanh, do chỉ cần cập nhật lại các đầu và cuối mỗi đoạn. Tuy nhiên, cấu trúc MBiS sẽ khơng có hiệu quả nhiều trên các dữ liệu lớn do tính phân mảnh của tidset rất lớn dẫn đến MBiS rất tốn bộ nhớ để lƣu trữ và tốn thời gian trong xác định giao do số đoạn của mỗi MBiS lớn.

3.3.1.1. Xác định tidset của tập mục dựa trên EDBV

Luận án đề xuất cấu trúc EDBV (Extend DBV) và EIWS (Extend IWS) bằng cách sử dụng các số nguyên lớn tám byte (Large Integer - LI) thay vì các số nguyên một byte nhƣ DBV [38], MByS và hai byte nhƣ IWS Sử dụng các LI giúp cho q trình tính giao EDBV hay EIWS của hai tập mục nhanh hơn.

Do mỗi phép AND trên bit thực hiện trên các LI, mỗi LI có 64 bit đại diện cho 64 giao dịch liên tiếp.

Tuy nhiên vấn đề đặt ra là làm thế nào để tính đƣợc wus của tập mục với EDBV và EIWS với các LI. Không đủ bộ nhớ định nghĩa trƣớc một mảng 264 phần tử để lƣu vị trí các bit 1 của các số trong khoảng từ 1 đến 264 nhƣ cách làm trên MByS hay IWS.

Để tính nhanh tidset của tập mục phục vụ cho việc tính wus theo cơng thức 1.4, luận án định nghĩa trƣớc một mảng MAP gồm 216 (65536) phần tử nhƣ đối với cấu trúc IWS. Trong đó, phần tử thứ i chứa một danh sách vị trí

các bit 1 của i tính từ trái qua phải đƣợc mơ tả nhƣ Bảng 3.8:

Bảng 3.8. Mảng MAP với 65.535 phần tử

Index 0 1 2 … 65.534 65.535

Value 0000000000000001 0000000000000001 0000000000000010 … 111..110 111..111 MAP Null 16 15 … 1, 2,.., 14, 15 1, 2,..,15, 16

Tiếp theo, sử dụng bốn phép AND trên bit với 65.535 kết hợp với ba phép dịch phải bit để tách lần lƣợt các số nguyên hai byte (word) từ phải qua trái. Mỗi lần AND với 65.535 ta đƣợc một word, ánh xạ word vào MAP ta đƣợc danh sách vị trí các bit 1 trong word đó, từ đó ta xác định đƣợc ID giao dịch của các tập mục.

Ví dụ 3.5: Cho K là một LI, K = 178.455.221.385.174.000, biểu diễn nhị phân của K bao gồm 64 bít nhƣ sau:

0000001001111010000000000001010000001110111110100001101111110000 Cụ thể, số K đƣợc mô tả nhƣ trong Bảng 3.9

Bảng 3.9. Biểu diễn số nguyên K dƣới dạng bốn đoạn, mỗi đoạn là một word

Binary 0000001001111010 0000000000010100 0000111011111010 0001101111110000

Index 634 20 3.834 7.126

MAP 7,10,11,12,13,15 12,14 5,6,7,9,10,11,12,13,15 4,5,7,8,9,10,11,12

Hình 3.6 mơ tả ba lần dịch bit trên K để tách các word, sau đó ánh xạ vào MAP để có vị trí các bit trong các word đã đƣợc định nghĩa trƣớc.

Mệnh đề 3.1. Chỉ số của bit 1 có vị trí thứ i trong đoạn thứ j của word

thứ k thuộc EDBV trên bit-vector là l đƣợc xác định theo cơng thức 3.1:

l = (k-1) × 64 + (j-1)×16 + i (3.1)

Trong đó:

- j là số hiệu đoạn word của block

- i là chỉ số một bit 1 trong đoạn thứ j của block thứ k - k là chỉ số word của EDBV.

Chứng minh:

Dễ thấy trƣớc block thứ k có (k - 1) × 64 bit (do mỗi block tám byte có 64 bit). Tƣơng tự trƣớc đoạn thứ j có (j - 1) × 16 (mỗi đoạn hai byte có 16

bit). Do đó, chỉ số bit 1 thứ i của đoạn thứ j thuộc block k trên bit - vector

đƣợc xác định theo công thức: Index_bit-vector(i) =(k - 1) × 64 +(j - 1)×16 + i 634 20 3.834 7.126 AND 65.535 = 7.126  MAP[7.126] = {4, 5, 7, 8, 9, 10, 11, 12} Bƣớc 1 0 634 20 3.834 AND 65.535 = 3.834 MAP[3.834]={5, 6, 7, 9, 10, 11, 12, 13, 15} Bƣớc 2 0 0 634 20 AND 65.535 = 20  MAP[20] = {12, 14} Bƣớc 3 0 0 0 634 AND 65.535 = 634  MAP[634] = {7, 10, 11, 12, 13, 15}

Ví dụ 3.6: Với số K trong ví dụ 3.5, ta có tập vị trí các bit 1 của K đƣợc xác định nhƣ sau:

Word thứ 4: 7.126 có tập chỉ số {4, 5, 7, 8, 9, 10, 11, 12} {52, 53, 55, 56, 57, 58, 59, 60} do mỗi số đƣợc cộng thêm với (4 - 1) 16 = 48 theo cơng thức 3.1.

Word thứ ba: 3.834 có tập chỉ số {5, 6, 7, 9, 10, 11, 12, 13, 15} {37, 38, 39, 41, 42, 43, 44, 45, 47}, do mỗi vị trí đƣợc cộng thêm (3 - 1) 16 = 32 theo công thức 3.1.

Word thứ hai: 20 có tập chỉ số {12, 14} {20, 22} do mỗi vị trí đƣợc cộng thêm (2 - 1) 16 = 16 theo công thức 3.1.

Word thứ nhất: 634 có tập chỉ số {7, 10, 11, 12, 13, 15} tập này giữ nguyên do đây là word số một nên (j - 1) = 0 với j = 1

Do đó, tập hợp các index bit 1 của K là {7, 10, 11, 12, 13, 15, 20, 22, 37, 38, 39, 41, 42, 43, 44, 45, 47, 52, 53, 55, 56, 57, 58, 59, 60}.

3.3.1.2. Thuật tốn tính nhanh wus của tập mục dựa trên mảng MAP

Tính wus theo cơng thức 1.4 là thao tác thƣờng xuyên trong các bài toán khai thác FWUI. Do đó, địi hỏi phải xác định đƣợc tidset của các tập mục tƣơng ứng. Dựa trên mảng MAP và Mệnh đề 3.1, luận án đề xuất thuật toán xác định nhanh wus của tập mục dựa trên mảng MAP đƣợc trình bày nhƣ

trong hình 3.7.

Thuật tốn 3.4: FAST_ CALCULATION_WUS

Input: EDBV(X)

Output: wus của tập mục X

Methode name: FAST_CALCULATION_WUS()

1 2 3 4

FAST_CALCULATION_WUS(EDBV(X))

for all i EDBV(X) do //xét các word trong EDBV(X)

k = EDBV(X) [i];// lấy word thứ i

t = 3 // dùng để xác định vị trí các đoạn trong k

5 6 7 8 9 10 11 12 13 14 15

m = k &65535;// lấy đoạn thứ t trong k

pos = i × 64 +(t×16);

for all j MAP [m] do// xét danh sách với chỉ số m tidset(X)pos + j;// ánh xạ ra vị trí trên bit-vector

k = k >> 16;// k dịch phải 16 bít

t- - ;// chuyển sang đoạn tiếp theo trên k y = 0;

for all i tidset(X) do

y + = twu [i]; wus = y/sum_twu;

return wus

Hình 3.7. Thuật tốn tính nhanh wus của các tập mục 3.3.2. Tính tidset nút cha từ tidset nút con 3.3.2. Tính tidset nút cha từ tidset nút con

Việc thêm các mục cha vào CSDL khi khai thác tập mục trên CSDL phân cấp theo các phƣơng pháp trƣớc đây làm cho bộ nhớ tăng lên và tốn thời gian quét và chèn dữ liệu. Trong phần này, luận án đề xuất giải pháp tính tidset mục cha thơng qua các mục con của nó trên cây phân cấp - là các mục có trong CSDL gốc.

Mệnh đề 3.2. Tidset của mục cha trên cây phân cấp đƣợc xác định bằng

hợp tidset các mục con của nó ở nút lá.

Nhƣ vậy, tidset(X) = tidset(X1) tidset(X2) ... tidset(Xk). Trong đó X1, X2,..., Xk là các mục con ở nút lá của mục X.

Ví dụ 3.7: Xét CSDL HD, do H là cha của A và D trên cây phân cấp nên

tidset(H) = tidset(A) tidset(D) = {1, 3, 4, 5} {1, 3, 5, 6} = {1, 3, 4, 5, 6}

Chứng minh: Các mục cha thuộc các giao dịch có chứa mục con của nó

ở nút lá, do đó tidset của mục cha sẽ chính là hợp tidset của tất cả tidset các mục con của nó ở nút lá.

Thuật tốn xác định tidset mục cha dựa vào tidset mục con của nó đồng thời tính twu của các giao dịch đƣợc trình bày nhƣ trong Hình 3.8.

Thuật tốn 3.5: CREAT_TIDSET

Input: HQDB HD, minsup

Output: tập L chứa các 1-itemset

- Method name: CREAT_TIDSET()

1 2 3 4 5 6 7 8 9 10 11 12 13 CREAT_TIDSET(Tr) for all t T do twu [t] = 0; L = ; for all i t do

tidset(i) t;// cập nhật tidset cho mục i twu [t] = twu [t] + quantity [i] weight [i];

for all h parent(i) of Tr do

tidset(h) t; //cập nhật tidset cho mục cha của i weight(h) = Fun_weight(weight(h), weight(i)); quantity (h) = Fun_quantity(quantity(h), quantity(i); L h;

for all l L do

twu [t] = twu [t] + quantity(l) weight(l);

Hình 3.8. Thuật tốn xác định tidset các mục và tính twu của các giao dịch

Thuật tốn CREAT_TIDSET() thực hiện nhƣ sau:

Dịng 2, quét lần lƣợt từng giao dịch, dòng 3, 4 gán các giá trị ban đầu

twu của giao dịch t = 0, L = là tập các mục cha có nút con trong giao dịch t.

Dịng 5 xét từng mục trong giao dịch t. Dòng 6, xây dựng tidset của mục i.

Dịng 7 tính twu của giao dịch t đối với mục i (là các mục có sẵn trong

CSDL). Dịng 8, xét các mục cha của mục i. Dòng 9 xây dựng tidset cho mục cha của h, dòng 10 và 11 xác định weight và quantity cho mục h theo các

vào giao dịch t. Dịng 13 và 14, tính twu [t] với các mục cha có nút con trong giao dịch t.

Nhƣ vậy, thuật toán CREAT_TIDSET() chỉ cần một lần quét CSDL đã

xây dựng xong tidset của tất các các mục, đồng thời tính twu của các giao

dịch mà không cần phải thêm các mục cha vào CSDL nhƣ thuật tốn MINE_FWUIs trong Hình 3.4. Bằng việc xác định tidset mục cha thông qua các mục con trong các giao dịch đã bỏ đƣợc công đoạn tiêu tốn nhiều thời gian là quét và thêm các mục cha vào CSDL.

3.3.3. Kiểm tra mối quan hệ cha con đối với các mục trong tập mục

Dòng số 11 trong thuật tốn MINE_FWUIs ở Hình 3.4 có chức năng kiểm tra mối quan hệ cha con của các cặp hai mục trong X - là mục mới tạo

thành từ Fi và Fj, cũng giống nhƣ Vo và các đồng sự [37] đã xét hết tất cả các cặp phần tử trong X với nhau (có tất cả 2 cặp với m là số lƣợng mục của tập mục X). Trong phần này luận án đề xuất phƣơng pháp kiểm tra

nhanh tính cha con của các mục trong tập mục đƣợc tạo thành trên HIT-tree dựa vào Mệnh đề 3.2 nhƣ sau:

Mệnh đề 3.3. Cho Fi = X1X2...XkY1 Fj = X1X2…XkY2 là hai tập mục thuộc hai nút bất kì trong cùng một lớp tƣơng đƣơng trên HIT-tree, tập mục X = Fi Fj = X1X2…XkY1Y2. Ta nói rằng trong X khơng tồn tại hai cặp mục nào

có quan hệ cha con khi và chỉ khi Y1 và Y2 khơng có quan hệ cha con với nhau.

Chứng minh: Thật vậy, Fi = X1X2...XkY1, Fj = X1X2...XkY2 và X = X1X2...XkY1Y2. Do Fi Fj thuộc các nút trên HIT-tree nên không tồn tại cặp mục nào có quan hệ cha con trong Fi và Fj Y1 và Y2 khơng có mối quan hệ cha con với các mục trong tập {X1X2...Xk}. Đồng thời tập mục X1X2...Xk thuộc mục cha của Fi và Fj trên HIT-tree, do đó X1X2…Xk khơng tồn tại mối quan hệ cha con giữa các mục. Do đó, các mục trong X khơng có mối quan hệ cha con khi và chỉ khi cặp {Y1, Y2} khơng có mối quan hệ cha con với nhau trên cây

3.3.4. Thuật toán khai thác nhanh FWUI trên HQDB

Dựa trên các cải tiến đã trình bày ở trên, thuật toán khai thác nhanh FWUI từ HQDB có tên FAST_MINE_FWUIs đƣợc đề xuất trong phần này. Trong đó module ADD_PARENT() đƣợc sử dụng trong thuật tốn

MINE_FWUIs khơng cịn đƣợc sử dụng trong thuật tốn này. Đồng thời cấu trúc EDBV với các phần tử là các LI và việc kiểm tra nhanh mối quan hệ giữa các mục trong tập mục đƣợc thiết lập.

Thuật toán3.6: FAST_MINE_FWUIs

Input: HQDBHD và độ đo minwus Output: HIT-tree chứa tất cả các FWUI Method name: FAST_MINE_FWUIs()

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 FAST_MINE_FWUIs() CREATE_TIDSET(Tr)

F = { i (I J), wus_i minwus}; //tâp 1-itemset thỏa mãn minwus

HIT-tree ;

CREATE_HIT-TREE(F); CREATE_HIT-TREE(F)

P = ; // khởi tạo một lớp mới

for all i F do

for j F (vớij>i)do //duyệt các j sau i

if (Y1 parent(Y2) and Y1 parent(Y2)) then

X = Fi Fj;

T = EDBV(Fi) EDBV(Fj); //T là EDBV của X

wus_X = FAST_CALCULATION_WUS(X);

if (wus_X minwus)then

P = P X, T, wus_X;

HIT-tree = HIT-tree X, T, wus_X;

CREATE_HIT-TREE(P)

Thuật tốn FAST_MINE_FWUIs() trong Hình 3.9 sử dụng thủ tục CREATE_TIDSET() với một lần quét CSDL để xây dựng tidset của các mục

bao gồm cả các mục thuộc mục cha trên cây phân theo Mệnh đề 3.2. Bên cạnh đó, thuật tốn này tính twu của tất cả các giao dịch. Dòng 10 của thuật

tốn MINE_FWUIs() kiểm tra tồn bộ các cặp mục trong tập mục X đƣợc thay bằng dòng 8 trong FAST_MINE_FWUIs() với việc kiểm tra đúng một cặp (Y1,

Y2), trong đóY1, Y2 lần lƣợt là các phần tử cuối cùng của Fi và Fj theo Mệnh đề 3.3. Dòng 12 trong MINE_FWUIs() đƣợc thay thế bằng dòng 10 trong FAST_MINE_FWUIs() với việc sử dụng cấu trúc EDBV thay cho cấu trúc

DBV.

3.4. Kết quả thực nghiệm 3.4.1. CSDL thực nghiệm 3.4.1. CSDL thực nghiệm

CSDL thực nghiệm bao gồm ba CSDL SALE-FACT-1997, SALE-

Một phần của tài liệu (LUẬN án TIẾN sĩ) phát triển một số thuật toán hiệu quả khai thác tập mục trên cơ sở dữ liệu có sự phân cấp các mục (Trang 95)

Tải bản đầy đủ (PDF)

(120 trang)