Thuật toán NSFI ALGORITHM

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu luật kết hợp và ứng dụng trong bài toán xây dựng hệ hỗ trợ học sinh trung học phổ thông (Trang 30)

Khai thác tập phổ biến là một yếu tố cơ bản liên quan đến nhiều vấn đề khai thác dữ liệu hƣớng vào việc tìm kiếm mô hình thú vị trong dữ liệu. Gần đây các thuật toán PrePost, một thuật toán mới cho khai thác tập phổ biến dựa trên ý tƣởng của N-list, mà trong nhiều trƣờng hợp làm tốt hơn. Tác giả đã đề xuất một phiên bản cải tiến của PrePost, N-list và bao hàm dựa trên thuật toán khai thác tập phổ biến (NSFI) thuật toán có sử dụng một bảng băm để tăng cƣờng quá trình tạo ra các N-list liên kết với 1 tập phổ biến và tồn tại đƣợc cải thiện N-list thuật toán giao nhau. Hơn nữa, hai định lý mới đƣợc đề xuất để xác định '' bao hàm index '' của thƣờng xuyên 1-tập phổ biến dựa trên khái niệm N-list. Sử dụng chỉ số bao hàm, NSFI có thể xác định các nhóm của tập phổ biến mà không xác định N-list ch liên kết với chúng. Kết quả cho thấy NSFI nhanh hơn so PrePost về thời gian chạy và sử dụng bộ nhớ và nhanh hơn so với clat triển về mặt thời gian chạy.

Deng et al. [3] đề xuất một chức năng giao điểm N-danh sách để xác định giao điểm của hai N-danh sách đó là O (n + m + k) trong đó n, m và k là độ dài của đầu tiên, thứ hai và kết quả là N-danh mục (chức năng di chuyển qua danh sách N- kết quả nhƣ vậy là để hợp nhất cùng PP-mã). Trong phần này chúng tôi trình bày một chức năng giao điểm N-list đƣợc cải tiến để cung cấp cho O (n + m). Chức năng cải tiến này cung cấp những lợi thế mà nó không đi qua các kết quả N-list để hợp nhất các mã PP- cùng. Hơn nữa, chúng tôi cũng đề xuất một chiến lƣợc đầu bỏ bao gồm ba bƣớc: (i) xác định tổng tần số đầu tiên và thứ hai N-danh sách ký hiệu là SF, (ii) cho mỗi Ci PP-mã, mà không thuộc về kết quả N-list, cập nhật SF = SF - C.frequency, và (iii) nếu SF giảm xuống dƣới \ minSup xn] dừng lại (các tập phổ biến hiện đang đƣợc coi là không thƣờng xuyên). Với các chức năng trên giao điểm N-list cải thiện

Thuật toán N-list cải tiến

function NL_intersection (PS1, PS2)

1. let PS3←∅, sF ← σ(PS1) + σ (PS2), i = 0, j = 0 and f = 0 2. while i < |PS1 | and j < |PS2| do

3. if PS1[i].pre < PS2[j].pre then 4. if PSi[i].post > PS2[j].post then

5. if |PS3| > 0 and pre value of the last element in PS3 equal to PS1[i].pre then

6. increase the frequency value of the last element in PS3 by PS2[j ] .frequency

7. else

8. add the tuple (PS1[i].pre, PS1[i].post, PS2[j]. frequency) to PS3

9. increase f by PS2[j ].frequency and increase j by 1 10. else

12. else

13. sF = sF - PS2[j].frequency and increase j by 1 14. if sF < threshold then

15. return null // stop the procedure 16. return PS3 and f

procedure Find_Subsume (l1) // chỉ số bao hàm thủ tục

1. for i ← 1 to | l1 | - 1 do

2. for j ← i - 1 to 0 do

3. if j ϵl1 [i] .Subsumes then continue

4. if checkSubsume (l1 [i] N-list, l1 [j ] .N-list) is true then 5. add l1 [ j ] . name and its index, j, to l1[i].Subsumes 6. . add all elements in l1[j ]. Subsumes to l1[i] . Subsumes function checkSubsume (Na, Nb)

1. . let i = 0 and j = 0

2. while j < | Na | and i < |Nb| do

3. if Nb [i] .pre < Na[j] .pre and Nb[i].post > Na[j].post then 4. increase j by 1

5. else increase i by 1 6. if j = |Na| then 7. return true 8. return false

