Thuật toán khai phá tập mục cổ phần cao AFSM – Advanced Fast

Một phần của tài liệu (LUẬN văn THẠC sĩ) khai thác luật kết hợp từ cơ sở dữ liệu giao dịch của siêu thị bán lẻ 001 (Trang 51 - 59)

CHƯƠNG 3. TÌM LUẬT KẾT HỢP TRONG CƠ SỞ DỮ LIỆU GIAO DỊCH CỦA SIÊU THỊ BÁN LẺ

3.1. Bài toán tìm luật kết hợp trong cơ sở dữ liệu giao dịch của siêu thị bán lẻ

3.1.2. Thuật toán khai phá tập mục cổ phần cao AFSM – Advanced Fast

3.1.2.1. Một số thuật ngữ liên quan [2]

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 I, T  I. Cơ sở dữ liệu là một tập các giao tác DB = {T1, T2, …, Tm}. 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 tập mục X nếu X  T.

Ký hiệu giá trị của ip (measure value) trong giao tác Tq là mv(ip, Tq), mv(ip, Tq) có giá trị là số tự nhiên (như số lượng đã bán của một mặt hàng trong giao tác). mv(ip, Tq) = 0 nếu ip  Tq và mv(ip, Tq) ≥ 1 nếu ip  Tq.

Giá trị của giao tác Tq (transaction measure value) là tổng giá trị các mục dữ

(total measure value) các mục dữ liệu trong cơ sở dữ liệu DB, ký hiệu là Tmv, Tmv = ∑𝑇𝑞𝐷𝐵∑𝑖𝑝𝑇𝑞𝑚𝑣(𝑖𝑝, 𝑇𝑞).

Ký hiệu dbx là tập các giao tác chứa tập mục X, dbx={Tq|TqDB  X Tq}.

Cho giao tác Tq chứa tập mục X. Giá trị của tập mục X (itemset measure value) trong Tq, ký hiệu imv(X, Tq), là tổng giá trị của các mục ip trong Tq thuộc X, imv(X, Tq) = ∑𝑖𝑝𝑋𝑚𝑣(𝑖𝑝, 𝑇𝑞) với X  Tq.

Cho tập mục X, dbx là tập các giao tác chứa X. Giá trị của tập mục X (local measure value), ký hiệu lmv(X), là tổng giá trị của tập mục X tại các giao tác trong dbx, tức là , lmv(X) = ∑𝑇𝑞𝑑𝑏𝑥𝑖𝑚𝑣(𝑋, 𝑇𝑞) = ∑𝑇𝑞𝑑𝑏𝑥∑𝑖𝑝𝑋𝑚𝑣(𝑖𝑝, 𝑇𝑞) .

Cổ phần (share value) hay đóng góp của tập mục X, ký hiệu Sh(X), là tỉ số giữa giá trị của tập mục X và tổng giá trị của tất cả các mục trong cơ sở dữ liệu, tức là Sh(X) =𝑙𝑣𝑚(𝑋)

𝑇𝑚𝑣 .

Cho ngưỡng cổ phần tối thiểu (minimum share) minShare s% và tập mục X.

X được gọi là tập mục cổ phần cao nếu Sh(X) ≥ minShare. Nếu Sh(X) ≤ minShare, X được gọi là tập mục cổ phần thấp.

hiệu giá trị cổ phần tối thiểu (minimum local measure value) là min_lmv, min_lmv = minShare x Tmv, có thể thay điều kiện Sh(X) ≥ minShare bằng điều kiện lmv(X) ≥ min_lmv.

Cho CSDL giao tác DB và ngưỡng cổ phần tối thiểu minShare, khai phá tập mục cổ phần cao là tìm tập HS chứa tất cả các tập mục cổ phần cao của DB. Tức là: HS={X | X I, Sh(X)≥ minShare}.

