BỘ GIÁO DỤC VIỆN HÀN LÂM KHOA HỌC VÀ ĐÀO TẠO VÀ CÔNG NGHỆ VIỆT NAM

HỌC VIỆN KHOA HỌC VÀ CÔNG NGHỆ

-----------------------------

Lê Duy Thảo

NGHIÊN CỨU KHAI PHÁ TOP-K MẪU DÃY THƯỜNG XUYÊN TRỌNG SỐ VỚI KHOẢNG CÁCH THỜI GIAN

LUẬN VĂN THẠC SĨ: CÔNG NGHỆ THÔNG TIN

Hà Nội – 2020

BỘ GIÁO DỤC VIỆN HÀN LÂM KHOA HỌC VÀ ĐÀO TẠO VÀ CÔNG NGHỆ VIỆT NAM

HỌC VIỆN KHOA HỌC VÀ CÔNG NGHỆ

-----------------------------

Lê Duy Thảo

NGHIÊN CỨU KHAI PHÁ TOP-K MẪU DÃY THƯỜNG XUYÊN TRỌNG SỐ VỚI KHOẢNG CÁCH THỜI GIAN

Chuyên ngành: Hệ thống thông tin

Mã số: 8480104

LUẬN VĂN THẠC SĨ: CÔNG NGHỆ THÔNG TIN

CÁN BỘ HƯỚNG DẪN KHOA HỌC

TS. Nguyễn Việt Anh

Hà Nội – 2020

LỜI CAM ĐOAN

Tôi xin cam đoan luận văn “Nghiên cứu khai phá Top-K mẫu dãy thường

xuyên trọng số với khoảng cách thời gian” được hoàn thành trên cơ sở nghiên

cứu, tổng hợp do tôi tự thực hiện. Các số liệu và trích dẫn trong luận văn có

nguồn gốc rõ ràng và trung thực.

Luận văn này là mới và không sao chép từ bất kỳ một luận văn nào khác.

TÁC GIẢ LUẬN VĂN

Lê Duy Thảo

LỜI CẢM ƠN

Trước hết, tôi xin bày tỏ sự cảm ơn đối với Học viện Khoa học và Công

nghệ và các thầy, cô giáo đã tạo mọi điều kiện giúp đỡ tôi hoàn thành chương

trình học tập và nghiên cứu tại Học viện Khoa học và Công nghệ. Có được kết

quả này, tôi vô cùng biết ơn và bày tỏ lòng kính trọng sâu sắc đối với

TS.Nguyễn Việt Anh - người đã tận tình hướng dẫn giúp đỡ tôi hoàn thành luận

văn này.

Mặc dù đã có nhiều nỗ lực cố gắng nhưng do khả năng, điều kiện và kinh

nghiệm của bản thân còn hạn chế nên luận văn không tránh khỏi còn những

thiếu sót. Tôi rất mong nhận được những đóng góp quý báu của các thầy, cô

giáo, các nhà khoa học, lãnh đạo, đồng nghiệp và các bạn để giúp cho luận văn

của tôi được hoàn thiện hơn.

Tôi xin chân thành cảm ơn!

TÁC GIẢ LUẬN VĂN

Lê Duy Thảo

DANH MỤC CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT

CSDL Cơ sở dữ liệu

SBD Cơ sở dữ liệu dãy S

KDD Knowledge Discovery Data Mining

SQL Structured Query Language

Candicate Ứng viên

Element Thành phần dãy

Itemset Tập mục thường xuyên

Frequent item Tập mục thường xuyên

Sequence patent Mẫu dãy

Maximal sequence Dãy phổ biến nhất

Support Độ hỗ trợ

Support threshold Ngưỡng hỗ trợ

Subsequence Dãy con

DANH MỤC CÁC BẢNG

Trang

Bảng 1.1. Ví dụ về CSDL giao tác với 4 mục và 5 giao tác ............................. 7

Bảng 1.2. Cơ sở dữ liệu dãy SDB ................................................................... 10

Bảng 1.3. Cơ sở dữ liệu dãy SDB ví dụ thuật toán AprioriAll ....................... 15

Bảng 1.4. Cơ sở dữ liệu dãy SDB ví dụ thuật toán PrefixSpan ...................... 22

Bảng 1.5. Cơ sở dữ liệu điều kiện với tiền tố .......................................... 23

Bảng 1.6. Cơ sở dữ liệu điều kiện với tiền tố ........................................ 24

Bảng 1.7. Cơ sở dữ liệu điều kiện với tiền tố ........................................ 24

Bảng 1.8. Cơ sở dữ liệu điều kiện với tiền tố ...................................... 25

Bảng 1.9. Cơ sở dữ liệu điều kiện với tiền tố .................................... 25

Bảng 1.10. Kết quả mẫu dãy thường xuyên theo thuật toán PrefixSpan ........ 26

Bảng 2.1. Cơ sở dữ liệu dãy S ......................................................................... 32

Bảng 2.2. Giá trị trọng số của các mục dữ liệu ............................................... 32

Bảng 2.3. Cơ sở dữ liệu điều kiện với tiền tố .......................................... 34

Bảng 2.4. Cơ sở dữ liệu điều kiện với tiền tố ........................................ 36

Bảng 2.5. Cơ sở dữ liệu điều kiện với tiền tố .................................... 37

Bảng 2.7. Giá trị trọng số ................................................................................ 46

Bảng 2.6. Cơ sở dữ liệu dãy S ......................................................................... 46

Bảng 2.8. Cơ sở dữ liệu điều kiện với tiền tố <0,a> ....................................... 48

Bảng 2.9. Cơ sở dữ liệu điều kiện với tiền tố <0,ab> ..................................... 50

Bảng 2.10. Cơ sở dữ liệu dãy .......................................................................... 54

Bảng 2.11. Trọng số của các mục ................................................................... 54

Bảng 3.1. Mô tả các dữ liệu thử nghiệm ......................................................... 63

Bảng 3.2. Giá trị ràng buộc thời gian .............................................................. 64

DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ

Trang

Hình 1.1. Số lượng tập mục phải xét với 5 mục ban đầu. ................................. 9

Hình 1.2. Hàm Apriori-Generate tập L3 thành tập ứng viên C4 ...................... 16

Hình 1.3. CSDL dãy SDB và các tập kết quả L1, L2, L3, L4 ........................ 17

Hình 3.1. Thời gian chạy với bộ dữ liệu BMSWebView1 ............................. 65

Hình 3.2. Thời gian chạy với bộ dữ liệu Bible ............................................... 65

Hình 3.3. Thời gian chạy với bộ dữ liệu Fifa .................................................. 66

Hình 3.4. Thời gian chạy với bộ dữ liệu Leviathan ........................................ 66

Hình 3.5. Thời gian chạy với bộ dữ liệu Sign ................................................. 67

Hình 3.6. Bộ nhớ sử dụng với bộ dữ liệu BMSWebView1 ............................ 68

Hình 3.7. Bộ nhớ sử dụng với bộ dữ liệu Bible .............................................. 68

Hình 3.8. Bộ nhớ sử dụng với bộ dữ liệu Fifa ................................................ 69

Hình 3.9. Bộ nhớ sử dụng với bộ dữ liệu Leviathan ....................................... 69

Hình 3.10. Bộ nhớ sử dụng với bộ dữ liệu Sign ............................................. 70

MỤC LỤC

Trang

Danh mục các chữ viết tắt ............................................................................................ Danh mục các bảng ......................................................................................................

Danh mục các hình vẽ ..................................................................................................

MỤC LỤC ................................................................................................................... 1

MỞ ĐẦU ..................................................................................................................... 3

CHƯƠNG 1. TỔNG QUAN ....................................................................................... 6 1.1. TỔNG QUAN KHAI PHÁ DỮ LIỆU ................................................................. 6

1.1.1. Tập mục ...................................................................................................... 6

1.1.2. Định nghĩa luật kết hợp .............................................................................. 6

1.1.3. Độ hỗ trợ tập mục ....................................................................................... 7

1.1.4. Độ tin cậy của luật kết hợp ......................................................................... 8 1.1.5. Tập mục thường xuyên ............................................................................... 8

1.1.6. Quá trình tìm kiếm luật kết hợp ................................................................. 8

1.2. KHAI PHÁ MẪU DÃY THƯỜNG XUYÊN VÀ MỘT SỐ MỞ RỘNG ......... 10

1.2.1. Bài toán khai phá mẫu dãy thường xuyên và một số khái niệm cơ bản

trong khai phá mẫu dãy thường xuyên ............................................................... 10

1.2.2. Mẫu dãy thường xuyên có trọng số .......................................................... 12

1.2.3. Mẫu dãy thường xuyên với khoảng cách thời gian .................................. 12

1.3. THUẬT TOÁN APRIORIALL ......................................................................... 13

1.4. THUẬT TOÁN PREFIXSPAN ......................................................................... 18

CHƯƠNG 2. TOP-K MẪU DÃY THƯỜNG XUYÊN TRỌNG SỐ VỚI KHOẢNG

CÁCH THỜI GIAN .................................................................................................. 29

2.1. GIỚI THIỆU ...................................................................................................... 29

2.2. BÀI TOÁN KHAI PHÁ MẪU DÃY THƯỜNG XUYÊN CÓ TRỌNG SỐ .... 30 2.2.1. Các thuật ngữ mô tả bài toán khai phá mẫu dãy thường xuyên với trọng

số chuẩn hóa ....................................................................................................... 30 2.2.2. CSDL điều kiện trong khai phá mẫu dãy thường xuyên với trọng số chuẩn hóa ............................................................................................................ 31 2.2.3. Ví dụ khai phá mẫu dãy thường xuyên với trọng số chuẩn hóa sử dụng CSDL điều kiện theo tiền tố ............................................................................... 32 2.2.4. Thuật toán khai phá mẫu dãy thường xuyên với trọng số chuẩn hóa sử

dụng CSDL điều kiện theo tiền tố (WPrefixSpan) ............................................ 39

1

2.3. BÀI TOÁN MẪU DÃY THƯỜNG XUYÊN TRỌNG SỐ VỚI KHOẢNG

CÁCH THỜI GIAN .................................................................................................. 41

2.3.1. Mô tả bài toán ........................................................................................... 41

2.3.2. CSDL điều kiện trong khai phá mẫu dãy thường xuyên trọng số chuẩn hóa với khoảng cách thời gian ............................................................................ 43 2.3.3. Ví dụ khai phá mẫu dãy thường xuyên trọng số chuẩn hóa với khoảng

cách thời gian sử dụng CSDL điều kiện theo tiền tố .......................................... 45 2.3.4. Thuật toán WIPrefixSpan ......................................................................... 51

2.4. BÀI TOÁN TOP-K MẪU DÃY THƯỜNG XUYÊN TRỌNG SỐ VỚI

KHOẢNG CÁCH THỜI GIAN ................................................................................ 54

2.4.1. Phát biểu bài toán ..................................................................................... 54 2.4.2. Mô tả thuật toán ........................................................................................ 55

2.4.3. Ví dụ thuật toán: ....................................................................................... 58

CHƯƠNG 3. THỬ NGHIỆM VÀ NHẬN XÉT ....................................................... 63

3.1. THỬ NGHIỆM .................................................................................................. 63

3.2. NHẬN XÉT ....................................................................................................... 70

CHƯƠNG 4. KẾT LUẬN VÀ KIẾN NGHỊ ............................................................ 71

4.1. KẾT LUẬN ........................................................................................................ 71

4.2. KIẾN NGHỊ ....................................................................................................... 72

TÀI LIỆU THAM KHẢO ......................................................................................... 73

2

MỞ ĐẦU

Khai phá dữ liệu là một quá trình khám phá các tri thức mới và các tri thức có ích ở dạng tiềm năng từ các nguồn dữ liệu đã có. Khai phá dữ liệu trích rút ra các mẫu có ích trong cơ sở dữ liệu và tìm ra mối liên hệ giữa các mẫu đó. Mục tiêu tổng thể của quá trình khai phá dữ liệu là trích xuất tri thức từ bộ dữ liệu hiện có, sau đó biến đổi chúng thành cấu trúc con người có thể hiểu được để tiếp tục sử dụng.

Khai phá luật kết hợp là một nội dung quan trọng của khai phá dữ liệu, khai phá luật kết hợp gồm 2 bước: Bước đầu tiên là tìm các tập mục thường xuyên. Bước 2 là sinh ra các luật kết hợp từ các tập mục thường xuyên đó. Bài toán khai phá tập mục thường xuyên [1, 2, 3, 4, 5] ra đời như là một bài toán con của khai phá luật kết hợp.

Khai phá mẫu dãy [6, 7, 8, 9, 10, 11, 12, 13] là một mở rộng của khai phá tập mục thường xuyên với nhiều ứng dụng rộng rãi như phân tích thị trường, phân tích mẫu truy cập web, phát hiện xâm nhập trong môi trường mạng, trong nghiên cứu DNA, dự đoán nhu cầu mua sắm của khách hàng,… Khai phá mẫu dãy là việc phát hiện các dãy con phổ biến trong cơ sở dữ liệu dãy. Kể từ khi Agrawal đề xuất [6], khai phá mẫu dãy thường xuyên đã thu hút được sự quan tâm của nhiều nhà nghiên cứu, đã có hàng trăm kết quả nghiên cứu được công bố giới thiệu các thuật toán mới hay đề xuất các giải pháp nâng cao hiệu quả các thuật toán đã có.

Thuật toán AprioriAll [6] do Agrawal và cộng sự đề xuất năm 1995 dựa trên nguyên tắc duyệt dữ liệu của thuật toán Apriori theo chiều rộng khai phá các mẫu dãy thường xuyên có độ dài lớn nhất.

Các giải thuật khai phá mẫu dãy thường xuyên sử dụng một ngưỡng hỗ trợ nhằm thu nhỏ không gian tìm kiếm. Tuy nhiên, sau khi có mẫu dãy thường xuyên, không có cách nào để điều chỉnh số các mẫu dãy thường xuyên thông qua phản hồi của người sử dụng, ngoại trừ sự thay đổi ngưỡng hỗ trợ tối thiểu. Một trong những hạn chế chính của phương pháp tiếp cận truyền thống các thuật toán khai phá mẫu dãy thường xuyên là các mẫu dãy đều có giá trị và lợi

3

ích như nhau, tuy nhiên trong thực tế, các mẫu dãy lại có các mức độ quan trọng khác nhau.

Để đáp ứng yêu cầu của thực tiễn, khai phá tập mục thường xuyên đã có nhiều cách thức mở rộng và ứng dụng, từ thay đổi phương pháp luận đến thay đổi đa dạng các kiểu dữ liệu, mở rộng các nhiệm vụ khai phá và đa dạng các ứng dụng mới. Trong những năm qua, đã có nhiều hướng mở rộng bài toán được quan tâm nghiên cứu. Một hướng mở rộng bài toán này là quan tâm đến cấu trúc dữ liệu, mức độ quan trọng và khoảng cách thời gian khác nhau của các mục dữ liệu, các thuộc tính trong cơ sở dữ liệu.

Trên thế giới có nhiều tác giả đã nghiên cứu về trọng số, khoảng cách thời gian, đưa các giá trị trọng số và khoảng cách thời gian khác nhau đến các mẫu dãy, có thể kể đến là các công trình khai phá mẫu dãy có trọng số và khoảng cách thời gian như [14, 15, 16, 17, 18, 19, 20], [21, 22].

Trong luận văn này sẽ tìm hiểu về một số thuật toán khai phá mẫu dãy thường xuyên có trọng số, có khoảng cách thời gian, khai phá top-k mẫu dãy thường xuyên trọng số với khoảng cách thời gian.

Mục tiêu của luận văn bao gồm:

- Tìm hiểu các kiến thức cơ bản về các phương pháp khai phá mẫu dãy thường xuyên, sau đó là các biến thể ràng buộc chi tiết về trọng số, thời gian với top-k mẫu dãy.

- Cài đặt thử nghiệm toán khai phá Top-k mẫu dãy thường xuyên trọng

số với khoảng cách thời gian

Đối tượng nghiên cứu của luận văn là các dữ liệu có giá trị về trọng số,

và khoảng cách thời gian của các mục dữ liệu.

Phạm vi nghiên cứu của luận văn tập trung nghiên cứu bài toán khai phá mẫu dãy thường xuyên với trọng số chuẩn hóa, khai phá Top-k mẫu dãy thường xuyên trọng số với khoảng cách thời gian.

Phương pháp nghiên cứu của luận văn là nghiên cứu lý thuyết và nghiên cứu thực nghiệm. Về nghiên cứu lý thuyết: các định lý, mệnh đề trong luận văn đưa vào dựa vào các kiến thức cơ bản và các kết quả nghiên cứu đã công bố.

4

Về nghiên cứu thực nghiệm: luận văn thực hiện cài đặt các thuật toán, chạy thử nghiệm thuật toán với các bộ số liệu lấy từ kho dữ liệu UCI, so sánh và đánh giá kết quả thực nghiệm so với kết quả nghiên cứu lý thuyết, từ đó kết luận tính đúng đắn của kết quả nghiên cứu.

Bố cục luận văn gồm 4 chương:

Chương 1. Tìm hiểu tổng quan về lĩnh vực khai phá mẫu dãy thường xuyên

và một số mở rộng.

Chương 2. Tìm hiểu bài toán khai phá Top-k mẫu dãy thường xuyên trọng

số với khoảng cách thời gian

Chương 3. Thử nghiệm và nhận xét.

Chương 4. Kết luận và kiến nghị

5

CHƯƠNG 1. TỔNG QUAN