Định lý đƣợc đề xuất trong Song et al, đƣợc đại diện trong phái. 2.5, cũng đã đƣợc thông qua trong thuật toán NSFI để tăng tốc độ Thông qua hoạt động của định lý này cũng giúp làm giảm nhu cầu sử dụng bộ nhớ các thuật toán của NSFI, bởi vì nó không phải là cần thiết để xác định và lƣu trữ các N- danh sách liên kết với một nhóm các tập phổ biến để xác định ngƣỡng hỗ trợ.

Đầu tiên các thuật toán NSFI tạo PPC-cây, sau đó đi qua cây này để tạo ra N-danh sách liên quan đến việc thƣờng xuyên 1-itemset. Sau đó, một chiến

lƣợc chia-và-chinh phục, cùng với khái niệm chỉ số bao hàm, đƣợc sử dụng để tôi tập phổ biến. Đối với mỗi phần tử X, nếu chỉ số bao hàm của nó có các yếu tố, tập hợp các tập phổ biến đƣợc sản xuất bằng cách kết hợp với các yếu tố X trong chỉ số bao hàm của nó là thƣờng xuyên và có sự hỗ trợ tƣơng tự nhƣ X. Đối với mỗi nguyên tố còn lại không đƣợc chứa trong các bao hàm chỉ số của X, thuật toán sẽ kết hợp chúng với X để tạo ra các tập phổ biến ứng cử viên thƣờng xuyên. Lƣu ý rằng đối với 2 tập phổ biến hoặc nhiều hơn, thuật toán không sử dụng các chỉ số bao hàm.

Thuật toán NSFI ALGORITH Input: A dataset DB and minSup

Output: FIs, the set of all frequent itemsets

1. Construct_PPC_tree (DB, minSup) to generate R., l1, H1 and threshold

2. Generate_NList (R, l1)

3. Find_Subsume (l1)

4. let FIsl1 and Subsume ← {} 5. Find_FIs (l1, Subsumes)

6. return FIs

procedure Generate_NList (R, l1)

1. let C ← (R.pre, R.post, R. frequency) 2. add C to H1[R. .name] .N-list

3. increase H1 [R. .name] . frequency by C. frequency 4. for each child in R. .children do

5. Generate_NList(child) procedure Find_FIs (Is, S)

1. for i ←Is. size - 1 to 0 do 2. let FIsnext ← 0

4. let S be the set of subset generated from all elements of

Is [i] . Subsumes

5. for each s in S do

6. add (s. Is [i] . frequency) to FIs //using theorem 4 7. else if |Is[i] | = 1 then

8. S← {}

9. indexS = |Is [i] .Subsumes | - 1 10. for j ←i - 1 to 0 do

11. if indexS ≥ 0 and Is [i].Subsumes[indexS] = j then 12. indexS = indexS - 1 and continue

13. let efirst be the first item of Is[j] 14. FI ← { efirst } + Is[i]

15. (FI.N-list and FI. frequency) ← NL_intersection (Is [j ] .N-list, Is [i] .N-list)

16. if FI.N-list = null then continue 17. if(FI.frequency ≥ threshold) then 18. add FI to FIs

19. insert FI at first in FIsnext

20. for each subsume in S do 21. let f = FI + subsume

22. f.frequency = FI.frequency 23. add f to FIs // using theorem 4 24. Find_FIS (FIsnext, S)

2.4 Thuật toán FSM

Năm 2005, 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 giới thiệu thuật toán FSM (Fast Share Measure), đây là một thuật toán hiệu quả tìm ra tất cả các tập mục cổ phần cao. Thay vì khai thác tính chất Apriori, thuật toán FSM sử dụng một số tính chất của tập mục cổ phần cao để rút gọn các tập mục ứng viên.

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

Ký hiệu:

 Giá trị cổ phần tối thiểu(minimum local measure value) là min_lmv, min_lmv= minShare x Tmv;

 Độ dài cực đại (maximum length) của các giao tác trong cơ sở dữ liệu là

ML,

MLmaxTq |TqDB;

 Giá trị cực đại (maximum value) của tất cả các mục trong cơ sở dữ liệu là MV,

 

max ( ,p q) | p q q

MVmv i T i   T T DB .

Cơ sở lý thuyết của thuật toán đƣợc thể hiện trong mệnh đề sau: Cho minShare và k-itemset X không là tập mục cổ phần cao. Nếu:

( )

( ) lmv X ( ) min_

lmv X MV ML k lmv