Cho tập mục X, dbx là tập các giao tác chứa X. Giá trị theo giao tác (transaction measure value) của tập mục X, ký hiệu tmv(X), là tổng giá trị của tất cả các giao tác chứa tập mục X, tức là tmv(X) = Tmv(dbx) =

∑𝑇𝑞𝑑𝑏𝑥𝑡𝑚𝑣(𝑇𝑞).

Tập mục X được gọi là tập mục cổ phần theo giao tác cao nếu tmv(X) ≥ min_lmv. Trường hợp ngược lại, X được gọi là tập mục cổ phần theo giao tác thấp.

3.1.2.2. Thuật toán AFSM

Thuật toán AFSM được tác giả Nguyễn Huy Đức đề xuất vào năm 2008 [6].

Thuật toán này được cải tiến từ một thuật toán khai phá tập mục cổ phần cao khá nhanh và hiệu quả là FSM nên được đặt tên là AFSM (Advanced FSM). FSM

được giới thiệu vào năm 2005 bởi Yu-Chiang Li và đồng nghiệp tại Khoa Khoa học máy tính và Kỹ thuật thông tin của Đại học Chung Chen, Đài Loan. FSM sử dụng hàm tới hạn CF(X) để rút gọn các tập mục ứng viên nhưng thực tế số các tập mục ứng viên vẫn còn lớn do giá trị hàm tới hạn CF(X) còn cao. TS Nguyễn Huy Đức đề xuất khái niệm “giá trị theo giao tác của tập mục”, “tập mục cổ phần theo giao tác cao” (luận văn này đã giới thiệu trong mục 3.1.2.1) và chứng minh tập mục cổ phần theo giao tác cao có tính chất phản đơn điệu, do đó có thể sử dụng để tỉa các tập mục ứng viên. Tính chất này được phát biểu cụ thể như sau:

Hai tập mục X, Y, Y X, nếu Y là tập mục cổ phần theo giao tác thấp thì X cũng là tập mục cổ phần theo giao tác thấp.

Tác giả cũng chứng minh: Nếu tập mục X là tập mục cổ phần cao thì X cũng là tập mục cổ phần theo giao tác cao.

Nhận xét: Từ hai tính chất trên, ta thấy rằng: điều kiện cần để tập mục X là tập mục cổ phần cao là nó phải là tập mục cổ phần theo giao tác cao và có thể thực hiện tỉa bớt tập ứng viên nhờ tính chất phản đơn điệu của các tập mục cổ phần theo giao tác cao bằng cách loại bỏ các tập mục cổ phần có tập con là tập mục cổ phần theo giao tác thấp. Do đó, tác giả đề xuất cách tỉa các tập ứng viên trong thuật toán AFSM như sau:

Ở bước lặp thứ k, nếu X là tập mục cổ phần theo giao tác thấp thì X là tập mục cổ phần thấp và mọi tập cha của X cũng là tập mục cổ phần theo giao tác thấp. Do đó ta có thể loại bỏ tập ứng viên X, từ bước (k+1) trở đi không cần sinh ra các tập cha của X nữa.

Như vậy điều kiện để tỉa các ứng viên cho AFSM là tmv(X)  min_lmv.

Trong [2], TS Nguyễn Huy Đức đã chứng minh điều kiện tỉa của AFSM hiệu quả hơn so với hàm tỉa CF(X) của FSM.

Nội dung cơ bản của thuật toán AFSM có thể tóm tắt như sau:

Thuật toán duyệt nhiều lần CSDL, ở lần duyệt thứ k, Ck lưu các tập mục ứng viên, RCk lưu các tập mục nhận được sau khi kiểm tra điều kiện tỉa tmv(X)  min_lmv, Fk lưu các tập mục cổ phần cao nhận được.

Ban đầu cho mỗi mục dữ liệu là một ứng viên. Trong lần duyệt thứ nhất, thuật toán duyệt CSDL, tính giá trị (lmv) của mỗi mục dữ liệu để tìm ra các tập mục cổ phần cao 1 phần tử, tính độ hỗ trợ theo giao tác (tmv) của mỗi mục dữ

