Bài toán 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ĩ) tìm hiểu một số thuật toán khai phá tập mục lợi ích cao và ứng dụng (Trang 35)

Bài toán truyền thống khai phá luật kết hợp do R. Agrawal, T. Imielinski và A. N. Swami đề xuất lần đầu tiên vào năm 1993 [3] đã được nhiều nhà nghiên cứu quan tâm. Mục đích của nó là phát hiện các tập mục phổ biến, từ đó tạo các luật kết hợp. Bài toán truyền thống này có nhiều ứng dụng, tuy vậy do tập mục phổ biến chỉ mang ngữ nghĩa thống kê nên mô hình bài toán này chỉ đáp ứng được phần nào nhu cầu ứng dụng thực tiễn. Người kinh doanh quản lý quan tâm nhiều hơn đến việc phát hiện những khách hàng đem lại lợi nhuận cao.

Trong thực tế, có những nhóm mặt hàng có thể bán được rất ít nhưng mang lại lợi ích lớn, ngược lại có những nhóm mặt hàng phổ biến bán được nhưng lợi ích mang lại không cao. Gần đây, nhằm khắc phục hạn chế của bài toán cơ bản khai phá luật kết hợp, người ta đã mở rộng nó theo nhiều hướng khác nhau. H. Yao, H. J. Hamilton và cộng sự đã đề xuất bài toán khai phá tập mục lợi ích cao [9][10]. Lợi ích của một tập mục là số đo lợi nhuận mà nó có thể mang lại trong kinh doanh, được tính toán dựa trên giá trị khách quan và giá trị chủ quan của các mục thành viên. Giá trị khách quan của một mục là số

đơn vị mục bán được, dữ liệu này có sẵn trong cơ sở dữ liệu. Giá trị chủ quan của một mục là giá trị lợi nhuận mà mỗi đơn vị mục có thể đem lại, theo đánh giá của nhà kinh doanh. Khai phá tập mục lợi ích cao là khám phá tất cả tập mục X đem lại lợi ích u(X) ≥ δ, trong đó δ là ngưỡng quy định bởi người sử dụng.

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

Các thuật toán khám phá tập mục phổ biến được xây dựng theo phương pháp tìm kiếm từng bước. Cơ sở của các thuật toán này là tính chất Apriori hay còn gọi là tính chất phản đơn điệu (anti monotone) của tập mục phổ biến. Tính chất đó là “tập con khác rỗng của một tập mục phổ biến phải là tập phổ biến”. Điều này có nghĩa các (k+1)-tập mục phổ biến chỉ có thể sinh ra từ các k-tập mục phổ biến. Tính chất Apriori cho phép loại bỏ được các tổ hợp mục không phổ biến ra khỏi không gian tìm kiếm tại mỗi bước. Đáng tiếc là các tập mục lợi ích cao không thỏa mãn tính chất Apriori. Do đó, việc rút gọn không gian tìm kiếm, phát hiện tập mục lợi ích cao không thể thực hiện được như trong khai phá tập mục phổ biến.

2.1.1 Các khái niệm liên quan đến khai phá tập mục lợi ích cao

Phần này nêu một số định nghĩa và thuật ngữ mô tả bài toán khai phá tập mục lợi ích cao [9] [10].

Cho tập các mục (item) I = {i1,i2,…,in}. Một giao tác (transaction) T là

một tập con của I, T I. Cơ sở dữ liệu là một tập các giao tác DB={T1,T2,…,Tm}. Mỗi giao tác được gán một định danh tid. Một tập mục con X I, gồm k mục phân biệt được gọi là một k-tập mục. Giao tác T gọi là chứa

Định nghĩa 2.1:

Ta gọi giá trị của mục ip trong giao tác Tq ( giá trị tại cột ip hàng Tq của cơ sở dữ liệu) là giá trị khách quan (objective value) của mục ip tại giao tác Tq, ký hiệu là o(ip,Tq).

Thông thường giá trị khách quan của mục dữ liệu là số tự nhiên (như số lượng đã bán của một mặt hàng trong giao tác).

Định nghĩa 2.2:

Ta gọi giá trị do nhà kinh doanh gán cho mục ip trong cơ sở dữ liệu, dựa trên đánh giá lợi nhuận mà mỗi đơn vị mục dữ liệu có thể đem lại, là giá trị chủ quan (subjective value) của mục ip và ký hiệu là s(ip).

Giá trị chủ quan của các mục thường được cho trong một bảng kèm theo cơ sở dữ liệu và gọi là bảng lợi ích (utility table). Chẳng hạn, cơ sở dữ liệu các giao tác và bảng lợi ích ở bảng 2.1 và bảng 2.2, giá trị khách quan của mục B tại giao tác T2 là o(B,T2)=8, giá trị chủ quan của B là s(B)=4.

