Tải bản đầy đủ (.pdf) (5 trang)

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ố

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.47 MB, 5 trang )

Nguyễn Hữu Trọng, Lê Đức An, Trần Xuân Việt, Nguyễn Anh Hào

MỘT THUẬT TỐN TÌM TẬP THƯỜNG XUN
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

2

Trường Đại học Nha Trang; Email:
Trường Đại học Quy Nhơn; Email: , ,


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
cơ bản trong khai phá dữ liệu. Trong hơn 20 năm từ ngày Agrawal
và các cộng sự đưa ra thuật toán AIS, các nhà nghiên cứu đã đề
xuất nhiều thuật toán cải tiến về tốc độ để phát hiện nhanh những
tập mục dữ liệu thường xuyên. Những thuật toán này, một hướng
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ỗ
trợ của từng tập mục dữ liệu ứng viên, một hướng khác, tập trung
vào việc rút gọn kích thước và phân nhỏ cơ sở dữ liệu được xử lý.
Trong báo cáo này, chúng tôi đề xuất thuật tốn CABOWD, nhằm
rút ngắn thời gian tìm các tập thường xuyên theo hướng phân nhỏ
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;
phân cụm; trọng số.

Abstract – Find all of the frequent itemsets are basic work in data
mining. For more than 20 years from the date of Agrawal and


colleagues provide AIS algorithm, the researchers have proposed
many improved algorithms for detecting fast pace of the frequent
itemsets. These algorithms, an improved focus on navigating the
data sets and how to calculate the support of each candidate item
set, a different direction, focusing on the reduced size and split
the data into several clusters. In this paper, we propose algorithms
CABOWD (clustering algorithm based on weighted data), in order to
shorten the time by the way to split the data and reduce data size.

1. Đặt vấn đề
Cho I = {x1 , x2 , . . . , xn } là tập hợp các mục dữ liệu.
Một tập con t={xi1 , xi2 , . . . , xik } ⊆ I gọi là một giao tác
trên I. Một tập hợp gồm m giao tác T = {t1 , t2 , . . . , tm } gọi
là một cơ sở dữ liệu (CSDL) giao tác trên I. Mỗi tập hợp X
⊆ I gọi là tập mục dữ liệu (itemset), mỗi tập con S ⊆ T gọi
là một giao tác. Độ hỗ trợ (support) của một tập mục dữ liệu
X, ký hiệu Supp(X) là số các giao tác trong T chứa X. Để
đơn giản, quy ước dùng Supp(xi ) thay cho Supp({xi }) khi
tập chỉ có một mục dữ liệu. Cho S0 là một số nguyên, ta nói
X là tập mục dữ liệu thường xuyên (frequent itemset) theo
ngưỡng S0 nếu Supp(X) ≥ S0 . Một biểu thức X1 → X2 ,
với X1 , X2 ⊆ I và X1 ∩ X2 = φ được gọi là một luật kết
hợp (Association rule) trên T. Độ hỗ trợ của luật kết hợp
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
xuyên theo ngưỡng S0 nếu Supp(X1 → X2 ) ≥ S0 . Độ
tin cậy (Confidence) của luật X1 → X2 , là tỷ số: p =
Conf(X1 → X2 ) = Supp(X1 → X2 )/Supp(X1 ), ký hiệu
Conf(X1 → X2 ). Với C0 ∈ (0, 1] ta nói f:X1 → X2 là luật
tin cậy (Confident rule) theo ngưỡng S0 và C0 nếu f là luật

thường xuyên theo ngưỡng S0 và Conf(X1 → X2 ) ≥ C0 .
Bài tốn tìm luật kết hợp trên một CSDL được chia
thành hai bài toán nhỏ. Bài toán thứ nhất là tìm tất cả các
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
tập mục dữ liệu thường xuyên thỏa độ tin cậy tối thiểu cho
trước. Bài toán thứ hai là đơn giản, hầu hết các nghiên cứu
về luật kết hợp tập trung ở bài toán thứ nhất. Phát triển thuật
toán khai phá luật kết hợp là làm giảm độ phức tạp tính tốn
của thuật toán để cải thiện tốc độ xử lý