mỗi lần duyệt tiếp theo, các tập mục ứng viên được tạo ra bằng cách kết nối (k- 1)-tập mục trong RCk-1 nếu chúng có (k-2) mục đầu giống nhau và nhận được k- tập mục, kết nạp vào tập Ck (giả sử các mục CSDL đã được sắp thứ tự). Tất cả k tập con với độ dài (k-1) của mỗi k-tập mục trong Ck đều phải thuộc RCk-1. Tiếp theo, thuật toán duyệt CSDL để tìm tập mục cổ phần cao. Với mỗi tập X trong Ck, nếu tập này có tmv(X) ≥ min_lmv, tập này được thêm vào RCk và được xét tiếp lmv(X) nếu lmv(X) ≥ min_lmv thì X được thêm vào Fk. Ngược lại nếu tmv(X)  min_lmv, X là tập mục cổ phần trong giao tác thấp, loại bỏ khỏi tập ứng viên, không cần xét nữa. Quá trình trên cứ lặp lại cho đến khi không có tập mục ứng viên nào được sinh ra.

Thủ tục mô tả thuật toán AFSM như sau:

Thuật toán AFSM( )

Input: Cơ sở dữ liệu giao tác DB, ngưỡng cổ phần minShare (s%).

Output: Tập HS gồm các tập mục cổ phần cao.

Method:

1. k:=1, HS1:=, C1:=I;

2. for each TDB // duyệt cơ sở dữ liệu DB 3. tính lmv(ip)tmv i( )p cho  ip C1 ;

4. for each ipC1

5. if tmv i( )pmin_lmv then 6. C1:C1\ ip

7. else if lmv(ip) ≥min_lmv then 8. HS1:HS1 ip ; 9. RC1:C1;

10. repeat

11. k: k 1;

12. for each Xp, XqRCk-1

13. Ck :=Apriori-gen(Xp, Xq);

14. for each TDB // duyệt cơ sở dữ liệu DB

15. tính lmv(X)tmv X( ) cho  X Ck; 16. for each XCk

17. if tmv X( )min_lmv then 18. Ck :Ck \ X

19. else if lmv(X)≥min_lmv then 20. HSk : HSk  X ; 21. RCk :Ck;

22. until Ck  ;

23. return HS HSk;

Ví dụ áp dụng minh họa thuật toán AFSM Cho cơ sở dữ liệu giao tác sau:

TID A B C D E F G H tmv

T01 1 1 1 1 1 0 1 1 7

T02 0 0 0 0 0 4 0 3 7

T03 0 4 3 3 0 0 0 0 10

T04 0 0 4 0 1 0 0 0 5

T05 0 3 0 2 0 0 0 0 5

T06 0 3 2 1 0 0 0 0 6

T07 0 3 4 1 2 0 0 0 10

T08 4 0 0 0 0 1 1 0 6

lmv 5 14 14 8 4 2 2 4 56

Bảng 3.1. Cơ sở dữ liệu ví dụ

minShare=30%. Thuật toán AFSM thực hiện việc phát hiện các tập mục cổ phần cao như sau:

Ta có: Tmv =56, min_lmv= minShare x Tmv = 30% x 56=16.8.

Bước k=1: Thực hiện dòng lệnh 1 cho kết quả HS1=; C1 = {A,B,C,D,E,G,H}.

Thực hiện dòng lệnh 2-3 ta tính được lmv của các mục dữ liệu. Bảng 3.2 biểu diễn các kết quả tính toán.

A B C D E E G H

lmv 5 14 14 8 4 5 2 4

tmv(X) 13 38 38 38 22 13 13 14 Bảng 3.2. Các giá trị lmv và hàm tới hạn tmv(X) với k=2.

Các giá trị lmv đều nhỏ hơn min_lmv nên không mục nào là cổ phần cao.

db{A}={T01,T08}

