Cơ sở dữ liệu giao tác trong khai phát ập mục lợi ích cao

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Các tập mục thường xuyên trong khai phá dữ liệu và ứng dụng (Trang 49)

Mục dữ liệu Lợi nhuận ($/đơn vị) A 3 B 5 C 1 D 3 E 5 Bng 18. Bng li ích các mc d liu

Giá trị khách quan của mục B tại giao tác T02 là o(B,T02) = 12, giá trị chủ

quan của B là s(B) = 5

Lợi ích của mục dữ liệu trong giao tác được đánh giá thông qua hàm 2 biến

Định nghĩa 2.10: Ký hiệu x là giá trị khách quan, y là giá trị chủ quan của mục dữ liệu. Một hàm 2 biến f(x,y): R×RR, đơn điệu tăng theo x và theo y,

được gọi là hàm lợi ích

Thông thường hàm lợi ích được xác định như sau: f(x,y) = x×y

Định nghĩa 2.11: Cho hàm lợi ích f(x,y). Lợi ích của mục ip tại thao tác T, ký hiệu u(ip,Tq) là giá trị của hàm f(x,y) tại o(ip,Tq)s(ip), tức là u(ip,Tq) = f(o(ip,Tq), s(ip)).

Định nghĩa 2.12: Cho tập mục X chứa trong giao tác Tq. Lợi ích của tập mục X tại giao tác Tq, ký hiệu u(X,Tq), là tổng lợi ích của tất cả các mục ip thuộc X tại giao tác Tq, tức là u(X, Tq) = ∑ ∈X i q p p T i u( , ) với X ⊆Tq.

Định nghĩa 2.13: Lợi ích của tập mục X trong cơ sở dữ liệu DB, ký hiệu

u(X), là tổng lợi ích của tập mục tại X tại các giao tác thuộc dbx, tức là:

∑ ∑ ∑ ∈ ∈ ∈ = = x q db q x p T T db i X q p q u i T T X u X u( ) ( , ) ( , ).

Ví dụ, trong cơ sở dữ liệu bảng trên u(B,T02) = 12.5 = 60. Xét X = {B, D}, u(X, T02) = u(B, T02) + u(D,T02) = 12.5+2.3=66, có 2 giao tác T02 và T07 chứa tập mục X.

Định nghĩa 2.14: (transaction utility): Lợi ích của giao tác Tq, ký hiệu

tu(Tq), là tổng lợi ích của tất cả các mục dữ liệu trong giao tác. Tức là

∑ ∈ = q p T i q p q u i T T tu ( ) ( , )

Ví dụ, trong cơ sở dữ liệu bảng trên, tu(T02) = 12.5+2.3+1.5=71.

Định nghĩa 2.15: Ngưỡng lợi ích tối thiểu, ký hiệu δ, là phần trăm của tổng lợi ích của toàn bộ cơ sở dữ liệu.

Từ ngưỡng lợi ích tối thiểu δ, có thể tính giá trị lợi ích tối thiểu minutil như