AIS, năm 1994 Agrawal và Srikant đưa ra thuật toán Apriori
[3], thuật tốn đặt nền móng cho việc tìm tất cả các tập
thường xuyên và luật kết hợp. Hạn chế lớn nhất của thuật
toán Aprori là duyệt qua cơ sở dữ liệu quá nhiều lần, đặc biệt
với dữ liệu lớn, lưu trữ ở bộ nhớ ngồi thì thời gian duyệt
q lớn, việc tìm tất cả tập thường xun khơng khả thi.

2. Các thuật toán cơ bả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

Key words – database transactions; association rules; frequent
practice; clustering; weight.

Thuật tốn FP_Growth do nhóm nghiên cứu của Jiawei
Han trường đại học Illinois Hoa Kỳ đề xướng năm 2000 [4]
và trình bày đầy đủ trong [5]. Hạn chế của các thuật toán
FP_Growth là với dữ liệu lớn, việc đệ quy để tìm tất cả các
tập thường xuyên của FP_Growth tốn một thời gian khá lớn.

Khi dữ liệu lớn, việc đệ quy có thể tràn bộ nhớ, khơng thể
thực hiện được. Nhiều cải tiến FP_Growth đã được tổng hợp
trong [9].
3. Phân cụm dữ liệu
Phân cụm (Data clustering) hay gom cụm là quá trình
phân chia các đối tượng trong CSDL T vào các cụm sao cho
các đối tượng có độ tương tự giống nhau được gom vào một
cụm. Như vậy, mỗi đối tượng trong T thuộc về một và chỉ
một cụm. Việc xử lý thay vì làm trên tồn cơ sở dữ liệu có
thể thu lại trên từng cụm. Các kết quả tiêu biểu của kỹ thuật
phân cụm và nén dữ liệu được trình bày trong [6][7][8] và
[11][12][13][14].
Thời gian tìm tập ứng viên trong thuật tốn Apriori
là khơng đáng kể khi ta có một giải thuật tốt. Trong báo
cáo này, chúng tơi đề xuất thuật tốn CABOWD (clustering
algorithm based on weighted data), nhằm cải tiến cách tính
độ hỗ trợ của tập ứng viên, rút ngắn thời gian tìm các tập
thường xuyên theo hướng phân cụm và rút gọn kích thước
dữ liệu.
3.1. CSDL giao tác có trọng số được sắp rút gọn
Cho I={x1 ,x2 ,. . . ,xn } là tập các mục dữ liệu.
69


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ố
được sắp rút gọn trên I. Cho X = {xi1 , xi2 , . . . , xik1 } ⊆ I

thì quy ước rẳng các phần tử của X đã được sắp thứ tự thỏa
Supp(xi1 ) ≥ . . . ≥ Supp(xi1 ).

Một bộ có thứ tự ti =((xi1 ,wi1 ),(xi2 ,wi2 ),. . .,(xik , wik ))
với {xi1 , xi2 , . . ., xik } ⊆ I và wij ∈N, j=1..k gọi là một giao
tác có trọng số trên I, wij là trọng số của mục dữ liệu xij
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
Chứng minh dễ dàng rằng, ≈ là quan hệ tương đương
Cho T là CSDL giao tác só trọng số trên I. Với X= {xi1 ,
trên
T.
xi2 , . . . , xik } ⊆ I, ta định nghĩa SuppW(X) là độ hỗ trợ theo
trọng số của X:
3.1.8. Tính chất
SuppW(X) =

Min{wi1 , ..., wik }
X⊆Set(ti )
ti =((xi1 ,wi1 ),...,(xik ,wik ))∈T

Function SuppW(X);
Input: T: CSDL giao tác có trọng số trên I, X ⊆ I.
Output: SuppW(X).
Method:

SW:=0;
For each tj = ((xj1 ,wj1 ), . . . , (xjs ,wjs )) ∈ T do
If X ⊆ Set(tj ) then
SW:=SW+Min{wj1 , wj2 , . . . , wjk }
EndIf;
EndFor;
Return SW;
3.1.3. Định nghĩa 3: CSDL giao tác có trọng số được sắp
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ó
SuppW (xi1 ) ≥ SuppW(xi2 ) ≥ . . . ≥ SuppW(xik ) được gọi
là một giao tác có trọng số được sắp trên I.
Một CSDL giao tác có trọng số trên I mà mọi giao tác
đều được sắp được gọi là một CSDL giao tác có trọng số
được sắp trên I.

