Thuật toán FSM

Một phần của tài liệu nghiên cứu một số thuật toán khai phá tập mục thường xuyên và tập mục cổ phần cao trong cơ sở dữ liệu (Trang 49 - 80)

Nội dung cơ bản của thuật toán FSM 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 hàm tới hạn CF, Fk

lƣu các tập mục cổ phần cao nhận đƣợc.

Giống nhƣ thuật toán Apriori, ban đầu 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 cơ sở dữ liệu, tính giá trị của mỗi mục dữ liệu. Mỗi ứng viên 1-tập mục X sẽ bị tỉa nếu CF(X) < min_lmv. Trong 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 nối hai (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 của cơ sở dữ liệu đã đƣợ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 Cklà phải thuộc RCk-1, nếu không k-tập mục này sẽ bị tỉa. Sau khi Ck đƣợc sinh ra, xóa tập RCk-1. Tiếp

theo, thuật toán duyệt cơ sở dữ liệu để tìm tập mục cổ phần cao. Với mỗi tập mục X trong Ck, mếu tập mục này có lmv(X) min_lmv thì tập ứng viên X bị loại khỏi RCk. Quá trình trên cứ lặp 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 FSM nhƣ sau:

Thuật toán FSM

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

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

Method:

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

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

3. tính giá trị lmv(ip) và CF(ip) của các mục ip trong C1;

4. for each ip C1

5. if lmv(ip) min_lmv then

6. F1:= F1 {ip}

7. else if CF(ip) < min_lmv then

8. C1:= C1\{ip};

10.for k:=2 to h 11. begin

12. for each Xp, Xq RCk-1

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

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

15. Tính giá trị lmv(X) và CF(X) của các ứng viên X trong Ck; 16. for each X Ck 17. if lmv(X)min_lmv 18. Fk:= Fk{X} 19. else if CF(X) < min_lmv 20. Ck:= Ck – {X}; 21. RCk:= Ck; 22. end 23.return F =  Fk; 2.3.3 Nhận xét thuật toán FSM

Thuật toán có ƣu điểm nổi bật là tƣơng đối dễ hiểu, sau khi thực hiện tìm đƣợc tập F chứa tất cả các tập mục cổ phần cao. Đây là một thuật toán tốt để khai phá tập mục cổ phần cao.

Tuy vậy, thuật toán còn một số hạn chế. Thuật toán sử dụng hàm tới hạn

CF(X) để thu gọn các tập mục ứng viên nhƣng thực tế số các tập mục của tập

RCk vẫn còn lớn do giá trị hàm tới hạn CF(X) còn cao, chƣa sát với giá trị thực của các tập mục trong RCk.

Nhằm khắc phục những hạn chế của thuật toán FSM, luận văn đề xuất một thuật toán hiệu quả phát triển từ thuật toán FSM, gọi là thuật toán AFSM(Advanced FSM).

2.4 THUẬT TOÁN AFSM

Năm 2009, Nguyễn Huy Đức đã đề xuất thuật toán khai phá tập mục cổ phần cao hiệu quả phát triển từ thuật toán FSM gọi là thuật toán AFSM khắc phục những hạn chế của thuật toán khai phá tập mục cổ phần cao FSM.

2.4.1 Cơ sở lý thuyết của thuật toán AFSM

Nhƣ phần trên đã trình bày, ràng buộc cổ phần không có tính chất phản đơn điệu nhƣ tập mục thƣờng xuyên, đây chính là trở ngại của bài toán khai phá tập mục cổ phần cao. Để khắc phục điều này, luận văn đề 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” 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(Anti Monotone), do đó có thể sử dụng để tỉa tập mục ứng viên.

Định nghĩa 2.6: 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) = Tmv(dbx) =

( ) q x q T db tmv T   .

Ví dụ, xét cơ sở dữ liệu ở bảng 2.1, tmv(A) =tmv(T01) + tmv(T08) =7+6=13.

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

Ví dụ, xét cơ sở dữ liệu ở bảng 2.1 với minShare=30%, min_lmv=16,8, tmv(A)=13, tmv(E)=22, 1-tập mục A là tập mục cổ phần theo giao tác thấp còn E

là tập mục cổ phần theo giao tác cao.

Định lý 2.1: Tập mục cổ phần theo giao tác cao có tính chất phản đơn điệu(Anti Monotone).

Chứng minh:

Xét hai tập mục X, Y sao cho Y X, ta chứng minh 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. Ta có Y

 X nên dbY dbX, do đó tmv(Y)=Tmv(dbY) Tmv(dbX) = tmv(X).

Nếu Y là tập mục cổ phần theo giao tác thấp, tức là tmv(Y) < min_lmv thì

tmv(X) tmv(Y) < min_lmv,X cũng là tập mục cổ phần theo giao tác thấp.

Định lý 2.1 cho biết các tập mục cổ phần theo giao tác cao có tính chất phản đơn điệu nhƣ tính chất của tập mục thƣờng xuyên, do đó có thể sử dụng tính chất này để tỉa các ứng viên khi khai phá.

Định lý 2.2: 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.

Chứng minh: Ký hiệu dbX là tập các giao tác chứa tập mục X, ta có:

lmv(X) = ( , ) q X q T db imv X T   = ( , ) ( , ) q X p q X p q p q p q T db i X T db i T mv i T mv i T          =tmv(X)

Do đó, nếu X là tập mục cổ phần cao, tƣc lmx(X) min_lmv, thì X cũng là tập mục cổ phần theo giao tác cao vì tmv(X) lmx(X) min_lmv.

Nhận xét 2.1: Từ định lý 2.2 có thể suy ra tập các tập mục cổ phần cao

chứa trong tập các tập mục cổ phần theo giao tác cao. Theo định lý 2.1, các tập mụ cổ phần theo giao tác cao có tính chất phản đơn điệu nhƣ tập mục thƣờng xuyên, do đó ta có thể áp dụng một số thuật toán khai phá tập mục thƣờng xuyên đã có(nhƣ các thuật toán kiểu Apriori, thuật toán tìm kiếm theo chiều sâu FP- growth,… ), thay số lần xuất hiện của tập mục bởi giá trị theo giao tác của tập mục thì sẽ nhận đƣợc kết quả khai phá là các tập mục cổ phần theo giao tác cao. Khi đó ta chỉ cần duyệt lại cơ sở dữ liệu để tính giá trị đóng góp thực sự của các tập mục cổ phần theo giao tác cao để nhận đƣợc các tập mục cổ phần cao.

Định lý 2.2 cũng cho ta một điều kiện cần để X là tập mục cổ phần cao, đó

X phải là tập mục cổ phần theo giao tác cao. Áp dụng định lý 2.1 và định lý

2.2, luận án đề xuất cách tỉa các tập ứng viên trong thuật toán mới 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 thuật toán mới AFSM là

tmv(X) <min_lmv. Để tiện trình bày khi so sánh với thuật toán FSM, ta cũng gọi giá trị tmv(X) là hàm tới hạn của tập mục X. Ký hiệu CFFSM(X)CFAFSM(X)

tƣơng ứng là hàm tới hạn dùng cho thuật toán FSM và thuật toán mới AFSM:

CFFSM(X) =lmv(X) + lmv X( )

k .MV.(ML-k), CFAFSM(X)=tmv(X).

Định lý 2.3 sau so sánh giá trị hai hàm tới hạn này.

Định lý 2.3 : Cho cơ sở dữ liệu DB và k-tập mục X. Khi đó: 1) CFAFSM(X)CFFSM(X).

2) Giá trị hai hàm tới hạn luôn bằng nhau khi cơ sở dữ liệu DB là bảng nhị phân với độ dài các giao tác bằng nhau.

Chứng minh: 1) CFAFSM(X) CFFSM(X): Ta có: CFAFSM(X)= tmv(X)= Tmv(dbX)= ( ) q X q T db tmv T   = ( , ) q X p q p q T db i T mv i T     = \ ( , ) ( , ) q X p p q p q p q T db i X i T X mv i T mv i T               

= \ ( , ) ( , ) q X p q X p q p q p q T db i X T db i T X mv i T mv i T          = lmv(X) + \ ( , ) q X p q p q T db i T X mv i T     Vì ( , ) \ p q q mv i T MV T X ML k       nên: CFAFSM(X)lmv(X) + .( ) q X T db MV ML k    =lmv(X) + dbX .MV ML k.(  ) Mặt khác, mv(ip, Tq) 1 với ip  Tq nên ta có: dbX lmv X( )

k  Do đó: CFAFSM(X) lmv(X) + dbX .MV ML k.(  ) lmv(X) + lmv X( ).MV ML k.( ) k  = CFFSM(X). Vậy: CFAFSM(X) CFFSM(X).