Bảng 2.1: Cơ sở dữ liệu giao tác

TID A B C D E T1 0 0 16 0 1 T2 0 12 0 2 1 T3 1 0 1 0 1 T4 1 0 0 2 1 T5 0 0 4 0 2 T6 1 2 0 0 0 T7 0 20 0 2 1 T8 3 0 25 6 1 T9 1 2 0 0 0 T10 0 12 2 0 2

Bảng 2.2: Bảng lợi ích

Mục dữ liệu Lợi nhuận ($/đơn vị)

A 3

B 5

C 1

D 3

E 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 sau:

Định nghĩa 2.3: 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):RxR→R, đơ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 x y

Định nghĩa 2.4:

Cho hàm lợi ích f(x,y). Lợi ích của mục ip tại giao tác Tq, ký hiệu u(ip, Tq)

là giá trị của hàm f(x,y) tại o(ip, Tq) và s(ip), tức là: u(ip, Tq)=f(o(ip, Tq), s(ip)).

Định nghĩa 2.5:

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)= ∑𝑖𝑝∈𝑋𝑢(𝑖𝑝, 𝑇𝑞) với X Tq.

Định nghĩa 2.6:

Lợi ích của tập mục X trong cơ sở dữ liệu DB, ký u(X), là tổng lợi ích

của tập mục X tại các giao tác thuộc dbX , tức là: u(X)= ∑𝑇𝑞∈𝑑𝑏x𝑢(𝑋, 𝑇𝑞)=∑𝑇𝑞∈𝑑𝑏x∑𝑖𝑝∈𝑋𝑢(𝑖𝑝, 𝑇𝑞)

Ví dụ: trong cơ sở dữ liệu bảng 2.1 và bảng 2.2, u(B,T2)=8x4=32, xét X={B,D}, u(X,T2) = u(B,T2)+ u(D,T2)=8x4+2x2=36, có 2 giao tác T2T7

chứa tập mục X, do đó dbx={ T2, T7}, u(X)= u(X,T2)+ u(X,T7)= 36+74=110.

Định nghĩa 2.7: (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à:

tu(Tq)=u(Tq, Tq)= ∑𝑖𝑝∈𝑇𝑞𝑢(𝑖𝑝, 𝑇𝑞)

Ví dụ, trong cơ sở dữ liệu bảng 2.1 và bảng 2.2, tu(T2)=8x4+2x2+1x4=40

Định nghĩa 2.8: 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= δ. ∑𝑇𝑞∈𝐷𝐵𝑡𝑢(𝑇𝑞)

Ví dụ, cơ sở dữ liệu bảng 2.1 và bảng 2.2 có tổng lợi ích là 282, nếu δ=30% thì lợi ích tối thiểu là:

Minutil= δ. ∑𝑇𝑞∈𝐷𝐵𝑡𝑢(𝑇𝑞)= 30% x 282 = 84,6.

Định nghĩa 2.9: 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.

2.1.2 Bài toán khai phá tập mục lợi ích cao:

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 HU(High Utility), 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 }

Nhận 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 bảng 2.1, ta có u(BC)=43<51=u(BCE), trong khi đó

- Về mặt ngữ nghĩa, tập mục lợi ích cao khác với tập mục phổ biế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 phổ biến thành bài toán khai phá tập mục lợi ích cao không đơn thuần là mở rộng kiểu 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.

Định lý 2.1: (cận trên của lợi ích). Cho k-tập mục Xk, u(Xk) là lợi ích của Xk

tính trên hàm lợi ích không âm. Khi đó:

u(Xk) ≤ ∑ 𝑢(𝑋

𝑘−1)

𝑋𝑘−1∈ 𝐿𝑘−1

𝑘−1

Ví dụ : X4 = ABCD, L3 = {ABC, ABD, ACD, BCD}, theo định lý ta có: u(ABCD) ≤ 𝑢(𝐴𝐵𝐶)+ 𝑢(𝐴𝐵𝐷)+ 𝑢(𝐴𝐶𝐷)+ 𝑢(𝐵𝐶𝐷)

3

Định lý 2.1 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ó.

2.2 Thuật toán Hai pha 2.2.1 Cơ sở lý thuyết 2.2.1 Cơ sở lý thuyết

Trong [7], 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 (Transaction Weighted Utility).