k

    

thì tất cả các tập cha của X không là tập mục cổ phần cao. Đặt CF X( ) lmv X( ) lmv X( ) MV (ML k)

k

     , CF(X) gọi là hàm tới hạn. Mệnh đề trên đảm bảo rằng: nếu X không là tập mục cổ phần cao và

( )

CF Xmin_lmv thì không có tập cha nào của X là tập mục cổ phần cao. Thuật toán FSM dựa vào mệnh đề này để tỉa các tập mục ứng viên.

2.4.2 Nội dungcơ bản của thuật toán FSM

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)-itemset trong RCk-1 nếu chúng có (k-2) mục đầu giống nhau và nhận đƣợc k-

itemset, 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-itemset trong Ck là phải thuộc

RCk-1 , nếu không k-itemset 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 , nếu tập mục này có lmv X min lmv_ thì X là tập mục cổ phần cao và đƣợc thêm vào Fk; Ngƣợc lại, xét hàm tới hạn CF, nếu

( )

CF Xmin_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.

2.4.3. Một số khái niệm của thuật toán

Cho tập các mục (item) I i i1, ,...,2 in. Một giao tác (transaction) T là một tập con của I, TI. Cơ sở dữ liệu là một tập các giao tác DBT T1, 2,...,Tm. Mỗi giao tác đƣợc gán một định danh TID. Một tập mục con XI, gồm k mục phân biệt đƣợc gọi là một k-itemset. Giao tác T gọi là chứa tập mục X nếu XT .

MV (Measure Value – Giá trị tập mục trong giao tác): Ta ký hiệu giá trị của mục ip trong giao tác Tq là mv i T( ,p q), mv i T( ,p q) 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), tức là, mv i T( ,p q)0

nếu ipTqmv i T( ,p q) 1 nếu ipTq.

TMV (Transaction Measure Value – Giá trị giao tác): Giá trị của giao tác

Tq là tổng giá trị các mục dữ liệu trong giao tác, ký hiệu là tmv(Tq), tức là

p q

q p q i T

tmv(T ) = mv(i ,T )

 . Tổng giá trị các mục dữ liệu trong cơ sở dữ liệu DB, ký hiệu là Tmv, p p i (i , ) q q q T DB T Tmv mv T  

   . Tƣơng tự, với cơ sở dữ liệu con

dbDB, p p i ( ) (i , ) q q q T db T Tmv db mv T      .

Ví dụ 2.1 : Cho cơ sở dữ liệu bảng 2.1, mv(D,T01)=1, mv(C,T03)=3, tmv(T01)=7, tmv(T03)=10, Tmv(DB) = 56. 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 5 2 4 56 Bảng 2.1. Cơ sở dữ liệu

Ký hiệu dbX là tập các giao tác chứa tập mục X,

 | 

X q q q

dbT TDB X T .

IMV (Itemset Measure Value): Cho giao tác Tq chứa tập mục X. Giá trị của tập mục X trong Tq, ký hiệu imv X T , q, là tổng giá trị của các mục ip trong Tq

thuộc X, ( , ) ( , ) p q p q i X imv X T mv i T    , với XTq.

LMV (Local Measure Value):Cho tập mục X, dbXlà tập các giao tác chứa X. Giá trị của tập mục X 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à ( ) ( , ) ( , ) q X q X p q p q T db T db i X lmv X imv X T mv i T         .

Sh (Share Value): Cổ phần hay đóng góp của tập mục X , ký hiệu là 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à:   lmv X( )

Sh X

Tmv

 .

Sh(X) cho biết trong tổng giá trị của tất cả các mục dữ liệu trong cơ sở dữ liệu thì giá trị của tập X chiếm bao nhiêu phần trăm. Ví dụ, với CSDL giao tác

bán hàng, Sh(X)=30% tức là trong tổng số lƣợng hàng đã bán đƣợc thì số lƣợng các mặt hàng trong X chiếm 30%.

