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) và 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 Ck có tmv(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, 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 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à BC và BD, HS2={BC, BD}, có một tập mục bị tỉa là BE, C2={BC, BD, CD, CE, DE}. Dòng lệnh 21 cho RC2=C2={BC, BD, CD, CE, DE}.
Lặp tiếp với k=3: Nối RC2 với RC2 nhận đƣợc C3 ={BCD, 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 2.10 sau:
Bảng 2.9: Các giá trị lmv và hàm tới hạn với k=3.
BCD CDE
lmv 27 10
tmv(X) 33 17
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, CDE}.
Lặp tiếp với k=4: Nối RC3 với RC3ta đƣợc C4=, thuật toán dừng.
Kết quả thuật toán AFSM tìm đƣợc tập mục cổ phần cao HS = HS1 HS2
HF3 = {BC, BD, BCD}.
Kết quả thực hiện của thuật toán đƣợc minh họa ở hình 2.1, mỗi hình vuông biểu diễn tập mục X, lmv(X) và tmv(X). Hình vuông bị gạch 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 2.1: Không gian tìm kiếm tập mục cổ phần cao theo thuật toán AFSM.