tmv(A) = tmv(T01) + tmv(T08) = 7 + 6 =13 < min_lmv do đó A bị tỉa khỏi C1. Tương tự F,G và H bị tỉa, C1 = {B,C,D,E}. Dòng lệnh 9 cho kết quả RC1= {B,C,D,E}.

Bước k=2: Dòng lệnh 12-13 nối RC1 với RC1 ta được 6 tập mục độ dài 2.

Thực hiện các lệnh 14-15 cho kết quả là Bảng 3.3 sau:

BC BD BE CD CE DE

Lmv 21 22 7 16 13 5

tmv(X) 33 38 17 33 22 17

Bảng 3.3. Các giá trị lmv và hàm tới hạn tmv(X) với k=2.

Có hai tập mục cổ phần cao tìm được là BC và BD, HS2 = {BC, BD}, C2 = {BC, BD, BE, CD, CE, DE}.

Dòng lệnh 21 cho RC2 = C2 = {BC, BD, BE, CD, CE, DE}.

Lặp tiếp với k=3: nối RC2 với RC2 nhận được C3 = {BCD, BCE, BDE, CDE}

Thực hiện duyệt cơ sở dữ liệu và tính toán ta được kết quả là bảng 3.4:

BCD BCE BDE CDE

lmv 27 12 9 10

tmv(X) 33 17 17 17

Bảng 3.4. Các giá trị lmv và hàm tới hạn với k=3.

Phát hiện được một tập mục cổ phần cao HS3 = {BCD}. Không có tập mục nào bị tỉa, RC3 = C3 = {BCD, BCE, BDE, CDE}.

Lặp tiếp với k=4: Nối RC3 với RC3 ta được C4= {BCDE}.

Thực hiện duyệt CSDO và tính toán được lmv(BCDE)= 14, tmv(BCDE) = 17. HS4 = , RC4 = C4= {BCDE}

Thực hiện kết nối RC4 với RC4 được C5 = . Thuật toán dừng.

Kết quả thuật toán AFSM tìm được các tập mục cổ phần cao HS=HS1HS2-

HS3HS4 = {BC, BD, BCD}.

Kết quả của thuật toán được minh họa ở hình sau, mỗi hình vuông biểu diễn tập mục X, lmv(X)tmv(X). Hình vuông bị gạch chéo biểu diễn tập mục bị tỉa, hình vuông tô nền biểu diễn tập mục cổ phần cao.

Hình 3.1. Kết quả ví dụ về thuật toán AFSM

A 5/13

B 14/38

C 14/38

D 8/38

E 4/22

F 5/13

G 2/13

H 4/14 BC

21/33

BD 22/38

BE 7/17

CD 16/33

CE 13/22

DE 5/17 BCD

27/33

BCE 10/17

BDE 10/17

CDE 10/17 BCE

14/17

Cụ thể có sơ đồ khối sau để tính toán:

Cơ sở dữ liệu giao tác DB, minshare (s%) k:= 1; HS1:=; C1:=I

lmv(ip)<min_lmv Tính lmv(ip), CF(ip) ip C1

C1 còn i chưa xét

lmv(ip)≥min_lmv F T

Duyệt ip C1

 

1: 1\ p

CC i

 

1: 1 p

HSHSi

T T

F

k:=k+1

Duyệt Xp, XqRCk-1

Ck :=Apriori-gen(Xp, Xq)

lmv(X)tmv X( ) cho  X Ck;

Duyệt X Ck

lmv(X)<min_lmv C1 còn X chưa xét

lmv(X)≥min_lmv F

T T

F

 

: \

k k

CC X

T

 

k : k

HSHSX

;

RC1:=C1

RCk:=Ck Ck F

Hình 3.2. Sơ đồ khối thuật toán AFSM

Một phần của tài liệu (LUẬN văn THẠC sĩ) khai thác luật kết hợp từ cơ sở dữ liệu giao dịch của siêu thị bán lẻ 001 (Trang 51 - 59)

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

(73 trang)