1.1. TỔNG QUAN KHAI PHÁ DỮ LIỆU

Trong khai phá dữ liệu, tìm hiểu luật kết hợp [1] là một phương pháp nghiên cứu rất hiệu quả và thường xuyên được sử dụng trong việc tìm ra những mối liên kết hữu ích giữa các biến số trong những CSDL lớn. Các luật liên kết chặt chẽ tìm được trong CSDL được ứng dụng trong rất nhiều lĩnh vực khác nhau. Ví dụ như:

- Thu thập các loại mặt hàng mà người dùng thường mua cùng với nhau.

- Thu thập các trang web mà người dùng thường truy cập cùng nhau.

- Thu thập thông tin mặt hàng sẽ được mua tiếp theo sau khi đã mua mặt

hàng nào đó.

1.1.1. Tập mục

CSDL giao tác D gồm một tập các giao tác D = { t1, t2, … , tN }.

Tập I = { i1, i2, … , iM } là tập tất cả các mục (item) xuất hiện trong D.

Mỗi tập con X của I được gọi là một tập mục (itemset). Một tập mục X chứa k mục riêng biệt được gọi là tập mục cỡ k hoặc k-tập mục (k-itemset).

1.1.2. Định nghĩa luật kết hợp

Tìm kiếm luật kết hợp là tìm ra sự kết hợp hay mối tương quan giữa các

tập mục với nhau.

Những luật kết hợp này có dạng X → Y với X, Y  I và X ∩ Y = ∅.

Để minh họa cho khái niệm, chúng ta sẽ sử dụng một ví dụ nhỏ trong lĩnh vực mua hàng, tập tất cả các mục là I = { sữa, bánh mỳ, bơ, bia } và CSDL giao tác nhỏ chứa các mục (1 - thể hiện mục xuất hiện trong giao dịch và 0 - thể hiện sự vắng mặt trong giao dịch) được thể hiện trong bảng dưới đây:

6

Bảng 1.1. Ví dụ về CSDL giao tác với 4 mục và 5 giao tác

ID giao dịch

Sữa

Bánh mỳ

Bia

1

1

1

0

0

2

0

0

1

0

3

0

0

0

1

4

1

1

1

0

5

0

1

0

0

Một ví dụ về luật kết hợp cho CSDL trên sẽ có dạng {bánh mỳ, bơ} →{sữa}, có nghĩa là nếu người dùng mua bánh mỳ và bơ thì họ cũng sẽ mua sữa.

Tất nhiên, ví dụ trên là cực kỳ nhỏ. Trong ứng dụng thực tiễn, một luật kết hợp cần có sự nghiên cứu của hàng trăm giao dịch trước khi được coi là có ý nghĩa về mặt thống kê, và tập dữ liệu thường chứa tới hàng ngàn hoặc hàng triệu giao dịch.

Để có thể chọn ra được các luật kết hợp có ý nghĩa từ rất nhiều luật kết hợp có thể có với một CSDL giao tác, người ta thường sử dụng 2 ràng buộc rất phổ biến đó là độ hỗ trợ nhỏ nhất (minimum thresholds support - min_supp) và độ tin cậy nhỏ nhất (minimum thresholds confidence - min_conf).

1.1.3. Độ hỗ trợ tập mục

Tập mục X  I, số các giao tác chứa tập mục X trong CSDL D gọi là số

đếm hỗ trợ (support count - SC) của X, ký hiệu là SC (X).

Độ hỗ trợ của một tập mục X - ký hiệu supp (X) – được định nghĩa là tỷ

lệ giao dịch trong tập dữ liệu có chứa tập mục X. Công thức tính độ hỗ trợ :

Supp (X) = P (X) = (1.1)

SC(X)

M

Trong CSDL ví dụ ở Bảng 1.1, tập mục {sữa, bánh mỳ, bơ} có độ hỗ trợ

7

là 1/5 = 0.2, nghĩa là tập mục X xuất hiện 20% trong toàn bộ tất cả các giao dịch.

1.1.4. Độ tin cậy của luật kết hợp

Độ tin cậy của luật kết hợp X→Y - ký hiệu conf (X→Y) - được định nghĩa là xác suất tất cả các giao dịch chứa tập mục Y trong khi đã có tập mục X. Công thức tính độ tin cậy :

SC(X∪Y)

Conf (X→Y) = P (Y|X) =

supp(X∪Y)

(1.2) =

SC(X)

supp(X)

Ở đây, supp (X ∪ Y) mang nghĩa độ hỗ trợ với giao dịch xuất hiện cả 2

tập mục X và Y chứ không phải độ hỗ trợ với giao dịch xuất hiện X hoặc Y.

Trong CSDL ví dụ ở Bảng 1.1, luật kết hợp {sữa, bánh mỳ}→{bơ} có độ tin cậy là 1/2 = 0.5 (hoặc 0.2/0.4 = 0.5), có nghĩa là 50% số lần người dùng mua sữa và bánh mỳ, họ sẽ mua luôn cả bơ.

1.1.5. Tập mục thường xuyên

Các tập mục có độ hỗ trợ lớn hơn độ hỗ trợ tối thiểu gọi là tập mục thường xuyên (frequent itemset). Tập các k-tập mục (k-itemset) là các tập mục thường xuyên ký hiệu là Lk.

Trong CSDL ví dụ ở Bảng 1.1, nếu cho ngưỡng hộ trợ nhỏ nhất là 30%, khi đó tập mục {sữa, bánh mỳ, bơ} có độ hỗ trợ 20% < 30% sẽ không là 1 tập mục thường xuyên, nhưng với tập mục {sữa, bánh mỳ} có độ hỗ trợ là 2/5 = 40% > 30% là một tập mục thường xuyên trong CSDL đã cho.

1.1.6. Quá trình tìm kiếm luật kết hợp

Một luật kết hợp có ý nghĩa phải được thỏa mãn cả 2 ngưỡng hỗ trợ và tin cậy nhỏ nhất do người dùng đặt ra. Việc tìm kiếm luật kết hợp được chia ra làm 2 bước riêng rẽ:

- Bước thứ nhất, ngưỡng độ hỗ trợ nhỏ nhất được sử dụng để tìm ra mọi

tập mục thường xuyên có trong CSDL.

- Bước hai, tất cả các tập mục thường xuyên kết hợp với ngưỡng tin cậy

nhỏ nhất để hình thành nên luật.

8

Ta có thể thấy rằng bước 2 thực hiện khá đơn giản, và bước một cần chú ý nhiều hơn. Tìm kiếm tất cả các tập mục thường xuyên là rất khó khăn vì nó liên quan tới việc tìm kiếm tất cả các mục kết hợp.

Đối với một CSDL giao tác có N mục thì có thể xuất hiện tới 2N-1 tập mục cần xét, trong một CSDL thực tế lại có thể có tới hàng trăm, hàng nghìn mục khác nhau. Do đó, có thể coi bước tìm tất cả các tập mục thường xuyên là bước quan trọng nhất của bài toán tìm kiếm luật kết hợp.

Hình 1.1. Số lượng tập mục phải xét với 5 mục ban đầu.

9

1.2. KHAI PHÁ MẪU DÃY THƯỜNG XUYÊN VÀ MỘT SỐ MỞ RỘNG

1.2.1. Bài toán khai phá mẫu dãy thường xuyên và một số khái niệm

cơ bản trong khai phá mẫu dãy thường xuyên

1.2.1.1. Cơ sở dữ liệu dãy

Cho I = {i1, i2, …, in} là tập hợp các mục dữ liệu.

Một dãy Sm là một danh sách được sắp xếp theo thứ tự của các mục dữ

liệu dạng {s1, s2, …, sm} với sj  I là một tập mục được gọi là thành phần của dãy. Khi đó, S = {s1, s2, …, sm} và sj có dạng (i1i2… ik) và it là một mục dữ liệu. Một dãy S bị loại nếu chỉ có duy nhất một mục dữ liệu. Một mục dữ liệu chỉ xuất hiện 1 lần trong 1 thành phần của một dãy sj, nhưng có thể xuất hiện nhiều lần trong các thành phần khác nhau của một dãy S.

Kích thước |S| của một dãy là số lượng của các thành phần trong dãy S. Độ dài l(S) của dãy là tổng số mục dữ liệu trong dãy S. Một cơ sở dữ liệu dãy SDB={S1,S2,…,Sn} là một tập các bộ dữ liệu (sid,Sk) với sid là định danh của một dãy và Sk là một dãy dữ liệu.

Ví dụ về một cơ sở dữ liệu dãy:

Bảng 1.2. Cơ sở dữ liệu dãy SDB

SID Dãy dữ liệu

1

2 <(ad)c(bc)(ae)>

3 <(ef)(ab)(df)cb>

4

1.2.1.2. Dãy con

Cho 2 dãy dữ liệu α=< a1 a2 … an > và β=< b1 b2 … bm >.

α được gọi là Dãy con của β (α⊆ β), nếu tồn tại một dãy số nguyên 1≤ j1

< j2 <…< jn ≤m sao cho a1 ⊆ bj1, a2 ⊆ bj2,…, an ⊆ bjn

10

β được gọi là Dãy chứa α

Ví dụ. α=< (ab), d> và β=< (abc), (de)>

1.2.1.3. Độ hỗ trợ của một dãy

Cho một CSDL dãy SDB có M bản ghi. Số lượng các bản ghi trong SDB có chứa dãy Sa được gọi là số hỗ trợ (support count- SC) của dãy Sa . Ký hiệu là SC(Sa). Tỉ lệ các bản ghi trong SDB chứa Sa được gọi là độ hỗ trợ của Sa , ký hiệu là support (Sa)

Ta có:

support(Sa) =

SC(Sa) M

1.2.1.4. Mẫu dãy thường xuyên

Cho một CSDL dãy SDB có M bản ghi và một ngưỡng độ hỗ trợ tối thiểu

minsup. Sa được gọi là mẫu dãy thường xuyên nếu :

support(Sa) ≥ minsup

1.2.1.5. Luật dãy trong khai phá dữ liệu

Trong khai phá dữ liệu, tìm hiểu luật dãy là một phương pháp nghiên cứu rất hiệu quả và thường xuyên được sử dụng trong việc tìm ra những mối liên kết thú vị giữa các biến số trong những CSDL lớn. Các luật liên kết chặt chẽ (strong rule) tìm được trong CSDL được ứng dụng trong rất nhiều lĩnh vực khác nhau. Ví dụ như :

- Thu thập các loại mặt hàng mà người dùng thường mua cùng với nhau.

- Thu thập các trang web mà người dùng thường truy cập cùng nhau.

- Thu thập thông tin mặt hàng sẽ được mua tiếp theo sau khi đã mua mặt

hàng nào đó.

Luật dãy X=>Y là một quan hệ giữa 2 tập mục X và Y với X,Y  I sao

cho X∩Y = Ø và X,Y ≠ Ø. Ý nghĩa của luật X=>Y là nếu một tập mục X xuất hiện trong một dãy Sx nào đó thì các mục trong Y cũng xuất hiện sau đó trong dãy này (Sx).

11

Quá trình khai phá luật dãy cũng được chia ra làm 2 bước:

- Bước thứ nhất, tìm tất cả các mẫu dãy thường xuyên thỏa mãn ngưỡng

hỗ trợ tối thiểu.

- Bước hai, sinh luật dựa trên các mẫu dãy thường xuyên tìm được thỏa

mãn ngưỡng tin cậy tối thiểu.

1.2.1.6. Bài toán khai phá mẫu dãy thường xuyên

Cho CSDL dãy SDB. Cho trước một ngưỡng hỗ trợ tối thiểu minsup. Tìm

tất cả các mẫu dãy thường xuyên trong SDB, tức là tìm tập L:

𝐿 = {𝑆𝑎 ⊆ 𝑆 |𝑠𝑢𝑝𝑝𝑜𝑟𝑡(𝑆𝑎) ≥ 𝑚𝑖𝑛𝑠𝑢𝑝}

Với các khái niệm trên, bài toán khai phá mẫu dãy thường xuyên có thể chia thành 2 bài toán nhỏ: Tìm mẫu dãy ứng viên và tìm mẫy dãy thường xuyên. Mẫu dãy ứng viên được sinh ra trong quá trình duyệt cơ sở dữ liệu, mẫu dãy thường xuyên được tìm ra sau khi tính độ hỗ trợ của mẫu dãy ứng viên. Các mẫu dãy ứng viên có độ hỗ trợ lớn hơn ngưỡng hỗ trợ tối thiểu cho trước sẽ trở thành các mẫu dãy thường xuyên.

1.2.2. Mẫu dãy thường xuyên có trọng số

Các thuật toán khai phá mẫu dãy thường xuyên không quan tâm tới mức độ quan trọng của từng mẫu (trọng số của mẫu). Tuy nhiên trên thực tế, mỗi mẫu dữ liệu đều có độ quan trọng khác nhau.

Trọng tâm chính đối với khai phá mẫu dãy thường xuyên với trọng số là xây dựng giải thuật nhằm đảm bảo tính chất phản đơn điệu (downward closure property). Phương pháp tiếp cận là sử dụng tính chất ràng buộc giữa độ hỗ trợ và trọng số của dãy để sinh các tập ứng viên trong khi vẫn đảm bảo tính chất phản đơn điệu cho phép cân bằng độ hỗ trợ và trọng số của một dãy.

1.2.3. Mẫu dãy thường xuyên với khoảng cách thời gian

Các thuật toán khai phá mẫu dãy thường xuyên chỉ tính toán đến số lần xuất hiện (độ hỗ trợ). Các thuật toán này cơ bản không quan tâm đến khoảng cách thời gian giữa các dãy.

12

Trên thực tế, giữa các mẫu dãy có khoảng cách thời gian khác nhau. Do vậy mức độ quan trọng của các mẫu dãy cũng khác nhau. Có thể nói rằng các mẫu dãy có khoảng cách thời gian lớn thì ít quan trọng hơn các mẫu dãy có khoảng cách thời gian nhỏ.

Mục tiêu của khai phá mẫu dãy thường xuyên với khoảng cách thời gian là tìm ra được các mẫu dãy có ý nghĩa trong CSDL dãy với khoảng cách thời gian.

Khai phá mẫu dãy thường xuyên trong CSDL dãy là tìm ra các mẫu dãy xuất hiện nhiều lần trong 1 CSDL có thứ tự. Thuật toán cơ bản khai phá mẫu dãy thường xuyên là AprioriAll [6].

Thuật toán AprioriAll [6] tiêu biểu cho phương pháp dựa trên giải thuật Apriori theo nguyên tắc: tập ứng viên gồm các mẫu dãy độ dài k được phát sinh bằng cách kết hợp các mẫu dãy độ dài (k-1), sau đó dựa vào nguyên tắc Apriori và minsup để loại bỏ các mẫu dãy không thường xuyên.

1.3. THUẬT TOÁN APRIORIALL

Thuật toán AprioriAll [6] do Agrawal và cộng sự đề xuất năm 1995 dựa trên nguyên tắc duyệt dữ liệu của thuật toán Apriori [1] theo chiều rộng khai phá các mẫu dãy thường xuyên có độ dài lớn nhất.

Thuật toán AprioriAll:

Đầu vào : CSDL dãy SDB,

Ngưỡng hỗ trợ minsup,

Đầu ra : Tập các mẫy dãy thường xuyên lớn nhất L.

13

Ký hiệu :

SDB Cơ sở dữ liệu

Tập các k-mẫu dãy thường xuyên Lk

L Tập tất cả các mẫu dãy thường xuyên

Ck Tập các k-mẫu dãy ứng viên có thể là tập con của j-mẫu dãy thường xuyên, j > k

SC(c) Số đếm hỗ trợ của dãy trong SDB

minsup Ngưỡng hỗ trợ tối thiểu

Thủ tục AprioriAll:

L1 = {large 1-sequences}

for (k = 2; Lk-1 ≠ {}; k++) do

begin

Ck = New candidates generated from Lk-1 (Hàm Apriori_ Generate )

foreach customer-sequence c in the database do

Increment the count of all candidates in Ck that are contained in c.

Lk = Candidates in Ck with minimum support.

end

L = Maximal Sequences in ⋃ 𝐿𝑘𝑘

Trong mỗi lần duyệt, ta sử dụng các dãy thường xuyên từ lần duyệt trước đó để tạo ra các dãy ứng viên, sau đó tính độ hỗ trợ của chúng bằng cách duyệt toàn bộ CSDL. Tại lần duyệt cuối cùng tại mỗi bước, độ hỗ trợ của các ứng viên được sử dụng để xác định các dãy thường xuyên cho bước tiếp theo. Trong lần duyệt đầu tiên, đầu ra của giai đoạn l itemset được sử dụng để khởi tạo tập các dãy thường xuyên 1-sequences.

14

Ví dụ minh họa thuật toán AprioriAll:

Xét CSDL dãy SDB như trong Bảng 1.3 ở dưới. Giả sử ngưỡng hỗ trợ là

minsup = 0.4. Ta cần tìm tất cả các mẫu dãy thường xuyên trong SDB

Bảng 1.3. Cơ sở dữ liệu dãy SDB ví dụ thuật toán AprioriAll

SID Dãy dữ liệu

1 <(ae) (b) (c) (d)>

2 <(a) (c) (d) (ce)>

3 <(a) (b) (c) (d)>

4 <(a) (c) (e)>

5 <(d) (e)>

Bước thứ 1: (k = 1, k là độ dài dãy). Duyệt CSDL SDB, ta có số đếm hỗ

trợ mỗi mục riêng lẻ lần lượt là :

