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

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 98)

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 toá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 toá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- FACT-1997+1998 và SALE-FACT-SYNC đƣợc cho trong bảng 2.7. Đây là các HQDB rút ra từ CSDL Foodmart2000 của SQL2000. Bảng 3.10 mô tả về các CSDL: Bảng 3.10. Mô tả CSDL thực nghiệm Tên CSDL Số lƣợng giao dịch SALE-FACT-1997 20.522 SALE-FACT-1997+1998 54.537 SALE-FACT-SYNC 58.308

Các CSDL có chung cây phân cấp gồm sáu cấp đƣợc trình bày cụ thể trong Bảng 3.11

Bảng 3.11. Các mức trên cây phân cấp

Mức Tên các mức Số lƣợng nút

1 Product_family 3

2 Product_department 24

4 Product_subcategory 56

5 Product_class 110

6 Product 1560

Theo Bảng 3.11 các CSDL thực nghiệm có ba cây phân cấp (mức một có ba nút). Độ cao của cây phân cấp là sáu (có sáu cấp).

3.4.2. Kết quả thực nghiệm 3.4.2.1. So sánh bộ nhớ 3.4.2.1. So sánh bộ nhớ Bảng 3.12. So sánh bộ nhớ và số lƣợng các mục CSDL So sánh MINE_FWUIs FAST_MINE_FWUIs SALE-FACT-1997 Số lƣợng mục 275.539 86.837 Bộ nhớ 13,52 MB 4,65 MB SALE-FACT- 1997+1998 Số lƣợng mục 783.639 251.395 Bộ nhớ 38,16 MB 13,46 MB SALE-FACT-SYNC Số lƣợng mục 840.079 269.720 Bộ nhớ 40,92 MB 14,44 MB

Bảng 3.12 thể hiện việc thêm và không thêm các mục thuộc mục cha trên cây phân cấp giữa hai thuật toán MINE_FWUIs và FAST_MINE_FWUIs. Số lƣợng mục và dung lƣợng bộ nhớ tăng lên đáng kể sau khi thêm các mục cha trên cây phân cấp vào CSDL.

Ví dụ với CSDL SALE-FACT-1997, số lƣợng mục ban đầu là 86.837, sau khi thêm các mục cha là 275.539, nhƣ vậy việc thêm mục cha trên cây phân cấp làm số lƣợng mục tăng 317%. Tƣơng tự nhƣ vậy, dung lƣợng dữ liệu là 4,65 MB, sau khi thêm mục cha là 13,52 MB, nhƣ vậy dung lƣợng dữ liệu tăng 290%.

3.4.2.2. Thực nghiệm với hàm MAX và SUM

Khi sử dụng hàm MAX hoặc SUM để xác định trọng số và số lƣợng của các mục nút cha sẽ có bốn trƣờng hợp có thể xảy ra gồm: (max, max), (max, sum), (sum, sum), (sum, max). Trong đó cặp (max, max) nghĩa là sử dụng

Trong mục này, luận án thống kê số lƣợng và tỉ lệ G-FWUI (Generalized FWUI: là các FWUI chứa ít nhất một mục cha trên cây phân cấp) trên CSDL SALE-FACT-SYNC với 02 ngƣỡng minwus khá nhỏ là 0,001% và 0,003%.

Đồng thời, so sánh số lƣợng và tỉ lệ G-FWUI khai thác đƣợc khi sử dụng cặp hàm (max, max) và (sum, sum) khi xác định trọng số của các mục cha và số lƣợng của các mục cha trong từng giao dịch.

Bảng 3.13. Thực nghiệm trên CSDL SALE-FACT-SYNC

Số cấp

minwus = 0,001% minwus = 0,003%

G-FWUI G-FWUI

(max, max) (sum, sum) (max, max) (sum, sum)

% Số lƣợng % Số lƣợng % Số lƣợng % Số lƣợng 0 1559 102 3 65,57% 4.528 73,99% 5.993 62,3% 818 87,53% 1.719 4 92,84% 21.783 95,48% 34.476 90,50% 4.128 97,52% 6.821 5 98,49% 103.292 99,16% 185.371 97,88% 1.906 99,43% 30.612 6 98,97% 151.435 99,43% 274.248 98,58% 26.580 99,62% 45.827

