Upload
others
View
3
Download
0
Embed Size (px)
Citation preview
KHAI THÁC DÃY SỰ KIỆN PHỔ BIẾN SỬ DỤNG CÂY Seq-Tree
Nguyễn Thị Thu Hiền1, Lê Hữu Hà2,* , Văn Thế Thành2
1 Khoa Công nghệ Thông tin, Trường ĐH Công nghệ Tp.HCM 2 Trung tâm Công nghệ Thông tin, Trường ĐH Công nghiệp Thực phẩm Tp.HCM
* Học viện Kỹ thuật Quân sự 1 [email protected], 2 {halh, thanhvt}@cntp.edu.vn
Tóm tắt: Tìm kiếm tập phổ biến là một bài toán quan trọng trong khai phá dữ liệu. Hơn
nữa, trích xuất tập phổ biến có yếu tố thời gian từ cơ sở dữ liệu sẽ tốn kém nhiều chi phí đối
sánh. Để giải quyết vấn đề này, bài báo tiếp cận xây dựng cấu trúc dữ liệu cây Seq-Tree lưu
trữ các dãy sự kiện phổ biến. Sau đó, bài báo đưa ra thuật toán Seq-Alg nhằm truy xuất dãy
sự kiện phổ biến từ cây Seq-Tree. Để minh họa tính hiệu quả của phương pháp đề xuất, bài
báo đánh giá kết quả thực nghiệm so với phương pháp TSETmax-Miner.
Từ khóa: Tập phổ biến, Dãy tuần tự, Dãy sự kiện
1 Giới thiệu
Khai thác dữ liệu là quá trình tìm kiếm tri thức quan tâm từ các cơ sở dữ liệu thuộc các
lĩnh vực khác nhau. Kỹ thuật khai thác dữ liệu ([1], [2], [3]) thường chỉ quan tâm đến khai thác
tập phổ biến mà không xét đến yếu tố thời gian trong các giao dịch. Trong khi đó, yếu tố thời
gian là một trong những thuộc tính quan trọng và có vai trò quyết định trong các chuỗi sự kiện
gắn liền với thời gian như giao dịch chứng khoán, giao dịch thương mại, các sự kiện dự báo, các
chuỗi sự kiện theo thời gian trong bộ xử lý,… Vì vậy, khai thác dữ liệu theo thời gian là một chủ
đề quan trọng trong lĩnh vực khai thác dữ liệu.
Có nhiều kỹ thuật khai thác dữ liệu theo thời gian như khai thác các mẫu tuần tự [5], khai
thác các mẫu quan tâm bằng luật kết hợp [7], khám phá tập phần tử đóng phổ biến đại diện cho
các luật kết hợp [6], một cấu trúc cây cho việc khai thác dãy tuần tự [4],… Trong đó, thuật toán
AprioriAll [5] là thuật toán sinh ứng viên, nên không hiệu quả trên các cơ sở dữ liệu có mật độ
trùng lắp thấp và quá trình sinh dãy sự kiện phải duyệt cơ sở dữ liệu nhiều lần với số lần duyệt
tối đa bằng chiều dài của tập phần tử trong cơ sở dữ liệu. Một cách giải quyết hiệu quả đó là sử
dụng thuật toán TSET-Miner [4], tuy nhiên thuật toán này dựa trên cấu trúc cây TSET [4] trên cơ
sở cấu trúc cây Set Enumeration Tree [8] nên có nhược điểm là sinh quá nhiều tập con, hơn nữa
nếu khung thời gian lớn thì việc xây dựng cây sẽ tiêu tốn nhiều chi phí. Ngoài ra, cây TSET
phải xây dựng lại từ đầu nếu cơ sở dữ liệu thay đổi vì cấu trúc dữ liệu cây này không có khả
năng tăng trưởng. Một cải tiến của TSET-Miner là thuật toán TSETmax-Miner [4] đã cải thiện đáng
kể về số lượng các dãy sự kiện được sinh ra. Tuy nhiên, thuật toán TSETmax-Miner vẫn dựa trên
cấu trúc cây TSET [4] do đó vẫn bị các nhược điểm tương tự như TSET-Miner.
Để khắc phục các nhược điểm trên, bài báo trình bày cấu trúc cây Seq-Tree lưu trữ các dãy
sự kiện phổ biến. Cây Seq-Tree được tạo ra bằng cách kết hợp ngữ nghĩa thời gian vào các nút
trong cây. Hơn nữa, cây Seq-Tree là cây tăng trưởng nên quá trình xây dựng cây chỉ tốn chi phí
2
lần đầu duyệt cơ sở dữ liệu giao dịch. Ngoài ra, nếu cơ sở dữ liệu có phát sinh các giao dịch mới
thì chỉ cần thực hiện thao tác chèn trên cây. Do đó, sẽ giảm chi phí rất nhiều so với việc tái tạo
lại cây như trong thuật toán TSETmax-Miner. Trong bài báo đề xuất thuật toán Seq-Alg nhằm tạo
ra dãy sự kiện phổ biến từ cây Seq-Tree. Theo thử nghiệm thì cấu trúc cây Seq-Tree đơn giản hơn
cây TSET nhưng kết quả truy vấn trên cây Seq-Tree và cây TSET là như nhau.
Phần còn lại của bài báo được cấu trúc như sau: Phần 2 trình bày cơ sở lý thuyết xây
dựng cấu trúc dữ liệu cây Seq-Tree. Phần 3 trình bày thuật toán tạo cây Seq-Tree. Phần 4 đề xuất
thuật toán Seq-Alg nhằm truy xuất dãy sự kiện phổ biến trên cây. Phần 5 minh họa kết quả thực
nghiệm so với TSETmax-Miner. Kết luận hướng phát triển được trình bày tại Phần 6.
2 Cơ sở lý thuyết xây dựng cây Seq-Tree
2.1 Định nghĩa cấu trúc cây Seq-Tree
Cây Seq-Tree gồm một nút gốc và các nút trong cây được tạo thành từ một dãy sự kiện có
thứ tự { } . Mỗi sự kiện ứng với tập các thời điểm xuất hiện
{ }. Do đó, để xây dựng cấu trúc cây Seq-Tree cần có các định nghĩa cơ sở như sau:
Định nghĩa 2.1.1 (Nút trong cây). Mỗi nút trong cây Seq-Tree (với khác nút gốc)
bao gồm tập một dãy sự kiện , tập các thời điểm xuất hiện dãy sự kiện và tập
các liên kết đến nút con
Định nghĩa 2.1.2 (Nút gốc trong cây). Một nút là nút gốc trong cây bao gồm một tập
tất cả các thời điểm { } của tập sự kiện riêng biệt trong cơ sở dữ liệu và
tập các liên kết đến các nút con.
Định nghĩa 2.1.3 (Cây Seq-Tree). Một cây Seq-Tree = ( gồm một nút gốc
và một tập nút phân cấp trong cây { }. Trong đó, tập các nút phân
cấp bao gồm các nút cha liên kết đến các nút con dựa trên tập các liên kết tại mỗi
nút trong cây.
Để xây dựng một cây Seq-Tree cần phải lần lượt đưa các dãy sự kiện phổ biến vào trong
cây. Việc này được thực hiện theo quy tắc sau:
Định nghĩa 2.1.4 (Quy tắc tạo cây). Quá trình tạo cây được thực hiện bằng cách tổ hợp tập
các sự kiện rời rạc có thứ tự { } theo quy tắc sau:
(1) Mỗi sự kiện rời rạc sẽ tạo thành một nút trong cây.
(2) Nút gốc liên kết trực tiếp đến các nút ứng với sự kiện rời rạc .
(3) Một nút con được tạo thành bằng cách tổ hợp từ hai nút đồng cấp. Nút cha là nút
ứng với dãy sự kiện đứng trước (theo thứ tự của dãy sự kiện).
(4) Dãy sự kiện không phát sinh một nút nếu:
(4.1) Trong cây đã tồn tại nút chứa dãy sự kiện này.
(4.2) Dãy sự kiện không phổ biến.
Jos.hueuni.edu.vn Tập. 97; Số. 9; Năm 2014
3
Hình. 1. Một ví dụ về cây Seq-Tree
2.2 Một số định lý cơ sở
Khi tạo cây Seq-Tree, cần phải đảm bảo tất cả các dãy sự kiện phổ biến trong cơ sở dữ liệu
phải được lưu trữ trên cây. Định lý sau đây chứng minh về tính tồn tại này.
Định lý 2.2.1 (Tính tồn tại). Cho trước cơ sở dữ liệu các sự kiện . Dựa trên Định
nghĩa 2.2.4 xây dựng cây Seq-Tree. Khi đó, nếu một dãy sự kiện phổ biến trong cơ sở dữ
liệu ứng với tập các thời điểm xuất hiện thì sẽ tồn tại dãy sự kiện này trên cây Seq-Tree .
Chứng minh:
Theo Định nghĩa 2.1.4, cấp đầu tiên của cây Seq-Tree (cấp 1) gồm các sự kiện rời rạc có
nút cha là nút gốc.
Vì việc tạo các nút con ở cấp thứ 2 sẽ tổ hợp từng cặp phần tử. Do đó, tại mức cấp 2 này
sẽ chứa đầy đủ các dãy sự kiện gồm 2 phần tử rời rạc ứng với các thời điểm xuất hiện. Vì thế,
tại mức cấp 3 của cây sẽ chứa đầy đủ tập các dãy sự kiện ứng với 3 sự kiện rời rạc.
Một cách quy nạp, giả sử tại mức thứ chứa đầy đủ các dãy sự kiện khả dĩ của cơ sở dữ
liệu . Theo Định nghĩa 2.1.4 sẽ tổ hợp từng cặp phần tử đồng cấp, do đó tại mức thứ
của cây Seq-Tree sẽ lưu trữ đầy đủ các dãy sự kiện phổ biến này.
Theo nguyên lý quy nạp, cây Seq-Tree sẽ lưu trữ đầy đủ các dãy sự kiện khả dĩ của cơ sở
dữ liệu (đpcm).
Định lý 2.2.2 (Tính duy nhất). Cho cây Seq-Tree được tạo từ cơ sở dữ liệu theo
Định nghĩa 2.1.4. Khi đó, nếu mỗi nút trong cây chứa dãy sự kiện là duy nhất.
Chứng minh:
Theo quy tắc tạo cây trong định nghĩa Định nghĩa 2.1.4, nếu dãy sự kiện đã tồn tại thì
không tạo ra nhánh mới. Do đó, mỗi dãy sự kiện chỉ xuất hiện một lần tại một nút trong cây
Seq-Tree (đpcm).
4
Định lý 2.2.3 (Tính phổ biến của dãy sự kiện tổ hợp). Cho cây Seq-Tree được tạo từ cơ sở dữ
liệu theo Định nghĩa 2.1.4 và khung thời gian . Gọi là 2 nút đồng cấp trong
cây Seq-Tree, khi đó nếu dãy sự kiện là dãy sự kiện phổ
biến ứng với khung thời gian thì dãy sự kiện tổ hợp
theo khung thời gian cũng sẽ là dãy sự kiện phổ biến.
Ví dụ:
{ }
{ }
Do đó, xuất hiện tại các thời điểm 0, 1 ứng với khung thời gian
, với là sự kiện xuất hiện tại thời điểm
Chứng minh:
Gọi là tập khác rỗng.
Khi đó, và
Giả sử là dãy phổ biến ứng với khung thời gian .
Do đó, ta có 3 tập dãy sự kiện phổ biến theo khung thời gian gồm , ,
ứng với các điểm thời gian liên tục . Trong đó, tại thời điểm là thời điểm xuất
hiện của tổ hợp dãy sự kiện , vì vậy dãy sự kiện tổ hợp này là phổ biến, tức là
độ phổ biến , với là ngưỡng của độ phổ biến.
Mặt khác, tại thời điểm từ ứng với khung thời gian thì dãy sự kiện là phổ biến,
tức là . Hơn nữa, phép kết nối tổ hợp của Định lý 2.2.3 là phép
ghép nối có tính liên tục theo thời gian ứng với khung thời gian . Do đó, độ phổ biến
{ } . Vì thế, dãy sự kiện tổ hợp
là một dãy sự kiện phổ biến (đpcm).
3 Thuật toán tạo cây Seq-Tree
3.1 Mô tả thuật toán
Trong Seq-Tree, mỗi nút gồm tập một dãy sự kiện , tập các thời điểm xuất hiện
dãy sự kiện và tập các liên kết đến nút con và mỗi thời điểm có thể xuất hiện
nhiều sự kiện. Do đó, khi lưu trữ dãy thời điểm vào mỗi nút của cây sẽ là hữu hạn. Mỗi nút sẽ
chứa một dãy hữu hạn có lực lượng nhỏ hơn số lượng các phần tử trong tập dữ liệu. Vì vậy,
thời gian duyệt trên cây sẽ giảm đi đáng kể. Vì nút gốc lưu trữ tất cả các gốc thời gian do đó các
nút ở cấp độ sâu hơn sẽ có xu hướng giảm không gian lưu trữ, giảm số lượng điểm thời gian
làm cho cây Seq-Tree sẽ giảm không gian tìm kiếm nên quá trình truy xuất sẽ cải thiện đáng kể.
Để tạo cây Seq-Tree, bước đầu tiên là khởi tạo nút gốc liên kết đến các nút chứa sự
kiện rời rạc ứng với tập các thời điểm xuất hiện của sự kiện. Sau đó, ứng với mỗi nút tại mức 1
này thực hiện tổ hợp từng cặp phần tử. Nếu phần tử tổ hợp thỏa theo Định nghĩa 2.1.4 thì thực
Jos.hueuni.edu.vn Tập. 97; Số. 9; Năm 2014
5
hiện phép chèn một nút mới vào cây Seq-Tree. Quá trình này tiếp tục ứng với các cấp tiếp theo
cho đến khi tạo cây Seq-Tree hoàn chỉnh.
Vì thực hiện được phép chèn một nút nên Seq-Tree là cây tăng trưởng. Do đó, khi có sự
thay đổi cơ sở dữ liệu giao dịch thì có thể xảy ra các trường hợp khi thực hiện thao tác chèn nút
trên cây là:
Trường hợp 1: Sự kiện thêm vào là mới và xuất hiện tại thời điểm mới so với cây Seq-Tree
hiện tại. Khi đó, phép tổ hợp với các nút hiện hữu trong cây sẽ không tạo thành các dãy sự kiện
phổ biến. Do đó, trong trường hợp này chỉ thực hiện thao tác chèn thời điểm mới vào nút gốc
và tạo liên kết từ nút gốc đến nút chứa sự kiện mới tại mức 1.
Trường hợp 2: Sự kiện thêm vào là mới và xuất hiện tại các thời điểm đã tồn tại. Khi đó
phép tổ hợp sẽ lấy phần giao của các mốc thời điểm xuất hiện để tạo thành nút mới. Quá trình
tạo nhánh mới này là quá trình tạo ra một cây con mới tại nút chứa sự kiện mới này. Vì vậy,
trong trường hợp này phát sinh thêm 1 nhánh cây ở mức 1 ứng với sự kiện mới. Tại nút mới
này thực hiện quá trình xây dựng cây con ứng với nút gốc là nút vừa mới tạo.
Trường hợp 3: Sự kiện thêm vào đã có và xuất hiện tại các thời điểm đã tồn tại. Trường
hợp này sẽ không phát sinh thao tác trên cây vì đã tồn tại đầy đủ trên cây Seq-Tree.
Trường hợp 4: Sự kiện thêm vào đã tồn tại và thời điểm thêm vào là mới. Khi đó, duyệt
nút mức 1 ứng với sự kiện đã tồn tại chèn các thời điểm mới vào nút đó. Sau đó, tìm các nút con
ứng với dãy các sự kiện có chứa sự kiện này và thực hiện thao tác chèn thời điểm mới vào nút
tương ứng.
3.2 Thuật toán tạo cây Seq-Tree
Thuật toán 3.2.1: CreateSeq-Tree( ) /*Tạo cây Seq-Tree */
Đầu vào: { }
Đầu ra: Cây Seq-Tree
Begin
(1) = ;
(2) { }
(3) = ; Seq-Tree = ;
(4) Foreach do
(5) InsertNode( , . );
(6) CreateBrach( , Seq-Tree ); /*Tạo nhánh từ cấp 2 cho nút */
End.
6
Thuật toán 3.2.2: InsertNode( . ) /*Chèn phần tử vào cây Seq-Tree */
Đầu vào: Bộ sự kiện <item, . >, cây Seq-Tree, ngưỡng
Đầu ra: Cây Seq-Tree sau khi cập nhật
Begin
(1) If { } then
(2) Return False;
(3) Khởi tạo tập S= {các sự kiện ở cấp độ 1}
(4) If and . then
(5) Begin
(6) Tạo ra 1 nhánh mới không có phần tử con;
(7)
(8) .link = Null;
(9) End
(10) If and . then
(11) Begin
(12) = ;
(13) CreateBranh( , Seq-Tree); /* Tạo nhánh mới ứng với nút */
(14) End
(15) If and . then
(16) Return False;
(17) If and . then
(18) Begin
(19) = ;
(20) Gọi hàm SubS = SearchNode{ }; /* Tìm tất cả các node chứa item */
(21) Foreach {nút con SubS}
(22) If then
(23) = ⋃ ;
(24) End
(25) Return True;
End.
Jos.hueuni.edu.vn Tập. 97; Số. 9; Năm 2014
7
Thuật toán 3.2.3: CreateBrach ( Seq-Tree) /*Tạo nhánh cho nút */
Đầu vào: Nút và cây Seq-Tree
Đầu ra: Cây Seq-Tree sau khi đã tạo nhánh
Begin
(1) Khởi tạo:
(2) Count1 = 0; Count2 = 0;
(3) Queue = ; /* Hàng đợi của các nút đồng cấp */
(4) QueueNode = ; /* Hàng đợi của các nút con của nút */
(5) Foreach ( ) do
(6) Begin
(7) Queue.Insert( );
(8) Count1 = Count1 + 1; Count2 = Count2 + 1;
(9) End.
(10) QueueNode.Insert( );
(11) While( QueueNode ) do
(12) Begin
(13) Count1 = Count2; Count2 = 0;
(14) For j = 1..Count1 do
(15) Begin
(16) Node = Queue.Get();
(17) ItemNode = QueueNode.Get();
(18) InSeq = Node ItemNode;
(19) If (SupportCount(InSeq) then
(20) Flag = InsertNode(InSeq, Seq-Tree);
(21) If (Flag = True) then
(22) QueueNode.Insert(InSeq);
(23) Foreach Node.link) do
(24) Begin
8
(25) Queue.Insert( ;
(26) Count2 = Count2 + 1;
(27) End
(28) End
(29) End
End.
Thuật toán 3.2.4: SearchNode ( Seq-Tree) /* Tìm tất cả các node chứa item */
Đầu vào: Nút và cây Seq-Tree
Đầu ra: Tập { }
Begin
(1) Khởi tạo:
(2) Stack = ; S = ;
(3) Foreach( do
(4) Stack.Push( );
(5) While( Stack ) do
(6) Begin
(7) Node = Stack.Pop();
(8) If (item then
(9) S = S ;
(10) Foreach ( ) do
(11) Stack.Push( ;
(12) End
(13) Return S;
End.
4 Thuật toán trích xuất dãy sự kiện phổ biến
Sau khi thực hiện thuật toán tạo cây Seq-Tree từ cơ sở dữ liệu sự kiện bằng thuật
toán Thuật toán 3.2.1, thì cây Seq-Tree sẽ lưu trữ các dãy sự kiện phổ biến tại các điểm thời gian.
Dựa trên dữ liệu này thực hiện quá trình trích xuất các dãy sự kiện ứng với các điểm thời gian
và các khoảng thời gian trên khung thời gian . Việc trích xuất các dãy sự kiện ứng với khung
thời gian dựa trên quá trình tổ hợp từ 2 nút đồng cấp trên cây Seq-Tree theo Định lý 2.2.3 đã
Jos.hueuni.edu.vn Tập. 97; Số. 9; Năm 2014
9
mô tả ở trên. Do đó, thuật toán Seq-Alg nhằm tìm các dãy sự kiện phổ biến trên cây Seq-Tree
được thực hiện như sau:
Thuật toán Seq-Alg: QueryFseq (Seq-Tree, )
Đầu vào: Khung thời gian ngưỡng và cây Seq-Tree
Đầu ra: Tập các dãy sự kiện phổ biến Fseq = { Seq-Tree|SupportCount( }
Begin
(1) Khởi tạo:
(2) Stack = ; Count = 0; Fseq = ;
(3) Foreach ( ) do
(4) Begin
(5) Stack.Push (
(6) Count = Count + 1;
(7) End
(8) While (Stack do
(9) Begin
(10) For j = 1..Count -1 do
(11) Begin
(12) Node1 = Stack.Pop();
(13) Node2 = Stack.Pop();
(14) Fseq = Fseq Node1.Seq; Fseq = Fseq Node2.Seq;
(15) InSeq = Node1 Node2;
(16) If (SupportCount(InSeq) ) then
(17) Begin
(18) Fseq = Fseq InSeq.seq;
(19) Fseq = Fseq (Node1.seq Node2.seq InSeq.seq);
(20) End
(21) Count = 0;
(22) Foreach ( ) do
10
(23) Begin
(24) Stack.Push( ;
(25) Count = Count + 1;
(26) End
(27) Foreach ( ) do
(28) Begin
(29) Stack.Push( ;
(30) Count = Count + 1;
(31) End
(32) End
(33) End
(34) Return Fseq;
End.
5 Ví dụ thực nghiệm
Cho cơ sở dữ liệu chứa một tập sự kiện có thứ tự { }. Ứng với từng sự kiện sẽ
có tập các thời điểm xuất hiện như sau:
Sự kiện Thời điểm xuất hiện
0, 1, 3
0, 1, 2
1, 2, 3
Hình. 2. Các sự kiện theo thời gian
Giả sử ngưỡng của độ phổ biến , khung thời gian . Xét độ phổ biến của từng
sự kiện có trong cơ sở dữ liệu. Nếu sự kiện nào thỏa ngưỡng phổ biến thì sẽ được chuyển vào
cơ sở dữ liệu .
Như vậy, các sự kiện , , là các sự kiện phổ biến. Khi đó, cơ sở dữ liệu chứa
tập các sự kiện này cùng với các thời điểm tương ứng của từng sự kiện.
Jos.hueuni.edu.vn Tập. 97; Số. 9; Năm 2014
11
Tiến hành xây dựng cây Seq-Tree dựa trên cơ sở dữ liệu . Ở mức 0, chèn nút gốc
với { } và . Mức 1, duyệt cơ sở liệu , chèn
nút chứa sự kiện dưới nút gốc với , { }, tiếp tục chèn nút
chứa sự kiện vào dưới nút gốc với , { }, tương tự cho sự
kiện với , { }. Khi đó, sẽ trỏ lần lượt đến các nút được
tạo ra ở mức 1. Xây dựng cây Seq-Tree ở mức 2 bằng cách tổ hợp các nút ở mức 1, các nút được
tạo ra bằng cách tổ hợp nếu có cùng tiền tố sẽ thuộc về cùng một nhánh, các nút có cùng tiền tố
sẽ liên kết với nhau. Tổ hợp nút chứa sự kiện với nút chứa sự kiện sẽ được ,
{ }, xét thấy nên thực hiện chèn nút tổ hợp này
vào cây dưới nút chứa sự kiện , thực hiện tương tự với nút chứa sự kiện và sẽ có
, { }. Thực hiện lần lượt cho các nhánh còn lại ở mức 2. Xây dựng cây ở mức 3
căn cứ vào mức 2, tổ hợp nút chứa dãy sự kiện và nút chứa dãy sự kiện sẽ có
, { }, do nên sẽ không chèn tổ hợp này vào
cây, thực hiện lần lượt cho các dãy sự kiện còn lại sẽ được cây Seq-Tree hoàn chỉnh như Hình 1.
Thực hiện trích xuất các dãy sự kiện phổ biến từ cây Seq-Tree đã có, việc trích xuất chỉ
thực hiện theo từng nhánh của cây ở mức 1. Như vậy, ứng với từng nút ở mức 1 sẽ tạo ra một
cây con, tức là mỗi nút của cây Seq-Tree ở mức 1 sẽ trở thành nút gốc ứng với cây con của nó.
Trên nhánh cây con này, thao tác trích xuất chỉ thực hiện tại các nút khác nút gốc với khung
thời gian . Xét nhánh cây chứa sự kiện sẽ trích xuất được dãy sự kiện phổ biến là
{ }, { }.
Dựa trên các dãy sự kiện phổ biến vừa được tìm thấy sẽ tính được
, dãy sự kiện xuất hiện tại các thời điểm 0, 1 có độ phổ biến thỏa ngưỡng
nên sẽ có được dãy sự kiện phổ biến là { }
Dãy sự kiện tổ hợp từ các dãy sự kiện phổ biến , , sẽ sinh ra dãy sự kiện
phổ biến { } Xét lần lượt cho các nhánh còn lại của cây Seq-Tree. Nếu dãy sự
kiện được sinh ra từ các nhánh này đã tồn tại trong dãy sự kiện tổ hợp thì sẽ bị loại bỏ.
Như vậy, sau khi thực hiện trích xuất sẽ sinh ra 4 dãy sự kiện phổ biến , ,
, . Các dãy sự kiện phổ biến này hoàn toàn giống với các dãy sự kiện phổ biến được
sinh ra bằng thuật toán TSETmax-Miner.
6 Kết luận
Bài báo đã thực hiện xây dựng cây Seq-Tree nhằm lưu trữ dãy sự kiện phổ biến. Thông
qua thuật toán Seq-Alg có thể trích xuất tập dãy sự kiện phổ biến ứng với khung thời gian .
Nếu truy xuất các sự kiện theo trục thời gian thì độ phức tạp sẽ lớn vì phải truy xuất toàn bộ
tập con tại mỗi thời điểm. Cây Seq-Tree đã xây dựng như trên giải quyết được vấn đề truy xuất
này, đồng thời lưu trữ dãy sự kiện và tần suất tương ứng của dãy sự kiện đó. Cây Seq-Tree đã
tạo sẽ giảm không gian tìm kiếm vì mỗi nút trong cây lưu trữ các thời điểm xuất hiện của dãy
12
sự kiện. Hơn nữa, các sự kiện đồng cấp giao nhau sẽ tạo thành các nút con từ đó sẽ làm gia tăng
tốc độ tìm kiếm. Mặc dù, các nút trong cây chỉ lưu các điểm thời gian của dãy sự kiện nhưng
hoàn toàn có thể truy xuất được các dãy sự kiện dựa trên các khoảng thời gian ứng với khung
thời gian cho trước (theo Định lý 2.2.3). Theo ví dụ thực nghiệm cho thấy cây Seq-Tree có
không gian tìm kiếm nhỏ hơn rất nhiều so với cây TSET [4]. Do đó, không gian tìm kiếm của
cây Seq-Tree như đề nghị đã giảm hơn rất nhiều, trong khi đó kết quả truy xuất trên cây Seq-
Tree dựa trên thuật toán Seq-Alg so với kết quả truy xuất trên cây TSET bằng thuật toán
TSETmax-Miner [4] là hoàn toàn như nhau. Ngoài ra, so với cây TSET thì cây Seq-Tree có thể tăng
trưởng do đó sẽ giảm đi đáng kể chi phí xây dựng cây khi cơ sở dữ liệu thay đổi. Tuy nhiên,
quá trình xây dựng cây Seq-Tree có thể tạo ra suy biến, tức là phát triển tại một nhánh con nào
đó, vì vậy sẽ làm các nhánh bị mất cân bằng, từ đó việc truy vấn dữ liệu trên cây có thể sẽ dẫn
đến tốn kém nhiều chi phí. Hướng phát triển tiếp theo của bài báo này sẽ thực hiện thao tác cân
bằng lại cây để từ đó làm giảm chi phí tìm kiếm trung bình trên cây.
Lời cảm ơn
Nhóm tác giả xin chân thành cảm ơn Trung tâm Công nghệ Thông tin, trường Đại học
Công nghiệp Thực phẩm Tp.HCM là nơi bảo trợ để thực hiện nghiên cứu này.
Tài liệu tham khảo
1. R. Agrawal and R. Srikant. Fast algorithms for mining association rules. In Proc. of the 20th Int'l Conf. on
Very Large Data Bases, pp. 487-499, 1994.
2. R. Agarwal, C. Aggarwal and V.V.V. Prasad. A tree projection algorithm for generation of frequent itemsets.
Journal of Parallel and Distributed Computing, pp. 350-371, 2001.
3. M. Zaki, S. Parthasarathy, M. Ogihara, and W. Li. New Algorithms for Fast Discovery of Association Rules.
Proc. 3rd Int. Conf. on Knowledge Discovery and Data Mining (KDD’97), 283–296. AAAI Press, Menlo
Park, CA, USA 1997.
4. F. Guil, R. Marín. A tree structure for event-based sequence mining, Knowledge-Based Systems, Vol 35,
pp.186-200, 2012.
5. R. Agarwal, R. Srikant. Mining Sequential Patterns, Proc. 1995 Int’l Conf. Data Eng. (ICDE ’95), pp.3-14,
Mar. 1995.
6. L. Feng, J.X. Yu, H. Lu, J. Han. A template model for multidimensional intertransactional association rules,
The VLDB Journal 11, pp.153–175, 2002.
7. S. Ramaswamy, S. Mahajan, and A. Silberschatz. On the Discovery of Interesting Patterns in Association
Rules, Proc.1998 Int’l Conf. Very Large Data Bases (VLDB ’98), pp. 368-379, Aug.1998.
8. R. Rymon. Search through systematic set enumeration, in: Proc. of Third Int.Conf. on Principles of
Knowledge Representation and Reasoning, 1992.
Jos.hueuni.edu.vn Tập. 97; Số. 9; Năm 2014
13
FREQUENT EVENT-BASED SEQUENCES MINING USING Seq-
Tree
Nguyen Thi Thu Hien1, Le Huu Ha2,* , Van The Thanh2
1 Faculty of Information Technology, University of Technology 2 Center for Information Technology, HCMC University of Food Industry
* Military Technical Academy 1 [email protected], 2 {halh, thanhvt}@cntp.edu.vn
Abstract. Finding frequent sets is an important problem in data mining. Moreover, extract-
ing frequent sets with time-serial from database is time-consuming for matching. To solve
the problem, the paper appoarches to build a data structure Seq-Tree to store frequent event-
based sequences. Then, the paper gives an algorithm Set-Alg to to query the frequent event-
based sequences from Seq-Tree. To demonstrate this, the paper assess experimental results
compare with TSETmax-Miner method.
Keywords: Frequent set, Sequence, Event-based sequence