SC(a) = 4, SC(b) = 2, SC(c) = 4, SC(d) = 4, SC(e) = 4

Khởi đầu L = ∅.

Độ hỗ trợ của mỗi dãy là

support(a) = 0.8, support(b) = 0.4, support(c) = 0.8,

support(d) = 0.8, support(e) = 0.8

Với minsup đã cho là 0.4, ta thu được L1 = {(a), (b), (c), (d), (e)}.

Sau bước 1, ta có L = L ∪ L1 = ∅ ∪ {(a), (b), (c), (d), (e)} = {(a), (b), (c),

(d), (e)}

Bước thứ 2 : (k = 2, k là độ dài dãy) :

Thực hiện hàm Apriori-Generate: Kết nối mỗi tập mục thường xuyên trong L1 với mỗi mục để lập thành một tập dãy ứng viên C2, và thực hiện tỉa những dãy không có trong L1 thu được:

15

C2 = {(a)(b), (a)(c), (a)(d), (a)(e), (b)(c), (b)(d), (b)(e), (c)(d), (c)(e),

(d)(e),(ab), (ac), (ad), (ae), (bc), (bd), (be), (cd), (ce), (de)}.

Duyệt CSDL SDB, ta tính số đếm hỗ trợ mỗi mục trong C2 lần lượt là

SC((a)(b)) = 2, SC((a)(c)) = 4, SC((a)(d)) = 3 , SC((a)(e)) = 2

SC((b)(c)) = 2, SC((b)(d)) = 2, SC((b)(e)) = 0 , SC((c)(d)) =3

SC((c)(e)) = 2 , SC((d)(e)) = 2, SC((ab)) = 0, SC((ac)) = 0

SC((ad)) = 0, SC((ae)) = 1 , SC((bc)) = 0, SC((bd)) = 0

SC((be)) = 0, SC((cd)) = 0, SC((ce)) = 1, SC((de)) = 0

Với minsup đã cho là 0.4, ta thu được

L2 = {(a)(b), (a)(c), (a)(d), (a)(e), (b)(c),(b)(d),(c)(d),(c)(e),(d)(e)}.

Sau bước 2, ta có L = L ∪ L2 = {(a), (b), (c), (d), (e), (a)(b), (a)(c), (a)(d),

(a)(e), (b)(c),(b)(d),(c)(d),(c)(e),(d)(e)}

Các bước lặp tiếp theo : (k ++, k là độ dài dãy) :

Tiếp tục thực hiện hiện hàm Apriori-Generate: Kết nối mỗi tập mục thường xuyên trong Lk-1 với mỗi dãy để lập thành một tập dãy ứng viên Ck , và thực hiện tỉa những dãy không có trong Lk-1 thu được kết quả như sau:

Hình 1.2. Hàm Apriori-Generate tập L3 thành tập ứng viên C4

16

Hình 1.3. CSDL dãy SDB và các tập kết quả L1, L2, L3, L4

Thực hiện hàm Maximal_Sequences có dữ liệu đầu vào là tập L, thực hiện tìm các mẫu dãy thường xuyên có độ dài lớn nhất, tức là tỉa tất cả mẫu dãy thường xuyên là dãy con của một mẫu dãy thường xuyên.

Kết quả cuối cùng tập L sau khi kết thúc thuật toán AprioriAll [6] là:

L = {(a)(b)(c)(d), (a)(c)(e), (d)(e)}

Nhận xét về thuật toán AprioriAll:

Thuật toán AprioriAll là giải thuật dựa trên nguyên tắc Apriori: Mọi tập con của tập phổ biến phải là tập phổ biến, mọi tập cha của tập không phổ biến đều không phổ biến. Tập ứng viên gồm các mẫu dãy độ dài k được phát sinh bằng cách kết hợp các mẫu dãy độ dài (k-1), sau đó dựa vào nguyên tắc Apriori và minsup để loại bỏ các mẫu dãy không phổ biến.

Thuật toán gồm 3 giai đoạn chính: Tìm itemset phổ biến, biến đổi CSDL và tìm mẫu dãy trên dữ liệu đã biến đổi. Ở giai đoạn 1, thuật toán tiến hành duyệt toàn bộ CSDL ban đầu để tìm các itemset phổ biến. Sau đó, ánh xạ tập itemset phổ biến tìm được sang tập số nguyên. Việc ánh xạ nhằm mục đích coi một itemset phổ biến là một thực thể riêng biệt và thời gian so sánh hai itemset phổ biến bất kỳ đều như nhau. Hơn nữa, giúp giảm thời gian kiểm tra một dãy

17

có là dãy con của dãy dữ liệu trong CSDL ban đầu không.

Giai đoạn 2, trong CSDL dãy ban đầu, mỗi dãy được thay thế bởi tập tất cả các itemset phổ biến có chứa trong dãy đó. Nếu itemset không chứa itemset con phổ biến nào thì loại bỏ itemset đó khỏi tập dãy dữ liệu. Nếu dãy dữ liệu không chứa itemset phổ biến nào thì loại bỏ dãy đó khỏi CSDL. Sau khi biến đổi, mỗi dãy sẽ được đại diện bởi một dãy các itemset phổ biến.

Giai đoạn 3, tìm mẫu dãy dựa trên kết quả từ giai đoạn tìm itemset phổ biến, ta có được tập các mẫu dãy có kích thước là 1. Giải thuật dựa trên nguyên tắc Apriori: Mọi tập con của tập phổ biến phải là tập phổ biến, mọi tập cha của tập không phổ biến đều không phổ biến. Tập ứng viên gồm các mẫu dãy độ dài k được phát sinh bằng cách kết hợp các mẫu dãy độ dài (k-1), sau đó dựa vào nguyên tắc Apriori và minsup để loại bỏ các mẫu dãy không phổ biến.

1.4. THUẬT TOÁN PREFIXSPAN

Năm 2001, nhóm tác giả J. Pei, J. Han, B.M. Asi, H. Pinto đề xuất thuật toán PrefixSpan [9], một thuật toán dựa trên phương pháp phát triển mẫu dãy. Thuật toán không phải quét CSDL nhiều lần nên thời gian khai phá giảm đi đáng kể so với thuật toán AprioriAll [6].

Thuật toán PrefixSpan [9] dựa trên cấu trúc dữ liệu “FP – tree”, và sử dụng nguyên lý đệ quy “chia để trị” để phát triển các mẫu dãy trên cây FP. Cây FP được xây dựng dựa trên thuộc tính tăng cường mẫu như sau: α là một itemset thường xuyên trong CSDL, B là tập cơ sở điều kiện của α, và β là một itemset

trong B. Khi đó α∪β là một itemset thường xuyên trong cơ sở dữ liệu nếu và chỉ nếu β là thường xuyên ở trong B.

Ví dụ “abcdef” là một mẫu dãy nếu và chỉ nếu “abcde” là mẫu dãy và “f”

là thường xuyên trong tập các giao dịch có chứa “abcde”.

Định nghĩa 1. Tiền tố : Các mục dữ liệu trong một thành phần của dãy

đã sắp xếp theo thứ tự chữ cái.

Cho một dãy  = < e1e2 …en>, một dãy = (m≤n) được gọi

là tiền tố của  nếu:

18

- e’i = ei với (i≤m-1) - e’m ⊆ em - Mọi tập mục trong (em – e’m) được sắp xếp thứ tự trong e’m Ví dụ: Cho dãy S = , khi đó, các tiền tố của dãy S là ,

, , , ...

Định nghĩa 2. Hậu tố : Cho một dãy  = , một dãy =< e1e2

… em-1 e’m> (m≤n) được gọi là tiền tố của . Dãy α=< e’’mem+1 … en> được

gọi là hậu tố của  với tiền tố , hay α= / với e’’m = (em –e’m). Hay  = . α.

Nếu  không phải là dãy con của  thì hậu tố của  với tiền tố  là rỗng.

Ví dụ: Cho dãy S = , khi đó, <(abc)(ac)d(cf)> là hậu tố của tiền tố ; <(_bc)(ac)d(cf)> là hậu tố của tiền tố ; <(_c)(ac)d(cf)> là hậu tố của tiền tố

Dựa trên ý tưởng tiền tố và hậu tố trên, vấn đề khai phá mẫu dãy thường

xuyên được chia thành vấn đề xử lý sau:

Mệnh đề 1: - Cho {, , …, } là tập các mẫu dãy thường xuyên có độ dài 1 của một CSDL dãy S. Khi đó toàn bộ các mẫu dãy thường xuyên của S được chia trong n tập con phân biệt. Tập các mẫu thứ i (1≤i≤n) là tập các mẫu dãy thường xuyên với tiền tố < xi>.

- Cho  là một mẫu dãy thường xuyên có độ dài là l và {1,2, …,m} là

tập toàn bộ mẫu dãy thường xuyên có độ dài là (l+1) với tiền tố . Thì toàn bộ

tập các mẫu dãy thường xuyên với tiền tố , trừ chính giá trị  có thể được chia

trong m tập con phân biệt. Tập mẫu thứ j (1≤j≤m) là tập các mẫu dãy thường

xuyên với tiền tố j. Chứng minh:

Trường hợp 1 là trường hợp đặc biệt khi  =.

Với mẫu dãy thường xuyên α có tiền tố , độ dài  là l, thì tiền tố có độ

dài là (l+1) của α cũng bao gồm tiền tố  theo cách định nghĩa Tiền tố. Vì vậy,

có thể tìm thấy các giá trị thứ j (1≤j≤m) như giá trị j có độ dài là (l+1) là tiền tố của α. Khi đó α nằm trong tập thứ j. Mặt khác, khi tiền tố của một dãy α có

19

độ dài k duy nhất, thì α chỉ thuộc 1 tập xác định. Đó là các tập con phân biệt. Vì vậy đó là điều chứng minh của mệnh đề.

Dựa vào tính chất của Mệnh đề 1, vấn đề cần giải quyết khi khai phá mẫu dãy thường xuyên là có thể thực hiện bằng cách phân vùng đệ quy. Đó là mỗi tập con của mẫu dãy thường xuyên có thể được chia tách ra khi cần thiết. Điều này cho phép thực hiện phương pháp chia để trị. Để thực hiện khai phá các tập con của mẫu dãy thường xuyên, cần xây dựng các CSDL điều kiện theo tiền tố.

Định nghĩa 3. CSDL điều kiện: Cho một dãy thường xuyên  =

…en> của một CSDL dãy S . Một CSDL điều kiện theo  được định nghĩa là

S|α, là các hậu tố của các dãy trong S với tiền tố .

Định nghĩa 4. Độ hỗ trợ trong CSDL điều kiện: Cho một dãy  =

…en> của một CSDL dãy S và  là một dãy với tiền tố . Độ hỗ trợ của  trong

CSDL điều kiện với tiền tố , ký hiệu là S| α gọi là support() trên S|α là số

lượng các dãy α trong S|α sao cho ⊆. α

Mệnh đề 2 : Cho  và  là hai mẫu dãy trong CSDL dãy S, với  là một

tiền tố của 

- S| = (S|α)|

- Với mỗi dãy α với tiền tố , support (α) trên S = support (α) trên S|α

- Kích thước của CSDL điều kiện với tiền tố  không vượt quá S

Thuật toán PrefixSpan Đầu vào : - CSDL dãy : S, - Ngưỡng hỗ trợ : min_sup, Đầu ra: Tập các mẫu dãy thường xuyên L

20

Thủ tục PrefixSpan (α,l,S|α ) Tham số:

- α là một dãy thường xuyên - l là độ dài của dãy α - S|α là CSDL điều kiện với tiền tố α. S là trường hợp α = 

Bắt đầu:

(1). Duyệt S|α, đếm độ hỗ trợ của mỗi mục và tìm các mục thường

xuyên  sao cho: Với mỗi :

(a)  có thể được ghép làm thành phần cuối cùng của α để tạo

thành một mẫu dãy thường xuyên hoặc

(b) <> có thể được nối vào với α để tạo thành một mẫu dãy

thường xuyên

- Kiểm tra các tập mục ứng viên  trong Ck để tìm mẫu dãy thường xuyên có trọng số chuẩn hóa thỏa mãn tính chất support()*NW()  wmin_sup, nạp vào L

(2). Lặp với mỗi mẫu dãy thường xuyên 

- Ghép  với α để tạo thành một mẫu dãy α’ và đầu ra là α’

(3). Lặp với mỗi α’

- Xây dựng CSDL điều kiện với tiền tố α’ là S|α’ .

- Thực hiện đệ quy thủ tục PrefixSpan(α’,l+1,S|α’)

Kết thúc.

21

Ví dụ thuật toán PrefixSpan Cho một CSDL dãy SDB như Bảng 1.4, giá trị minsup =2. Khi đó việc khai phá các mẫu dãy thường xuyên trong CSDL dãy S theo phương pháp PrefixSpan được thực hiện theo các bước như sau:

Bảng 1.4. Cơ sở dữ liệu dãy SDB ví dụ thuật toán PrefixSpan

SID Dãy dữ liệu

1 <(a)(abc) (ac) d (cf)>

2 <(ad) c (bc) (ae) b c>

3 < (ef)(ab) (df) c b>

4 <(e) g (af) c b c>

Bước 1: Tìm các dãy thường xuyên có độ dài 1 Duyệt CSDL dãy SDB lần đầu tiên để tìm tất cả các mẫu dãy thường xuyên

có độ dài 1, đếm độ hỗ trợ của mỗi mục.

Khi đó ta có các giá trị độ hỗ trợ của mỗi mục tương ứng như sau: : 4, : 4, : 4, :3, : 3, : 3, Kiểm tra độ hỗ trợ mỗi mục với giá trị minsup =2. Ta có tập L:

L = , , , , ,

Bước 2: Chia không gian tìm kiếm Toàn bộ các mẫu dãy thường xuyên được khai phá trong các phân vùng

gồm 6 vùng tương ứng với 6 tiền tố như sau:

(1) Mẫu dãy với tiền tố (2) Mẫu dãy với tiền tố (3) Mẫu dãy với tiền tố (4) Mẫu dãy với tiền tố (5) Mẫu dãy với tiền tố (6) Mẫu dãy với tiền tố Bước 3: Khai phá các mẫu dãy thường xuyên Các tập con mẫu dãy thường xuyên được khai phá bằng cách xây dựng các CSDL điều kiện tương ứng với các tiền tố, và khai phá chúng bằng phương

22

pháp đệ quy. Các bước thực hiện như sau:

A. Tìm các các mẫu dãy thường xuyên với tiền tố Trong một dãy có chứa , chỉ có các dãy bắt đầu bằng sự xuất hiện đầu tiên của nên được lựa chọn. Ví dụ, trong chuỗi , chỉ có dãy <(abc) (ac) d (cf)> được lựa chọn, tương tự với dãy <(ad) c (bc) (ae) bc>, chỉ có dãy (~ d) c (bc) (ae) bc> được lựa chọn.

Khi đó, CSDL điều kiện với tiền tố bao gồm 4 dãy sau

Bảng 1.5. Cơ sở dữ liệu điều kiện với tiền tố

SID Dãy dữ liệu

1 <(abc) (ac) d (cf)>

2 <(~d) c (bc) (ae) b c>

3 < (~b) (df) c b>

4 <(~f) c b c>

Bằng cách quét CSDL điều kiện với tiền tố , độ hỗ trợ của các mục dữ liệu của nó tương ứng là a: 2, b: 4, c: 4, d: 2, e:1, f: 2, (~b): 2, (~c): 0 , (~d): 1, (~ e): 0 và (~ f): 1. Kiểm tra độ hỗ trợ mỗi mục với giá trị minsup=2.

Khi đó, ta có các mục dữ liệu bị tỉa là e, (~c), (~d), (~e), (~f).

Các mục dữ liệu được phát hiện là a,b,c,d,f,(~b)

L = L  {, , , , , <(ab)>}

Theo tính chất đệ quy, các mẫu dãy thường xuyên với tiền tố sẽ tiếp

tục được chia thành 6 vùng tương ứng với 6 tiền tố gồm:

(1) Mẫu dãy với tiền tố (2) Mẫu dãy với tiền tố (3) Mẫu dãy với tiền tố (4) Mẫu dãy với tiền tố

23

(5) Mẫu dãy với tiền tố (6) Mẫu dãy với tiền tố <(ab)> A.1. Đối với mẫu dãy với tiền tố , ta xây dựng CSDL điều kiện với

tiền tố . Khi đó

Bảng 1.6. Cơ sở dữ liệu điều kiện với tiền tố

SID Dãy dữ liệu

1 <(~bc) (ac) d (cf)>

2 < ~e>

Bằng cách quét CSDL điều kiện với tiền tố , độ hỗ trợ của các mục dữ liệu của nó là a:1, c:1, d:1, f:1, (~b):1, (~e): 1. Kiểm tra độ hỗ trợ mỗi mục với giá trị minsup = 2.

Khi đó, không có dãy thường xuyên với tiền tố được phát hiện. Dừng

thực hiện đối với tiền tố

A.2. Đối với mẫu dãy với tiền tố , ta xây dựng CSDL điều kiện với

tiền tố . Khi đó:

Bảng 1.7. Cơ sở dữ liệu điều kiện với tiền tố

SID Dãy dữ liệu

1 <(~c) (ac) d (cf)>

2 < (~c) (ae)>

3 < c>

Bằng cách quét CSDL điều kiện với tiền tố , độ hỗ trợ của các mục dữ liệu của nó là a:2, c:2, d:1, e:1,f:1, (~c):2. Kiểm tra độ hỗ trợ mỗi mục với giá trị minsup = 2.

Các mục dữ liệu được phát hiện là: a, c, (~c)