Ta có: Với X = {xi1 , xi2 , . . . , xik1 } ⊆ I : X ⊆
{xi1 , xj2 , . . . , xjk2 } ⇔ {xi2 , . . . , xik1 } ⊆ {xj2 , . . . , xjk2 }
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
{xi2 , . . . , xik1 } có là tập con của {xj2 , . . . , xjk2 } hay không.
3.1.9. Phân rã giao tác
Với ti = ((xi1 , wi1 ), (xi2 , wi2 ), . . . , (xik , wik )) ∈ T, ta
có thể phân thành k giao tác con : C(ti ) = {ti1 , ti2 , ..., tik },
với: ti1 = ((xi1 , wi1 ), (xi2 , wi2 ), ..., (xik , wik )), ti2 =
((xi2 , wi2 ), ..., (xik , wik )), ti3 = ((xi3 , wi3 ), (xi4 , wi4 ), ...,
(xik , wik )), ..., tik = ((xik , wik )).
Nhận xét rằng: X ⊆ Set(ti ) ⇔ Tồn tại duy nhất một
tij để X ⊆ Set(tij ). Từ đây, để kiểm chứng X ⊆ Set(ti ) ta
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:
TG = Ut∈T C(t)
3.1.10. Sự tương đương của 2 CSDL T và TG