MinShare: ngƣỡng cổ phần (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. Trƣờng hợp ngƣợc lại, X đƣợc gọi là tập mục cổ phần thấp.

Ký 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

trong định nghĩa 2.4 bởi điều kiện lmv X   min lmv_ .

Ví dụ: Xét cơ sở dữ liệu cho ở bảng 2.1 và minShare=30% . Bảng 2.2 là giá trị của các mục dữ liệu và cổ phần của chúng.

Mục dữ liệu A B C D E F G H Tổng số lmv(ip) 5 14 14 8 4 5 2 4 56

Sh(ip) 8,9% 25,0% 25,0% 14,3% 7,1% 8,9% 3,6% 7,1% 100%

Bảng 2.2. Giá trị lmv và cổ phần của các mục dữ liệu trong CSDL bảng 2.1.

Xét XBCD, giá trị của tập mục X là:

   , 01  ( , 03) ( , 06) ( , 07) =3+10+6+8=27.

lmv Ximv X Timv X Timv X Timv X T

Đóng góp của tập mục X:     27 = = 0,482 > 30% 56 lmv X Sh X Tmv  Do đó, XBCD là tập mục cổ phần cao.

Bảng 2.3 biểu diễn tất cả các tập mục cổ phần cao của cơ sở dữ liệu bảng 2.1. Bảng 2.3: Các tập mục cổ phần cao của CSDL bảng 2.1. Tập mục cổ phần cao BC BD BCD lmv(X) 21 22 27 Sh(X) 37,5% 39,3% 48,2%

Bảng 2.3. Các tập mục cổ phần cao của CSDL bảng 2.1.

2.4.4 Nội dung bài toán:

Cho CSDL giao tác DB và ràng buộc cổ phần minShare, khai phá tập mục cổ phần cao là tìm tập HS (High Share), chứa tất cả các tập mục cổ phần cao, tức là tập HSX X|  I Sh X, ( )minShare.

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 TDB // 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 ipC1

5. if lmv(ip) ≥min_lmv then 6. F1:F1 ip

7. else if CF i( )pmin_lmv then 8. C1:C1\ ip ; 9. RC1:C1; 11. for k:=2 to h 12. begin 13. for each Xp, XqRCk-1 14. Ck :=Apriori-join(Xp, Xq);

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

16. tính giá trị lmv(X) và CF(X) của các ứng viên X trong Ck;

18. if lmv(X)≥ min_lmv 19. Fk :Fk  X 20. else if CF(X)<min_lmv 21. Ck :  Ck - X ; 22. RCk:= Ck; 22. end 23. return FFk ; Nhận xét:

- Dữ liệu cho khai phá tập mục phổ biến là trƣờng hợp đặc biệt của dữ liệu cho khai phá cổ phần cao khi tất cả các mục dữ liệu trong các giao tác có giá trị là 0 hoặc 1.

- Tập mục cổ phần cao mang ý nghĩa khác với tập mục phổ biến. Tập mục phổ biến chỉ quan tâm đến số lần xuất hiện của tập mục trong các giao tác, trong khi đó tập mục cổ phần cao quan tâm đến tổng giá trị các mục dữ liệu của tập mục trong các giao tác. Tập mục phổ biến quan tâm xem nhóm hàng X

(tập mục) có bán đƣợc hay không mà bỏ qua các tham số rất quan trọng là tổng số lƣợng hàng bán đƣợc hoặc tổng lợi nhuận mang lại,…Với ngƣỡng

minShare cho trƣớc, một tập mục X có thể chỉ chứa trong một số ít giao tác của CSDL nhƣng lại là tập mục cổ phần cao nếu cổ phần Sh(X) của nó vƣợt ngƣỡng minShare. Kể cả khi khai phá trên tập dữ liệu có giá trị nhị phân ( 0 hoặc 1) thì khai phá tập mục cổ phần cao cũng cho kết quả khác với khai phá tập mục phổ biến. Chẳng hạn, với CSDL cho trong bảng 2.4, tập mục

XABCDGH chỉ xuất hiện trong giao tác T01, có cổ phần ( ) 6 50% 12

Sh X   và độ hỗ trợ sup( ) 1 20%

5

X   . Nếu ngƣỡng cổ phần minShare=30% thì X là tập mục cổ phần cao, cũng lấy ngƣỡng độ hỗ trợ minsup=30% thì X không phải tập mục phổ biến.

TID A B C D E F G H tmv T01 1 1 1 1 0 0 1 1 6 T02 1 0 0 0 0 0 0 0 1 T03 1 0 0 0 1 0 0 0 2 T04 0 1 0 0 0 1 0 0 2 T05 0 0 0 1 0 0 0 0 1

Một phần của tài liệu (LUẬN văn THẠC sĩ) nghiên cứu luật kết hợp và ứng dụng trong bài toán xây dựng hệ hỗ trợ học sinh trung học phổ thông (Trang 30)