L = L  {, , <(a(bc)>}

Theo tính chất đệ quy, mẫu dãy thường xuyên với tiền tố sẽ tiếp tục

được chia thành 3 vùng tương ứng với tiền tố gồm:

(1) Mẫu dãy với tiền tố

24

(2) Mẫu dãy với tiền tố (3) Mẫu dãy với tiền tố A.2.1. Đối với mẫu dãy với tiền tố , ta xây dựng CSDL điều kiện

với tiền tố .

Khi đó CSDL điều kiện với tiền tố

Bảng 1.8. Cơ sở dữ liệu điều kiện với tiền tố

SID Dãy dữ liệu

1 <(~c) d (cf)>

2 < (~e) >

Bằng cách quét CSDL điều kiện với tiền tố , độ hỗ trợ của các mục dữ liệu của nó là c:1, d:1, f:1, (~c):1, (~e):1. Kiểm tra độ hỗ trợ mỗi mục với giá trị minsup = 2.

Khi đó, không có dãy thường xuyên với tiền tố được phát hiện.

Dừng thực hiện đối với tiền tố .

A.2.2. Đối với mẫu dãy với tiền tố , ta xây dựng CSDL điều kiện

với tiền tố .

Khi đó CSDL điều kiện với tiền tố là {}. Không có dãy thường xuyên với tiền tố được phát hiện. Dừng thực hiện đối với tiền tố A.2.3. Đối với mẫu dãy với tiền tố , ta xây dựng CSDL điều kiện

với tiền tố .

Khi đó CSDL điều kiện với tiền tố

Bảng 1.9. Cơ sở dữ liệu điều kiện với tiền tố

SID Dãy dữ liệu

1 <(ac)d(cf)>

2 < (ae) >

Bằng cách quét CSDL điều kiện với tiền tố , độ hỗ trợ của các mục dữ liệu của nó là a:2,c:1, d:1,e:1, f:1. Kiểm tra độ hỗ trợ mỗi mục với giá trị minsup=2.

Các mục dữ liệu được phát hiện là: a

25

L = L  { <(a(bc)a>} Theo tính chất đệ quy, mẫu dãy thường xuyên với tiền tố sẽ tiếp

tục được chia thành 1 vùng tương ứng với tiền tố gồm:

(1) Mẫu dãy với tiền tố A.2.3.1. Đối với mẫu dãy với tiền tố , ta xây dựng CSDL điều

kiện với tiền tố .

Khi đó CSDL điều kiện với tiền tố là {}. Không có dãy thường xuyên với tiền tố được phát hiện. Dừng thực hiện đối với tiền tố / A.3. Đối với mẫu dãy với tiền tố tương tự , , , <(ab), ta xây dựng CSDL điều kiện với tiền tố tương ứng và thực hiện khai phá mẫu dãy thường xuyên tương tự như các bước A.1 và bước A.2

B. Tìm tương tự đối với các mẫu dãy thường xuyên với tiền tố , ,

, ,

Đối với mẫu dãy với tiền tố ,,,,, ta xây dựng các CSDL điều kiện với các tiền tố tương ứng. Cách khai phá mẫu dãy thường xuyên với mỗi tiền tố tương ứng cũng thực hiện tương tự như bước A, và thực hiện khai phá theo phương pháp đệ quy.

Bước 4: Kết quả là các mẫu dãy thường xuyên trong CSDL dãy S Các mẫu dãy thường xuyên được khai phá lần lượt trong quá trình đệ quy

đối với từng tiền tố.

Bảng 1.10. Kết quả mẫu dãy thường xuyên theo thuật toán PrefixSpan

CSDL điều kiện Mẫu dãy thường xuyên Tiền tố (Prefix) theo tiền tố

<(a)> <(abc)(ac)(d)(cf)> <(a)>

<(~d)(c)(bc)(ae)> <(a) (a)>

<(~b)(df)(c)(b)>

<(~f)(c)(b)(c)> <(a)(b)>, <(a)(bc)>, <(a)(b)(a)>, <(a)(b)(c)>, <(a)(bc)(a)>

<(ab>,<(ab)(c)>, <(ab)(d)>, <(ab)(f)>, <(ab)(d)(c)>

<(a)(c)>, <(a)(c)(a)>,

26

CSDL điều kiện Mẫu dãy thường xuyên Tiền tố (Prefix) theo tiền tố

<(a)(c)(b)>, <(a)(c)(c)>

<(a)(d)>, <(a)(d)(c)>

<(a)(f)>

<(b)> <(~c)(ac)(d)(cf)> <(b)>

<(~c)(ae)> <(b)(a)>

<((df)(c)(b)> <(b)(c)>

<(c)> <(bc)>, <(bc)(a)>

<(b)(d)>, <(b)(d)(c)>

<(b)(f)>

<(c)> <(ac)(d)(cf)> <(c)>

<(bc)(ae)> <(c)(a)>

<(b)> <(c)(b)>

<(b)(c)> <(c)(c)>

<(d)> <(cf)> <(d)>

<(c)(bc)(ae)> <(d)(b)>, <(d)(c)>

<(~f)(c)(b)> <(d)(c)(b)>

<(e)> <(~f)(ab)(df)(c)(b)> <(e)>

<(af)(c)(b)(c)>

<(e)(a)>, <(e)(a)(b)>, <(e)(a)(c)>,

<(e)(a)(c)(b)>

<(e)(b)>, <(e)(b)(c)>

<(e)(c)>, <(e)(c)(b)>

<(e)(f)>, <(e)(f)(b)>,

<(e)(f)(c)>,

<(e)(f)(c)(b)>

27

CSDL điều kiện Mẫu dãy thường xuyên Tiền tố (Prefix) theo tiền tố

<(f)> <(ab)(df)(c)(b)> <(f)>

<(c)(b)(c)> <(f)(b)>, <(f)(b)(c)>

<(f)(c)>, <(f)(c)(b)>

Nhận xét thuật toán PrefĩxSpan: Thuật toán PrefixSpan [9]: Giải thuật dựa trên phương pháp phát triển mẫu dãy, phát triển những mẫu dãy dài từ những mẫu dãy có độ dài ngắn hơn đã có, đồng thời kết hợp với phương pháp chia nhỏ không gian tìm kiếm theo tiền tố.

Thuật toán phát triển mẫu dãy không cần phát sinh thêm ứng viên giống như giải thuật AprioriAll [6]. Mặt khác thực hiện phép chiếu CSDL theo tiền tố nên không gian tìm kiếm giảm đáng kể. Nhờ vậy tiết kiệm bộ nhớ và việc thực hiện đếm độ hỗ trợ được nhanh hơn.

28

CHƯƠNG 2. TOP-K MẪU DÃY THƯỜNG XUYÊN TRỌNG SỐ VỚI KHOẢNG CÁCH THỜI GIAN

2.1. GIỚI THIỆU

Mục tiêu của khai phá mẫu thường xuyên [6, 7, 8] là tìm ra các mẫu dãy xuất hiện nhiều lần trong 1 CSDL dãy. Tuy nhiên, các mẫu dãy thường xuyên không thể hiện được mức độ quan trọng của từng mục dữ liệu. Do đó, bài toán khai phá mẫu dãy thường xuyên có trọng số ra đời để giải quyết vấn đề về mức độ quan trọng của các mục. Một số thuật toán có thể kể tới là [19, 23, 24, 25, 17, 26, 27]. Trong các thuật toán này, không chỉ tần xuất mà mức độ quan trọng của các mục trong mẫu dãy cũng được tính tới.

Để thể hiện mức độ quan trọng của các mục, mỗi mục được gán 1 giá trị thực dương (thường là trong khoảng 0-1). Tập các giá trị này được lưu vào 1 bảng gọi là bảng trọng số. Do trong các mẫu dãy có trọng số, độ hỗ trợ không còn tính phản đơn điệu nên trong các thuật toán khai phá mẫu dãy với trọng số, để duy trì tính phản đơn điệu, giá trị support*maxW được sử dụng làm cận trên của các mẫu dãy có trọng số.

Một vấn đề khác của các mẫu dãy thường xuyên là không chứa thông tin về thời gian của các giao dịch. Tuy nhiên, dữ liệu trong thực tế thường có loại thông tin này. Ví dụ: dữ liệu mua sắm có thời gian của các giao dịch mua hàng, dữ liệu duyệt web lưu thời gian của các lần truy cập…

Khai phá mẫu dãy thường xuyên sử dụng một ngưỡng tối thiểu để tìm ra các mẫu dãy có giá trị. Ngưỡng này được đặt bởi người sử dụng như một giá trị đầu vào. Tuy nhiên, không dễ để chọn 1 ngưỡng phù hợp, nếu đặt ngưỡng quá cao sẽ tìm được ít mẫu dãy có giá trị, nếu đặt ngưỡng quá thấp sẽ dẫn tới quá nhiều mẫu dãy được tìm ra. Vì vậy, bài toán top-k ra đời để giải quyết vấn đề này. Trong bài toán top-k [28, 29, 30, 31, 32, 33], người sử dụng không cần phải đặt ngưỡng tối thiểu mà chỉ cần đưa vào giá trị k. Ngưỡng tối thiểu sẽ được tăng dần cho tới khi tìm ra được k mẫu dãy có giá trị nhất.

29

2.2. BÀI TOÁN KHAI PHÁ MẪU DÃY THƯỜNG XUYÊN CÓ TRỌNG SỐ

2.2.1. Các thuật ngữ mô tả bài toán khai phá mẫu dãy thường xuyên

với trọng số chuẩn hóa

Cho I = {i1, i2, …, in} là tập hợp các mục dữ liệu. Mỗi mục ij  I được

gán một trọng số wj, j = 1,.....,n.

Một dãy Sm là một danh sách được sắp xếp theo thứ tự của các mục dữ

liệu {s1, s2, …, sm} với sj  I là một tập mục được gọi là thành phần của dãy. Khi đó, S = {s1, s2, …, sm} và sj có dạng (i1i2… ik) và it là một mục dữ liệu. Một dãy S bị loại nếu chỉ có duy nhất một mục dữ liệu. Một mục dữ liệu chỉ xuất hiện 1 lần trong 1 thành phần của một dãy sj, nhưng có thể xuất hiện nhiều lần trong các thành phần của một dãy S.

Kích thước |S| của một dãy là số lượng của các thành phần trong dãy S. Độ dài l(S) của dãy là tổng số mục dữ liệu trong dãy S. Một cơ sở dữ liệu dãy S = {S1, S2, …, Sn} là một tập các bộ dữ liệu (sid,Sk) với sid là định danh của một dãy và Sk là một dãy dữ liệu.

Định nghĩa 5. Độ hỗ trợ của một dãy: Độ hỗ trợ của dãy Sa trong cơ sở

dữ liệu dãy S là số lượng các bản ghi trong S có chứa dãy Sa

Định nghĩa 6. Trọng số chuẩn hóa của dãy: Cho I = {i1, i2, …, in} là tập

hợp các mục dữ liệu. Mỗi mục ij  I được gán một trọng số wj, j = 1,.....,n.

Khi đó trọng số chuẩn hóa của một dãy  = được tính bằng

công thức

𝑁𝑊() = 1 𝑛 ∑ 𝑤𝑗 𝑖𝑗 ∈ 

Định nghĩa 7. Độ hỗ trợ với trọng số chuẩn hóa của dãy:

Ta gọi đại lượng NWsupport() của dãy  là độ hỗ trợ với trọng số chuẩn

hóa của dãy 

𝑁𝑊𝑠𝑢𝑝𝑝𝑜𝑟𝑡(𝛼) = 𝑁𝑊(𝛼) ∗ 𝑠𝑢𝑝𝑝𝑜𝑟𝑡(𝛼) = ( ) ∗ 𝑆𝐶(𝛼) 1 𝑛 ∑ 𝑤𝑗 𝑖𝑗 ∈𝛼

30

Định nghĩa 8. Mẫu dãy thường xuyên với trọng số chuẩn hóa: Cho một CSDL dãy S, một ngưỡng hỗ trợ tối thiểu wmin_sup. Một dãy α được gọi là mẫu dãy thường xuyên với trọng số chuẩn hóa nếu thỏa mãn tính chất.

NWSupport(α)  wmin_sup

Khi đó, bài toán khai phá mẫu dãy thường xuyên với trọng số chuẩn hóa

sử dụng CSDL điều kiện theo tiền tố được phát biểu như sau:

• Cho CSDL dãy S, mỗi mục ij ⊆ I được gán một trọng số wj , ngưỡng hỗ trợ tối thiểu wmin_sup. Tìm tất cả các mẫu dãy thường xuyên với trọng số chuẩn hóa trong S, tức là tìm tập L :

L = {Sa ⊆ S | NWsupport(Sa )  wmin_sup} • Mẫu dãy thường xuyên với trọng số chuẩn hóa không thỏa mãn tính chất phản đơn điệu, nghĩa là tập con của một mẫu dãy thường xuyên với trọng số chuẩn hóa không nhất thiết phải là mẫu dãy thường xuyên với trọng số chuẩn hóa.

2.2.2. CSDL điều kiện trong khai phá mẫu dãy thường xuyên với

trọng số chuẩn hóa

Thuật toán khai phá mẫu dãy thường xuyên với trọng số chuẩn hóa WPrefixSpan [34] trong đó cách tiếp cận chính là đẩy các ràng buộc trọng số và độ hỗ trợ trong thuật toán khai phá mẫu dãy và đảm bảo tính chất phản đơn điệu.

Để tránh phải thực hiện kiểm tra tất cả khả năng kết hợp của một dãy các ứng viên tiềm năng, ta có thể thay thế các thứ tự của các mục dữ liệu trong từng thành phần trong dãy. Khi đó, các mục trong một thành phần của một dãy có thể được liệt kê theo 1 trật tự mà không mất tính tổng quát, ta có thể giả định rằng thứ tự này luôn luôn được liệt kê theo thứ tự bảng chữ cái.

Ví dụ như dãy thay vì . Với quy

ước như vậy, sự biểu hiện của một dãy là duy nhất.

Nếu ta theo thứ tự của các tiền tố của một dãy và CSDL điều kiện của tiền tố đó chỉ có các hậu tố của một dãy, thì ta có thể kiểm tra các dãy con theo thứ

31

tự sắp xếp trên và CSDL điều kiện theo tiền tố đó.

Định nghĩa 9. Mẫu dãy ứng viên: Cho một ngưỡng hỗ trợ tối thiểu wmin_sup. Một dãy α được gọi là dãy ứng viên mẫu dãy thường xuyên với trọng số chuẩn hóa nếu thỏa mãn tính chất

Support(α) * MaxW  wmin_sup

Với MaxW là giá trị lớn nhất của trọng số trong các mục trong S. Mẫu dãy ứng viên được xây dựng nhằm mục đích tỉa bớt không gian tìm kiếm mà vẫn đảm bảo tính phản đơn điệu trong khai phá mẫu dãy thường xuyên với trọng số chuẩn hóa.

2.2.3. Ví dụ khai phá mẫu dãy thường xuyên với trọng số chuẩn hóa

sử dụng CSDL điều kiện theo tiền tố

Cho một CSDL dãy S như Bảng 2.1, giá trị các trọng số của các mục dữ liệu như Bảng 2.2, giá trị wmin_sup = 2. Khi đó việc khai phá các mẫu dãy thường xuyên với trọng số chuẩn hóa trong CSDL dãy S theo phương pháp WPrefixSpan [34] được thực hiện theo các bước như sau:

Bảng 2.1. Cơ sở dữ liệu dãy S

Bảng 2.2. Giá trị trọng số của các mục dữ liệu

Dãy dữ liệu Tên mục Trọng số

a 0.9

<(ad) c (bc) (ae) b c> b 0.75

<(ef) (ab) (df) c b> c 0.8

d 0.85

e 0.75

f 0.7

g 0.85

h 0.8

32

Bước 1: Tìm các ứng viên của mẫu dãy thường xuyên với trọng số

chuẩn hóa có độ dài 1

Duyệt CSDL dãy S lần đầu tiên để tìm tất cả các ứng viên của mẫu dãy thường xuyên có trọng số chuẩn hóa có độ dài 1, đếm độ hỗ trợ của mỗi mục.

Một mục có độ dài 1 có thể không phải là một mẫu dãy thường xuyên có trọng số chuẩn hóa nhưng có thể kết hợp với các mục khác có độ hỗ trợ lớn hơn hoặc trọng số lớn hơn để trở thành mẫu dãy thường xuyên có trọng số trong các mẫu có độ dài lớn hơn.

Khi đó ta có các giá trị độ hỗ trợ của mỗi mục như sau:

: 6, : 6, : 6, : 5, : 4, : 3, : 2, : 1

Giá trị trọng số là

(a: 0,9 ; b: 0,75 ; c: 0,8 ; d: 0,85 ; e: 0,75 ; f: 0,7 ; g: 0,85 ; h: 0,8)

Giá trị MaxW = 0.9

Kiểm tra theo Định nghĩa 9, loại mục g và h do giá trị: support(g)*MaxW

= 2*0.9=1.8 < wmin_sup và support(h)*MaxW = 1*0.9=0.9 < wmin_sup

Khi đó, ta có các ứng viên mẫu dãy thường xuyên với trọng số chuẩn hóa

có độ dài 1 là

C1 = , , , , ,

Kiểm tra theo Định nghĩa 8 với các ứng viên, Khi đó, ta có các mẫu dãy

thường xuyên với trọng số chuẩn hóa có độ dài 1 là:

NWsupport(a) = 6*0,9 = 5,4 NWsupport(b) = 6*0,75 = 4,5

NWsupport(c) = 6*0,8 = 4,8 NWsupport(d) = 5*0,85 = 4,25

NWsupport(e) = 4*0,75 = 3 NWsupport(f) = 3*0,7 = 2,1

Ta có: L = , , , , ,

Bước 2: Chia không gian tìm kiếm

Toàn bộ các ứng viên và mẫu dãy thường xuyên với trọng số chuẩn hóa được khai phá trong các phân vùng gồm 6 vùng tương ứng với 6 tiền tố gồm:

33

(1) Mẫu dãy với tiền tố (2) Mẫu dãy với tiền tố (3) Mẫu dãy với tiền tố (4) Mẫu dãy với tiền tố (5) Mẫu dãy với tiền tố (6) Mẫu dãy với tiền tố

Bước 3: Khai phá các tập con ứng viên và mẫu dãy thường xuyên với

trọng số chuẩn hóa

Các tập con ứng viên và mẫu dãy thường xuyên với trọng số chuẩn hóa được khai phá bằng cách xây dựng các CSDL điều kiện tương ứng với các tiền tố, và khai phá chúng bằng phương pháp đệ quy. Các bước thực hiện như sau: A. Tìm các ứng viên và các mẫu dãy thường xuyên với trọng số chuẩn hóa

với tiền tố

Trong một dãy có chứa , chỉ có các dãy bắt đầu bằng sự xuất hiện đầu tiên của nên được lựa chọn. Ví dụ, trong chuỗi , chỉ có dãy <(abc) (ac) d (cf)> được lựa chọn, tương tự với dãy <(ad) c (bc) (ae) bc>, chỉ có dãy (~ d) c (bc) (ae) bc> được lựa chọn.

Khi đó, CSDL điều kiện với tiền tố bao gồm 6 dãy sau:

Bảng 2.3. Cơ sở dữ liệu điều kiện với tiền tố

SID Dãy dữ liệu

1 <(abc) (ac) d (cf)>

2 <(~d) c (bc) (ae) b c>

3 < (~b) (df) c b>

4 <(~f) c b c>

5 <(ab) (cd) e>

6 <(abd) b c >

Bằng cách quét CSDL điều kiện với tiền tố , độ hỗ trợ của các mục dữ liệu của nó là a: 4, b: 6, c: 6, d: 4, e: 2, f: 2, (~b): 4, (~d): 1 , (~ e): 1 và (~ f): 1.

Kiểm tra theo Định nghĩa 9, tìm các mẫu ứng viên có độ dài 2 với tiền tố

34

support(a)*MaxW = 4*0.9 = 3.6 support(b)*MaxW = 6*0.9 = 5.4

support(c)*MaxW = 6*0.9 = 5.4 support(d)*MaxW = 4*0.9 = 3.6

support(e)*MaxW = 2*0.9 = 1.8 support(f)*MaxW = 2*0.9 = 1.8

support((~b))*MaxW = 4*0.9 = 3.6 support((~d))*MaxW =1*0.9= 0.9

support((~e))*MaxW = 1*0.9 = 0.9 support((~f))*MaxW =1*0.9= 0.9

Khi đó, ta có các mục dữ liệu bị tỉa là , , <(~d)>, <(~e)>, <(~f)>.

Các ứng viên mẫu dãy thường xuyên với trọng số chuẩn hóa có độ dài 2

với tiền tố

C2 = , , , , <(ab)>

Kiểm tra theo Định nghĩa 8 với các ứng viên trong C2 , Khi đó, ta có các mẫu dãy thường xuyên với trọng số chuẩn hóa có độ dài 2 với tiền tố là:

NWsupport(aa) = 4*(0,9+0,9)/2 = 5,4

NWsupport(ab) = 6*(0,9+0,75)/2 = 4,95

NWsupport(ac) = 6*(0,9+0,8)/2 = 5,1

NWsupport(ad) = 4*(0,9+0,85)/2 = 3,5

NWsupport((ab)) = 4*(0,9+0,9+0,75)/3 = 3,4

L = L  {, , , , <(ab)>}

Theo tính chất đệ quy, các ứng viên và mẫu dãy thường xuyên với trọng số chuẩn hóa với tiền tố sẽ tiếp tục được chia thành 5 vùng tương ứng với 5 tiền tố gồm:

(1) Mẫu dãy với tiền tố (2) Mẫu dãy với tiền tố (3) Mẫu dãy với tiền tố (4) Mẫu dãy với tiền tố (5) Mẫu dãy với tiền tố <(ab)>

A.1. Đối với mẫu dãy với tiền tố , ta xây dựng CSDL điều kiện với

35

tiền tố với các mục dữ liệu trong tập ứng viên trong C2 . Khi đó

Bảng 2.4. Cơ sở dữ liệu điều kiện với tiền tố

SID Dãy dữ liệu

1 <(~bc) (ac) d c>

2 < b c>

3 <(~b) (cd) >

4 <(~bd) b c >

Bằng cách quét CSDL điều kiện với tiền tố , độ hỗ trợ của các mục

dữ liệu của nó là a: 1, b: 2, c: 4, d: 2, (~b): 3, (~c): 1.

Kiểm tra theo Định nghĩa 9, tìm các mẫu ứng viên có độ dài 3 với tiền tố

support(a)*MaxW = 1*0.9=0.9 support(b)*MaxW = 2*0.9=1.8

support(c)*MaxW = 4*0.9 = 3.6 support(d)*MaxW = 2*0.9 = 1.8

support((~b))*MaxW = 3*0.9 = 2.7 support((~c))*MaxW = 1*0.9 = 0.9

Khi đó, ta có các mục dữ liệu bị tỉa là , , <(d)>, <(~c)>

Các ứng viên mẫu dãy thường xuyên với trọng số chuẩn hóa có độ dài 3

với tiền tố

C3 = ,

Kiểm tra theo Định nghĩa 8 với các ứng viên trong C3 , Khi đó, ta có các mẫu dãy thường xuyên với trọng số chuẩn hóa có độ dài 3 với tiền tố là:

NWsupport(aac) = 4*(0,9+0,9+0,8)/3 = 3,46

NWsupport(a(ab)) = 3*(0,9+0,9+0,75)/3 = 2,55

L = L  {, }

Theo tính chất đệ quy, các ứng viên và mẫu dãy thường xuyên với trọng số chuẩn hóa với tiền tố sẽ tiếp tục được chia thành 2 vùng tương ứng với 2 tiền tố gồm:

36

(1) Mẫu dãy với tiền tố (2) Mẫu dãy với tiền tố

A.1.1. Đối với mẫu dãy với tiền tố , ta xây dựng CSDL điều kiện

với tiền tố với các mục dữ liệu trong tập ứng viên trong C3 .

Khi đó CSDL điều kiện với tiền tố chỉ có 1 dãy là c.

A.1.2. Đối với mẫu dãy với tiền tố , ta xây dựng CSDL điều kiện

với tiền tố với các mục dữ liệu trong tập ứng viên trong C3 .

Khi đó CSDL điều kiện với tiền tố có các dãy là

Bảng 2.5. Cơ sở dữ liệu điều kiện với tiền tố

SID Dãy dữ liệu

1 <(~c) (ac) c>

2

3 <(~d) b c >

Bằng cách quét CSDL điều kiện với tiền tố , độ hỗ trợ của các mục

dữ liệu của nó là a: 1, b: 1, c: 3, (~d): 1, (~c): 1.

Kiểm tra theo Định nghĩa 9, tìm các mẫu ứng viên có độ dài 4 với tiền tố

support(a)*MaxW = 1*0.9 = 0.9 support(b)*MaxW = 1*0.9 = 0.9

support(c)*MaxW = 3*0.9 = 2.7 support((~d))*MaxW = 1*0.9 = 0.9

support((~c))*MaxW = 1*0.9 = 0.9

Khi đó, ta có các mục dữ liệu bị tỉa là , , <(~d)>, <(~c)>

Các ứng viên mẫu dãy thường xuyên với trọng số chuẩn hóa có độ dài 4

với tiền tố

C4 =

Kiểm tra theo Định nghĩa 8 với các ứng viên trong C4 , Khi đó, ta có các mẫu dãy thường xuyên với trọng số chuẩn hóa có độ dài 4 với tiền tố là:

37

NWsupport(a(ab)c) = 3*(0,9+0,9+0,75+0,8)/4 = 2,51

L = L  {}

Theo tính chất đệ quy, các ứng viên và mẫu dãy thường xuyên với trọng số chuẩn hóa với tiền tố sẽ tiếp tục được chia thành 1 vùng tương ứng với 1 tiền tố gồm:

(1) Mẫu dãy với tiền tố

A.1.2.1. Đối với mẫu dãy với tiền tố , ta xây dựng CSDL điều kiện

với tiền tố với các mục dữ liệu trong tập ứng viên trong C4 .

Khi đó CSDL điều kiện với tiền tố chỉ có 1 dãy là <(ac)c>.

A.2. Đối với mẫu dãy với tiền tố , tiền tố , tiền tố , tiền tố <(ab)>, ta xây dựng CSDL điều kiện với các tiền tố tương ứng với các mục dữ liệu trong tập ứng viên trong C2 . Cách khai phá mẫu dãy thường xuyên có trọng số chuẩn hóa với mỗi tiền tố tương ứng cũng thực hiện tương tự như bước A.1.

B. Tìm tương tự với các ứng viên và các mẫu dãy thường xuyên với trọng

số chuẩn hóa với tiền tố ,,,,

Đối với mẫu dãy với tiền tố ,,,,, ta xây dựng các CSDL điều kiện với các tiền tố tương ứng với các mục dữ liệu trong tập ứng viên trong C1. Cách khai phá mẫu dãy thường xuyên có trọng số chuẩn hóa với mỗi tiền tố tương ứng cũng thực hiện tương tự như bước A, và thực hiện đệ khai phá theo phương pháp đệ quy.

Bước 4: Kết quả là các mẫu dãy thường xuyên với trọng số chuẩn

hóa trong CSDL dãy S

Các mẫu dãy thường xuyên có trọng số chuẩn hóa được khai phá lần lượt trong quá trình đệ quy đối với từng tiền tố. Trong phương pháp khai phá mẫu dãy thường xuyên với trọng số chuẩn hóa này, kết quả sẽ ít hơn các mẫu dãy thường xuyên khi không gắn thêm yếu tố trọng số của các mục dữ liệu.

38

2.2.4. Thuật toán khai phá mẫu dãy thường xuyên với trọng số chuẩn

hóa sử dụng CSDL điều kiện theo tiền tố (WPrefixSpan)

- Đầu vào :

(1) CSDL dãy : S,

(2) Ngưỡng hỗ trợ : wmin_sup,

(3) Trọng số của các mục: wi,

- Đầu ra: Tập các mẫu dãy thường xuyên với trọng số chuẩn hóa L

Thuật toán WPrefixSpan

Bắt đầu

1. Duyệt CSDL S lần đầu, tính độ hỗ trợ và tìm các mục ứng viên có kích thước 1 thỏa mãn tính chất: Một tập mục P là tập mục ứng viên nếu thỏa mãn điều kiện 1.1, P sẽ được nạp vào Ck

Điều kiện 1.1: support (P)* MaxW  wmin_sup

2. Kiểm tra các tập mục ứng ứng viên trong Ck để tìm mẫu dãy thường xuyên có trọng số chuẩn hóa thỏa mãn tính chất support(P)*NW(P)  wmin_sup, nạp vào L

3. Lặp với mỗi mục trọng số chuẩn hóa P, trong CSDL dãy

S

Thực hiện hàm đệ quy WPrefixSpan(

,l,S|P)

Kết thúc lặp

Kết thúc

39

Thủ tục WPrefixSpan (α,l,S|α )

Tham số:

(1) α là một dãy ứng viên với trọng số chuẩn hóa thỏa điều kiện 1.1

(2) l là độ dài của α

(3) S|α là CSDL điều kiện với tiền tố α. S là trường hợp α = 

Bắt đầu:

1. Duyệt S|α, đếm độ hỗ trợ của mỗi mục và tìm các mục ứng viên trọng số chuẩn hóa  trong các dãy. Một mục ứng viên trọng số chuẩn hóa  thỏa mãn tính chất 1.1, nạp vào Ck

Điều kiện 1.1: support ()* MaxW  wmin_sup

- Với mỗi  trong Ck :

(a)  có thể được ghép làm thành phần cuối cùng của α để tạo thành ứng viên cho một mẫu dãy thường xuyên với trọng số chuẩn hóa hoặc

(b) <> có thể được nối vào với α để tạo thành ứng viên cho một mẫu dãy thường xuyên với trọng số chuẩn hóa

- Kiểm tra các tập mục ứng viên  trong Ck để tìm mẫu dãy thường xuyên có trọng số chuẩn hóa thỏa mãn tính chất support()*NW()  wmin_sup, nạp vào L

2. Lặp với mỗi ứng viên mẫu dãy thường xuyên với trọng số chuẩn

hóa 

- Ghép  với α để tạo thành ứng viên một mẫu dãy thường

xuyên α’ và đầu ra là α’

3. Lặp với mỗi α’

- Xây dựng CSDL điều kiện với tiền tố α’ là S|α’ .

- Thực hiện đệ quy thủ tục WPrefixSpan(α’,l+1,S|α’)

Kết thúc.

40

2.3. BÀI TOÁN MẪU DÃY THƯỜNG XUYÊN TRỌNG SỐ VỚI KHOẢNG CÁCH THỜI GIAN

Phần này trình bày thuật toán WIPrefixSpan [35] khai phá mẫu dãy thường xuyên trọng số với khoảng cách thời gian. Thuật toán WIPrefixSpan [35] không chỉ quan tâm tới trọng số của các mục trong CSDL mà còn cả khoảng cách thời gian giữa các tập mục.

2.3.1. Mô tả bài toán

Cho I = {i1, i2, …, in} là tập hợp các mục dữ liệu. Mỗi mục ij  I được

gán một trọng số wj, j = 1,.....,n.

Một dãy Sm là một danh sách được sắp xếp theo thứ tự của các mục dữ

liệu dạng { (t1,1,s1), (t1,2,s2), (t1,3,s3),..., (t1,m,sm)} với sj  I trong đó (1 ≤ j ≤ m) là một tập mục được gọi là thành phần của dãy và sj có dạng (i1i2… ik) và it là

một mục dữ liệu thuộc I , và t, là khoảng cách thời gian giữa dãy s và s. Một

dãy Sm bị loại nếu chỉ có duy nhất một mục dữ liệu it  I . Một mục dữ liệu chỉ xuất hiện 1 lần trong thành phần của một dãy sj, nhưng có thể xuất hiện nhiều lần trong các thành phần của một dãy Sm.

Kích thước |Sm| của một dãy là số lượng của các thành phần trong dãy Sm. Độ dài l(Sm) của dãy là tổng số mục dữ liệu trong dãy Sm. Một cơ sở dữ liệu dãy S = {S1, S2, …, Sn} là một tập các bộ dữ liệu (sid,Sk) với sid là định danh của một dãy và Sk là một dãy dữ liệu có dạng {(t1,1,s1), (t1,2,s2), (t1,3,s3),..., (t1,m,sm)}.

Định nghĩa 1. (Dãy dữ liệu có khoảng cách thời gian) : Một dãy dữ liệu có khoảng cách thời gian có dạng:

Sm = <(t1,1,s1), (t1,2,s2), (t1,3,s3),..., (t1,m,sm)>

Với t,, là khoảng cách thời gian giữa dãy s và s có dạng:

t, = s.time - s.time

Định nghĩa 2. (Độ hỗ trợ của một dãy) : Độ hỗ trợ của một dãy Sa trong một cơ sở dữ liệu dãy S là số lượng xuất hiện các bản ghi trong S có chứa dãy Sa .

41

Định nghĩa 3. (Trọng số chuẩn hóa của dãy): Cho I = {i1, i2, …, in} là tập

hợp các mục dữ liệu. Mỗi mục ij  I được gán một trọng số wj, j = 1,.....,n.

Khi đó trọng số chuẩn hóa của một dãy  = <(t1,1,s1), (t1,2,s2), (t1,3,s3),...,

(t1,m,sm)> có độ dài k và sj có dạng (i1i2… ik) được tính bằng công thức

𝑁𝑊() = 1 𝑘 ∑ 𝑤𝑗 𝑖𝑗 ∈ 

Định nghĩa 4. (Độ hỗ trợ với trọng số chuẩn hóa của dãy):

Ta gọi đại lượng NWsupport() của dãy  là độ hỗ trợ với trọng số chuẩn

hóa của dãy 

𝑁𝑊𝑠𝑢𝑝𝑝𝑜𝑟𝑡(𝛼) = 𝑁𝑊(𝛼) ∗ 𝑠𝑢𝑝𝑝𝑜𝑟𝑡(𝛼) = ( ) ∗ 𝑆𝐶(𝛼) 1 𝑘 ∑ 𝑤𝑗 𝑖𝑗 ∈𝛼

Định nghĩa 5. (Ràng buộc khoảng cách thời gian): Cho một dãy <(t1,1,s1), (t1,2,s2), (t1,3,s3),..., (t1,m,sm)>, các ràng buộc khoảng cách thời gian giữa các dãy được định nghĩa:

• C1 = min_time_interval là giá trị nhỏ nhất giữa hai dãy liền kề, tức là

ti,i+1  min_time_interval

• C2 = max_time_interval là giá trị lớn nhất giữa hai dãy liền kề, tức là

ti,i+1 ≤ min_time_interval

• C3 = min_whole_interval là giá trị nhỏ nhất giữa dãy đầu và dãy cuối,

tức là ti,m  min_whole_interval

• C4 = max_whole_interval là giá trị lớn nhất giữa dãy đầu và dãy cuối,

tức là ti,m ≤ max_whole_interval

Định nghĩa 6. (Mẫu dãy thường xuyên trọng số chuẩn hóa với khoảng cách thời gian): Cho một CSDL dãy S có khoảng cách thời gian giữa các dãy, mỗi mục ij ⊆ I được gán một trọng số wj, một ngưỡng hỗ trợ tối thiểu wmin_sup, các ràng buộc khoảng cách thời gian C1, C2, C3, C4. Một dãy α được gọi là mẫu dãy thường xuyên trọng số chuẩn hóa với khoảng cách thời gian nếu thỏa mãn tính chất:

42

NWSupport(α)  wmin_sup && t, thỏa mãn tính chất các ràng buộc

C1, C2, C3, C4

Khi đó bài toán khai phá mẫu dãy thường xuyên trọng số chuẩn hóa với

khoảng cách thời gian được phát biểu như sau:

• Cho một CSDL dãy S có khoảng cách thời gian giữa các dãy, mỗi mục ij ⊆ I được gán một trọng số wj, một ngưỡng hỗ trợ tối thiểu wmin_sup, các ràng buộc khoảng cách thời gian C1, C2, C3, C4. Tìm tất cả các mẫu dãy thường xuyên trọng số chuẩn hóa với khoảng cách thời gian trong S, tức là tìm tập L:

L = {Sa ⊆ S | NWsupport(Sa )  wmin_sup&& t, thỏa mãn tính chất

các ràng buộc C1, C2, C3, C4}

• Mẫu dãy thường xuyên trọng số chuẩn hóa với khoảng cách thời gian không thỏa mãn tính chất phản đơn điệu, nghĩa là tập con của một mẫu dãy thường xuyên trọng số chuẩn hóa với khoảng cách thời gian không nhất thiết phải là mẫu dãy thường xuyên trọng số chuẩn hóa với khoảng cách thời gian.

2.3.2. CSDL điều kiện trong khai phá mẫu dãy thường xuyên trọng

số chuẩn hóa với khoảng cách thời gian

Thuật toán khai phá mẫu dãy thường xuyên trọng số chuẩn hóa với khoảng cách thời gian (WIPrefixSpan [35]), trong đó các định nghĩa 7, 8, 9 dựa trên giải thuật khai phá mẫu dãy thường xuyên PrefixSpan [9] và Hirate and Yamana [21] với cách tiếp cận chính là đẩy các ràng buộc trọng số, ràng buộc khoảng cách thời gian và độ hỗ trợ trong thuật toán khai phá mẫu dãy và đảm bảo tính chất phản đơn điệu.

Để tránh phải thực hiện kiểm tra tất cả khả năng kết hợp của một dãy các ứng cử viên tiềm năng, ta có thể thay thế các thứ tự của các mục dữ liệu trong từng thành phần trong dãy. Khi đó các mục trong một thành phần của một dãy có thể được liệt kê theo 1 trật tự mà không mất tính tổng quát và có thể giả định rằng thứ tự này luôn luôn được liệt kê theo thứ tự bảng chữ cái.

43

Ví dụ như dãy <(0,a) (1,abc) (2,ac) (3,d) (4,cf)> thay vì <(0,a) (1,acb) (2,ac) (3,d) (4,fc)>. Với quy ước như vậy thì sự biểu hiện của một dãy là duy nhất.

Nếu ta theo thứ tự của các tiền tố của một dãy và CSDL điều kiện của tiền tố đó chỉ có các hậu tố của một dãy thì ta có thể kiểm tra các dãy con theo thứ tự sắp xếp trên và CSDL điều kiện theo tiền tố đó.

Định nghĩa 7. (Tiền tố và Hậu tố trong dãy có khoảng cách thời gian): Các mục dữ liệu trong một thành phần của dãy đã sắp xếp theo thứ tự chữ cái. Cho

một dãy  = <(t1,1,s1), (t1,2,s2), (t1,3,s3),..., (t1,m,sm)>, một dãy s là một tập các

mục ij ⊆ I. Khi đó tồn tại một giá trị j (1 ≤ j ≤ m) sao cho s ⊆ sj và t1,  = t1, j .

Ta định nghĩa tiền tố trong dãy có khoảng cách thời gian của  với các giá

trị s , t1,  như sau:

Prefix (,s, t1, ) = <(t1,1,s1), (t1,2,s2), (t1,3,s3),..., (t1,j,s)>

Khi đó hậu tố trong dãy có khoảng cách thời gian của  với các giá trị s

, t1,  được định nghĩa như sau:

Postfix (,s, t1, ) = <(tj,j,s’j), (tj,j+1,sj+1), ..., (tj,m,sm)>

Với s’j là một tập con của sj sau khi đã trừ đi tập s . Khi s’j = , thì hậu tố

của  với các giá trị s , t1,  là:

Postfix (,s, t1, ) = <(tj,j+1,sj+1), (tj,j+2,sj+2), ..., (tj,m,sm)>

Mặt khác, khi không tồn tại một giá trị j thì hậu tố của  với các giá trị s

, t1,  trở thành:

Prefix (,s, t1, ) = 

Postfix (,s, t1, ) = 

Định nghĩa 8. (CSDL điều kiện trong dãy có khoảng cách thời gian): Cho

một dãy  = <(t1,1,s1), (t1,2,s2), (t1,3,s3),..., (t1,m,sm)> của một CSDL dãy S có

khoảng cách thời gian. Một CSDL điều kiện theo  được định nghĩa là S|, là

các hậu tố của các dãy trong S với tiền tố .

44

Định nghĩa 9. (Mẫu dãy ứng viên): Cho một ngưỡng hỗ trợ tối thiểu wmin_sup. Một dãy α được gọi là dãy ứng viên mẫu dãy thường xuyên trọng số chuẩn hóa với khoảng cách thời gian nếu thỏa mãn tính chất:

Support(α) * MaxW  wmin_sup và thỏa mãn các tính chất C1, C2, C3, C4

Với MaxW là giá trị lớn nhất của trọng số trong các mục trong S. Mẫu dãy ứng viên được xây dựng nhằm mục đích tỉa bớt không gian tìm kiếm mà vẫn đảm bảo tính phản đơn điệu trong khai phá mẫu dãy thường xuyên trọng số chuẩn hóa với khoảng cách thời gian.

Khi đó, bài toán khai phá mẫu dãy thường xuyên trọng số chuẩn hóa với khoảng cách thời gian sử dụng CSDL điều kiện theo tiền tố được phát biểu như sau:

• Cho một CSDL dãy S có khoảng cách thời gian giữa các dãy, mỗi mục ij ⊆ I được gán một trọng số wj, một ngưỡng hỗ trợ tối thiểu wmin_sup, các ràng buộc khoảng cách thời gian C1, C2, C3, C4. Tìm tất cả các mẫu dãy thường xuyên trọng số chuẩn hóa với khoảng cách thời gian trong S, tức là tìm tập L:

L = {Sa ⊆ S | NWsupport(Sa )  wmin_sup&& t, thỏa mãn tính chất

các ràng buộc C1, C2, C3, C4}

• Mẫu dãy thường xuyên trọng số chuẩn hóa với khoảng cách thời gian không thỏa mãn tính chất phản đơn điệu, nghĩa là tập con của một mẫu dãy thường xuyên trọng số chuẩn hóa với khoảng cách thời gian không nhất thiết phải là mẫu dãy thường xuyên trọng số chuẩn hóa với khoảng cách thời gian.

2.3.3. Ví dụ khai phá mẫu dãy thường xuyên trọng số chuẩn hóa với

khoảng cách thời gian sử dụng CSDL điều kiện theo tiền tố

Cho một CSDL dãy S với khoảng cách thời gian như Bảng 2.6, giá trị các trọng số của các mục dữ liệu như Bảng 2.7, giá trị wmin_sup =1.5, các giá trị C1=1; C2=2; C3=2; C4=3. Khi đó việc khai phá các mẫu dãy thường xuyên trọng

45

số chuẩn hóa với khoảng cách thời gian trong CSDL dãy S theo phương pháp WIPrefixSpan được thực hiện theo các bước như sau:

iSID Dãy dữ liệu Tên mục Trọng số

10 <(0,a),(1,abc),(3,ac)>

a 0.9

20 <(0,ad),(3,c)>

b 0.75

30 <(0,aef),(2,ab)>

c 0.8

Bảng 2.7. Cơ sở dữ liệu dãy S

d 0.85

e 0.75

f 0.7

Bảng 2.6. Giá trị trọng số

của các mục dữ liệu

Bước 1: Tìm các ứng viên của mẫu dãy thường xuyên với trọng số chuẩn hóa có độ dài 1

Duyệt CSDL dãy S lần đầu tiên để tìm tất cả các ứng viên của mẫu dãy thường xuyên trọng số chuẩn hóa với khoảng cách thời gian có độ dài 1, thực hiện đếm độ hỗ trợ của mỗi mục.

Một mục có độ dài 1 có thể không phải là một mẫu dãy thường xuyên có trọng số chuẩn hóa nhưng có thể kết hợp với các mục khác có độ hỗ trợ lớn hơn hoặc trọng số lớn hơn để trở thành mẫu dãy thường xuyên có trọng số trong các mẫu có độ dài lớn hơn.

Khi đó ta có các giá trị độ hỗ trợ của mỗi mục như sau:

<0,a>: 3, <0,b>: 2, <0,c>: 2, <0,d>: 1, <0,e>: 1 , <0,f>: 1

46

Giá trị trọng số là (a: 0,9; b: 0,75; c: 0,8; d: 0,85; e: 0,75; f: 0,7)

Giá trị MaxW = 0.9

Kiểm tra theo Định nghĩa 9, loại mục <0,d>, <0,e> và <0,f> do giá trị support(<0,d)>*MaxW = 1*0,9=0,9 < wmin_sup; support(<0,e>)*MaxW = 1*0,9=0,9 < wmin_sup và support(<0,f>)*MaxW = 1*0,9=0,9 < wmin_sup

Khi đó ta có các ứng viên mẫu dãy thường xuyên trọng số chuẩn hóa với

khoảng cách thời gian có độ dài 1 là:

Q1 = <0,a>, <0,b>, <0,c>

Kiểm tra theo Định nghĩa 6 với các ứng viên trong Q1, khi đó ta có các mẫu dãy thường xuyên trọng số chuẩn hóa với khoảng cách thời gian có độ dài 1 được nạp vào L là:

NWsupport(<0,b>)= 2*0,75=1,5

NWsupport(<0,a>) = 3*0,9=2,7 NWsupport(<0,c>)= 2*0,8=1,6

L = <0,a>, <0,b>, <0,c>

Bước 2: Chia không gian tìm kiếm

Toàn bộ các ứng viên và mẫu dãy thường xuyên trọng số chuẩn hóa với khoảng cách thời gian được khai phá trong các phân vùng gồm 03 vùng tương ứng với 03 tiền tố gồm:

(1) Mẫu dãy với tiền tố <0,a> (2) Mẫu dãy với tiền tố <0,b> (3) Mẫu dãy với tiền tố <0,c>

Bước 3: Khai phá các tập con ứng viên và mẫu dãy thường xuyên trọng số chuẩn hóa với khoảng cách thời gian

Các tập con ứng viên và mẫu dãy thường xuyên trọng số chuẩn hóa với khoảng cách thời gian được khai phá bằng cách xây dựng các CSDL điều kiện tương ứng với các tiền tố và khai phá chúng bằng phương pháp đệ quy. Các bước thực hiện như sau:

47

A. Tìm các ứng viên và các mẫu dãy thường xuyên trọng số chuẩn hóa với khoảng cách thời gian với tiền tố <0,a> và các ràng buộc thời gian C1, C2, C3, C4

Khi đó CSDL điều kiện với tiền tố <0,a> sẽ bao gồm các hậu tố được xây

dựng theo định nghĩa 7:

iSID Dãy dữ liệu

10 <(1,abc),(3,ac)>

<(0,bc),(2,ac)>

< (0,c)>

<(0,d),(3,c)> 20

<(0,ef),(2,ab)> 30

<(0,b)>

Bảng 2.8. Cơ sở dữ liệu điều kiện với tiền tố <0,a>

Bằng cách quét CSDL điều kiện với tiền tố <0,a>, độ hỗ trợ của các mục

dữ liệu của nó là:

<1,a>: 1; <1,b>: 1; <1,c>: 1; <3,a>: 1; <3,c>: 2;

<0,b>: 2; <0,c>: 1; <2,a>: 2; <2,c>: 1; <0,d>: 1;

<0,e>: 1; <0,f>: 1; <2,b>: 1;

Kiểm tra theo Định nghĩa 9, tìm các mẫu ứng viên có độ dài 2 với tiền tố

<0,a>

support(<1,a>)*MaxW = 1*0,9=0,9 support(<1,b>)*MaxW = 1*0,9=0,9

support(<1,c>)*MaxW = 1*0,9=0,9 support(<3,a>)*MaxW = 1*0,9=0,9

support(<3,c>)*MaxW = 2*0,9=1,8 support(<0,b>)*MaxW = 2*0,9=1,8

support(<0,c>)*MaxW = 1*0,9=0,9 support(<2,a>)*MaxW = 2*0,9=1,8

support(<2,c>)*MaxW = 1*0,9=0,9 support(<0,d>)*MaxW = 1*0,9=0,9

48

support(<0,e>)*MaxW = 1*0,9=0,9 support(<0,f>)*MaxW = 1*0,9=0,9

support(<2,b>)*MaxW = 1*0,9=0,9

Các ứng viên có độ dài 2 với tiền tố <0,a> thỏa mãn độ hỗ trợ với trọng

số lớn nhất là:

<0,ab>, <(0,a),(2,a)>, <(0,a),(3,c)>

- Kiểm tra các ứng viên trên với tính chất ràng buộc thời gian C1=1;

C2=2; C3=2; C4=3

Khi đó, ứng viên <(0,a),(3,c)> bị loại do không thỏa mãn tính chất C2

= 2. Vì vậy:

Q2 <0,a> = <0,ab>, <(0,a),(2,a)>

Kiểm tra theo Định nghĩa 6 với các ứng viên trong Q2 <0,a>, khi đó ta có các mẫu dãy thường xuyên trọng số chuẩn hóa với khoảng cách thời gian có độ dài 2 với tiền tố <0,a> được nạp vào L là:

- Kiểm tra độ hỗ trợ với trọng số chuẩn hóa của các ứng viên <0,ab>,

<(0,a),(2,a)>

NWsupport(<0,ab>) = 2*(0,9+0,75)/2=1,65

NWsupport(<(0,a),(2,a)) = 2*(0,9+0,9)/2=1,8

L = L  {<0,ab>, <(0,a),(2,a)>}

Theo tính chất đệ quy, các ứng viên và mẫu dãy thường xuyên trọng số chuẩn hóa với khoảng cách thời gian với tiền tố <0,a> sẽ tiếp tục được chia thành 2 vùng tương ứng với 2 tiền tố gồm:

(1) Mẫu dãy với tiền tố <0,ab > (2) Mẫu dãy với tiền tố <(0,a),(2,a)>

A.1. Đối với mẫu dãy với tiền tố <0,ab>, ta xây dựng CSDL điều kiện với tiền tố <0,ab> với các mục dữ liệu trong tập ứng viên trong Q2 <0,a>.

Khi đó CSDL điều kiện với tiền tố <0,ab> sẽ bao gồm các hậu tố được

xây dựng theo định nghĩa 7:

49

SID Dãy dữ liệu

1 <(0,c),(2,ac)>

Bảng 2.9. Cơ sở dữ liệu điều kiện với tiền tố <0,ab>

Bằng cách quét CSDL điều kiện với tiền tố <0,ab>, độ hỗ trợ của các mục

dữ liệu của nó là:

<0,c>: 1; <2,a>: 1; <2,c>: 1

Kiểm tra theo Định nghĩa 9, tìm các mẫu ứng viên có độ dài 3 với tiền tố

<0,ab>

support(<0,c>)*MaxW = 1*0,9=0,9

support(<2,a>)*MaxW= 1*0,9=0,9

support(<2,c>)*MaxW = 1*0,9=0,9

Các ứng viên mẫu dãy thường xuyên với trọng số chuẩn hóa có độ dài 3

với tiền tố <0,ab> là:

Q3 <0,ab> = 

A.2. Đối với mẫu dãy với tiền tố <0,a),(2,a)>, ta xây dựng CSDL điều kiện với các tiền tố tương ứng với các mục dữ liệu trong tập ứng viên trong Q2 <0,a>. Cách khai phá mẫu dãy thường xuyên trọng số chuẩn hóa với khoảng cách thời gian với mỗi tiền tố tương ứng cũng thực hiện tương tự như bước A.1.

B. Tìm các ứng viên và các mẫu dãy thường xuyên trọng số chuẩn hóa với

khoảng cách thời gian với các tiền tố <0,b>,<0,c>

Đối với mẫu dãy với tiền tố <0,b>,<0,c>, ta xây dựng các CSDL điều kiện với các tiền tố tương ứng với các mục dữ liệu trong tập ứng viên trong Q1. Cách khai phá mẫu dãy thường xuyên trọng số chuẩn hóa với khoảng cách thời gian với mỗi tiền tố tương ứng cũng thực hiện tương tự như bước A và thực hiện đệ khai phá theo phương pháp đệ quy.

50

Bước 4: Kết quả là các mẫu dãy thường xuyên trọng số chuẩn hóa với khoảng cách thời gian trong CSDL dãy S

Các mẫu dãy thường xuyên trọng số chuẩn hóa với khoảng cách thời gian được khai phá lần lượt trong quá trình đệ quy đối với từng tiền tố. Trong phương pháp khai phá mẫu dãy thường xuyên trọng số chuẩn hóa với khoảng cách thời gian này, kết quả sẽ ít hơn các mẫu dãy thường xuyên khi không gắn thêm yếu tố trọng số của các mục dữ liệu.

2.3.4. Thuật toán WIPrefixSpan

- Đầu vào :

(1) CSDL dãy có khoảng cách thời gian: ISDB,

(2) Ngưỡng hỗ trợ : wmin_sup,

(3) Trọng số của các mục: wi W,

(4) Ràng buộc khoảng cách thời gian C1, C2, C3, C4,

- Đầu ra: Các mẫu dãy thường xuyên trọng số chuẩn hóa với khoảng cách thời gian L

51

Thuật toán WIPrefixSpan

Bắt đầu

1) Đặt α = .

2) Đặt R = ; L = .

3) Duyệt lần đầu ISDB, tìm các mục ứng viên có độ dài =1 và thỏa