Hai CSDL giao tác T1 và T2 trên cùng tập mục dữ
liệu I gọi là tương đương nếu và chỉ nếu: ∀X ⊆ I ta có
SuppT1 (X) = SuppT2 (X) với SuppT (X) là độ hỗ trợ của
X trên T.
Từ định nghĩa việc phân rã giao tác và nhận xét ở mục
trên,
có T và TG là hai CSDL giao tác tương đương. Từ đây,
3.1.4. Định nghĩa 4: Quan hệ ≺
để 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
3.2.
Phân
cụm dữ liệu
= ((xi1 ,wi1 ), (xi2 , wi2 ), . . . , (xis , wis )), tj = ((xj1 , wj1 ), (xj2 ,
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.
Gọi CWi là lớp tương đương của tij = ((xi , wi ),
3.1.5. Định nghĩa 5: Phép toán ⊕T
(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:
CWi = {(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 t ∈ CW i
wj2 ), . . . , (xis , wis + wjs ), (xis+1 , wjs+1 ), . . . , (xjr , wjr )).
để X ⊆ Set(t ). 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 CW .
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 CW 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


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:
Procedure
Cluster;
3.3.4.
Thuật
toán
dữ liệu:
3.3.4.
Thuật
toán
phânphân
cụm cụm
dữ liệu
Input:
TG,
CSDL
giao
tác

trọng số được sắp
Procedure
Cluster;
Procedure Cluster;
rút
gọn.
Input:
CSDL
giao
có trọng
sốsắp

được
sắp
Input:
TG,TG,
CSDL
giao
tác tác
có trọng
số được
rút gọn.
Output:
TCW:
rút
gọn.
Output:
TCW:
TậpTập
cáccác
cụmcác
dữ cụm
liệu dữ liệu
Method:
Method:
Output: TCW: Tập các các cụm dữ liệu
For
Fori:=1
i:=1totonndodoCWi:=φ;
CWi:= EndFor;
; EndFor;
Method:

Procedure
3.3.2. ThuậtCreat_Tree(T,Root);
toán xây dựng cây W_Tree:
For
each
t
=
((x
, wi1 ),
(xEndFor;
, wi2 ),ik,w
. . .ik,))TG
(xik , wdo
i1
i2),…,(x
ik )) ∈
For each
,w
i:=1 toiti=((x
n doi1,w
CWi:=
i1),(x
i2;
i2
TG
do
Procedure
Input:
CSDLCreat_Tree(T,Root);
giao tác T = {t1, t2, …, tm} trên tập

Foreach
j:=1tto
k-1
doi1),(xi2,wi2),…,(xik,wik))TG do
For
=((x
i1,w
For j:=1i to k-1
do
mục
liệu Igiao
= {x1tác
, x2, T…,=xn{t} 1, t2, …, tm} trên tập
Input:dữCSDL
,wdo
For j:=1
toij+1
k-1
ij+1),…,(xik,wik)); CWij:= CWijtij;
ttijij=((x
=
((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,
CW2, …, CWn};
EndFor;
EndFor;
I':=(x
…,x
thỏa
Si1… Siin);; EndFor;
For each
Si=Supp(x
i1, xi2, x
TCW:=CW1,
CW2,
. , CWn;
i inI)do
EndProcedure;
TCW:={CW1, CW2,. .…,
CWn};
EndProcedure;

New(Root);P:=Root;
I':=(xi1, xi2, …,xin) thỏa Si1… Sin;
EndProcedure;
3.4. Ví dụ minh họa
For
j:=1 to n do
New(Root);P:=Root;
3.4.
dụ
minh
Hình
1: Cây;W-Tree
CSDL
giao tác T:
3.4.
Ví Ví
dụCho
minh
họahọa
P1^.Inf:=x
ij P^.Right:=P1;
ForNew(P1);
j:=1 to n do
3.3.2. Thuật
toán xâyP1^.Inf:=x
dựng
câyijW_Tree:
Cho
T:
giao

T:t4 tác
P1^.Left:=Nil;
P:=P1;
New(P1);
; P^.Right:=P1;
GCho
tác CSDL
MụcCSDL
DL tácgiao
A,B,D
t8 A,B,C,E
Procedure
Creat_Tree(T,Root);
EndFor;
t1
A,B,E
tt54 A,C
tt98 A,B,C
P1^.Left:=Nil; P:=P1;
G tác
Mục
DL
A,B,D
A,B,C,E
Input:For
CSDL
giao
táci1,T…,=x{t
, t , . . . , t } trên tập mục dữ
tt21

B
tt65 B,C
tt109 A,B,E,G
each
t ={x
EndFor;
A,B,E
A,C
A,B,C
ik},1 2T do m
liệu I = {x1 ,t':=((x
x2 , . . . ,,1),…,(x
xn }
t
B,C
t
A,C
3
7
t
B
t
B,C
t
A,B,E,G
,1))
with
(Set(t')=t)
and
2

6
10
j1 i1, …, xikjk},  T do
For each t ={x
Output: Root: W_tree;
t
B,C
t
A,C
3
7
(Sj1…jk,1))
Sjk); with (Set(t')=t) and
3.4.1.
Xây dựng cây W_Tree:
Method: t':=((xj1,1),…,(x
P
:=
P
^.Left;
Sjk); i ); EndFor;
3.4.1.
dựng
cây
For each x2 i ∈ I1j do(SSj1i…
= Supp(x
3.4.1.
XâyXây
dựng
cây

Độ
hỗ
trợW_Tree
choW_Tree:
mỗi mục dữ liệu : (B:8;
Px2i2
:=, .P.1j.^.Left;
I’:=(xi1 ,If
,(P
xin
) thỏa Si1or
≥ (t'
... ≥
;
exists
P2kS^.Inf)
then
2k^.Inft')
in
Độ hỗ
trợE:3;
chotrợ
mỗicho
mục
dữ liệu:
A:7; :C:6;
E:3;
A:7;
C:6;
D:1;

G:1)
Độ
hỗ
mỗi
mục (B:8;
dữ liệu
(B:8;
New(Root);P:=Root;
D:1;
G:1)
If exists
(P
^.Inft')
or
(t'
P
^.Inf)
then
2k
2k
P2k^.Inf:= P2k^.InfTt'
A:7; C:6;
E:3; D:1;
G:1)
Sắp
mụctrong
dữ giao
liệu tác
trong
For j:=1 to n do

Sắp xếp
cácxếp
mụccác
dữ liệu
theo giao
thứ tựtác
giảm
Else
New(P2);
P2^.Inf:=t';
P
^.Inf:=
P
^.Inf

∧ Tt' Jont(P1j,P2);
2k
2k
New(P1); P1 .Inf:=xij ; P .Right:=P1;
theo
thứ
tự
giảm
dần
của
độ
hỗ
trợ
T’.
Sắp

xếp
các
mục
dữ
liệu
trong
giao
tác
dần của độ hỗ trợ T’.
EndIf;
Else New(P2);
P2^.Inf:=t'; Jont(P1j,P2);
P1∧ .Left:=Nil;
P:=P1;
theo
tự giảm
độ hỗ trợ T’.
G tácthứMục
DL dầnt4củaB,A,D
t8 B,A,C,E
EndFor;
EndIf;
EndFor;
t
B,A,E
t
A,C
tt98 B,A,C
1
54

G
tác
Mục
DL
t
B,A,D
B,A,C,E
EndProcedure;
For
each t ={xi1 , . . . , xik }, ∈ T do
EndFor;
tt21
B
tt65 B,C
tt109 B,A,E,G
B,A,E
A,C
B,A,C
t’:=((xj1 , 1), . . . , (xjk , 1)) with (Set(t’)=t) and
EndProcedure;
t3
B,C
t7 A,C
3.3.3.
Thuật toán chuyển CSDL giao tác thành
3.3. Thuật toán phân cụm dữ liệu
3.3.1. Cây W_Tree
Cây W_Tree là một cây có nhiều nhánh có 2 cấp. Các
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
xếp theo thứ tự giảm Hình

dần của
độ hỗW-Tree
trợ. Mỗi nút xi có một
1. Cây
con trỏ trỏ đến xâu nútHình
cấp 2,
chứa
giao
tác của CSDL giao
1. Cây W-Tree
tốn
câyxW_Tree:
tác có3.3.2.
trọngThuật
số được
sắp,xây
bắt dựng
đầu bằng
i.

(Sj1 ≥ . . . ≥ Sjk );

CSDL
giao
tác
có trọng
số CSDL
được sắp
rúttác
gọnthành

3.3.3.
tốn
chuyển
giao
P2 :=Thuật
P1j ∧ .Left;


CSDL
giao(PTrans;
tác
có trọng số được sắp rút gọn
If exists
Procedure
2k .Inf≺t’) or (t’≺ P2k .Inf) then

t2
B
t6 B,C
t3 Tạo
B,Ccây trọng tsố
A,C
7 W_Tree.
Tạo cây trọng số W_Tree.

t10

B,A,E,G

Tạo cây trọng số W_Tree.


P∧
P∧
2k .Inf:=
2k .Inf⊕T t’
Procedure
Trans;
∧T = {t1, t2, …, tm} trên tập
Input:
CSDL
giao
Else New(P2); Ptác
2k .Inf:=t’; Jont(P1j , P2);
mục
liệu
Input:
CSDLdữ
giao
tácI =T {x
= 1{t, 1,x2t,2…,
, …,xnt}m} trên tập
EndIf;
Output:
TG:dữ
CSDL
trọng
EndFor;
mục
liệugiao
I = {xtác

xn} số được sắp
1, xcó
2, …,
EndProcedure;
rútTGgọn.
Output:
: CSDL giao tác có trọng số được sắp
3.3.3.Method:
Thuậtrút
tốn
chuyển CSDL giao tác thành CSDL giao
gọn.
tác có trọng số được sắp
rút gọn TG:=;
Creat_Tree(T,Root);
P1:=Root;
Method:
Chuyển cây thành cơ sở dữ liệu giao tác có trọng
Procedure
Trans;
While
P1<>Nil
do
Creat_Tree(T,Root); P1:=Root; TG:=;
được
sắpcây
rút thành
gọn: cơ sở dữ liệu giao tác có trọng
Chuyển
Input:While

CSDL
giao tác T
P2:=P1^.Left;
P1<>Nil
do= {t1 , t2 , . . . , tm } trên tập mục dữ
đượctsắp
rútTập
gọn:MDL có trọng số
liệu I = {xWhile
. . , xn } do
1 , x2 , . P2<>Nil
id
P2:=P1^.Left;
Output: TG : CSDL giao tác có trọng số được sắp rút gọn.
t’
((B,3),
(A,2),
(E,2),số
(G,1)).
tid1
Tập MDL
có trọng
:=TGP2^.Inf;
P2:=P2^.Next;
WhileTGP2<>Nil
do
Chuyển
cây ((B,2),
thành cơ(C,2))
sở dữ liệu giao tác có trọng số được

Method:
t’
2
((B,3), (A,2), (E,2), (G,1)).
1
EndWhile;
TG:=TGP2^.Inf;
sắp rút gọn:
Creat_Tree(T,Root);
P1:=Root;P2:=P2^.Next;
TG := φ;
t’
((B,1),
32
((B,2), (A,1),
(C,2)) (D,1))
P1:=P1^.Right;
While EndWhile;
P1<>Nil do
t
Tập
MDL(D,1))
có trọng số
t’
((B,2),
(A,2),(C,2),(E,1))
id
4
((B,1),
(A,1),


3
EndWhile;
P1:=P1^.Right;
P2:=P1
.Left;
t’
((A,2),
(C,2))
54
((B,2),
(A,2),(C,2),(E,1))
t’1 ((B,3), (A,2), (E,2), (G,1)).
While P2<>Nil do
EndWhile;
t’5 t’2((A,2), (C,2))
4 TG := TG ∪ P2∧ .Inf; P2:=P2∧ .Next;
((B,2), (C,2))
EndWhile;
4
t’3
((B,1), (A,1), (D,1))
P1:=P1∧ .Right;
t’
((B,2),
(A,2),(C,2),(E,1))
4
EndWhile;
EndProcedure;
t’5

((A,2), (C,2))
71


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
t’11 ((B,3),(A,2),(E,2),(G,1))
t’12 ((A,2),(E,2),(G,1))
t’13
((E,2),(G,1))
t’14
((G,1))
t’21
((B,2),(C,2))
t’22
((C,2))
t’31 ((B,1),(A,1),(D,1))
t’32
((A,1),(D,1))

t’33
((D,1))
t’41 ((B,2),(A,2),(C,2),(E,1))
t’42 ((A,2),(C,2),(E,1))
t’43
((C,2),(E,1))
t’44
((E,1))
t’51

((A,2),(C,2))
t’52
((C,2))

Gom cụm dữ liệu
Cụm B:
t’11
((A,2),(E,2),(G,1))
t’21
((C,2))
t’31
((A,1),(D,1))
t’41
((A,2),(C,2),(E,1))
Cụm C:
t’43
((E,1))
Cụm D = Cụm G = φ;

Cụm A
t’12
((E,2),(G,1))
t’32
((D,1))
t’42
((C,2),(E,1))
t’51
((C,2))
Cụm E
t’13

((G,1))

3.5. Tính đúng đắn của thuật toán

For each t in CWj
If X ⊆ Set(t) ∈ then
SuppW(X):=SuppW(X)+1;
EndIf;
EndFor;
If SuppW(X) ≥ S0 then
X:={xj , X}; Lk := Lk ∪ X;
EndIf;
EndFor;
EndFor;
L:=L ∪ Lk ;
Until Lk = φ;
EndProcedure;
5. Thử nghiệm
Chúng tơi đã chạy thuật tốn CABOWD và thuật tốn
FP_Growth trên máy tính DELL CPU Intel Core i-3 2328M
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
trong các bảng so sánh sau với bộ dữ liệu mẫu trên
/>
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
S0
(1)
(2)

S0
(1)
(2)
nên độ phức tạp là O(m).
100 6975 30643
600 588
4327
• Bước 2: Chuyển dữ liệu từ cây W_Tree sang CSDL
200 3197 14074
700 540
4133
giao tác có trọng số rút gọn TG với ||TG || ≤ ||T|| nên
300 1662
7815
800 516
4113
có độ phức tạp O(m).
400 999
5419
900 489
3927
• Bước 3: Phân cụm TG thành TCW chỉ duyệt qua TG
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 tốn CABOWD
Chúng tơi đề xuất thuật tố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;
Ck là tập tất cả các tập ứng viên có k phần tử được
tính từ Lk−1 ;
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ợ;
For j:= 1 to n1 doUj := φ; EndFor;
For each X={xi1 , xi2 , . . . ,xik } ∈ Ck do
Ui1 := Ui1 ∪ {xi2 , . . . , xik };
EndFor;
Lk := φ;
For j:= 1 to n1 do
For each X in Uj do SuppW(X):=0;
72

Hình 2: So sánh thời gian chạy hai thuật toán CABOWD

và FP_Growth trên dữ liệu T1I5D1000K

5.2. Tập dữ liệu T0.5I4D4000K
S0
(1)
(2)
1000 1104 8740
2000 646
5901
3000 427
4628
4000 305
4193
5000 233
4091
(1): CABOWD (giây)

S0
(1)
(2)
6000 195 4005
7000 174 3983
8000 161 3939
9000 153 3867
10000 151 3789
(2) FP_Growth (giây)


Nguyễn Hữu Trọng, Lê Đức An, Trần Xuân Việt, Nguyễn Anh Hào


Hình 3: So sánh thời gian chạy hai thuật toán CABOWD và
FP_Growth trên dữ liệu T0.5I4D4000K.

6. Kết luận
Thuật toán CABOWD được xây dựng trên cơ sở toán
học với quan hệ tương đương ≈ và phép hợp nhất ⊕T nên
bảo đảm tính đúng đắn của thuật tốn. Với một CSDL giao
tác, việc phân hoạch để nén dữ liệu chỉ làm một lần, với
kết quả nén, ta có thể áp dụng nhiều thuật toán khác nhau
trên tập dữ liệu này. Với độ rút gọn dữ liệu rất lớn sau khi
phân hoạch tiết kiệm lớn không gian lưu trữ, tăng tốc độ
xử lý. Việc tìm các tập được xây dựng dựa trên thuật tốn
Apriori nên bảo đảm tính dừng. Qua thử nghiệm, thuật toán
CABOWD chạy nhanh hơn rất nhiều lần so với thuật tốn
FP_Growth, điều này nói lên tính hiệu quả của thuật toán.
Tài liệu tham khảo
[1] Endu Duneja, A.K. Sachan, "A Survey on Frequent Itemset
Mining with Association Rules", International Journal of Computer
Applications (0975 – 8887), Volume 46– No.23, Pp 18-24,
May 2012
[2] Agrawal. R., Imielinski. T., Swami. A., “Mining Associations
between Sets of Items in Massive Databases”, In Proc.of the 1993
ACM-SIGMOD Int’l Conf. on Management of Data, pages 207-216.
[3] Agrawal. R., Mannulla. H., Srikant. R., Toivonen. H., Verkamo. A.
I.,”Fast Discovery of Association Rules”, In Advances in Knowledge
Discovery and Data Mining, AAAI Press, 1996, pages 307-328.

[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 tố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,
" Một cách tối ưu cơ sở dữ liệu giao tác cho các thuật tốn tìm
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,
03-04/12/2012. Nhà xuất bản Khoa học và kỹ thuật Hà Nội 2013.
Trang 227-232
[9] Damor Nirali N, Radhika Krishnan, Patel Hardik, "A New Method
to Mine Frequent Itemsets using Frequent Itemset Tree", Research
Journal of Computer and Information Technology Sciences, Vol.
1(3), Pp 9-12, April 2013
[10] D. Kerana Hanirex, A. Kumaravel, "An Efficient Partition and
Two Dimensional Approach For Mining Frequent Itemsets",
International Journal of Technological Synthesis and Analysis,
Volume 1 Issue 1,
[11] A Tiwari, Rajendra K. Gupta, Dev Prakash Agrawal, "Cluster Based
Partition Approach for Mining Frequent Itemsets", International
Journal of Computer Science and Network Security, VOL.9 No.6,

Pp 191-199 June 2009
[12] D.Kerana Hanirex, Dorai Rangaswamy, "Eficient Algorithm
For Mining Frequent Itemsets Using Clustering Techniques",
International Journal on Computer Science and Engineering, Vol.
3 No. 3 Pp 1028-1032, Mar 2011.
[13] Jianwei Li, Ying Liu, Wei-keng Liao, Alok Choudhary, "Parallel
Data Mining Algorithms for Association Rules and Clustering",
CRC Press, Pp 1-25, 2006
[14] V.Vidhya Rani, I. Elizabeth Shanthi, "A Study on Efficient Data
Mining Approach on Compressed Transaction", Global Journal of
Computer Science and Technology, Volume 11 Issue 14 Version 1.0,
Pp 41-46, August 2011

(BBT nhận bài: 21/12/2013, phản biện xong: 19/01/2014)

73



×