Số liệu thực nghiệm từ bảng 3.13 với CSDL SALE-FACT-SYNC cho thấy cây có độ cao càng lớn thì số lƣợng các FWUI khai thác đƣợc càng lớn, điều này là hợp lý do càng có nhiều mục cha đƣợc thêm vào CSDL hơn. Tƣơng tự nhƣ thế, số lƣợng G-FWUI cũng đƣợc khai thác nhiều hơn.

So sánh tỉ lệ và số lƣợng G-FWUI khai thác đƣợc khi sử dụng cặp hàm (sum, sum) và (max, max) cũng có sự khác biệt đáng kể, trong đó số lƣợng khi sử dụng cặp hàm (sum, sum) lớn hơn khá nhiều so với cặp hàm (max, max) trong cùng một ngƣỡng phổ biến wus. Ví dụ với wus = 0,003% và cây

phân cấp có sáu cấp, số lƣợng G-FWUI khi sử dụng cặp hàm (max, max) là 26.580, khi sử dụng cặp hàm (sum, sum) là 45.827. Do khi sử dụng cặp hàm (sum, sum) sẽ tạo ra các mục cha có số lƣợng và trọng số lớn hơn khi sử dụng

cặp hàm (max, max), nên các mục nút cha sẽ tạo ra nhiều G-FWUI hơn khi kết hợp với các mục trong CSDL có trọng số và số lƣợng nhỏ. Đây là lý do mà sử dụng cặp hàm (sum, sum) sẽ tạo ra nhiều G-FWUI nhất so với các cặp hàm còn lại.

Tùy theo CSDL thực tế nhƣ thế nào mà việc xác định trọng số hay số lƣợng của các mục nút cha sẽ sử dụng cặp hàm nào trong bốn cặp trên cho phù hợp.

3.4.2.3. So sánh thời gian

Kết quả thực nghiệm trên ba CSDL cho trong Bảng 3.10 với thuật toán MINE_FWUIs khi sử dụng các cấu trúc DBV, MBiS, EDBV và EIWS đƣợc chỉ ra trong các hình 3.10-3.12:

Hình 3.10. So sánh thời gian trên CSDL SALE-FACT-1997

Hình 3.11. So sánh thời gian trên CSDLSALE-FACT-1997+1998 308,02 308,02 234,82 174,82 156,32 000 050 100 150 200 250 300 350 000 000 000 000 000 000 ti me (s ) minwus (%) DBV MBiS EDBV EIWS 2634,16 2228,732 1028,981 899,458 0 500 1000 1500 2000 2500 3000 0.3 0.2 0.1 0.06 0.03 0.01 ti me(s ) minwus(%) DBV MBiS SDBV EIWS

Hình 3.12. So sánh thời gian trên CSDL SALE-FACT-SYNC

Hình 3.10-3.12 so sánh thời gian chạy của bốn cấu trúc DBV, MBiS, EDBV và EIWS với thuật toán MIN_FWUIs. Kết quả thực nghiệm chỉ ra rằng thuật toán MINE_FWUIs hiệu quả nhất khi sử dụng cấu trúc EIWS. Ví dụ, CSDL SALE-FACT-1997, với ngƣỡng minwus = 0,01%, thời gian chạy với DBV, MBiS, EDBV và EIWS lần lƣợt là 308,02s, 234,82s, 174,82s và 156,32s. Nhƣ vậy EIWS nhanh hơn EDBV, MBiS vàDBV lần lƣợt là 1,12; 1,34 và 1,76 lần.

Cũng nhƣ các kết quả thực nghiệm trong chƣơng 2, các cấu trúc IWS và MBiS có hiệu quả trên CSDL thƣờng và CSDL thƣa. Do đó đối với khai thác tập mục phổ biến trên CSDL số lƣợng có sự phân cấp mục cũng có kết quả tƣơng tự. Ngồi ra, ta có thể thấy thời gian khai thác FWUI trên CSDL số lƣợng có sự phân cấp lớn hơn so với trên CSDL số lƣợng thông thƣờng (cùng so sánh trên các CSDL SALE-FACT) do việc thêm các mục nút cha trên cây phân cấp vào CSDL và phải xác định trọng số, số lƣợng cho các mục này. Đồng thời trong q trình khai thác ln phải kiểm tra mối quan hệ cha con

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 98)

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

(120 trang)