mãn điều kiện support * MaxW  wmin_sup

Lặp với mọi mục i

a) Đặt α =< (0, i) >,

- Nạp R = {R, α}.

- Kiểm tra điều kiện support(α)*NW(α) 

wmin_sup , nếu thỏa mãn L = {L, α}.

b) Thực hiện R = WIPrefixSpan(ISDB|α,R,W,wmin_sup,

C1, C2, C3, C4).

Kết thúc lặp

4) Kết quả tập L.

Kết thúc.

52

Thủ tục WIPrefixSpan (ISDB|α,R,W,wmin_sup, C1, C2, C3, C4)

Bắt đầu:

1) Duyệt ISDB|α để tìm tất cả các cặp dãy với α và giá trị khoảng cách thời gian giữa dãy đó với α trong cặp này, định nghĩa là (Δt,i) thỏa mãn điều

kiện support (i)* MaxW  wmin_sup, C1, và C2.

2) Đặt α =< α; (Δt; i)>.

3) Kiểm tra xem có thỏa mãn điều kiện C4

4) Chỉ khi thỏa mãn điều kiện C4

a) Thực hiện R = WIPrefixSpan (ISDB|α,R,W,wmin_sup, C1,

C2, C3, C4).

b) Khi α thỏa mãn điều kiện C3,

