Xem mẫu

  1. Nguyễn Hữu Trọng, Lê Đức An, Trần Xuân Việt, Nguyễn Anh Hào MỘT THUẬT TOÁN TÌM TẬP THƯỜNG XUYÊN TRÊN CƠ SỞ DỮ LIỆU GIAO TÁC CÓ TRỌNG SỐ A NEW METHOD TO MINE FREQUENT ITEMSETS ON TRANSACTION DATA WEIGHTED Nguyễn Hữu Trọng1 , Lê Đức An2 , Trần Xuân Việt2 , Nguyễn Anh Hào2 1 Trường Đại học Nha Trang; Email: trongnhntu@gmail.com 2 Trường Đại học Quy Nhơn; Email: an.leduc@gmail.com, cntranxuanviet@yahoo.com, Hao.nguyenvan1979@gmail.com Tóm tắt – Tìm tất cả các tập mục dữ liệu thường xuyên là công việc Abstract – Find all of the frequent itemsets are basic work in data cơ bản trong khai phá dữ liệu. Trong hơn 20 năm từ ngày Agrawal mining. For more than 20 years from the date of Agrawal and và các cộng sự đưa ra thuật toán AIS, các nhà nghiên cứu đã đề colleagues provide AIS algorithm, the researchers have proposed xuất nhiều thuật toán cải tiến về tốc độ để phát hiện nhanh những many improved algorithms for detecting fast pace of the frequent tập mục dữ liệu thường xuyên. Những thuật toán này, một hướng itemsets. These algorithms, an improved focus on navigating the tập trung vào cải tiến cách duyệt qua tập dữ liệu và cách tính độ hỗ data sets and how to calculate the support of each candidate item trợ của từng tập mục dữ liệu ứng viên, một hướng khác, tập trung set, a different direction, focusing on the reduced size and split vào việc rút gọn kích thước và phân nhỏ cơ sở dữ liệu được xử lý. the data into several clusters. In this paper, we propose algorithms Trong báo cáo này, chúng tôi đề xuất thuật toán CABOWD, nhằm CABOWD (clustering algorithm based on weighted data), in order to rút ngắn thời gian tìm các tập thường xuyên theo hướng phân nhỏ shorten the time by the way to split the data and reduce data size. và rút gọn kích thước dữ liệu. Từ khóa – cơ sở dữ liệu giao tác, luật kết hợp; tập thường xuyên; Key words – database transactions; association rules; frequent phân cụm; trọng số. practice; clustering; weight. 1. Đặt vấn đề AIS, năm 1994 Agrawal và Srikant đưa ra thuật toán Apriori Cho I = {x1 , x2 , . . . , xn } là tập hợp các mục dữ liệu. [3], thuật toán đặt nền móng cho việc tìm tất cả các tập Một tập con t={xi1 , xi2 , . . . , xik } ⊆ I gọi là một giao tác thường xuyên và luật kết hợp. Hạn chế lớn nhất của thuật trên I. Một tập hợp gồm m giao tác T = {t1 , t2 , . . . , tm } gọi toán Aprori là duyệt qua cơ sở dữ liệu quá nhiều lần, đặc biệt là một cơ sở dữ liệu (CSDL) giao tác trên I. Mỗi tập hợp X với dữ liệu lớn, lưu trữ ở bộ nhớ ngoài thì thời gian duyệt ⊆ I gọi là tập mục dữ liệu (itemset), mỗi tập con S ⊆ T gọi quá lớn, việc tìm tất cả tập thường xuyên không khả thi. là một giao tác. Độ hỗ trợ (support) của một tập mục dữ liệu Thuật toán FP_Growth do nhóm nghiên cứu của Jiawei X, ký hiệu Supp(X) là số các giao tác trong T chứa X. Để Han trường đại học Illinois Hoa Kỳ đề xướng năm 2000 [4] đơn giản, quy ước dùng Supp(xi ) thay cho Supp({xi }) khi và trình bày đầy đủ trong [5]. Hạn chế của các thuật toán tập chỉ có một mục dữ liệu. Cho S0 là một số nguyên, ta nói FP_Growth là với dữ liệu lớn, việc đệ quy để tìm tất cả các X là tập mục dữ liệu thường xuyên (frequent itemset) theo tập thường xuyên của FP_Growth tốn một thời gian khá lớn. ngưỡng S0 nếu Supp(X) ≥ S0 . Một biểu thức X1 → X2 , Khi dữ liệu lớn, việc đệ quy có thể tràn bộ nhớ, không thể với X1 , X2 ⊆ I và X1 ∩ X2 = φ được gọi là một luật kết thực hiện được. Nhiều cải tiến FP_Growth đã được tổng hợp hợp (Association rule) trên T. Độ hỗ trợ của luật kết hợp trong [9]. X1 → X2 , ký hiệu Supp(X1 → X2 ) = Supp(X1 ∪ X2 ) = Supp(X1 X2 ). Luật kết hợp f:X1 → X2 trên T là luật thường 3. Phân cụm dữ liệu xuyên theo ngưỡng S0 nếu Supp(X1 → X2 ) ≥ S0 . Độ Phân cụm (Data clustering) hay gom cụm là quá trình tin cậy (Confidence) của luật X1 → X2 , là tỷ số: p = phân chia các đối tượng trong CSDL T vào các cụm sao cho Conf(X1 → X2 ) = Supp(X1 → X2 )/Supp(X1 ), ký hiệu các đối tượng có độ tương tự giống nhau được gom vào một Conf(X1 → X2 ). Với C0 ∈ (0, 1] ta nói f:X1 → X2 là luật cụm. Như vậy, mỗi đối tượng trong T thuộc về một và chỉ tin cậy (Confident rule) theo ngưỡng S0 và C0 nếu f là luật một cụm. Việc xử lý thay vì làm trên toàn cơ sở dữ liệu có thường xuyên theo ngưỡng S0 và Conf(X1 → X2 ) ≥ C0 . thể thu lại trên từng cụm. Các kết quả tiêu biểu của kỹ thuật Bài toán tìm luật kết hợp trên một CSDL được chia phân cụm và nén dữ liệu được trình bày trong [6][7][8] và thành hai bài toán nhỏ. Bài toán thứ nhất là tìm tất cả các [11][12][13][14]. tập mục dữ liệu thường xuyên theo ngưỡng tối thiểu cho trước. Bài toán thứ hai là tìm ra những luật kết hợp từ những Thời gian tìm tập ứng viên trong thuật toán Apriori tập mục dữ liệu thường xuyên thỏa độ tin cậy tối thiểu cho là không đáng kể khi ta có một giải thuật tốt. Trong báo trước. Bài toán thứ hai là đơn giản, hầu hết các nghiên cứu cáo này, chúng tôi đề xuất thuật toán CABOWD (clustering về luật kết hợp tập trung ở bài toán thứ nhất. Phát triển thuật algorithm based on weighted data), nhằm cải tiến cách tính toán khai phá luật kết hợp là làm giảm độ phức tạp tính toán độ hỗ trợ của tập ứng viên, rút ngắn thời gian tìm các tập của thuật toán để cải thiện tốc độ xử lý thường xuyên theo hướng phân cụm và rút gọn kích thước dữ liệu. 2. Các thuật toán cơ bản 3.1. CSDL giao tác có trọng số được sắp rút gọn Các thuật toán cơ bản đã được tóm tắt trong [1]. Năm 1993, Agrawal, Imielinski, Swami [2] đưa ra một thuật toán Cho I={x1 ,x2 ,. . . ,xn } là tập các mục dữ liệu. 69
  2. TẠP CHÍ KHOA HỌC VÀ CÔNG NGHỆ, ĐẠI HỌC ĐÀ NẴNG - SỐ 1(74).2014.QUYỂN II 3.1.1. Định nghĩa 1: CSDL giao tác có trọng số Trong phần sau, cho T là CSDL giao tác có trọng số Một bộ có thứ tự ti =((xi1 ,wi1 ),(xi2 ,wi2 ),. . .,(xik , wik )) được sắp rút gọn trên I. Cho X = {xi1 , xi2 , . . . , xik1 } ⊆ I với {xi1 , xi2 , . . ., xik } ⊆ I và wij ∈N, j=1..k gọi là một giao thì quy ước rẳng các phần tử của X đã được sắp thứ tự thỏa tác có trọng số trên I, wij là trọng số của mục dữ liệu xij Supp(xi1 ) ≥ . . . ≥ Supp(xi1 ). trong ti . Đặt Set(ti )={xi1 , xi2 , . . . , xik } là tập mục dữ liệu 3.1.7. Định nghĩa 7: Quan hệ tương dương ≈ của ti . Một tập m giao tác có trọng số T={t1 ,t2 , . . . ,tm } gọi Trên T ta định nghĩa quan hệ ≈ như sau: ∀ti , tj ∈ là một CSDL giao tác có trọng số trên I. T : ti = ((xi1 , wi1 ), (xi2 , wi2 ), ..., (xis , wis )), tj = 3.1.2. Định nghĩa 2: SuppW(X) ((xj1 , wj1 ), (xj2 , wj2 ), ..., (xjr , wjr )) : ti ≈ tj ⇔ xi1 = xj1 Cho T là CSDL giao tác só trọng số trên I. Với X= {xi1 , Chứng minh dễ dàng rằng, ≈ là quan hệ tương đương xi2 , . . . , xik } ⊆ I, ta định nghĩa SuppW(X) là độ hỗ trợ theo trên T. trọng số của X: 3.1.8. Tính chất X Ta có: Với X = {xi1 , xi2 , . . . , xik1 } ⊆ I : X ⊆ SuppW(X) = Min{wi1 , ..., wik } {xi1 , xj2 , . . . , xjk2 } ⇔ {xi2 , . . . , xik1 } ⊆ {xj2 , . . . , xjk2 } X⊆Set(ti ) ti =((xi1 ,wi1 ),...,(xik ,wik ))∈T Từ tính chất này, để xem {xi1 , xi2 , . . . , xik1 } có phải là tập con của {xi1 , xj2 , . . . , xjk2 } hay không, ta chỉ cần xem Function SuppW(X); {xi2 , . . . , xik1 } có là tập con của {xj2 , . . . , xjk2 } hay không. Input: T: CSDL giao tác có trọng số trên I, X ⊆ I. 3.1.9. Phân rã giao tác Output: SuppW(X). Method: Với ti = ((xi1 , wi1 ), (xi2 , wi2 ), . . . , (xik , wik )) ∈ T, ta SW:=0; có thể phân thành k giao tác con : C(ti ) = {ti1 , ti2 , ..., tik }, For each tj = ((xj1 ,wj1 ), . . . , (xjs ,wjs )) ∈ T do với: ti1 = ((xi1 , wi1 ), (xi2 , wi2 ), ..., (xik , wik )), ti2 = If X ⊆ Set(tj ) then ((x i2 , w i2 ), ..., (xik , wik )), ti3 = ((xi3 , wi3 ), (xi4 , wi4 ), ..., SW:=SW+Min{wj1 , wj2 , . . . , wjk } (x ik , w ik )), ..., tik = ((xik , wik )). EndIf; Nhận xét rằng: X ⊆ Set(ti ) ⇔ Tồn tại duy nhất một EndFor; tij để X ⊆ Set(tij ). Từ đây, để kiểm chứng X ⊆ Set(ti ) ta Return SW; kiểm tra xem có một trên tij để X ⊆ Set(tij ) hay không. Gọi TG là tập hợp tất cả các giao tác được phân rã từ các giao tác của T: 3.1.3. Định nghĩa 3: CSDL giao tác có trọng số được sắp TG = Ut∈T C(t) Cho T là một CSDL giao tác có trọng số trên I. Một bộ có thứ tự ti = ((xi1 , wi1 ), (xi2 , wi2 ), . . . , (xik ,wik )) có 3.1.10. Sự tương đương của 2 CSDL T và TG SuppW (xi1 ) ≥ SuppW(xi2 ) ≥ . . . ≥ SuppW(xik ) được gọi Hai CSDL giao tác T1 và T2 trên cùng tập mục dữ là một giao tác có trọng số được sắp trên I. liệu I gọi là tương đương nếu và chỉ nếu: ∀X ⊆ I ta có Một CSDL giao tác có trọng số trên I mà mọi giao tác SuppT1 (X) = SuppT2 (X) với SuppT (X) là độ hỗ trợ của đều được sắp được gọi là một CSDL giao tác có trọng số X trên T. được sắp trên I. Từ định nghĩa việc phân rã giao tác và nhận xét ở mục 3.1.4. Định nghĩa 4: Quan hệ ≺ trên, có T và TG là hai CSDL giao tác tương đương. Từ đây, để tính độ hỗ trợ củaX ⊆ I, thay vì tìm trên T ta đi tìm Cho T là CSDL giao tác có trọng số được sắp trên I. trên T . G Trên T ta định nghĩa một quan hệ ≺ như sau: ∀ ti , tj ∈ T: ti = ((xi1 ,wi1 ), (xi2 , wi2 ), . . . , (xis , wis )), tj = ((xj1 , wj1 ), (xj2 , 3.2. Phân cụm dữ liệu wj2 ), . . . , (xjr , wjr )): ti ≺ tj ⇔ s ≤ r và xi1 = xj1 , xi2 = xj2 , Phân hoạch TG thành n lớp (cụm) tương đương theo . . . , xis = xjs . quan hệ ≈ đã định nghĩa trên. 3.1.5. Định nghĩa 5: Phép toán ⊕T Gọi CWi0 là lớp tương đương của tij = ((xi , wi ), (xi2 , wi2 ), . . . , (xik , wik )) ∈ TG , là tập hợp các giao tác Trên T, là CSDL giao tác có trọng số được sắp trên I, trên T có mục dữ liệu đầu tiên là x : G i định nghĩa phép toán ⊕T như sau: CWi0 = {(xi , wi1 ), (xi2 , wi2 ), . . . , (xik , wik ))|tij = ∀ti , tj ∈ T : ti = ((xi1 , wi1 ), (xi2 , wi2 ), . . . , (xis , wis )), ((xi , wi ), (xi2 , wi2 ), . . . , (xik , wik )) ∈ TG }, i = 1..n. tj = ((xj1 , wj1 ), (xj2 , wj2 ), ..., (xjr , wjr )) : Nếu ti ≺ Từ phân hoạch, ta có: Với X = {xi , xi2 , . . . , xik } ⊆ I, tj thì t = ti ⊕T tj = ((xi1 , wi1 + wj1 ), (xi2 , wi2 + nếu có t ∈ T để X ⊆ Set(t) thì tồn tại duy nhất t0 ∈ CW0 i wj2 ), . . . , (xis , wis + wjs ), (xis+1 , wjs+1 ), . . . , (xjr , wjr )). để X ⊆ Set(t0 ). Từ đây, để tính SuppW(X), ta chỉ cần duyệt 3.1.6. Định nghĩa 6: CSDL giao tác có trọng số được sắp trên cụm CW0 . i rút gọn Từ tính chất 3.1.8, ta cắt bỏ mục dữ liệu đầu tiên của Cho T là CSDL giao tác có trọng số được sắp trên I. Ta các giao tác trong CW0 i thành tập CWi để giảm kích nói T là CSDL giao tác có trọng số được sắp rút gọn trên I thước mà không ảnh hưởng đến việc tìm độ hỗ trợ của tập nếu: Không tồn tại bất kỳ hai giao tác ti , tj nào của T thỏa: X = {xi , xi2 , . . . , xik }. ti ≺ tj . Đặt TCW = {CW1 , CW2 , . . . , CWn }. 70
  3. TẠP CHÍ KHOA HỌC VÀ CÔNG NGHỆ,EndProcedure; ĐẠI HỌC ĐÀ NẴNG - SỐ ………………. Nguyễn Hữu Trọng, Lê Đức An, Trần Xuân Việt, Nguyễn Anh Hào EndProcedure; 3.3.4. Thuật toán phân cụm dữ liệu: 3.3. Thuật toán phân cụm dữ liệu 3.3.1. Cây W_Tree Procedure 3.3.4. 3.3.4. Thuật Thuật toán phânphân Cluster; toán cụm cụm dữ liệu dữ liệu: Cây W_Tree là một cây có nhiều nhánh có 2 cấp. Các Input: Procedure TG, Procedure Cluster; CSDL Cluster; giao tác có trọng số được sắp nút cấp 1, mỗi nút chứa tên của các mục dữ liệu được sắp Input: Input: rút TG,TG, gọn. CSDL CSDL giao giao tác tác có trọng có trọng số được sốsắp được sắp rút gọn. xếp theo thứ tự giảm Hình dần của trợ. Mỗi nút xi có một độ hỗW-Tree 1. Cây Output: Output: rút TCW: gọn. TCW: TậpTập cáccác cụmcác dữ cụm liệu dữ liệu con trỏ trỏ đến xâu nútHình cấp 2, chứa giao 1. Cây W-Treetác của CSDL giao Method: Output: TCW: Tập các các cụm dữ liệu Method: trọngThuật tác có3.3.2. toán số được sắp,xây bắt dựng câyxW_Tree: đầu bằng i. For Fori:=1 Method: i:=1totonndodoCWi:=φ; CWi:= EndFor; ; EndFor; 3.3.2. ThuậtCreat_Tree(T,Root); Procedure toán xây dựng cây W_Tree: For each t = ((x , wi1 ), (xEndFor; , wi2 ),ik,w . . .ik,))TG ik )) ∈ (xik , wdo For each i:=1 toiti=((xn doi1,w i1),(x CWi:= i1 i2; ,w i2),…,(x i2 Procedure Input: CSDLCreat_Tree(T,Root); giao tác T = {t1, t2, …, tm} trên tập TG do ForForeach j:=1tto =((x k-1i1,wdoi1),(xi2,wi2),…,(xik,wik))TG do mục Input:dữCSDL liệu Igiao = {x1tác, x2, T…,=xn{t} 1, t2, …, tm} trên tập For j:=1i to k-1 do ij+1),…,(xik,wik)); CWij:= CWijtij; ttijij=((x For j:=1 toij+1 = ,wdo k-1 ((x ij+1 , wij+1 ), . . . , (xik , wik )); CWij := Output: mục dữ Root: liệu I =W_tree;{x1, x2, …, xn} EndFor; tij=((x ),…,(xik,wik)); CWij:= CWijtij; CW ∪ t,w ij ij+1 ij ;ij+1 Method: Output: Root: W_tree; EndFor; EndFor; EndFor; For each xi  I do Si=Supp(xi); EndFor; Method: TCW:={CW1, EndFor; EndFor; CW2, …, CWn}; I':=(x For eachi1, xi2, x i inI)do …,x thỏa Si1… Siin);; EndFor; Si=Supp(x EndProcedure; TCW:=CW1, TCW:={CW1, CW2,. .…, CW2, . , CWn; CWn}; I':=(xi1, xi2, …,xin) thỏa Si1… Sin; New(Root);P:=Root; EndProcedure; EndProcedure; For j:=1 to n do 3.4. Ví dụ minh họa New(Root);P:=Root; ForNew(P1); j:=1 to n do Hình 1: Cây;W-Tree P1^.Inf:=x ij P^.Right:=P1; 3.4. 3.4. Ví Ví dụ dụChominh minh CSDLhọahọa giao tác T: 3.3.2. Thuật toán xâyP1^.Inf:=x P1^.Left:=Nil; New(P1); dựng câyijW_Tree: P:=P1; ; P^.Right:=P1; GCho tác CSDLCho MụcCSDL DL tácgiao giao T:t4 tác T: A,B,D t8 A,B,C,E Procedure EndFor; Creat_Tree(T,Root); P1^.Left:=Nil; P:=P1; t1 G tác A,B,E Mục DL tt54 A,C A,B,D tt98 A,B,C A,B,C,E ik},1 2T do m Input:For CSDL each EndFor; giaot ={xtáci1,T…,=x{t , t , . . . , t } trên tập mục dữ tt21 B A,B,E tt65 B,C A,C tt109 A,B,E,G A,B,C liệu I = {x1 ,t':=((x xn } x2 , . . . ,,1),…,(x t B,C t A,C For each t ={x j1 i1, …, xikjk},  T do ,1)) with (Set(t')=t) and t32 B t76 B,C t 10 A,B,E,G Output: Root: W_tree; Method: t':=((xj1,1),…,(x (Sj1…jk,1)) Sjk); with (Set(t')=t) and t 3.4.1. 3 B,C Xây dựng cây W_Tree: t 7 A,C For each x2 i ∈ I1j do(SSj1i… P := P ^.Left; Sjk); i ); EndFor; = Supp(x 3.4.1. 3.4.1. XâyXây Độdựng dựng hỗ cây câychoW_Tree: trợW_Tree mỗi mục dữ liệu : (B:8; I’:=(xi1 ,IfPx2i2 :=, .P.1j.^.Left; exists ,(P xin2k^.Inft') ) thỏa Si1or ≥ (t' ... ≥ P2kS^.Inf) ; then in Độ hỗ A:7; Độ C:6; trợE:3;hỗ chotrợ mỗicho D:1; mục G:1) mỗi mục (B:8; dữ liệu: dữ liệu A:7; :C:6; (B:8;E:3; New(Root);P:=Root; If exists (P ^.Inft') or (t' P ^.Inf) then D:1; G:1) P2k^.Inf:= P2k^.InfTt' 2k 2k A:7; C:6; E:3; D:1; G:1) For j:=1 to n do Sắp xếp Sắp cácxếp mụccác dữ liệu mụctrong dữ giao liệu táctrong theo giao thứ tựtác giảm Else P New(P2); ^.Inf:= ∧ P P2^.Inf:=t'; ^.Inf ∧ Tt' Jont(P1j,P2); 2k 2k New(P1); P1 .Inf:=xij ; P .Right:=P1; theo thứSắp tự dần của độ hỗ trợ T’. giảm xếp cácdần mụccủa độ dữ hỗ trợ liệu T’. trong giao tác EndIf; Else New(P2); P1∧ .Left:=Nil; P:=P1; P2^.Inf:=t'; Jont(P1j,P2); theo G tácthứMục tự giảmDL dầnt4củaB,A,D độ hỗ trợ T’. t8 B,A,C,E EndFor; EndFor; EndIf; EndProcedure; G t tác 1 B,A,E Mục DL tt54 A,C B,A,D tt98 B,A,C B,A,C,E ForEndFor; each t ={xi1 , . . . , xik }, ∈ T do tt21 B B,A,E tt65 B,C A,C tt109 B,A,E,G B,A,C t’:=((xj1 , 1), . . . , (xjk , 1)) with (Set(t’)=t) and EndProcedure; 3.3.3. Thuật toán chuyển CSDL giao tác thành (Sj1 ≥ . . . ≥ Sjk ); t3 t2B,C B t6 B,C t7 A,C t10 B,A,E,G CSDL 3.3.3. giao P2 :=Thuật tác toán P1j ∧ .Left;có trọng chuyển số CSDL được sắp rúttác giao gọnthành t3 TạoB,Ccây trọng tsố 7 W_Tree. A,C Tạo cây trọng số W_Tree. CSDL giao(PTrans; If exists Procedure tác ∧ có trọng số được sắp rút gọn ∧ 2k .Inf≺t’) or (t’≺ P2k .Inf) then Tạo cây trọng số W_Tree. P∧ Procedure 2k .Inf:= Trans;P∧2k .Inf⊕T t’ Input: Else New(P2); Ptác CSDL giao ∧T = {t1, t2, …, tm} trên tập 2k .Inf:=t’; Jont(P1j , P2); Input: mục CSDLdữ EndIf; giao liệu tácI =T {x = 1{t, 1,x2t,2…, , …,xnt}m} trên tập Output: EndFor; mục TG:dữ CSDL liệugiao I = {xtác 1, xcó 2, …, trọng xn} số được sắp EndProcedure; Output: rútTGgọn. : CSDL giao tác có trọng số được sắp 3.3.3.Method: Thuậtrút gọn. toán chuyển CSDL giao tác thành CSDL giao tác có trọng số được sắp Creat_Tree(T,Root); Method: rút gọn TG:=; P1:=Root; Chuyển cây thành cơ sở dữ liệu giao tác có trọng While Procedure P1Nil Trans; do Creat_Tree(T,Root); P1:=Root; TG:=; được Chuyển sắpcâyrút thành gọn: cơ sở dữ liệu giao tác có trọng Input:While CSDL giao tác T P2:=P1^.Left; P1Nil do= {t1 , t2 , . . . , tm } trên tập mục dữ liệu I = {xWhile . . , xn } do 1 , x2 , . P2Nil đượctsắp rútTập gọn:MDL có trọng số P2:=P1^.Left; id Output: TG : CSDL giao tác có trọng số được sắp rút gọn. :=TGP2^.Inf; WhileTGP2Nil do P2:=P2^.Next; t’ tid1 Tập MDL ((B,3), có trọng (A,2), (E,2),số(G,1)). Method: Chuyển t’ cây ((B,2), thành cơ(C,2)) sở dữ liệu giao tác có trọng số được TG:=TGP2^.Inf; EndWhile; Creat_Tree(T,Root); P1:=Root;P2:=P2^.Next; TG := φ; 2 sắp rút gọn: 1 ((B,3), (A,2), (E,2), (G,1)). P1:=P1^.Right; t’ 32 ((B,1), ((B,2), (A,1), (C,2)) (D,1)) While EndWhile; P1Nil do EndWhile; P1:=P1^.Right; ∧ t’ 43 tid((B,2), ((B,1), (A,2),(C,2),(E,1)) Tập MDL(D,1)) (A,1), có trọng số P2:=P1 .Left; EndWhile; While P2Nil do t’ 54 ((A,2), ((B,2), (C,2)) (A,2),(C,2),(E,1)) t’1 ((B,3), (A,2), (E,2), (G,1)). 4 TG := TG ∪ P2∧ .Inf; P2:=P2∧ .Next; t’5 t’2((A,2), (C,2)) ((B,2), (C,2)) EndWhile; 4 t’3 ((B,1), (A,1), (D,1)) P1:=P1∧ .Right; EndWhile; t’4 ((B,2), (A,2),(C,2),(E,1)) EndProcedure; t’5 ((A,2), (C,2)) 71
  4. TẠP CHÍ KHOA HỌC VÀ CÔNG NGHỆ, ĐẠI HỌC ĐÀ NẴNG - SỐ 1(74).2014.QUYỂN II Phân rã giao tác For each t in CWj t’11 ((B,3),(A,2),(E,2),(G,1)) t’33 ((D,1)) If X ⊆ Set(t) ∈ then SuppW(X):=SuppW(X)+1; t’12 ((A,2),(E,2),(G,1)) t’41 ((B,2),(A,2),(C,2),(E,1)) EndIf; t’13 ((E,2),(G,1)) t’42 ((A,2),(C,2),(E,1)) EndFor; t’14 ((G,1)) t’43 ((C,2),(E,1)) If SuppW(X) ≥ S0 then t’21 ((B,2),(C,2)) t’44 ((E,1)) X:={xj , X}; Lk := Lk ∪ X; t’22 ((C,2)) t’51 ((A,2),(C,2)) EndIf; t’31 ((B,1),(A,1),(D,1)) t’52 ((C,2)) EndFor; t’32 ((A,1),(D,1)) EndFor; Gom cụm dữ liệu L:=L ∪ Lk ; Cụm B: Cụm A Until Lk = φ; t’11 ((A,2),(E,2),(G,1)) t’12 ((E,2),(G,1)) EndProcedure; t’21 ((C,2)) t’32 ((D,1)) 5. Thử nghiệm t’31 ((A,1),(D,1)) t’42 ((C,2),(E,1)) t’41 ((A,2),(C,2),(E,1)) t’51 ((C,2)) Chúng tôi đã chạy thuật toán CABOWD và thuật toán Cụm C: Cụm E FP_Growth trên máy tính DELL CPU Intel Core i-3 2328M t’43 ((E,1)) t’13 ((G,1)) 2.30GHz trên hệ điều hành Windows 7, ngôn ngữ Delphi, chạy với các ngưỡng tối thiểu và thời gian tương ứng Cụm D = Cụm G = φ; trong các bảng so sánh sau với bộ dữ liệu mẫu trên 3.5. Tính đúng đắn của thuật toán http://fimi.ua.ac.be/data: Thuật toán phân cụm dữ liệu có ba bước: 5.1. Tập dữ liệu T1I5D1000K • Bước 1: Xây dựng cây W_Tree duyệt qua CSDL 2 lần nên độ phức tạp là O(m). S0 (1) (2) S0 (1) (2) • Bước 2: Chuyển dữ liệu từ cây W_Tree sang CSDL 100 6975 30643 600 588 4327 giao tác có trọng số rút gọn TG với ||TG || ≤ ||T|| nên 200 3197 14074 700 540 4133 có độ phức tạp O(m). 300 1662 7815 800 516 4113 • Bước 3: Phân cụm TG thành TCW chỉ duyệt qua TG 400 999 5419 900 489 3927 một lần và phân t ∈ TG thành tối đa n giao tác con 500 708 4599 1000 464 3898 nên độ phức tạp là O(m*n). (1): CABOWD (giây) (2) FP_Growth (giây) Do đó độ phức tạp chỉ là O(m ∗ n). Cơ sở của thuật toán được xây dựng trên phép toán ⊕T và quan hệ tương đương ≈ nên bảo đảm tính đúng. 4. Thuật toán CABOWD Chúng tôi đề xuất thuật toán CABOWD (clustering algorithm based on weighted data), tìm tập thường xuyên trên cơ sở dữ liệu giao tác có trọng số được sắp rút gọn đã phân cụm. Procedure CABOWD; Input : CW=CW1, CW2, . . . , CWn;S0:Integer; Output: L=X ∈ I| SuppW(X) = S0; Method: L1 := {x ∈I| SuppW(x)≥ S0}= {xi1 , xi2 , . . . xin1 }; //Có n1 mục dữ liệu thường xuyên L:=L1 ; Repeat k:=2; Hình 2: So sánh thời gian chạy hai thuật toán CABOWD Ck là tập tất cả các tập ứng viên có k phần tử được và FP_Growth trên dữ liệu T1I5D1000K tính từ Lk−1 ; 5.2. Tập dữ liệu T0.5I4D4000K Sắp xếp các mục dữ liệu trong các phần tử của Ck theo thứ tự giảm dần của độ hỗ trợ; S0 (1) (2) S0 (1) (2) For j:= 1 to n1 doUj := φ; EndFor; 1000 1104 8740 6000 195 4005 For each X={xi1 , xi2 , . . . ,xik } ∈ Ck do 2000 646 5901 7000 174 3983 Ui1 := Ui1 ∪ {xi2 , . . . , xik }; 3000 427 4628 8000 161 3939 EndFor; 4000 305 4193 9000 153 3867 Lk := φ; 5000 233 4091 10000 151 3789 For j:= 1 to n1 do (1): CABOWD (giây) (2) FP_Growth (giây) For each X in Uj do SuppW(X):=0; 72
  5. Nguyễn Hữu Trọng, Lê Đức An, Trần Xuân Việt, Nguyễn Anh Hào [4] Han j, Pei H, and Yin Y, “Mining Frequent Patterns without Candidate Generation”, In: Proc. Conf. on the Management of Data (SIGMOD’00, Dallas, TX), ACM Press, New York, NY, USA 2000, pages 1-12. [5] J Han, M Kamber, J Pei Data Mining Concepts and Techniques, Third Edition, Morgan Kaufmann, 2012 [6] Nguyễn Hữu Trọng, "Thuật toán khai thác tập thường xuyên hiệu quả dựa trên kỹ thuật phân lớp dữ liệu", Tạp chí Tin học và Điều khiển học, Viện Khoa học và Công Nghệ Việt Nam, Số 3, tập 23, trang 260-271, 2007 [7] Nguyễn Hữu Trọng, Nguyễn Thị Minh Châu, Phạm Ngọc Công, "Phát triển thuật toán khai phá tập thường xuyên dựa vào sự phân lớp dữ liệu – Thuật toán PHL (Phân hoạch lớp)", Kỷ yếu Hội thảo quốc gia Một số vấn đề chọn lọc của công nghệ thông tin và truyền thông lần thứ XIV tại Cần Thơ, 07-08/10/2011. Nhà xuất bản Khoa học và kỹ thuật Hà Nội 2012, trang 510-521. [8] Nguyễn Hữu Trọng, Nguyễn Thị Minh Châu, Phạm Ngọc Công, Hình 3: So sánh thời gian chạy hai thuật toán CABOWD và " Một cách tối ưu cơ sở dữ liệu giao tác cho các thuật toán tìm FP_Growth trên dữ liệu T0.5I4D4000K. luật kết hợp", Kỷ yếu Hội thảo quốc gia Một số vấn đề chọn lọc của công nghệ thông tin và truyền thông lần thứ XV tại Hà Nội, 6. Kết luận 03-04/12/2012. Nhà xuất bản Khoa học và kỹ thuật Hà Nội 2013. Thuật toán CABOWD được xây dựng trên cơ sở toán Trang 227-232 [9] Damor Nirali N, Radhika Krishnan, Patel Hardik, "A New Method học với quan hệ tương đương ≈ và phép hợp nhất ⊕T nên to Mine Frequent Itemsets using Frequent Itemset Tree", Research bảo đảm tính đúng đắn của thuật toán. Với một CSDL giao Journal of Computer and Information Technology Sciences, Vol. tác, việc phân hoạch để nén dữ liệu chỉ làm một lần, với 1(3), Pp 9-12, April 2013 kết quả nén, ta có thể áp dụng nhiều thuật toán khác nhau [10] D. Kerana Hanirex, A. Kumaravel, "An Efficient Partition and Two Dimensional Approach For Mining Frequent Itemsets", trên tập dữ liệu này. Với độ rút gọn dữ liệu rất lớn sau khi International Journal of Technological Synthesis and Analysis, phân hoạch tiết kiệm lớn không gian lưu trữ, tăng tốc độ Volume 1 Issue 1, xử lý. Việc tìm các tập được xây dựng dựa trên thuật toán [11] A Tiwari, Rajendra K. Gupta, Dev Prakash Agrawal, "Cluster Based Apriori nên bảo đảm tính dừng. Qua thử nghiệm, thuật toán Partition Approach for Mining Frequent Itemsets", International Journal of Computer Science and Network Security, VOL.9 No.6, CABOWD chạy nhanh hơn rất nhiều lần so với thuật toán Pp 191-199 June 2009 FP_Growth, điều này nói lên tính hiệu quả của thuật toán. [12] D.Kerana Hanirex, Dorai Rangaswamy, "Eficient Algorithm For Mining Frequent Itemsets Using Clustering Techniques", Tài liệu tham khảo International Journal on Computer Science and Engineering, Vol. [1] Endu Duneja, A.K. Sachan, "A Survey on Frequent Itemset 3 No. 3 Pp 1028-1032, Mar 2011. Mining with Association Rules", International Journal of Computer [13] Jianwei Li, Ying Liu, Wei-keng Liao, Alok Choudhary, "Parallel Applications (0975 – 8887), Volume 46– No.23, Pp 18-24, Data Mining Algorithms for Association Rules and Clustering", May 2012 CRC Press, Pp 1-25, 2006 [2] Agrawal. R., Imielinski. T., Swami. A., “Mining Associations [14] V.Vidhya Rani, I. Elizabeth Shanthi, "A Study on Efficient Data between Sets of Items in Massive Databases”, In Proc.of the 1993 Mining Approach on Compressed Transaction", Global Journal of ACM-SIGMOD Int’l Conf. on Management of Data, pages 207-216. Computer Science and Technology, Volume 11 Issue 14 Version 1.0, [3] Agrawal. R., Mannulla. H., Srikant. R., Toivonen. H., Verkamo. A. Pp 41-46, August 2011 I.,”Fast Discovery of Association Rules”, In Advances in Knowledge Discovery and Data Mining, AAAI Press, 1996, pages 307-328. (BBT nhận bài: 21/12/2013, phản biện xong: 19/01/2014) 73
nguon tai.lieu . vn