sau: minutil = δ{ tuT@

`|}

Ví dụ, cơ sở dữ liệu bảng trên có tổng lợi ích là 398, nếu δ= 30% thì giá trị

lợi ích tối thiểu là minutil = 30% * 398 = 119,4.

Để tiện trình bày ở các phần sau, luận văn sử dụng các giá trị lợi ích tối thiểu minutil thay cho ngưỡng phần trăm δ.

Định nghĩa 2.16: Cho ngưỡng lợi ích minutil (>0) và xét tập mục X. X

được gọi là tập mục lợi ích cao nếu u(X)minutil. Trường hợp ngược lại, X

được gọi là tập mục lợi ích thấp.

Định nghĩa 2.17: Cho cơ sở dữ liệu giao tác DB và ràng buộc lợi ích minutil, khai phá tập mục lợi ích cao là tìm tập mục lợi ích HU chứa tất cả các tập mục lợi ích cao, tức là tập HU = {X|X⊆I, u(X) ≥ minutil}

Nhn xét:

- Ràng buộc lợi ích không có tính chất phản đơn điệu, ví dụ trong cơ sở dữ

liệu trên, ta có u(BC) = 62 < 72 = u(BCE), trong khi đó u(BC) = 62 > 0 = u(BCD)

- Có thể coi khai phá tập mục cổ phần cao là trường hợp đặc biệt của khai phá tập mục lợi ích cao khi tất cả các mục dữ liệu đều có giá trị chủ quan bằng 1. Nếu giá trị các mục dữ liệu trong các giao tác là 0 hoặc 1 và tất cả các giá trị

chủ quan bằng 1 thì ta gặp lại mô hình dữ liệu của khai phá tập mục thường xuyên.

- Về mặt ngữ nghĩa, tập mục lợi ích cao khác với tập mục thường xuyên, dù có khai phá trên tập dữ liệu nhị phân với ngưỡng lợi ích minutil bằng ngưỡng

độ hỗ trợ minsup thì kết quả khai phá cũng khác nhau, các tập mục tìm được có ý nghĩa khác nhau. Như vậy, phát triển mở rộng bài toán khai phá tập mục thường xuyên thành bài toán khai phá tập mục cổ phần cao và khai phá tập mục lợi ích cao không đơn thuần là mở rộng dữ liệu mà là thay đổi nhiệm vụ khai phá, khai phá với nhiệm vụ mới và kết quả các tập mục tìm được có các ứng dụng mới.

II.3.2. Khai phá tp mc li ích cao

Cho cơ sở dữ liệu giao tác và bảng lợi ích, ngưỡng lợi ích minutil, nếu giá trị ip trong mỗi giao tác được thay thành o(ip, Tq) * s(ip) thì nhiệm vụ khai phá lợi ích cao trở thành khai phá cổ phần cao với min_lmv = minutil.

TID A B C D E T01 0 60 2 0 10 T02 0 60 0 6 5 T03 6 0 1 0 5 T04 3 0 0 6 5 T05 0 0 4 0 10 T06 3 10 0 0 0 T07 0 100 0 6 5 T08 9 0 25 18 5 T09 3 10 0 0 0 T10 0 0 16 0 5

Tính cht toán hc ca ràng buc li ích. Ký hiệu

- Xk là k-tập mục (tập mục có k mục phân biệt)

- Lk-1 là tập tất cả các tập con có k-1 mục của tập Xk, tức là: Lk-1 = {Xk-1| Xk-1 ⊂ Xk}

Định nghĩa 2.18: Hàm lợi ích không âm là hàm f(x,y): (R,R)R+, ở đó R là tập số thực, R+ là tập số thực không âm

Chú ý: hàm f1(x,y) với miền giá trị [-n,m] với n≥0,m≥0 có thể chuyển đổi thành hàm không âm bằng cách thêm n vào tất cả các giá trị của hàm. Cũng như

vậy hàm không dương f2(x,y) ≤ 0 có thể chuyển đổi thành hàm không âm bằng cách lấy giá trị tuyệt đối của nó. Do vậy kết quả nhận được cho hàm không âm cũng có thể áp dụng cho các hàm f1 và f2

Định lý 2.4: (cận trên của lợi ích). Cho k-tập mục với Xk, u(Xk) là lợi ích của Xk tính trên hàm lợi ích không âm. Khi đó

1 ) ( ) u(X 1 1 1 k − ≤ ∑ − − ∈ − k X u k k L X k

Định lý này là một tính chất quan trọng của ràng buộc lợi ích, nó cho biết lợi ích của k-tập mục Xkđược giới hạn bởi lợi ích của tất cả các tập mục con có (k-1) mục của nó.

Các thuật toán khai phá tập mục lợi ích cao như Umining, UminingH sử

dụng tính chất trên để tỉa các tập ứng viên.

Y. Liu đưa ra khái niệm lợi ích của một tập mục tính theo lợi ích của các giao tác chứa nó, gọi là lợi ích TWU.

Định nghĩa 2.19: (Transaction Weighted Utility - TWU) Lợi ích TWU của tập mục X, ký hiệu twu(X), là tổng lợi ích của tất cả các giao tác chứa X trong cơ sở dữ liệu, tức là

~() = ()

∈∧ ⊆

Nhn xét:

u(X,Tq) tu(Tq) nên u(X) twu(X). Có thể coi twu(X) như là cận trên của u(X). Với ngưỡng lợi ích minutil, nếu X là tập mục lợi ích cao thì X cũng là tập mục lợi ích TWU cao. Ngược lại nếu X là tập mục lợi ích TWU thấp thì X cũng là tập mục lợi ích thấp.

Trong [6] Y. Liu đã chứng minh:

- Ràng buc li ích TWU có tính cht phn đơn điu, tc là: Mi tp mc cha ca tp mc li ích TWU thp cũng là tp mc li ích thp. Do vậy, nếu X là tập mục mục lợi ích TWU thấp, twu(X) < minutil, thì tập X và mọi tập cha của X đều là tập mục lợi ích thấp và có thể loại bỏ chúng trong quá trình khai phá tập mục lợi ích cao.

- Tp các tp mc li ích cao cha trong tp các tp mc li ích TWU cao.

Điều này có nghĩa là, nếu ta tìm được tập các tập mục lợi ích TWU cao thì ta chỉ cần tìm các tập mục lợi ích cao trong tập đó.

Do tập mục lợi ích TWU cao có tính chất phản đơn điệu nên có thể sử

dụng các phương pháp khai phá của tập mục thường xuyên để tìm các tập mục lợi ích cao. Tác giả sử dụng ý tưởng của thuật toán FSM để khai phá tập mục lợi ích cao với tính chất phản đơn điệu của tập mục lợi ích TWU cao.

Thuật toán FSM đã được trình bày ở phần trước, dưới đây là một dạng của thuật toán FSM thay vì sử dụng hàm tới hạn CF(X) để tỉa các tập ứng viên thì thuật toán này sử dụng tính chất tập mục lợi ích TWU thấp để tỉa các tập ứng viên.

II.3.3. Thut toán khai phá tp mc li ích cao

Dựa trên ý tưởng của thuật toán FSM, thay phương pháp tỉa các ứng viên không thỏa mãn điều kiện ta có thuật toán khai pháp tập mục lợi ích cao. Hàm Apriori-join dùng để sinh tập ứng viên Ck dựa trên tập mục Lk-1

Apriori-join

(1) For (each (k-1)-tp mc l1 Lk-1

(2) For(each(k-1)-tp mc l2 Lk-1) do

(3) if(l1[1] = l2[1] and l1[2] = l2[2] and … and l1[k-2] = l2[k-2] and l1[k-1] < l2[k-1]) then

(4) Ck { l1[1], l1[2], …, l1[k-2], l1[k-1], l2[k-1]}; //Kết np k-tp mc mi vào Ck

II.3.4. Mô t thut toán

k:=1, F1:=, C1:=I;

for each T DB //duyt cơ s d liu DB

tính giá tr u((ip) và twu(ip) ca các mc ip trong C1; for each ipC1

if u(ip) min_util then HS1:=HS1{ip}

else if twu(ip)<min_util then C1:=C1\{ip};

RC1:=C1; repeat

Begin

For each Xp, XqRCk-1

Ck:=Apriori_join(Xp, Xq);

For each TDB // duyt Cơ s d liu DB

Tính giá tr ca u(X) và twu(X) ca các ng viên X trong Ck; For each XCk If u(X)min_util HSk:= HSk {X} Else if twu(X)<min_util Ck:= Ck-{X}; RCk:=Ck; End Until Ck=; Return HS= HSk;

Dựa trên thuật toán FSM khai phá các tập mục cổ phần cao. Thuật toán FSM sử dụng hàm tới hạn CF(X) để tỉa bớt các tập ứng viên có ngưỡng cổ phần thấp hơn minShare cho trước thì thuật toán này sử dụng hàm twu(X) để tỉa bớt các tập ứng viên có lợi ích thấp hơn lợi ích minuitl cho trước.

Ngoài ra có rất nhiều thuật toán khai phá tập mục lợi ích cao hiệu quả hơn bằng thuật toán này sử dụng phương pháp khai phá dữ liệu dựa trên thuật toán FP-Growth đã được trình bày ở Chương I.

III.CÀI ĐẶT ỨNG DỤNG THỬ NGHIỆM KHAI PHÁ TẬP MỤC LỢI ÍCH CAO PHÁ TẬP MỤC LỢI ÍCH CAO

Kết quả thực hiện thuật toán khai phá tập mục lợi ích cao sử dụng thuật toán trình bày trong mục khai phá tập mục lợi ích cao dựa trên ý tưởng của thuật toán FSM. Thuật toán được cài đặt bằng Visual Studio 2008, ngôn ngữ cài đặt là C#. Kết quả được thực hiện trên máy có cấu hình Pentium Core 2 Duo E7500, 2GB DDR3 SDRAM, hệ điều hành Windows 7. Dữ liệu chạy chương trình được sinh ngẫu nhiên với số lượng bản ghi và số lượng mục dữ liệu tùy ý. Dữ liệu được lưu trong file Excel nằm trong thư mục Database của chương trình.

Một số kết quả giao diện chạy chương trình

File Excel chứa dữ liệu gồm 4 sheets có tên tương ứng là HUI, Utility, Profit, twu.

Giao din 1. Sheet HUI, d liu được sinh bi chương trình

Giao diện chương trình chính

Giao din 3. Giao din chương trình chính

Trong giao diện chương trình chính có nút Generator để sinh dữ liệu vào sheet HUI, nút Run để thực hiện chương trình với dữ liệu đã được sinh vào sheet HUI trong file Excel và ngưỡng lợi ích được nhập.

Giao din 4. Kết qu thc hin vi ngưỡng li ích 30%

Trong phần kết quả, ta nhìn thấy có một giá trịđứng trước ký tự “$”, đó là giá trị minutil được tính theo định nghĩa trong mục khai phá dữ liệu lợi ích cao trong chương II.

Chuỗi ký tự tiếp theo là các tập mục thường xuyên lợi ích cao với ngưỡng lợi ích 30%. Các tập mục này được ngăn cách nhau bởi dấu “,” còn ký tự “-” để

tách các mục dữ liệu trong tập mục.

Với cơ sở dữ liệu giao tác và bảng lợi ích, dựa vào thuật toán khai phá tập mục lợi ích cao như sau:

k = 1;

C1 = {I1, I2, I3, I4, I5}

u(I1) = (11 + 7 + 7 + 7)*3 = 96; u(I2) = (18 + 7 + 8) * 4 = 132; u(I3) = (10 + 18 + 2) * 5 = 150; u(I4) = (2 + 2 + 18) * 1 = 22; u(I5) = (11 + 9 + 6 + 5) * 2 = 62; tu(T0) = 11*3 + 18*4 + 10*5 + 2*1 + 11*2 = 179; tu(T1) = 7*3 + 7*4 + 18*5 + 2*1 + 9*2 = 159;

tu(T2) = 7*3 + 6*2 = 33;

tu(T3) = 7*3 + 8*4 + 2*5 = 63; tu(T4) = 18*1 + 5*2 = 28;

minutil = 30*(179 + 159 + 33 + 63 + 28) / 100 = 138,6

twu(I1) = tu(T0) + tu(T1) + tu(T2) + tu(T3) = 179 + 159 + 33 + 63 = 434 twu(I2) = tu(T0) + tu(T1) + tu(T3) = 179 + 159 + 63 = 401

twu(I3) = tu(T0) + tu(T1) + tu(T3) = 179 + 159 + 63 = 401 twu(I4) = tu(T0) + tu(T1) + tu(T4) = 179 + 159 + 28 = 366

twu(I5) = = tu(T0) + tu(T1) + tu(T3) + tu(T4) = 179 + 159 + 63 + 28 = 399

Vì tất cả các twu(Ip) > minutil nên không loại bỏ mục nào trong Ck

Ta thấy u(I3) = 150 > minutil = 138,6 nên {I3} là 1-tập mục lợi ích cao, còn lại các tập mục I1, I2, I4, I5 có lợi ích < minutil nên không phải là tập mục lợi ích cao.

Xét tiếp với k= 2

Sinh tập ứng viên trong Ck bằng cách dùng thuật toán Apriori_join để nối 2 tập mục Lk-1 với nhau khi có k-2 tập mục đầu tiên bằng nhau, ta được

C2 = {I1-I2, I1-I3, I1-I4, I1-I5, I2-I3, I2-I4, I2-I5, I3-I4, I3-I5, I4-I5} u(I1-I2) = (11 + 7 + 7)*3 + (18 + 7 + 8)*4 = 207

u(I1-I3) = (11 + 7 + 7)*3 + (10 + 18 + 2)*5 = 225

u(I1-I4) = (11 + 7)*3 + (2 + 2)*1 = 58

u(I1-I5) = (11 + 7 + 7)*3 + (11 + 9 + 6)*2 = 127 u(I2-I3) = (18 + 7 + 8)*4 + (10 + 18 + 2)*5 = 282

u(I2-I4) = (18 + 7)*4 + (2 + 2)*1 = 104

u(I2-I5) = (18 + 7)*4 + (11 + 9)*2 = 140 u(I3-I4) = (10 + 18)*5 + (2 + 2)*1 = 144 u(I3-I5) = (10 + 18)*5 + (11 + 9)*2 = 180

u(I4-I5) = (2 + 2)*1 + (11 + 9)*2 = 44 twu(I1-I2) = tu(T0) + tu(T1) + tu(T3) = 401

twu(I1-I3) = tu(T0) + tu(T1) + tu(T3) = 401 twu(I1-I4) = tu(T0) + tu(T1) = 338

twu(I1-I5) = tu(T0) + tu(T1) + tu(T3) = 401

twu(I2-I3) = tu(T0) + tu(T1) + tu(T3) = 401 twu(I2-I4) = tu(T0) + tu(T1) = 338

twu(I2-I5) = tu(T0) + tu(T1) = 338 twu(I3-I4) = tu(T0) + tu(T1) = 338 twu(I3-I5) = tu(T0) + tu(T1) = 338

twu(I4-I5) = tu(T0) + tu(T1) + u(T4) = 361

Trong tất cả 2-tập mục thuộc C2 không có tập mục nào có twu(X) < minutil nên ta không tỉa tập ứng viên nào.

Các tập mục {I1-I2}, {I1-I3}, {I2-I3}, {I2-I5}, {I3-I4}, {I3-I5} có u(X) > minutil nên các 2-tập mục này là tập mục lợi ích cao.

k=3

C3 = {I1-I2-I3, I1-I2-I4, I1-I2-I5, I1-I3-I4, I1-I3-I5, I1-I4-I5, I2-I3-I4, I2- I3-I5, I3-I4-I5}

u(I1-I2-I3) = (11 + 7 + 7)*3 + (18 + 7 + 8)*4 + (10 + 18 + 2)*5 = 357 u(I1-I2-I4) = (11 + 7)*3 + (18 + 7)*4 + (2 + 2)*1 = 158 u(I1-I2-I5) = (11 + 7)*3 + (18 + 7)*4 + (11 + 9)*2 = 194 u(I1-I3-I4) = (11 + 7)*3 + (10 + 18)*5 + (2 + 2)*1 = 198 u(I1-I3-I5) = (11 + 7)*3 + (10 + 18)*5 + (11 + 9)*2 = 234 u(I1-I4-I5) = (11 + 7)*3 + (2 + 2)*1 + (11 + 9)*2 = 98 u(I2-I3-I4) = (18 + 7)*4 + (10 + 18)*5 + (2 + 2)*1 = 244 u(I2-I3-I5) = (18 + 7)*4 + (10 + 18)*5 + (11 + 9)*2 = 280 u(I3-I4-I5) = (10 + 18)*5 + (2 + 2)*1 + (11 + 9)*2 = 184

twu(I1-I2-I3) = tu(T0) + tu(T1) + tu(T3) = 401 twu(I1-I2-I4) = tu(T0) + tu(T1) = 338

twu(I1-I2-I5) = tu(T0) + tu(T1) = 338 twu(I1-I3-I4) = tu(T0) + tu(T1) = 338 twu(I1-I3-I5) = tu(T0) + tu(T1) = 338

twu(I1-I4-I5) = tu(T0) + tu(T1) = 338 twu(I2-I3-I4) = tu(T0) + tu(T1) = 338

twu(I2-I3-I5) = tu(T0) + tu(T1) = 338 twu(I3-I4-I5) = tu(T0) + tu(T1) = 338

Các tập mục trong C3 đều có twu(X) > minutil = 138,6 nên không loại bỏ

Các tập mục trong C3 chỉ có tập mục {I1-I4-I5} có u(X) = 98 < minutil = 138,6 nên tập {I1-I4-I5} không phải là tập mục lợi ích cao. Ngoài ra tất cả các tập mục còn lại trong C3đều là tập mục lợi ích cao.

k=4

C4 = {I1-I2-I3-I4, I1-I2-I3-I5, I1-I2-I4-I5, I1-I3-I4-I5, I2-I3-I4-I5}

u(I1-I2-I3-I4) = (11 + 7)*3 + (18 + 7)*4 + (10 + 18)*5 + (2 + 2)*1 = 298

u(I1-I2-I3-I5) = (11 + 7)*3 + (18 + 7)*4 + (10 + 18)*5 + (11 + 9)*2 = 334 u(I1-I3-I4-I5) = (11 + 7)*3 + (10 + 18)*5 + (2 + 2)*1 + (11 + 9)*2 = 238 u(I2-I3-I4-I5) = (18 + 7)*4 + (10 + 18)*5 + (2 + 2)*1 + (11 + 9)*2 = 288

twu(I1-I2-I3-I4) = tu(T0) + tu(T1) = 338 twu(I1-I2-I3-I5) = tu(T0) + tu(T1) = 338

twu(I1-I3-I4-I5) = tu(T0) + tu(T1) = 338 twu(I2-I3-I4-I5) = tu(T0) + tu(T1) = 338

Tất cả các 4-tập mục trong C4 đều có twu(X) > minutil nên không có tập mục nào bị tỉa.

Tất cả các 4-tập mục trong C4đều có u(X) > minutil nên đều là tập mục lợi ích cao.

k = 5

C5 = {I1-I2-I3-I4-I5} u(I1-I2-I3-I4-I5) =

(11+7)*3 + (18 + 7)*4 + (10 + 18)*5 + (2 + 2)*1 + (11 + 9)*2 = 342 twu(I1-I2-I3-I4-I5) = tu(T0) + tu(T1) = 338

k = 6

C6 = ∅ thuật toán dừng.

Kết hợp tất cả các tập mục lợi ích cao lại ta có kết quả đạt được

High Utility Frequent ItemSets = {I3} ∪ {I1,I2} ∪ {I1,I3} ∪ {I2,I3} ∪

{I2,I5} ∪ {I3,I4} ∪ {I3,I5} ∪ {I1,I2,I3} ∪ {I1,I2,I4} ∪ {I1,I2,I5} ∪ {I1,I3,I4}

∪ {I1,I3,I5} ∪ {I2,I3,I4} ∪ {I2,I3,I5} ∪ {I3,I4,I5} ∪ {I1,I2,I3,I4} ∪

{I1,I2,I3,I5} ∪ {I1,I2,I4,I5} ∪ {I1,I3,I4,I5} ∪ {I2,I3,I4,I5} ∪ {I1,I2,I3,I4,I5}

Nhìn vào giao diện 4. Kết quả trong hiển thị trong TextBox hoàn toàn trùng khớp với dữ liệu đã cho.

Do thời gian có hạn nên tác giả chưa cài đặt được thuật toán khai pháp tập mục thường xuyên cổ phần cao và thuật toán khai phá tập mục thường xuyên. Trong luận văn này mới chỉ chương trình ứng dụng được cài đặt bằng thuật toán chưa hiệu quả bằng các thuật toán áp dụng cấu trúc cây COFI-tree đã trình bày trong chương I. Tác giả hy vọng thời gian sau này có thể nghiên cứu để cải tiến các thuật toán khai phá tập mục thường xuyên hiệu quả hơn.

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Các tập mục thường xuyên trong khai phá dữ liệu và ứng dụng (Trang 49)

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

(67 trang)