R = {R, α}.

c) Kiểm tra điều kiện support(α)*NW(α)  wmin_sup, nếu thỏa

mãn L = {L, α}.,

5) Kết quả tập L.

Kết thúc.

53

2.4. BÀI TOÁN TOP-K MẪU DÃY THƯỜNG XUYÊN TRỌNG SỐ VỚI KHOẢNG CÁCH THỜI GIAN

2.4.1. Phát biểu bài toán

Giả sử I = {i1, i2, …, in} là tập hợp các mục dữ liệu. Mỗi mục ij  I được gán một giá trị trọng số w(j) với j=1,...,n. Dãy dữ liệu với khoảng cách thời gian Si là một danh sách được sắp xếp theo thứ tự của các mục dữ liệu dạng

{(t1,1,Y1), (t1,2,Y2), (t1,3,Y3),..., (t1,m,Ym)} với Yj  I trong đó (1 ≤ j ≤ m). CSDL dãy với khoảng cách thời gian iSDB = {S1, S2, …, Sn} là một danh sách các cặp (iSID,Sk) với iSID là định danh của một dãy và Sk là một dãy dữ liệu với khoảng cách thời gian.

Bảng 2.10 là một ví dụ về cơ sở dữ liệu dãy với khoảng cách thời gian.

Bảng 2.11 là bảng trọng số của các mục trong CSDL iSDB.