2) Xét điều kiện để CFAFSM(X) = CFFSM(X):

Từ chứng minh ở phần 1) trên ta thấy, CFAFSM(X) = CFFSM(X) khi xảy ra đồng thời hai dấu “=” trong bất dẳng thức (a) và dấu “=” của bất đẳng thức (b).

+ Xảy ra dấu “=” của bất đẳng thức (a) khi: ( , ) , \

\ , p q p q q q X mv i T MV i T X T X ML k T db           (a) (b) ) (c)

+ Xét xảy ra dấu “=” của bất đẳng thức (b): không mất tính tổng quát, có thể giả sử k-tập mục X nằm trong dbX giao tác của bảng cơ sở dữ liệu nhƣ sau:

Do đó, dbX lmv X( ) mv i T( , ) 1p q

k

   với ip X, X Tq dbX

Vậy CFAFSM(X)= CFFSM(X) khi:

( , ) , \ , ( , ) 1, , p q p q q q X p q p q X mv i T MV i T X T ML T db mv i T i X X T db                

Từ hệ điều kiện (#) trên ta thấy nhƣ sau:

- Thỏa mãn hệ điều kiện (#) là khó khăn. Với k-tập mục X, giá trị hai hàm tới hạn chỉ bằng nhau nếu cả 3 điều kiện của hệ điều kiện (#) đƣợc thỏa mãn, còn lại các trƣờng hợp khác thì CFAFSM(X) < CFFSM(X).

- Trƣờng hợp xấu nhất, giá trị hai hàm tới hạn luôn bằng nhau xảy ra khi hệ điều kiện (#) đƣợc thỏa mãn với mọi k-tập mục X có k tăng dần từ 1, điều đó xảy ra khi cơ sở dữ liệu DB là bảng nhị phân(0/1) có độ dài các giao tác bằng nhau. X k cột X db dòng (#)

Ví dụ: Trong CSDL bảng 2.5a, độ dài giao tác dài nhất ML=3, giá trị lớn nhất của các mục dữ liệu trong CSDL là MV =3, chỉ có một trƣờng hợp hai hàm tới hạn bằng nhau, đó là với 2-tập mục X={A, B}.

CFAFSM(AB) =tmv(AB) =Tmv(db{A,B})=tmv(T01)+tmv(T02)=5+5=10

CFFSM(AB)=lmv(AB)+ ( ). .( ) 4 4.3.(3 2) 10 2

lmv AB

MV ML k

k      .

Bảng 2.5a: CSDL minh họa có trƣờng hợp hai hàm tới hạn bằng nhau.

Bảng 2.5b: CSDL minh họa trƣờng hợp hai hàm tới hạn luôn bằng nhau.

TID A B C D E tmv T01 1 1 3 0 0 5 T02 1 1 0 0 3 5 T03 0 0 0 0 0 0 T04 0 1 1 1 0 3 T05 0 1 0 0 1 2 imv 2 4 4 1 4 15 TID A B C D E tmv T01 1 0 1 0 1 3 T02 1 1 1 0 0 3 T03 0 0 0 0 0 0 T04 0 1 1 1 0 3 T05 1 1 0 0 1 3 imv 3 3 3 1 2 12

CSDL ở bảng 2.5b minh họa cho trƣờng hợp hai hàm tới hạn luôn bằng nhau. Ở đây, độ dài các giao tác là 3, tức độ dài giao tác dài nhất ML=3, giá trị lớn nhất của các mục dữ liệu trong CSDL là MV=1.

Xét k=1, mục A có lmv(A)=3, db{A}={T01, T02, T05}.

CFAFSM(A)=tmv(A)=Tmv(db{A})=9

CFFSM(A)=lmv(A)+ ( ). .( ) 3 3.1.(3 1) 9. 1

lmv A

MV ML k

k     

Bảng 2.6 là giá trị của hai hàm tới hạn với k=1.

Bảng 2.6: Giá trị hai hàm tới hạn khi k=1.

Nhận xét 2.2: Định lý 2.3 cho thấy hai hàm tới hạn chỉ luôn bằng nhau

trong trƣờng hợp rất đặc biệt của dữ liệu, ngoài trƣờng hợp này, hàm tới hạn mới nhỏ hơn hàm tới hạn cũ, điều này đảm bảo cho thuật toán AFSM thực hiện hiệu quả hơn thuật toán FSM.

2.4.2 Thuật toán AFSM

Dựa trên ý tƣởng của thuật toán FSM và cơ sở lý thuyết trình bày ở phần trên, luận văn đề xuất thuật toán mới AFSM nhƣ sau:

- Giữ nguyên các bước của thuật toán FSM.

A B C D E

Lmv 3 3 3 1 2

CFAFSM 9 9 9 3 6

- Ở bước lặp thứ k:

Hàm Apriori-gen nối các cặp(k-1)-tập mục trong RCk-1 để đƣợc tập ứng viên Ck, sau đó thuật toán tỉa ứng viên X Ck nếu X có ít nhất một tập mục con độ dài (k-1) không thuộc RCk-1.

Sau khi duyệt cơ sở dữ liệu để tính giá trị lmv(X) tmv(X) của các ứng viên X Ck, thuật toán tỉa ứng viên X Ck nếu tmv(X) < min_lmv.

Với ứng viên X Cktmv(X) min_lmv thuật toán kiểm tra giá trị của

lmv(X); nếu lmv(X) min_lmv thì X là tập mục cổ phần cao, X đƣợc kết nạp vào tập HSk.

Ở đây có một thay đổi so với thuật toán FSM là kiểm tra điều kiện tỉa

tmv(X) <min_lmv trƣớc nếu X không bị tỉa mới xét xem nó có phải tập mục cổ phần cao không.

- Có thể cải tiến bước sinh tập ứng viên Ck:

Có ba phƣơng pháp thƣờng dùng để sinh tập ứng viên Ck là :

+ Phƣơng pháp Brute-Force, sinh ra mọi tập mục ứng viên độ dài k;

+ Phƣơng pháp Fk-1 x F1, nối hai tập mục độ dài (k-1) với một mục đơn để đƣợc tập mục độ dài k;

+ Phƣơng pháp Fk-1 x Fk-1, nối hai tập mục độ dài (k-1) nếu chúng có (k-2) mục đầu giống nhau để đƣợc tập mục độ dài k;

Tác giả cải tiến phƣơng pháp sinh tập ứng viên Ck theo phƣơng pháp Fk-1 x F1, nối mỗi (k-1)-tập mục trong RCk-1 với một mục đơn trong RC1để đƣợc

tập Ck. Nếu các tập mục đƣợc sắp thứ tự, phƣơng pháp Fk-1 x Fk-1 không sinh ra các tập mục ứng viên trùng lặp. Thuật toán AFSM sử dụng cách sinh tập ứng viên theo phƣơng pháp Fk-1 x Fk-1, tức là nối các cặp tập mục độ dài (k-1) trong RCk-1 nếu chúng có (k-2) mục đầu giống nhau.

Từ các cơ sở lý thuyết đã trình bày, luận văn đề xuấ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 T DB //duyệt cơ sở dữ liệu DB

3. tính lmv(ip) và tmv(ip) cho ip C1;

4. for eachip C1

5. if tmv(ip) < min_lmv then

6. C1:=C1\{ip}

7. else if lmv(ip) min_lmv then

9. RC1:= C1;

10.repeat

11. k:=k+1;

12. for each Xp, XpRCk-1

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

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

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

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;

Cho cơ sở dữ liệu giao tác là bảng 2.1, 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, MV=4, ML=7, min_lmv=minShare x Tmv =30% x56 =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,F,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 2.8 biểu diễn các kết quả tính toán.

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

A B C D E F G H

lmv 5 14 14 8 4 5 2 4

tmv(X) 13 38 38 38 22 13 13 14

CFFSM 125 350 350 200 100 125 50 100

Vì các giá trị lmv đều nhỏ hơn min_lmv nên không có mục nào 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, GH 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 2.9 sau:

Bảng 2.8: Các giá trị lmv và hàm tới hạn với k=2. BC BD BE CD CE DE lmv 21 22 7 16 13 5 tmv(X) 33 38 16 33 22 17 CFFSM 231 242 77 176 143 55 Có hai tập mục cổ phần cao tìm đƣợc là BCBD, HS2={BC, BD}, có một tập mục bị tỉa là BE, C2={BC, BD, CD, CE, DE}.

Một phần của tài liệu nghiên cứu một số thuật toán khai phá tập mục thường xuyên và tập mục cổ phần cao trong cơ sở dữ liệu (Trang 49 - 80)

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

(80 trang)