Định nghĩa 2.10: (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

CSDL, tức là:

twu(X) = ∑𝑇𝑞 ∈ 𝐷𝐵 ∧ 𝑇𝑞 ⊇𝑋 𝑡𝑢(𝑇𝑞) Nhận xét: vì 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 vì twu(X) ≥

u(X)≥ minutil , 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.

- Ràng buộc lợi ích TWU có tính chất phản đơn điệu, tức là: Mọi tập mục cha của tập mục lợi ích TWU thấp cũng là tập mục lợi ích TWU thấp. Do vậy, nếu X là tập 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, có thể loại bỏ chúng trong quá trình khai phá tập mục lợi ích cao.

- Tập các tập mục lợi ích cao chứa trong tập các tập mục lợi í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 phổ biến để tìm các tập mục lợi ích TWU cao.

2.2.2 Các bước thực hiện của thuật toán Hai pha

Thuật toán gồm hai pha [7]:

Pha thứ 1. Tìm tất cả các tập mục có lợi ích theo giao tác cao với ngưỡng

minutil

Pha thứ 2. Phát hiện tất cả các tập mục lợi ích cao trong số các tập mục

có lợi ích theo giao tác cao.

Khi đã khám phá được tập tất cả các tập mục có lợi ích theo giao tác thì việc duyệt các tập mục lợi ích cao trong số các tập mục này là rất đơn giản, chỉ cần duyệt CSDL một lần duy nhất.

Thuật toán Hai pha: Tìm tất cả các tập mục lợi ích cao với ngưỡng cho trước Input: CSDL giao tác DB, hàm lợi ích f, ngưỡng lợi ích minutil.

Output: Tập H bao gồm các tập mục lợi ích cao. Method:

1. for mỗi giao tác T ∈ DB

2. Tính lợi ích tu(T) 3. end for ;

// Pha thứ 1: Phát hiện các tập mục lợi ích theo giao tác cao.

4. k=1;

5. WHk = {i / i I and twu(i) ≥ minutil };

//Phát hiện 1-tập mục có lợi ích theo giao tác.

6. repeat

7. k = k+1;

8. Ck = apriori_gen(WHk-1);// Tạo các tập mục ứng viên.

9. for mỗi giao tác T ∈ DB do

10. Ct = subset(Ck, T) ; //Nhận diện các ứng viên thuộc T.

11. for mỗi ứng viên c ∈ Ct do 12. twu(c) = twu(c) + tu(T);

// Cộng thêm lợi ích của giao tác T vào lợi ích theo giao tác của c.

13. end for; 14. end for;

15. WHk = {c/c ∈ Ck twu(c) ≥ minutil}

//Tuyển chọn các k-tập mục có lợi ích theo giao tác cao.

16. until Ck = ∅; 17. WH = WHk ;

// Pha thứ 2: Phát hiện tập mục lợi ích cao.

18. for mỗi giao tác T ∈ DB do

19. Ct = subset(WH, T) ;

//Nhận diện các tập mục có lợi ích theo giao tác cao thuộc T.

20. For mỗi ứng viên s ∈ Ct do 21. u(s)=u(s)+u(s,T);

//Cộng thêm lợi ích của c tại giao tác T vào lợi ích của s.

22. end for; 23. end for ;

24. H={s / s ∈ WH ∧ u(s) ≥ minutil}; //Lọc các tập mục lợi ích cao. Thuật toán Hai pha sử dụng hàm apriori_gen(WHk-1) (bước 8) hoàn toàn

giống như hàm Apriori_gen(Fk-1) trong thuật toán Apriori khai phá tập mục phổ

biến. Nó tạo ra các k-tập mục ứng viên tại bước k bằng cách kết nối các (k-1)- tập mục có lợi ích theo giao tác cao đã tìm được ở bước (k-1), (với giả thiết các tập mục đã được sắp thứ tự từ điển).

Thuật toán Apriori_gen(). Tạo Ck các tập mục ứng viên có lợi ích theo giao tác cao.

Input: Tập các (k-1)- tập mục lợi ích theo giao tác cao WHk-1 Output: Tập các k- tập mục ứng viên Ck

Method:

// Bước nối

1. For (each (k-1) - tập mục S1 WHk-1) do 2. For (each (k-1) - tập mục S2 ∈ WHk-1) do

3. if (S1[1] = S2[1]) and (S1[2] = S2[2]) and ….. and (S1[k-2] = S2[k-2]) and (S1[k-1] < S2[k-1]) then 4. Ck ← {S1[1], S1[2], … S1[k-2],S2[k-1]}; 5. end for; 6. end for; // Bước tỉa cắt 7. for each tập mục ci Ck do 8. for each (k-1)–tập mục s ⊂ ci do 9. if (s ∉ WHk-1) then 10. loại ci khỏi Ck 11. end for; 12. Return Ck; Ví dụ: Xét CDSL cho trong bảng 2.1 và bảng 2.2

Bảng 2.1: CSDL giao tác TID A B C D E T1 0 0 16 0 1 T2 0 12 0 2 1 T3 1 0 1 0 1 T4 1 0 0 2 1 T5 0 0 4 0 2 T6 1 2 0 0 0 T7 0 20 0 2 1 T8 3 0 25 6 1 T9 1 2 0 0 0 T10 0 12 2 0 2 Bảng 2.2: bảng lợi ích

Mục dữ liệu Lợi nhuận ($/đơn vị)

A 3

B 5

C 1

D 3

E 5

Hàm lợi ích f(x,y) = x x y, minutil = 130.

Thuật toán Hai pha thực hiện việc phát hiện các tập mục lợi ích cao trong CSDL này như sau:

Các dòng lệnh 1-3 cho tu(t1) =21, tu(t2) = 71, tu(t3) = 12, tu(t4) = 14, tu(t5)

= 14, tu(t6) = 13, tu(t7) = 111, tu(t8) = 57, tu(t9) = 13, tu(t10) = 72.

Các dòng lệnh 4-16 cho:

Bước k= 1. C1 = {A, B, C, D, E}, twu(A) = 109, twu(B)=280, twu(C)=176, twu(D)= 253, twu(E)=372, WH={B,C, D, E}

Bước k=2. C2 ={BC, BD, BE, CD, CE, DE}. twu(BC)=72, twu(BD)=182, twu(BE)= 254, twu(CD)= 57, twu(CE)=176, twu(DE)=253, WH2={BD,BE, CE, DE};

Bước k=3. C3 ={BDE}. twu(BDE) = 182, WH3={BDE}. Pha 1 kết thúc chỉ sau 3 bước, (vì C4 = ∅)

Ta nhận được WH={B, C, D, E, BD, BE, CE, DE, BDE}.

Pha 2:

Các dòng lệnh 18-23 cho u(B)= 240, u(C)=48, u(D)=36, u(E)=50, u(BD)=172, u(BE)=240, u(CE)=83, u(DE)=56, u(BDE)=182. Dòng lệnh 24 cho H = {B, BD, BE, BDE}. Hình 2.1 dưới đây mô tả không gian tìm kiếm tập mục lợi ích cao trong CSDL bảng 2.1 theo thuật toán Hai pha. Các tập mục đánh dấu 2 sao là tập mục lợi ích cao tìm được.

Hình 2.1: không gian tìm kiếm tập mục lợi ích cao

Hình 2.1 trên (gồm 12 tập mục tô đen) trong dàn tập mục của CSDL bảng 2.1, với minutil = 130. Số ghi trong ô là lợi ích theo giao tác /lợi ích của tập mục. Tập mục đánh dấu * hoặc ** là tập mục có lợi ích theo giao tác cao, trong đó tập mục đánh dấu ** là tập mục lợi ích cao tìm được.

Nhận xét: Thuật toán hai pha có nhiều ưu điểm như: dễ hiểu, dễ cài đặt

bên cạnh đó thuật toán còn có những hạn chế như: duyệt cơ sở dữ liệu nhiều lần, sinh ra nhiều tập ứng viên…

Phần sau đây của luận văn trình bày thuật toán HUI-Miner (Liu & Qu, CIKM 2012) có nhiều ưu điểm và khắc phục được hạn chế của thuật toán hai- pha

2.3 Thuật toán HUI - Miner 2.3.1. Giới thiệu thuật toán 2.3.1. Giới thiệu thuật toán

HUI-Miner là thuật toán khai phá tập mục lợi ích cao trong một cơ sở dữ liệu giao tác được đề xuất bởi nhóm tác giả Mengchi Liu và Junfeng Qu và năm 2012 [8].

Thuật toán HUI-Miner là một trong những thuật toán hiệu quả cho khai phá tập mục lợi ích cao. Một số đóng góp của thuật toán này là:

- Thuật toán đề xuất cấu trúc dữ liệu mới lấy tên là utility-list, lưu tập mục và thông tin về lợi ích của tập mục đó.

- Thuật toán HUI-Miner không sinh ra nhiều các tập ứng viên, xây dựng cấu trúc utility-list từ một cơ sở dữ liệu sau đó khai phá tập mục lợi ích cao từ

utility-list này.

2.3.2 Cấu trúc của utility-list 2.3.2.1 Khởi tạo utility-list 2.3.2.1 Khởi tạo utility-list

Trong thuật toán HUI-Miner, mỗi tập mục có một utility-list. Chức năng của các utility-list là lưu giữ các thông tin hữu ích về một cơ sở dữ liệu được xây dựng bởi hai lần duyệt cơ sở dữ liệu.

Đầu tiên, duyệt CSDL để tính lợi ích theo giao tác (TWU) của các mục dữ liệu. Nếu lợi ích theo giao tác của mục nào nhỏ hơn ngưỡng minutil cho

Một phần của tài liệu (LUẬN văn THẠC sĩ) tìm hiểu một số thuật toán khai phá tập mục lợi ích cao và ứng dụng (Trang 35)