Bảng 2.10. Cơ sở dữ liệu dãy

iSID Dãy dữ liệu

10 <(0, a),(1, abcdef)(2, aeg)>

20 <(0, ad), (1, abcdf), (2, bcef)>

30 <(0, a), (1, abcefh),(2, ad)>

40 <(0, a), (1, ac), (2, abd), (3, b), (4, c)>

Bảng 2.11. Trọng số của các mục

Tên mục Trọng số

a 0.5

b 0.6

c 0.8

54

d 0.5

e 0.7

f 0.8

g 0.9

h 0.8

Bài toán khai phá top-k mẫu dãy thường xuyên có trọng số với khoảng

cách thời gian được phát biểu như sau:

Cho trước một CSDL với khoảng cách thời gian iSDB và một số tự nhiên k, bài toán tìm tập các top-K mẫu dãy thường xuyên có trọng số với khoảng cách thời gian tức là tìm k mẫu dãy có NWSupport lớn nhất thỏa mãn các ràng buộc thời gian.

2.4.2. Mô tả thuật toán

Phần này trình bày một phương pháp giải quyết bài toán Top-K mẫu dãy dãy thường xuyên có trọng số với khoảng cách thời gian bằng cách áp dụng thuật toán AprioriAll.

Giải thuật như sau:

Đầu vào : - Cơ sở dữ liệu dãy với khoảng cách thời gian iSDB

- Các giá trị trọng số của các mục W(i)

- Các ràng buộc thời gian C1, C2, C3, C4

- Giá trị k

Đầu ra : Tập top-k mẫu dãy thường xuyên có trọng số với khoảng cách thời gian. [1] Start [2] minsup =0; [3] F1 = tập các ứng viên 1 phần tử;

55

[4] 𝐹 = ⋃ 𝐹𝑘𝑘 [5] L = tập các mẫu dãy sắp xếp theo thứ tự tăng dần của NWSupport;

[6] Quét iSDB lần đầu để tìm ra các mẫu dãy ứng viên 1 phần tử  đưa vào

//F là tập tất cả các ứng viên

[7] If support()*NW()  minsup then

[8] SAVE(,L,k,minsup);

[9] End if; [10] m=2; [11] while Fm-1 ≠ null [12] Sinh tập ứng viên Fm (tập ứng viên m phần tử) thỏa mãn các ràng

F1;

[13] Quét iSDB để tìm ra các ứng viên m phần tử a thỏa mãn

buộc thời gian C1, C2, C3, C4;

[14] Loại khỏi Fm các ứng viên không thỏa mãn Support(a)*maxW ≥

Support(a)*maxW ≥ minsup;

[15] If support(a)*NW(a) ≥ minsup then [16] SAVE(a,L,k,minsup);

minsup;

[17] End if; [18] m=m+1; [19] End while; [20] Output L; [21] End;

56

Thủ tục SAVE

[1] Start

[2] L= L {r};

[3] If |L| > k then

[4] If NWSupport(r) > wminsup then

[5] While |L| > k Loại bỏ các mẫu dãy trong L có NWSupport

Procedure SAVE (r,L,k,wminsup)

[6] End while;

[7] End if;

[8] minsup = giá trị NWSupport nhỏ nhất trong L;

[9] End if;

[10] End;

thấp nhất;

Đầu tiên, đặt minsup=0. Sau đó tìm các mẫu dãy thường xuyên bằng cách áp dụng phương pháp sinh mẫu dãy Apriori. Mỗi khi một mẫu dãy được tìm thấy, nó sẽ được đưa vào một danh sách L các mẫu dãy được sắp xếp theo độ hỗ trợ có trọng số NWSupport. Danh sách này được sử dụng để lưu các mẫu dãy đã được tìm thấy. Khi có đủ k mẫu dãy trong danh sách L, giá trị minsup sẽ được tăng lên bằng với NWSupport của mẫu dãy có giá trị NWSupport nhỏ nhất trong L. Viêc tăng giá trị minsup sẽ giúp giảm bớt không gian tìm kiếm. Sau khi tăng minsup, các mẫu dãy thường xuyên tìm được sẽ được đưa vào L, các mẫu dãy trong L không thỏa mãn giá trị minsup mới sẽ bị loại ra khỏi L và giá trị minsup sẽ được tiếp tục tăng lên bằng với giá trị NWSupport của mẫu dãy có NWSupport nhỏ nhất trong L…. Thuật toán tiếp tục đến khi không thể tìm ra được mẫu dãy nào nữa, khi đó thuật toán kết thúc và đưa ra top-k mẫu dãy thường xuyên.

Thủ tục SAVE thực hiện tăng giá trị minsup và cập nhật danh sách L mỗi khi tìm thấy một mẫu dãy thường xuyên r. Đầu tiên, thêm r vào L, nếu L có nhiều hơn k mẫu dãy và độ hỗ trợ có trọng số của r lớn hơn minsup thì loại bỏ các mẫu dãy có NWSupport thấp nhất trong L sao cho L chỉ còn lại k mẫu dãy.

57

Cuối cùng, đặt giá trị minsup mới bằng với giá trị NWSupport nhỏ nhất trong L.

2.4.3. Ví dụ thuật toán:

Xét CSDL dãy với khoảng thời gian iSDB như trong Bảng 2.10. Mỗi mục được gán 1 giá trị trọng số như trong Bảng 2.11. Đặt k=10, C1 = 0, C2= 3, C3=1, C4 =3. Thuật toán thực hiện như sau:

Bước thứ 1: Đặt minsup=0, m=1 (m là độ dài dãy). Duyệt CSDL iSDB

lần đầu, ta có độ hỗ trợ của mỗi mục riêng lẻ trong CSDL lần lượt là:

support(a) = 4, support(b) = 4, support(c) = 4, support(d) = 4

support(e) = 3, support(f) = 3, support(g) = 1, support(h) = 1

Khởi đầu L = ∅.

Đưa các ứng viên 1 phần tử vào trong F1:

F1= {a,b,c,d,e,f,g,h}

Kiểm tra điều kiện độ hỗ trợ với trọng số, ta có:

NWSupport(a) = support(a)*NW(a) = 4*0.5 = 2;

NWSupport(b) = support(a)*NW(b) = 4*0.6 = 2.4;

NWSupport(c) = support(a)*NW(c) = 4*0.8 = 3.2;

NWSupport(d) = support(a)*NW(d) = 4*0.5 = 2;

NWSupport(e) = support(a)*NW(e) = 3*0.7 = 2.1;

NWSupport(f) = support(a)*NW(f) = 3*0.8 = 2.4;

NWSupport(g) = support(a)*NW(g) = 1*0.9 = 0.9;

NWSupport(h) = support(a)*NW(h) = 1*0.8 = 0.8;

Vì minsup=0 nên không mẫu nào bị loại, gọi thủ tục SAVE:

- L = {c:3.2, b:2.4, f:2.4, e:2.1, a:2, d:2, g:0.9, h:0,8}

-

|L| = 8 < k (=10): không mẫu nào bị loại

- Minsup = 0.8 (=giá trị NWSupport của mẫu dãy nhỏ nhất trong L)

58

- Sau bước 1, ta có L = {c:3.2, b:2.4, f:2.4, e:2.1, a:2, d:2, g:0.9, h:0,8}

Bước thứ 2 : Minsup = 0.8, m = 2 (m là độ dài dãy):

Thực hiện hàm sinh mẫu dãy: Kết nối mỗi mẫu dãy ứng viên trong F1 với nhau để lập thành một tập dãy ứng viên F2 thỏa mãn điều kiện các ràng buộc thời gian C1, C2, C3, C4. Vì các mẫu dãy có thêm yếu tố thời gian, nên các mẫu dãy sinh ra phải có đủ các khoảng thời gian khác nhau.

F2={<(0,a)(1,a)>, <(0,a),(2,a)>, <(0,a),(3,a)> , <(0,a)(1,b)>, <(0,a),(2,b)>, <(0,a),(3,b)>, <(0,a)(1,c)>, <(0,a),(2,c)>, <(0,a),(3,c)>, <(0,a)(1,d)>, <(0,a),(2,d)>, <(0,a),(3,d)>, <(0,a)(1,e)>, <(0,a),(2,e)>, <(0,a),(3,e)>…. }

Quét CSDL iSDB để tìm ra các mẫu dãy ứng viên α thỏa mãn điều kiện support(α)*MaxW ≥ minsup, loại khỏi F2 các ứng viên không thỏa mãn điều kiện support(α)*MaxW ≥ minsup.

Support(<0,ae>)*MaxW = 2*0.9 =1.8

Support(<0,cd>)*MaxW = 2*0.9 =1.8

Support(<0,be>)*MaxW = 3*0.9 =2.7

Support(<0,bd>)*MaxW = 3*0.9 =2.7

Support(<0,ef>)*MaxW = 3*0.9 =2.7

Support(<0,af>)*MaxW = 3*0.9 =2.7

Support(<0,bf>)*MaxW = 3*0.9 =2.7

Support(<0,cf>)*MaxW = 3*0.9 =2.7

Support(<0,ce>)*MaxW = 3*0.9 =2.7

Support(<0,bc>)*MaxW = 4*0.9 =3.6

Support(<0,ad>)*MaxW = 4*0.9 =3.6

Support(<0,ac>)*MaxW = 4*0.9 =3.6

Support(<0,ab>)*MaxW = 4*0.9 =3.6

Support(<0,df>)*MaxW = 2*0.9 =1.8

59

…..

F2 sau bước này gồm 40 mẫu dãy là:

F2={<0,ae>, <0,cd>, <0,be>, <0,bd>, <0,ef>, … <(0,a),(2,d)>,

<(0,a),(3,d)>, <(0,b),(1,a)>, <(0,d),(1,a)>, <(0,a),(2,b)>, <(0,c),(1,d)>}

Kiểm tra điều kiện support(a)*NW(a) ≥ minsup với 40 mẫu dãy trong F2,

nếu thỏa mãn thì gọi thủ tục SAVE.

Support(<0,ae>)*NW(<0,ae>) = 2*0.6 =1.2

Support(<0,cd>)*NW(<0,cd>) = 2*0.65 =1.3

Support(<0,be>)*NW(<0,be>) = 3*0.65 =1.95

Support(<0,bd>)*NW(<0,bd>) = 3*0.55 =1.65

Support(<0,ef>)*NW(<0,ef>) = 3*0.75 =2.25

Support(<0,af>)*NW(<0,af>) = 3*0.65 =1.95

Support(<0,bf>)*NW(<0,bf>) = 3*0.7 =2.1

Support(<0,cf>)*NW(<0,cf>) = 3*0.8 =2.4

Support(<0,ce>)*NW(<0,ce>) = 3*0.75 =2.25

Support(<0,bc>)*NW(<0,bc>) = 4*0.7 =2.1

Support(<0,ad>)*NW(<0,ad>) = 4*0.5 =2

Support(<0,ac>)*NW(<0,ac>) = 4*0.65 =2.6

Support(<0,ab>)*NW(<0,ab>) = 4*0.55 =2.2

Support(<0,df>)*NW(<0,df>) = 2*0.65 =1.3

….

Thủ tục SAVE thực hiện lưu k =10 mục có NWSupport lớn nhất và tăng

ngưỡng hỗ trợ minsup bằng giá trị NWSupport nhỏ nhất trong L.

Sau bước này, tập L có các mẫu dãy sau:

L={<(0,c)>:3.2, <(0,ac)>:2.6, <(0,a)(1,c)>:2.6, <(0,g)>:2.4, <(0,b)>:2.4, <(0,cg)>:2.4, <(0,eg)>:2.25, <(0,ce)>:2.25, <(0,ab)>:2.2, <(0,a),(1,b)>:2.2}

60

Và minsup = 2.2

Bước thứ 3 : Minsup = 2.2, m = 3 (m là độ dài dãy):

Thực hiện hàm sinh mẫu dãy: Kết nối mỗi mẫu dãy ứng viên trong F2 với nhau để lập thành một tập dãy ứng viên F3 thỏa mãn các ràng buộc thời gian C1, C2, C3, C4.

F3={<(0,ac)(1,c)>, <(0,acf)>, <(0,ace)> , <(0,abc)>, <(0,ac),(1,b)>,

<(0,acd)>, <(0,a)(1,c)>, <(0,ac),(1,a)>,…. }

Quét CSDL iSDB để tìm ra các mẫu dãy ứng viên α thỏa mãn điều kiện support(α)*MaxW ≥ minsup, loại khỏi F3 các ứng viên không thỏa mãn điều kiện support(α)*MaxW ≥ minsup.

Support(<(0,a),(1,ad)>)*MaxW = 4*0.9 =3.6

Support(<(0,a),(1,ac)>)*MaxW = 4*0.9 =3.6

Support(<(0,a),(1,ab)>)*MaxW = 4*0.9 =3.6

Support(<0,bce>)*MaxW = 3*0.9 =2.7

Support(<0,cef>)*MaxW = 3*0.9 =2.7

Support(<(0,a),(1,a),(2,a)>)*MaxW = 3*0.9 =2.7

Support(<(0,a),(1,c),(2,a)>)*MaxW = 3*0.9 =2.7

Support(<(0,ad),(1,a)>)*MaxW = 2*0.9 =1.8

Support(<(0,ab),(1,a)>)*MaxW = 2*0.9 =1.8

…..

F3 sau bước này gồm 22 mẫu dãy là:

F3= {< (0,a),(1,ad)>, <(0,a),(1,ac)>, <(0,a),(1,ab)>, <0,bce>, <0,cef>, …

, <(0,a),(1,a),(2,a)>, <(0,a),(1,c),(2,a)>}

Kiểm tra điều kiện support(a)*NW(a) ≥ minsup với các mẫu dãy trong F3,

nếu thỏa mãn thì gọi thủ tục SAVE.

