13
KHAI THÁC DÃY SỰ KIỆN PHỔ BIẾN SỬ DỤNG CÂY Seq-Tree Nguyễn Thị Thu Hiền 1 , Lê Hữu Hà 2,* , Văn Thế Thành 2 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 TSET max -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 TSET max -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 TSET max -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í

KHAI THÁC DÃY SỰ KIỆN PHỔ BIẾN SỬ DỤNG CÂY Seq-Treeit.husc.edu.vn/Media/ChuyenMuc/KhoaHoc/Hoithao-Hoinghi/SAICT_2015... · lại cây như trong thuật toán TSETmax-Miner

  • 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