Support(<(0,a),(1,ad)>)*NW(<(0,a),(1,ad)>) = 4*0.5 =2

61

Support(<(0,a),(1,ac)>)*NW(<(0,a),(1,ac)>) = 4*0.6 =2.4

Support(<(0,a),(1,ab)>)*NW(<(0,a),(1,ab)>) = 4*0.53 =2.13

Support(<0,bce>)*NW(<0,bce>) = 3*0.7 =2.1

Support(<0,cef>)*NW(<0,cef>) = 3*0.76 =2.3

Support(<(0,a),(1,a),(2,a)>)*NW(<(0,a),(1,a),(2,a)>) = 3*0.73 =2.2

Support(<(0,a),(1,c),(2,a)>)*NW(<(0,a),(1,c),(2,a)>) = 3*0.7 =2.1

…..

Thủ tục SAVE thực hiện lưu k =10 mục có NWSupport lớn nhất và tăng

ngưỡng hỗ trợ minsup bằng giá trị NWSupport nhỏ nhất trong L.

Sau bước này, tập L có các mẫu dãy sau:

L={<(0,c)>:3.2, <(0,ac)>:2.6, <(0,a)(1,c)>:2.6, <(0,g)>:2.4, <(0,b)>:2.4, <(0,cg)>:2.4, <(0,a),(1,ac)>:2.4, <(0,cef)>:2.3, <(0,eg)>:2.25, <(0,ce)>:2.25}

Giá trị minsup được tăng lên thành 2.25.

Các bước lặp tiếp theo:

Tiếp tục thực hiện hiện hàm sinh mẫu dãy: Kết nối mỗi mẫu dãy ứng viên trong Fk-1 với nhau để lập thành một tập mẫu dãy ứng viên Fk , và thực hiện tương tự như các bước trên.

Kết quả cuối cùng tập L sau khi kết thúc thuật toán là:

L={<(0,c)>:3.2, <(0,ac)>:2.6, <(0,a)(1,c)>:2.6, <(0,g)>:2.4, <(0,b)>:2.4, <(0,cg)>:2.4, <(0,a),(1,ac)>:2.4, <(0,cef)>:2.3, <(0,eg)>:2.25, <(0,ce)>:2.25}

62

CHƯƠNG 3. THỬ NGHIỆM VÀ NHẬN XÉT

3.1. THỬ NGHIỆM

Phần này thử nghiệm so sánh thuật toán đề xuất trong 2 trường hợp: có sử

dụng ràng buộc thời gian và không sử dụng ràng buộc thời gian.

Các thuật toán được thực hiện trên ngôn ngữ lập trình Java và được thử nghiệm trên một máy tính có bộ xử lý Intel core-i7, 16GB bộ nhớ trong và chạy Windows 10.

Các bộ dữ liệu thử nghiệm là các bộ dữ liệu thực được lấy trên trang web

http://www.philippe-fournier-viger.com/spmf/index.php?link=datasets.php bao gồm:

- Bộ dữ liệu BMSWebView1 với 59601 dãy và 497 mục khác nhau. Độ

dài trung bình 1 dãy là 2,42.

- Bộ dữ liệu Bible với 36369 dãy và 13905 mục khác nhau. Độ dài trung

bình 1 dãy là 21,6.

- Bộ dữ liệu Fifa với 20450 dãy và 2990 mục khác nhau. Độ dài trung

bình 1 dãy là 34,74.

- Bộ dữ liệu Leviathan với 5834 dãy và 9025 mục khác nhau. Độ dài

trung bình 1 dãy là 33,8

- Bộ dữ liệu Sign với 800 dãy và 267 mục khác nhau. Độ dài trung bình

1 dãy là 51,997.

Bảng 3.1. Mô tả các dữ liệu thử nghiệm

Bộ dữ liệu Số dãy Số mục Độ dài trung bình Phân loại

BMSWebView1 59601 497 2,42 Web log

36369 13905 21,6 Văn bản Bible

20450 2990 34,74 Web log Fifa

Leviathan 5834 9025 33,8 Văn bản

Sign 800 267 51,997 Văn bản

63

Các bộ dữ liệu đưa vào nghiên cứu, thử nghiệm cài đặt với số lượng mẫu dãy, số mục của dãy, độ dài trung bình khác nhau nhằm làm rõ hơn ảnh hưởng của các tham số trọng số, khoảng cách thời gian, top-k đưa vào trong thuật toán.

Các bộ dữ liệu trên không có giá trị trọng số của các mục, vì vậy để phù hợp với bài toán khai phá mẫu dãy có trọng số, giá trị trọng số sẽ được sinh ngẫu nhiên trong khoảng [0,2;0,8]. Trong thực tế, các mục có giá trị cao thường sẽ ít xuất hiện trong CSDL. Vì vậy, trong thử nghiệm này, tôi sử dụng phân bố chuẩn để sinh ngẫu nhiên trọng số.

Các bộ dữ liệu cũng không có giá trị thời gian. Do vậy, dữ liệu thời gian sẽ được sinh theo thứ tự tăng dần, mỗi mẫu dãy liền nhau sẽ cách nhau 1 khoảng cách thời gian.

Giá trị k được đưa vào lần lượt từ 1000 đến 10000. Do độ dài trung bình của các dãy trong từng bộ dữ liệu là khác nhau, các ràng buộc thời gian được đưa vào khác nhau theo từng bộ dữ liệu. Bảng dưới đây mô tả giá trị ràng buộc thời gian của từng bộ dữ liệu.

Bảng 3.2. Giá trị ràng buộc thời gian

Bộ dữ liệu C1 C2 C3 C4

BMSWebView1 1 5 1 10

Bible 1 5 2 20

Fifa 1 5 1 30

Leviathan 1 5 1 30

Sign 1 5 5 40

Kết quả thử nghiệm thuật toán được thể hiện dưới đây:

64

Hình 3.1. Thời gian chạy với bộ dữ liệu BMSWebView1

Hình 3.2. Thời gian chạy với bộ dữ liệu Bible

65

Hình 3.3. Thời gian chạy với bộ dữ liệu Fifa

Hình 3.4. Thời gian chạy với bộ dữ liệu Leviathan

66

Hình 3.5. Thời gian chạy với bộ dữ liệu Sign

67

Hình 3.6. Bộ nhớ sử dụng với bộ dữ liệu BMSWebView1

Hình 3.7. Bộ nhớ sử dụng với bộ dữ liệu Bible

68

Hình 3.8. Bộ nhớ sử dụng với bộ dữ liệu Fifa

Hình 3.9. Bộ nhớ sử dụng với bộ dữ liệu Leviathan

69

Hình 3.10. Bộ nhớ sử dụng với bộ dữ liệu Sign

3.2. NHẬN XÉT

Có thể thấy trong các thử nghiệm thuật toán chạy tốt hơn trong trường hợp có sử dụng ràng buộc thời gian cả về thời gian chạy và bộ nhớ sử dụng. Điều này cũng dễ hiểu vì khi đưa vào ràng buộc thời gian, số ứng viên phải sinh ra sẽ giảm đi rất nhiều, do đó làm giảm không gian tìm kiếm và rút ngắn thời gian thực hiện.

Thời gian chạy của thuật toán lâu hơn khi chạy với bộ dữ liệu lớn hơn do

thuật toán phải quét dữ liệu nhiều lần hơn.

Thời gian chạy, bộ nhớ sử dụng bị ảnh hưởng nhiều với các tham số trọng số, khoảng cách thời gian, topk khác nhau trên các bộ dữ liệu có số lượng mẫu dãy, số mục của dãy, độ dài trung bình khác nhau.

70

CHƯƠNG 4. KẾT LUẬN VÀ KIẾN NGHỊ

4.1. KẾT LUẬN

Khai phá mẫu dãy nói riêng hay khai phá dữ liệu nói chung được ứng dụng rất rộng rãi trong thực tế, như phân tích thị trường, phân tích mẫu truy cập website, phát hiện xâm nhập trong môi trường mạng, dự báo nhu cầu mua sắm của khách hàng,…

Luận văn này đã:

- Nghiên cứu tìm hiểu về khai phá mẫu dãy thường xuyên và một số mở

rộng. Nghiên cứu một số thuật toán liên quan như Apriori, Prefixspan.

- Nghiên cứu tìm hiểu về khai phá Top-k mẫu dãy thường xuyên trọng số

với khoảng cách thời gian.

- Nghiên cứu về phát triển các mẫu dãy có độ hỗ trợ với trọng số cao trước, số mẫu dãy ứng viên sinh ra sẽ giảm đi bớt làm giảm đáng kể không gian tìm kiếm do đó tăng hiệu suất cho giải thuật.

- Nghiên cứu cũng có ý nghĩa hơn khi xét tới các mẫu dãy xảy ra trong 1

khoảng thời gian nhất định.

- Nghiên cứu lý thuyết và nghiên cứu thực nghiệm:

+ Về nghiên cứu lý thuyết: các định lý, mệnh đề trong luận văn đưa

ra dựa vào các kiến thức cơ bản và các kết quả nghiên cứu đã công bố.

+ Về nghiên cứu thực nghiệm: luận văn thực hiện cài đặt các thuật toán, chạy thử nghiệm thuật toán với các bộ số liệu lấy từ kho dữ liệu UCI, so sánh và đánh giá kết quả thực nghiệm so với kết quả nghiên cứu lý thuyết, từ đó kết luận tính đúng đắn của kết quả nghiên cứu.

- Nghiên cứu thử nghiệm thuật toán Top-K mẫu dãy thường xuyên trọng

số với khoảng cách thời gian dựa trên giải thuật AprioriALL.

- So sánh, đánh giá thuật toán Top-K mẫu dãy thường xuyên trọng số có

và không có khoảng cách thời gian.

71

4.2. KIẾN NGHỊ

Dữ liệu thực tế rất quan trọng và phức tạp, khai phá mẫu dãy ngoài việc quan tâm đến độ hỗ trợ còn quan tâm cả đến trọng số và khoảng cách thời gian. Để khai thác dữ liệu hiệu quả hơn, các nghiên cứu tiếp theo phải quan tâm đến lợi ích,… của dãy.

Trên thế giới hiện có một số công trình, ngoài quan tâm đến độ hỗ trợ, trọng số và khoảng cách thời gian thì còn quan tâm đến cổ phần, lợi ích,… của dãy, chẳng hạn như thuật toán Uspan của tác giả J.Yin và các cộng sự để giải quyết bài toán về Khai phá mẫu dãy thường xuyên lợi ích cao.

72

TÀI LIỆU THAM KHẢO

[1] R.Agrawal, T.Imielinski, and A.Swami, 1993, "Mining Association Rules between Sets of Items in Large Databases," in Proceedings of the 1993 ACM SIGMOD International Conference on Management of Data.

[2] J. Han, J. Pei, Y. Ying and R. Mao, 2004, "Mining frequent patterns without candidate generation: a frequent-pattern tree approach," Data Mining and Knowledge Discovery, vol. 8, p. 53–87.

[3] M. Zaki, 2000, "Scalable algorithms for association mining," IEEE Transactions on Knowledge and Data Engineering, vol. 12, p. 372– 390.

[4] T. Uno, M. Kiyomi and H. Arimura, 2004, "LCM ver. 2: Efficient mining algorithms for frequent/closed/maximal itemsets," in IEEE International Conference on Data Mining Workshop on Frequent Itemset Mining Implementations.

[5] J. Pei, J. Han, H. Lu, S. Nishio, S. Tang and D. Yang, 2001, "H-mine: Hyper-structure mining of frequent patterns in large databases," in IEEE International Conference on Data Mining, p. 441–448.

[6] R. Agrawal and R. Srikant, 1995, "Mining sequential patterns," in The

International Conference on Data Engineering, p. 3–14.

[7] S. Aseervatham, A. Osmani and E. Viennet, 2006, "bitSPADE: A lattice-based sequential pattern mining algorithm using bitmap representation," in The International Conference on Data Mining, p. 792–797.

73

[8] Ayres, J., Gehrke, J., Yiu, T. and Flannick, J, 2002, "Sequential Pattern Mining using Bitmap Representation," in Proc. of ACM SIGKDD’02,

[9] J. Pei, J. Han, B.M. Asi, H. Pino, 2001, "PrefixSpan: Mining Sequential Patterns Efficiently by Prefix-Projected Pattern Growth," in Proceedings of the Seventeenth International Conference on Data Engineering.

[10] M. Garofalakis, R. Rastogi and K. Shim, 1999, "SPIRIT: Sequential in The

pattern mining with regular expression constraints," International Conference on Very Large Databases, p. 223–234.

[11] R. Agrawal, R.Srikant, 1996, "Mining

sequential patterns: Generallizations and performance improvements," Lecture Notes in Computer Science, vol. 1057, pp. 3-17.

[12] M. Zaki, 2001, "SPADE: An efficient algorithm for mining frequent

sequences," Machine learning, vol. 42, p. 31–60.

[13] J. Han, J. Pei, B. Mortazavi-Asl, Q. Chen, U. Dayal and M. Hsu, 2000, "FreeSpan: frequent patternprojected sequential pattern mining," in ACM SIGKDD International Conference on Knowledge Discovery and Data Mining, p. 355–359.

[14] B. Vo, F. Coenen, B. Le, 2013, "A new method for mining Frequent Weighted Itemsets based on WIT-trees," in Expert Systems with Applications.

[15] C.H.Cai, A.W.Chee Fu, C.H.Cheng, and W.W.Kwong, 1998, "Mining Association Rules with Weighted Items," in Proceedings of the 1998 International Symposium on Database Engineering & Applications, Cardiff, Wales.

74

[16] F. Tao, F. Murtagh, M. Farid, 2003, "Weighted Association Rule Mining Using Weighted Support and Significance Framework," in Proceedings of 9th ACM SIGKDD Conference on Knowledge Discovery and Data Mining.

[17] G.C. Lan, T.P. Hong, H.Y. Lee, 2014, "An efficient approach for finding weighted sequential patterns from sequence databases," in Applied Intelligence.

[18] M. S. Khan, M. Muyeba, F. Coenen, 2008, "Weighted Association Rule Mining from Binary and Fuzzy Data," in Proceedings of 8th Industrial Conference, ICDM 2008.

[19] J. Ren, J. Yang and Y. Li, 2008, "Mining weighted closed sequential patterns in large databases," in The International Conference on Fuzzy Systems and Knowledge Discovery, p. 640–644.

[20] U. Yun, 2008, "An efficient mining of weighted frequent patterns with length decreasing support constraints," Knowledge-Based Systems, Vols. Vol. 21,No. 8, p. 741–752.

[21] H. Yu and H. Yamana, 2006, "Generalized sequential pattern mining

with item intervals," Journal of Computers, vol. 1, p. 51–60.

[22] J. Chang, 2011, "Mining weighted sequential patterns in a sequence database with a time-interval weight," Knowledge-Based Systems, vol. 24, p. 1–9.

[23] U. Yun, J.J. Leggett, 2005, "WFIM: weighted frequent itemset mining with a weight range and a minimum weight," in 5th SIAM Int. Conf. on Data Mining.

75

[24] W.Wang, J.Yang, and P.S.Yu, 2000, "Efficient Mining of Weighted Association Rules (WAR)," in Proceedings of the Sixth ACM SIGKDD International Conference on Knowledge Discovery and Data Mining.

[25] U. Yun and J. Leggett, 2006, "WSpan: Weighted Sequential pattern mining in large sequence databases," in The International IEEE Conference Intelligent Systems, p. 512–517.

[26] U. Yun, K.H. Ryu, 2011, "Approximate weighted frequent pattern

mining with/without noisy environments,".

[27] U. Yun, G. Pyun, E. Yoon, 2015, "Efficient Mining of Robust Closed Weighted Sequential Patterns Without Information Loss," Vols. Vol. 24, No. 1, p. 28 pages.

[28] K. Chuang, J. Huang and M. Chen, 2008, "Mining Top-K Frequent Patterns in the Presence of the Memory Constraint," VLDB Journal, vol. 17, pp. 1321-1344.

[29] P. Tzvetkov, X. Yan and J. Han, 2003, "TSP: Mining Top-K Closed

Sequential Patterns," ICDM, pp. 347-354.

[30] P. Fournier-Viger and V. Tseng, 2011, "Mining top-k sequential rules," in The International Conference on Advanced Data Mining and Applications, p. 180–194.

[31] J. Wang and J. Han, TFP, 2005, "An Efficient Algorithm for Mining Top-K Frequent Closed Itemsets," TKDE, vol. 17, pp. 652-664.

[32] P. Fournier-Viger, A. Gomariz, T. Gueniche, E. Mwamikazi and R. Thomas, 2013, "TKS: Efficient Mining of Top-K Sequential Patterns," in The International Conference on Advanced Data Mining and Applications, p. 109–120.

76

[33] P. Fournier-Viger, C.-W. Wu and V. Tseng, 2012, "Mining top-k association rules," in The Canadian Conference on Artificial Intelligence, p. 61–73.

[34] Trần Huy Dương, Vũ Đức Thi, 2013, “WPrefixSpan: Thuật toán khai phá mẫu dãy thường xuyên với trong số chuẩn hóa sử dụng CSDL tiền tố,” trong Kỷ yếu hội nghị Khoa học Quốc gia lần thứ VI- Nghiên cứu cơ bản và ứng dụng CNTT (FAIR).

[35] V. Đ. T. Trần Huy Dương, 2015, "Thuật toán khai phá mẫu dãy thường xuyên trọng số chuẩn hóa với khoảng cách thời gian," Chuyên san Tạp chí Công nghệ thông tin và truyền thông, vol. 2, pp. 72-81.

77