1. Trang chủ
  2. » Luận Văn - Báo Cáo

luận văn thạc sĩ khai phá mẫu dãy lợi ích cao với khoảng cách thời gian

80 30 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 80
Dung lượng 1,57 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Bài toán khai phá mẫu dãy thường xuyên cũng như tập mục thường xuyên sử dụng độ đo là tần xuất xuất hiện của dữ liệu frequency.. Trong khai phá mẫu dãy lợi ích cao, các mục trong CSDL đề

Trang 1

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Ệ -

Trang 2

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Ệ

-

Trần Thế Anh KHAI PHÁ MẪU DÃY LỢI ÍCH CAO VỚI KHOẢNG CÁCH

Trang 3

Lời cam đoan

Tôi cam đoan đây là công trình nghiên cứu của riêng tôi Các số liệu, kết quả nêu trong luận văn là trung thực và chưa từng được ai công bố trong bất cứ công trình nào

TÁC GIẢ LUẬN VĂN

Trần Thế Anh

Trang 4

Lời cảm ơn

Lời đầu tiên, tôi xin gửi lời cảm ơn sâu sắc tới TS Đặng Thị Oanh và PGS TS Phạm Thanh Giang đã tận tình giúp đỡ, hướng dẫn, định hướng tôi trong quá trình nghiên cứu và hoàn thành luận văn này Tôi xin cảm ơn Khoa Công nghệ thông tin và Truyền thông - Học Viện khoa học và Công nghệ đã tạo điều kiện cho tôi hoàn thành chương trình học tập và nghiên cứu trong hai năm học vừa qua

Tôi cũng xin chân thành cảm ơn Lãnh đạo Viện Công nghệ thông tin - Viện Hàn lâm Khoa học và Công nghệ Việt Nam đã tạo điều kiện thuận lợi cho quá trình học tập của mình, cảm ơn các các bộ của phòng Công nghệ phần mềm trong quản lý đã nhiệt tình trong công tác, giúp tôi dành thời gian hoàn thành luận văn

Cuối cùng, tôi xin cảm ơn gia đình, bạn bè, đồng nghiệp đã luôn là nguồn động viên, ủng hộ, giúp tôi thêm động lực để hoàn thành tốt luận văn này

Trần Thế Anh

Trang 5

Danh mục các ký hiệu và chữ viết tắt

3 SDB Sequence Database Cơ sở dữ liệu dãy

4 HUSPM High utility sequential

Trang 6

Danh mục các bảng

Bảng 1.1 Cơ sở dữ liệu dãy SDB 7

Bảng 1.2 Cơ sở dữ liệu chiếu với tiền tố <a> 17

Bảng 1.3 Cơ sở dữ liệu chiếu với tiền tố <(ab)> 17

Bảng 2.1 Cơ sở dữ liệu dãy định lượng QSDB 23

Bảng 2.2 Bảng lợi ích ngoài 24

Bảng 2.3 Sinh mẫu dãy ứng viên trong thuật toán UL 31

Bảng 2.4 Sinh mẫu dãy ứng viên trong thuật toán US 34

Bảng 2.5 Bảng lợi ích của các mẫu dãy 1 phần tử trong QSDB 37

Bảng 2.6 Bảng chỉ mục 38

Bảng 2.7 Lợi ích của từng mục dữ liệu trong từng dãy S i 41

Bảng 2.8 Lợi ích của các dãy S i 41

Bảng 2.9 CSDL thu được sau khi loại bỏ ứng viên không tiềm năng 42

Bảng 2.10 CSDL chiếu QSDB| a của mẫu dãy <a> 42

Bảng 2.11 Lợi ích của các dãy trong QSDB| a 43

Bảng 2.12 Bảng lợi ích của các mẫu dãy 2 phần tử với tiền tố <a> 43

Bảng 2.13 CSDL QSDB| a mới sau khi loại bỏ mục f 44

Bảng 2.14 CSDL chiếu QSDB| aa của mẫu dãy <aa> 44

Bảng 3.1 Cơ sở dữ liệu dãy lợi ích cao với khoảng cách thời gian QiSDB 48

Bảng 3.2 Bảng lợi ích ngoài 49

Bảng 3.3 Bảng lợi ích của các mẫu dãy 1 phần tử trong QiSDB 53

Bảng 3.4 Sinh mẫu dãy ứng viên trong UIL 59

Bảng 3.5 Đặc điểm các tập dữ liệu thử nghiệm 60

Bảng 3.6 Ràng buộc thời gian 61

Trang 7

Danh mục các hình vẽ, đồ thị

Hình 1.1 Các bước sinh mẫu dãy của thuật toán GSP 12

Hình 3.1 Thời gian chạy Bộ dữ liệu BMSWebView1 62

Hình 3.2 Thời gian chạy Bộ dữ liệu BMSWebView2 62

Hình 3.3 Thời gian chạy Bộ dữ liệu Bible 63

Hình 3.4 Thời gian chạy Bộ dữ liệu Fifa 63

Hình 3.5 Bộ nhớ sử dụng trên bộ dữ liệu BMSWebView1 64

Hình 3.6 Bộ nhớ sử dụng trên bộ dữ liệu BMSWebView2 64

Hình 3.7 Bộ nhớ sử dụng trên bộ dữ liệu Bible 65

Hình 3.8 Bộ nhớ sử dụng trên bộ dữ liệu Fifa 65

Trang 8

1

MỤC LỤC

MỞ ĐẦU 3

CHƯƠNG 1 TỔNG QUAN KHAI PHÁ MẪU DÃY THƯỜNG XUYÊN VÀ MỘT SỐ MỞ RỘNG 5

1.1 GIỚI THIỆU 5

1.2 MỘT SỐ KHÁI NIỆM CƠ BẢN 6

1.3 KHAI PHÁ MẪU DÃY THƯỜNG XUYÊN 9

1.3.1 Thuật toán GSP: 10

1.3.2 Thuật toán PrefixSpan: 13

a) Một số định nghĩa: 13

b) Mô tả thuật toán: 15

1.4 MỞ RỘNG BÀI TOÁN KHAI PHÁ MẪU DÃY THƯỜNG XUYÊN 17

1.5 KẾT LUẬN CHƯƠNG 1 19

CHƯƠNG 2 KHAI PHÁ MẪU DÃY LỢI ÍCH CAO 21

2.1 GIỚI THIỆU 21

2.2 BÀI TOÁN KHAI PHÁ MẪU DÃY LỢI ÍCH CAO 23

2.3 THUẬT TOÁN UL, US 28

2.3.1 Thuật toán UL: 28

2.3.2 Thuật toán US: 32

2.4 THUẬT TOÁN PHUS 35

2.4.1 Bảng lợi ích: 36

2.4.2 Bảng chỉ mục: 37

2.5 KẾT LUẬN CHƯƠNG 2 44

CHƯƠNG 3 KHAI PHÁ MẪU DÃY LỢI ÍCH CAO VỚI KHOẢNG CÁCH THỜI GIAN 46

3.1 GIỚI THIỆU 46

3.2 BÀI TOÁN KHAI PHÁ MẪU DÃY LỢI ÍCH CAO VỚI KHOẢNG CÁCH THỜI GIAN 47 3.2.1 Một số định nghĩa: 47

Trang 9

2

3.2.2 Khai phá mẫu dãy lợi ích cao với khoảng cách thời gian 51

3.2.3 Thuật toán UIL: 52

a) Ràng buộc thời gian: 52

b) Bảng lợi ích: 52

c) Giảm dần cận trên lợi ích swu 53

3.2.4 Thử nghiệm thuật toán UIL 60

3.3 KẾT LUẬN CHƯƠNG 3 66

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

TÀI LIỆU THAM KHẢO 69

Trang 10

3

MỞ ĐẦU

Cùng với sự bùng nổ của ngành công nghệ thông tin trong vài thập kỷ qua, dữ liệu được sinh ra và lưu trữ trong các cơ sở dữ liệu ngày càng nhiều lên Việc phân tích dữ liệu bằng phương pháp thủ công do vậy ngày càng khó khăn và tốn thời gian Từ thực tế đó, một lĩnh vực nghiên cứu mới đã nổi lên

để phát triển các kỹ thuật phân tích dữ liệu tự động: Khai phá dữ liệu Mục tiêu của khai phá dữ liệu là tìm ra tri thức từ cơ sở dữ liệu

Khai phá dữ liệu gồm nhiều tác vụ khác nhau như: Phân loại dữ liệu (Classification), Gom cụm dữ liệu (Clustering), Khai phá luật kết hợp (Association Rule) … Khai phá tập mục thường xuyên là một bài toán con của bài toán khai phá luật kết hợp Khởi nguồn là nghiên cứu của Agrawal [1] phân tích dữ liệu mua sắm của khách hàng trong siêu thị Khai phá tập mục thường

xuyên tập trung xác định các tập mục thường xuyên (frequent itemsets), nghĩa

là các mục thường xuất hiện cùng nhau trong CSDL

Khai phá mẫu dãy thường xuyên là một bài toán mở rộng của khai phá tập mục thường xuyên Các mẫu dãy là các phần tử được sắp xếp theo một thứ

tự nhất định (thường là thứ tự thời gian) Mục tiêu của khai phá mẫu dãy thường

xuyên là tìm ra các mẫu dãy thường xuyên (frequent sequence patterns), nghĩa

là các mẫu dãy thường xuất hiện cùng nhau trong CSDL

Bài toán khai phá mẫu dãy thường xuyên cũng như tập mục thường

xuyên sử dụng độ đo là tần xuất xuất hiện của dữ liệu (frequency) Tuy nhiên,

tần xuất xuất hiện của dữ liệu không phải lúc nào cũng là độ đo tốt nhất để tìm

ra các mẫu dãy có giá trị Vì đôi khi một số mặt hàng có số lượng mua ít nhưng lại mang lại lợi nhuận cao Từ thực tế này, một độ đo mới được đề xuất: lợi ích

(utility) nhằm tìm ra các mẫu có giá trị Bài toán khai phá mẫu dãy lợi ích cao

được đặt ra để tìm ra các mẫu dãy có giá trị Trong khai phá mẫu dãy lợi ích cao, các mục trong CSDL đều được gán 1 giá trị số lượng và 1 giá trị trọng số thể hiện mức độ quan trọng của mục đó

Các mẫu dãy trên thực tế ngoài các giá trị lợi ích của các mục còn có giá trị khoảng cách thời gian giữa các thành phần trong dãy Các mẫu dãy với các

Trang 11

4

khoảng cách thời gian lớn thường có ít ý nghĩa hơn là các mẫu dãy với khoảng cách thời gian nhỏ Do vậy bài toán khai phá mẫu dãy lợi ích cao với khoảng cách thời gian được đặt ra, bài toán không chỉ quan tâm tới giá trị lợi ích của các mục mà còn quan tâm tới giá trị khoảng cách thời gian giữa các mẫu dãy

Mục tiê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, mẫu dãy lợi ích cao và mẫu dãy lợi ích cao với khoảng cách thời gian

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 về bài toán khai phá mẫu dãy lợi ích cao và một số giải thuật

Chương 3 Tìm hiểu bài toán khai phá mẫu dãy lợi ích cao với khoảng cách thời gian và một số giải thuật

Chương 4 Kết luận

Trang 12

5

Chương 1 TỔNG QUAN KHAI PHÁ MẪU DÃY THƯỜNG

XUYÊN VÀ MỘT SỐ MỞ RỘNG 1.1 Giới thiệu

Khai phá dữ liệu là một quá trình trích xuất thông tin từ dữ liệu được lưu trữ trong các CSDL Từ đó giúp phân tích và đưa ra các quyết định Khai phá

dữ liệu bao gồm các tác vụ chính như: phân cụm (clustering), phân lớp (classification), khai phá luật kết hợp… Khai phá tập mục thường xuyên là bài toán con của khai phá luật kết hợp Mục tiêu là tìm ra các mẫu dữ liệu thú vị, hữu ích trong CSDL Khai phá tập mục thường xuyên được giới thiệu lần đầu tiên bởi Agrawal và Srikant [1] Nhóm tác giả cũng đề xuất thuật toán Apriori

để tìm các tập mục thường xuyên, tức là một nhóm các mục (biểu tượng) thường xuyên xuất hiện cùng nhau trong một CSDL giao dịch Ví dụ: Thuật toán

Apriori có thể dùng để tìm ra các mẫu như {nước ép cam, cà chua, nho} trong CSDL giao dịch tại một siêu thị Mẫu này thể hiện rằng các sản phẩm “nước

ép cam”, “cà chua” và “nho” thường được mua cùng nhau trong siêu thị đó

Các tập mục thường xuyên được tìm ra có thể được sử dụng trong việc phân tích dữ liệu và ra quyết định Ví dụ như từ các tập mục thường xuyên có thể hiểu được hành vi khách hàng, từ đó xây dựng các chiến lược quảng bá sản phẩm dựa trên hành vi

Mặc dù khai phá tập mục thường xuyên đã trở nên rất phổ biến và có thể ứng dụng trong nhiều lĩnh vực Tuy nhiên, các tập mục trong khai phá tập mục thường xuyên không quan tâm tới thứ tự của các mục Trong một số lĩnh vực, thứ tự của các mục là rất quan trọng Ví dụ như trong phân tích văn bản, thứ tự của các từ trong câu là rất quan trọng Hay trong phát hiện hành vi xâm nhập mạng trái phép, thứ tự của các sự kiện cũng rất quan trọng

Để có thể giải quyết vấn đề thứ tự của các mục, bài toán khai phá mẫu dãy thường xuyên đã được đề xuất Khai phá mẫu dãy thường xuyên (SPM) [2, 3,

Trang 13

Bài toán khai phá mẫu dãy thường xuyên lần đầu tiên được Agrawal và cộng sự [2] đề xuất với mục tiêu là tìm ra các mẫu dãy con phổ biến trong tập hợp các dãy dữ liệu Một dãy là một danh sách có thứ tự của các giá trị hữu danh Ví dụ: dãy các từ trong văn bản, dãy thứ tự các sản phẩm được mua của khách hàng trong siêu thị hay dãy thứ tự các trang web truy cập bởi người dùng Khai phá mẫu dãy thường xuyên là một lĩnh vực nghiên cứu rất sôi động với hàng trăm bài báo mới mỗi năm, cùng với rất nhiều mở rộng cho từng mục tiêu cụ thể

Chương này sẽ trình bày các vấn đề cơ bản của bài toán khai phá mẫu dãy thường xuyên và một số hướng tiếp cận giải quyết bài toán cũng như một số

mở rộng của bài toán

1.2 Một số khái niệm cơ bản

Cho I = {i 1 , i 2 , …, i n } là tập hợp các mục dữ liệu Một tập mục X là một tập hợp các mục 𝑖𝑗 ∈ 𝐼 , do vậy X I Lực lượng của tập mục X được ký hiệu là

|X| là số mục trong X Tập mục X được gọi là có độ dài k hay còn gọi là k-tập

mục nếu nó có k mục (nghĩa là |X|=k) Ví dụ có tập I = {a,b,c,d,e,f,g} là tập các

sản phẩm bán trong một siêu thị thì tập {a, b, c} là một 3-tập mục thể hiện các

mặt hàng được mua bởi một khách hàng trong một thời điểm nào đó

Trang 14

7

Không giảm tổng quát, giả sử các mục trong một tập mục được sắp xếp theo thứ tự từ điển Một dãy S là một danh sách được sắp xếp theo thứ tự của các

tập mục dữ liệu S={X 1 , X 2 , …, X n } với X j I là một tập mục được gọi là thành

phần của dãy Một mục dữ liệu chỉ xuất hiện 1 lần trong 1 thành phần Xj của

dãy, nhưng có thể xuất hiện nhiều lần trong các thành phần của dãy S

Ví dụ giả sử có dãy <a(abc)(ac)d(cf)> là một dãy dữ liệu thể hiện 5 giao

dịch của một khách hàng trong siêu thị Mỗi chữ cái thể hiện một mục Mỗi thành phần giữa hai dấu ngoặc đơn () thể hiện một tập mục, với các tập mục chỉ có 1 phần tử thì có thể bỏ qua dấu ngoặc này Dãy này chỉ ra rằng một khách

hàng đã mua sản phẩm a sau đó mua 3 sản phẩm (a, b, c) cùng nhau, sau đó lại mua 2 sản phẩm (a, c) cùng nhau, tiếp đến mua sản phẩm d và cuối cùng mua

2 sản phẩm (c, f) cùng nhau

Kích thước |S| của một dãy là số lượng của các thành phần (tập mục) 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 Ví dụ dãy

<a(abc)(ac)d(cf)> có kích thước 5 và độ dài 9

Một cơ sở dữ liệu dãy SDB={S 1 ,S 2 ,…,S m} là một tập các dãy với các định

danh (SID) là 1, 2, m

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

SID Dãy dữ liệu

Trang 15

8

Cơ sở dữ liệu này có 4 dãy với SID lần lượt là 1, 2, 3 và 4 CSDL này có thể thể hiện danh sách các mặt hàng mua bởi 4 khách hàng

Định nghĩa 3.1 Dãy con

Cho 2 dãy dữ liệu α=< a1 a2 … an > and β=< 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 β được gọi là Dãy chứa của α

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

Định nghĩa 3.2 Độ hỗ trợ của một dãy

Độ hỗ trợ của một dãy s a trong CSDL dãy SDB được định nghĩa là số dãy

có chứa s a trong SDB và được ký hiệu là sup(sa) Nghĩa là:

𝑠𝑢𝑝(𝑠𝑎) = |{𝑠|𝑠𝑎  𝑠 ᴧ s ∈ SDB}|

Ví dụ, độ hỗ trợ của dãy <b(fg)> trong Bảng 1.1 là 3 vì dãy này xuất hiện 3

lần trong CSDL (trong dãy 1, 2 và 4)

Định nghĩa 3.3 Mẫu dãy thường xuyên

Một dãy s được gọi là mẫu dãy thường xuyên nếu và chỉ nếu:

sup(s) ≥ minsup

Trong trường hợp ngược lại thì s được gọi là mẫu dãy không thường xuyên

Trong đó minsup là ngưỡng hỗ trợ tối thiểu được đặt bởi người dùng

Ví dụ: Nếu đặt minsup =2 thì dãy <a> trong CSDL Bảng 1.1 là một mẫu

dãy thường xuyên với độ hỗ trợ là 3

Tính chất của mẫu dãy thường xuyên:

- Nếu một mẫu dãy X là mẫu dãy không thường xuyên thì mọi tập cha Y của nó (X ⊆ 𝑌) cũng là các mẫu dãy không thường xuyên

Trang 16

1.3 Khai phá mẫu dãy thường xuyên

Phần này trình bày các hướng tiếp cận của các thuật toán trong khai phá mẫu dãy thường xuyên và giới thiệu 2 thuật toán kinh điển: GSP [3] và PrefixSpan [6] làm cơ sở cho các thuật toán ở các chương sau

Nhiệm vụ của khai phá mẫu dãy thường xuyên là tìm tập hợp tất cả các mẫu dãy thường xuyên trong CSDL dãy Bài toán khai phá mẫu dãy thường xuyên

là một bài toán liệt kê Trọng tâm là liệt kê tất cả các mẫu dãy có độ hỗ trợ lớn hơn hoặc bằng với ngưỡng hỗ trợ tối thiểu đặt bởi người dùng Tìm mẫu dãy thường xuyên là một bài toán khó Để giải quyết nó, phương pháp tiếp cận tự nhiên nhất là tính độ hỗ trợ của tất cả các mẫu dãy con có thể có trong CSDL

và liệt kê tất cả các mẫu dãy có độ hỗ trợ không nhỏ hơn ngưỡng tối thiểu Tuy nhiên, cách tiếp cận ngây thơ như vậy không hiệu quả vì số lượng các

mẫu dãy con có thể rất lớn Một dãy chứa q mục trong CSDL có thể có tới 2 q

-1 mẫu dãy con khác nhau Vì vậy, việc áp dụng phương pháp tiếp cận ngây thơ như vậy thường không hiệu quả, do đó không thể áp dụng trong thực tế

Đã có rất nhiều thuật toán được thiết kế để giải quyết bài toán khai phá mẫu dãy thường xuyên Một số thuật toán nổi tiếng có thể kể tới là GSP [3], PrefixSpan [6], Spade [5], Spam [4], bitSpade [7], Prims [8], FreeSpan [9] Các thuật toán này có đầu vào là một cơ sở dữ liệu dãy và một ngưỡng hỗ trợ tối thiểu (được đặt bởi người dùng) và đầu ra là tập tất cả các mẫu dãy thường xuyên Không gian tìm kiếm của tất cả mẫu dãy con có thể sinh ra trong một

Trang 17

bất kỳ dãy s a và s b nào, nếu s a là dãy con của s b thì s b phải có độ hỗ trợ nhỏ hơn

hoặc bằng với s a Tính chất này rất hiệu quả để tỉa bớt không gian tìm kiếm, vì nếu một mẫu dãy không phải là mẫu dãy thường xuyên thì tất cả các mẫu dãy cha của nó đều sẽ có độ hỗ trợ nhỏ hơn ngưỡng tối thiểu nghĩa là không phải là mẫu dãy thường xuyên Ví dụ, với cơ sở dữ liệu tại Bảng 1.1 và ngưỡng tối

thiểu minsup =2, ta có dãy <c,g> có độ hỗ trợ là 1 là một mẫu dãy không thường xuyên Tất cả các dãy cha của nó ví dụ như <c,g,e> đều không phải là mẫu dãy

thường xuyên Tính chất đóng xuống do đó có thể làm giảm đáng kể không gian tìm kiếm của các mẫu dãy

1.3.1 Thuật toán GSP:

Mỗi thuật toán sử dụng các chiến lược và cấu trúc dữ liệu khác nhau để tối

ưu các bước xử lý Thuật toán đầu tiên được đề xuất là AprioriAll [2] Nhóm tác giả sau đó phát triển phiên bản tối ưu hơn gọi là GSP [3] Hai thuật toán này được lấy cảm hứng từ thuật toán Apriori [1] khai phá mẫu dãy thường xuyên Sau đây là giả thuật của thuật toán GSP:

Input: Một CSDL dãy SDB, ngưỡng hỗ trợ tối thiểu minsup

Output: Tập các mẫu dãy thường xuyên

Start

1 Gọi L 1 là tập các mẫu dãy thường xuyên 1 phần tử

2 Gọi L là tập tất cả các mẫu dãy thường xuyên:

𝐿 = ⋃ 𝐿𝑘𝑘

Trang 18

Gọi Ck là tập các mẫu dãy độ dài k, khởi tạo 𝐶𝑘 = ∅;

Sinh các mẫu dãy độ dài k, nạp vào C k;

Quét SDB để tính support của các mẫu dãy α trong Ck.;

If (support(a) ≥ minsup) then

Ví dụ, với cơ sở dữ liệu trong Bảng 1.1 và ngưỡng hỗ trợ minsup =2 Các mẫu dãy thường xuyên độ dài 1 là <a>, <b>, <c>, <e>, <f>, <g>

Sau đó GSP sử dụng các mẫu dãy độ dài k để sinh ra tất cả các mẫu dãy độ dài k+1 Mẫu dãy độ dài k+1 được sinh ra bằng cách ghép các mẫu dãy độ dài

k Trở lại ví dụ trên, các mẫu dãy độ dài 2 được sinh ra là <ab>, <ac>, <ae>,

Trang 19

12

<af>, <ag>, <ba>, <bc>, <be>, <bf>, <bg>…<(ab)>, <(ac)>, <(ae)>,

…<(fg)>

Sau khi sinh ra các ứng viên, GSP sẽ xác định xem một mẫu dãy ứng viên

có phải là mẫu dãy thường xuyên không (có độ hỗ trợ không nhỏ hơn minsup) Việc này được thực hiện bằng 2 bước Đầu tiên, với một mẫu dãy ứng viên s a

độ dài k, GSP sẽ kiểm tra tất cả cá mẫu dãy con độ dài k-1 của nó Nếu có một mẫu dãy con không phải là mẫu dãy thường xuyên thì s a không phải là mẫu dãy

thường xuyên Nếu không thì GSP sẽ quét CSDL để tính độ hỗ trợ của s a GSP bắt đầu với các mẫu dãy độ dài 1, sau đó sinh ra các mẫu dãy ứng viên độ dài

2, 3, 4 và hơn nữa cho tới khi không có mẫu dãy nào có thể được sinh ra Các bước sinh mẫu dãy ứng viên của thuật toán GSP được thể hiện trong Hình 1.1 Các bước sinh mẫu dãy của thuật toán GSPHình 1.1

<a> <b> <c> <d> <e> <f> <g>

<aa> <ab> <ac> <ae> <af> <ba> <bb> <ff> <(ab)> <(fg)>

<aab> <abf> <aac>

Trang 20

13

Thuật toán GSP có một số hạn chế sau:

- Quét CSDL nhiều lần: Một trong những vấn đề chính của GSP là phải quét CSDL nhiều lần để tính độ hỗ trợ của ứng viên Việc này rất tốn kém về mặt tài nguyên nếu CSDL lớn

- Sinh ra các ứng viên không tồn tại: Một vấn đề khác là GSP có thể sinh

ra rất nhiều ứng viên không có trong CSDL Nguyên nhân là do GSP sinh ứng viên bằng cách ghép các mẫu dãy nhỏ hơn mà không tìm trong

CSDL Ví dụ, mẫu dãy <aab> không có trong CSDL Bảng 1.1 nhưng

vẫn được GSP sinh ra và xem xét

- Duy trì các ứng viên trong bộ nhớ: Một vấn đề nghiêm trọng nữa của GPS là vấn đề điển hình của các thuật toán tìm kiếm theo chiều rộng

Trong mọi thời điểm, cần phải lưu tất cả các mẫu dãy độ dài k trong bộ nhớ để có thể sinh ra các mẫu dãy độ dài k+1 Việc này sẽ tốn rất nhiều

bộ nhớ

1.3.2 Thuật toán PrefixSpan:

Để giải quyết các vấn đề trên, một số thuật toán được phát triển theo phương pháp tăng trưởng mẫu dãy sử dụng tìm kiếm theo chiều sâu Phương pháp tăng trưởng mẫu dãy tránh được việc sinh ra và kiểm tra các mẫu dãy không tồn tại bằng cách quét đệ quy CSDL để sinh ứng viên Thuật toán phổ biến nhất sử dụng phương pháp tăng trưởng mẫu dãy là PrefixSpan [6], được phát triển dựa trên thuật toán FPGrowth khai phá mẫu dãy thường xuyên

a) Một số định nghĩa:

Định nghĩa 3.4 Tiền tố:

Giả sử các mục dữ liệu trong các tập mục thuộc dãy được sắp xếp theo thứ

tự chữ cái Cho một dãy  = < e1e2 …en>, một dãy =<e’1e’2 …e’m> (m≤n) được gọi là tiền tố của  nếu và chỉ nếu:

Trang 21

Định nghĩa 3.6 Cơ sở dữ liệu chiếu:

Gọi  là một mẫu dãy thường xuyên trong CSDL dãy SDB CSDL chiếu

trong SDB với tiền tố 

Định nghĩa 3.7 Độ hỗ trợ trong CSDL chiếu:

Cho một dãy  = <e 1 e 2 …e n> là một mẫu dãy thường xuyên của một CSDL dãy SDB và  là dãy với tiền tố  Độ hỗ trợ của  trong CSDL chiếu S| ký hiệu là 𝑠𝑢𝑝𝑝𝑜𝑟𝑡𝑆|𝛼(𝛽) là số lượng các dãy γ trong S| có chứa  nghĩa là 𝛽 ⊆

𝛼 𝛾

Trang 22

15

b) Mô tả thuật toán:

Thuật toán PrefixSpan được mô tả như sau: Đầu tiên, PrefixSpan quét CSDL ban đầu để tìm tất cả các mẫu dãy thường xuyên độ dài 1 và độ hỗ trợ của chúng Sau đó, PrefixSpan sử dụng các mẫu dãy thường xuyên này để phát

triển tiếp thành các mẫu dãy độ dài lớn hơn Với mỗi mẫu dãy thường xuyên s a

độ dài k, PrefixSpan xây dựng một cơ sở dữ liệu chiếu của s a Sau đó quét CSDL chiếu này để tính độ hỗ trợ của các mục trong CSDL chiếu và tìm các

mục có thể ghép được với s a để tạo thành mẫu dãy với độ dài k+1 Quá trình

này được thực hiện đệ quy theo phương pháp tìm kiếm chiều sâu để tìm tất cả các mẫu dãy thường xuyên

Giả thuật của PrefixSpan như sau:

Input: CSDL dãy : SDB, Ngưỡng hỗ trợ : min_sup

Output: Tập các mẫu dãy thường xuyên

1 Duyệt SDB|α, tìm các mục thường xuyên  sao cho:

(a)  có thể được nối vào 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 nhóm vào với α để tạo thành một mẫu dãy thường xuyên

Trang 23

End

Chúng ta sẽ minh họa thuật toán PrefixSpan bằng một ví dụ nhỏ sau Giả

sử có một CSDL dãy SDB như trong Bảng 1.1 với ngưỡng hỗ trợ minsup=2

Thuật toán PrefixSpan đầu tiên quét CSDL để tìm ra các mẫu dãy thường xuyên

độ dài 1 là <a>, <b>, <c>, <d>, <e>, <f>, <g> và in ra các mẫu dãy này

Tiếp theo PrefixSpan quét CSDL SDB để xây dựng CSDL chiếu của mẫu

dãy <a> ký hiệu S| a như Bảng 1.2 CSDL chiếu của <a> là tập hợp tất cả các mẫu dãy trong SDB có chứa mẫu dãy <a> đã bỏ đi tiền tố a Sau đó, để tìm các mẫu dãy thường xuyên có tiền tố <a> có độ dài 2, thuật toán PrefixSpan sẽ đọc

S| a và đếm độ hỗ trợ của tất cả các mục trong S| a có thể được ghép với <a> Ví

dụ các mẫu dãy độ dài 2 với tiền tố <a> có thể được sinh ra là: <(ab)>:2,

<(ad)>:1, <aa>:1, <ab>:3, <ac>:2, <ae>:3, <af>:4 và <ag>:2 trong đó các số

sau dấu hai chấm (:) chỉ độ hỗ trợ của mẫu dãy PrefixSpan sau đó in ra các mẫu dãy thường xuyên độ dài 2 (các mẫu dãy có độ hỗ trợ lớn hơn hoặc bằng

2) bao gồm: <(ab)>, <ab>, <ac>, <ae>, <af> và <ag>

Tiếp theo, PrefixSpan tiếp tục quá trình tìm kiếm sâu của mình để tìm ra

các mẫu dãy thường xuyên có tiền tố <(ab)> PrefixSpan sẽ quét CSDL chiếu

Trang 24

17

S| a để xây dựng CSDL chiếu S| (ab) CSDL này được mô tả ở Bảng 1.3 Sau khi

xây dựng S| (ab), PrefixSpan sẽ tiếp tục tính độ hỗ trợ của các mục có thể ghép

được với mẫu dãy <(ab)> Quá trình này sẽ tiếp tục theo một cách tương tự

(tuân theo tìm kiếm chiều sâu) cho tới khi tìm ra tất cả các mẫu dãy thường xuyên

SID Dãy dữ liệu

1 <(~b)c(fg)g(e)>

2 <(~d)cb(abef)>

3 <b(fg)e>

Bảng 1.2 Cơ sở dữ liệu chiếu với tiền tố <a>

SID Dãy dữ liệu

1 <c(fg)g(e)>

2 <(~ef)>

Bảng 1.3 Cơ sở dữ liệu chiếu với tiền tố <(ab)>

Ưu điểm của thuật toán PrefixSpan là nó chỉ tìm kiếm các mẫu dãy xuất hiện trong CSDL dãy Do đó giảm được các bước sinh ứng viên và quét CSDL không cần thiết như trong thuật toán GSP

1.4 Mở rộng bài toán khai phá mẫu dãy thường xuyên

Bài toán khai phá mẫu dãy thường xuyên có thể được ứng dụng trong rất nhiều trường hợp Tuy nhiên, trong một số trường hợp nó cũng có một số hạn chế Để khắc phục các hạn chế này, một vài hướng mở rộng hoặc biến thể của bài toán khai phá mẫu dãy thường xuyên đã được đề xuất

Một trong những hạn chế của bài toán cổ điển là sự bùng nổ số lượng các mẫu dãy thường xuyên được tìm ra trong CSDL dãy khi giảm ngưỡng hỗ trợ

Trang 25

18

tối thiểu Việc tìm thấy quá nhiều mẫu dãy là một vấn đề vì người dùng thường không có thời gian để phân tích một lượng lớn các mẫu dãy Hơn nữa, càng nhiều mẫu dãy tìm ra, hiệu suất của thuật toán càng giảm về mặt thời gian và

bộ nhớ Để giải quyết vấn đề này, cần các thuật toán để tìm kiếm các thể hiện thu gọn của mẫu dãy thường xuyên thay vì tìm tất cả chúng Có 3 thể hiện thu gọn chính của mẫu dãy thường xuyên là mẫu dãy đóng (closed sequential patterns) [10, 11, 12, 13], mẫu dãy tối đa (maximal sequential patterns) [14, 15,

16, 17, 18, 19] và mẫu dãy sinh (generator sequential patterns) [20, 21, 22, 23, 24]

Các mục trong bài toán khai phá mẫu dãy thường xuyên được coi là có giá trị như nhau Tuy nhiên trên thực tế mỗi mục lại có giá trị khác nhau Ví dụ các mặt hàng trong siêu thị có giá bán và lợi nhuận khác nhau, nếu coi giá trị của một mặt hàng là lợi nhuận mà nó mang lại thì mỗi mặt hàng sẽ có một giá trị khác nhau Vì vậy, một trong các hướng mở rộng của bài toán khai phá mẫu dãy thường xuyên là đưa thêm trọng số vào trong các mục để thể hiện giá trị của mục đó [25, 26, 12] Trọng số của một mục thường được cho trong khoảng [0,1] được gán với từng mục để thể hiện mức độ quan trọng (giá trị) của mục Khai phá mẫu dãy lợi ích cao [27, 28, 29, 30] là một mở rộng của khai phá mẫu dãy thường xuyên với trọng số Trong bài toán này, không chỉ trọng số của mục được xem xét mà số lượng của mục trong dãy cũng được tính tới Mục tiêu của bài toán khai phá mẫu dãy lợi ích cao là tìm các mẫu dãy có lợi ích không nhỏ hơn ngưỡng lợi ích tối thiểu Lợi ích của một mẫu dãy trong CSDL là tổng các lợi ích lớn nhất mà nó có được trong từng dãy dữ liệu của CSDL đó Độ đo lợi ích (utility) của một mẫu dãy không có tính chất đơn điệu cũng không có tính phản đơn điệu như độ đo hỗ trợ (support) trong khai phá mẫu dãy thường xuyên Vì vậy không thể sử dụng độ đo lợi ích để tỉa trực tiếp các mẫu dãy ứng viên trong không gian tìm kiếm Các thuật toán khai phá mẫu dãy lợi ích cao

Trang 26

19

do đó phải đề xuất một độ đo mới: ngưỡng cận trên (upper-bound) Nhóm nghiên cứu của Ahmed và cộng sự [27] là nhóm đầu tiên đề xuất bài toán khai phá mẫu dãy lợi ích cao Trong công trình của mình, nhóm đề xuất khái niệm sequence-weighted utility (SWU) dùng làm ngưỡng cận trên để tỉa các ứng viên trong bài toán khai phá mẫu dãy lợi ích cao SWU của một mẫu dãy được định nghĩa là tổng lợi ích của các dãy có chứa mẫu dãy đó trong CSDL Chương 2

sẽ trình bày cụ thể hơn về bài toán khai phá mẫu dãy lợi ích cao và một số thuật toán khai phá mẫu dãy lợi ích cao

Một trong những hướng mở rộng khác của khai phá mẫu dãy thường xuyên

là đưa thêm các ràng buộc vào trong bài toán Một ràng buộc là một tập các chỉ tiêu do người dùng đưa vào để xác định loại mẫu dãy cần tìm một cách chính xác hơn Một trong những thuật toán đầu tiên tích hợp các ràng buộc chính là thuật toán GSP Thuật toán GSP đề xuất ràng buộc khoảng thời gian lớn nhất

và nhỏ nhất giữa hai tập mục liền kề trong một mẫu dãy (gap constraints) cũng như khoảng thời gian lớn nhất giữa tập mục đầu và cuối trong một mẫu dãy (duration constraint) Ràng buộc thời gian cũng được đề xuất trong thuật toán của Hirate và Yamana [31] Trong thuật toán của mình, 2 tác giả đề xuất 4 loại ràng buộc thời gian và đưa thêm giá trị thời gian vào trong mẫu dãy Từ đó mở rộng bài toán khai phá mẫu dãy thường xuyên thành bài toán khai phá mẫu dãy thường xuyên với khoảng cách thời gian

Một số mở rộng khác của khai phá mẫu dãy thường xuyên bao gồm: khai phá mẫu dãy không chắc chắn, khai phá mẫu dãy thường xuyên mờ…

1.5 Kết luận chương 1

Chương 1 giới thiệu khái quát về bài toán khai phá mẫu dãy thường xuyên

và một số hướng mở rộng của bài toán để thỏa mãn các trường hợp khác nhau trong thực tế Ngoài ra, chương này cũng giới thiệu 2 thuật toán kinh điển của khai phá mẫu dãy thường xuyên là GSP và PrefixSpan Thuật toán GSP áp dụng

Trang 27

20

phương pháp sinh mẫu dãy kiểu Apriori có hiệu năng không cao do phải quét CSDL nhiều lần và sinh ra các mẫu dãy không tồn tại Thuật toán PrefixSpan

áp dụng phương pháp tăng trưởng mẫu dãy nên không phải quét CSDL nhiều

lần và không sinh ra các mẫu dãy không tồn tại

Trang 28

1 sản phẩm hoặc nhiều sản phẩm Bên cạnh đó, khai phá mẫu dãy thường xuyên giả sử rằng tất cả các mục đều có giá trị như nhau Trên thực tế thì lại khác, mỗi mục sẽ có một giá trị khác nhau, giá trị đó có thể là lợi nhuận hoặc giá bán của

1 sản phẩm Bài toán HUSP xem xét tới tất cả các yếu tố đó

Mục tiêu của HUSP là tìm ra tất cả các mẫu dãy có lợi ích cao trong CSDL

Để thể hiện lợi ích của một mẫu dãy trong CSDL, mỗi mục a trong CSDL được

gán một giá trị số lượng q và giá trị trọng số p thể hiện mức độ quan trọng của

mục đó Giá trị lợi ích của một mục được tính bằng tích của số lượng và trọng

số của nó Lợi ích của một tập mục bằng tổng lợi ích của các mục trong tập mục đó Lợi ích của một mẫu dãy được xác định bằng một hàm lợi ích

Có thể coi bài toán khai phá mẫu dãy thường xuyên là một trường hợp đặc biệt của khai phá mẫu dãy lợi ích cao với trọng số của một mục a bất kỳ bằng

1 và giá trị số lượng bằng 1 hoặc 0

Bài toán khai phá mẫu dãy lợi ích cao là một bài toán khó Các thách thức của bài toán HUSPM bao gồm:

Trang 29

22

- Đầu tiên, trong một mẫu dãy, thứ tự mỗi mục là xác định Nghĩa là

<abc> và <acb> là 2 mẫu dãy khác nhau Do vậy số lượng các mẫu

dãy có thể sinh ra trong HUSPM là rất lớn

- Thứ hai, các mục trong một mẫu dãy có thể xuất hiện nhiều lần, vì vậy lợi ích của một mẫu dãy có thể tính theo nhiều cách khác nhau

- Thứ ba, việc tính độ đo lợi ích trong HUSPM tốn thời gian hơn tính

độ hỗ trợ (tần xuất)

- Thứ tư, trong SPM, tính chất đóng xuống được sử dụng để tỉa bớt không gian tìm kiếm rất hiệu quả Tính chất này chỉ ra rằng nếu một dãy là không thường xuyên (có độ hỗ trợ nhỏ hơn một ngưỡng hỗ trợ tối thiểu minsup) thì tất cả các mẫu dãy cha của nó cũng là dãy không thường xuyên Tuy nhiên, trong khai phá mẫu dãy lợi ích cao, tính chất này không còn đúng nữa Một mẫu dãy có thể không là mẫu dãy lợi ích cao nhưng mẫu dãy cha của nó vẫn có thể là mẫu dãy lợi ích cao

Bài toán khai phá mẫu dãy lợi ích cao lần đầu tiên được đề xuất bởi Ahmed

và cộng sự [27] Ahmed định nghĩa hai loại lợi ích của một mục: lợi ích trong (thể hiện số lượng của mục) và lợi ích ngoài (thể hiện độ quan trọng của mục) Hai thuật toán cũng được đề xuất: UtilityLevel (UL) sử dụng phương pháp tiếp cận Apriori và UtilitySpan (US) sử dụng phương pháp tăng trưởng mẫu dãy dựa trên thuật toán PrefixSpan [6] Trong công trình của Ahmed, lợi ích của một mẫu dãy được tính bằng tổng của các lần xuất hiện của mẫu dãy đó trong dãy dữ liệu Cách tính này khiến các mẫu dãy tìm ra có thể thể hiện hành vi mua sắm liên tục của một khách hàng hơn là hành vi chung của các khách hàng khác nhau Để tránh tính huống như vậy và cũng để đơn giản hóa hàm tính lợi ích, các nghiên cứu sau này sử dụng cách tính lợi ích cao là giá trị lớn nhất trong các lần xuất hiện của mẫu dãy

Trang 30

23

Năm 2012, Yin và cộng sự đề xuất một framework để khai phá lợi ích cao

và giới thiệu thuật toán Uspan [30] Thuật toán Uspan sử dụng ngưỡng cận trên SWU (sequence weight utility) để tỉa ứng viên và 2 cấu trúc dữ liệu LQS-tree

và ma trận lợi ích (Utility Matrix) để biểu diễn dữ liệu Vào năm 2014, Lan và cộng sự đề xuất thuật toán PHUS [29], một thuật toán dựa trên PrefixSpan Thuật toán PHUS cũng sử dụng SWU làm ngưỡng cận trên để tỉa ứng viên và cấu trúc bảng lợi ích thời gian để biểu diễn dữ liệu Ngoài ra còn có một số thuật toán khác cũng được đề xuất để tăng hiệu năng giải thuật như HuspExt [28], HUS-Span [32] hoặc tìm kiếm Top-k mẫu dãy lợi ích cao như TKHUS-Span [32], TUS [33]

Các phần tiếp theo sẽ trình bày bài toán HUSP và các thuật toán US, UL [27] cũng như PHUS [29] làm cơ sở cho các thuật toán trong chương 3

2.2 Bài toán khai phá mẫu dãy lợi ích cao

Bài toán khai phá mẫu dãy lợi ích cao có mục tiêu là tìm ra tất cả các mẫu dãy lợi ích cao trong CSDL dãy định lượng (QSDB)

ID Dãy dữ liệu với lợi ích trong Lợi ích

S1 <a[3] ><a[2] b[6] d[2] ><f[1] ><a[5] ><d[1] > 130

S2 <e[3] ><a[2] b[5] ><d[1] ><c[4] > 85

S3 <c[1] f[2] ><b[3] ><d[1] e[4] > 74

S4 <a[2] ><b[7] d[4] ><a[6] b[3] ><e[5] > 180

S5 <d[1] f[3] ><c[5] ><g[2] > 67

S6 <d[2] ><e[1] ><a[7] b[8] ><d[3] ><b[6] ><e[3] > 207

Bảng 2.1 Cơ sở dữ liệu dãy định lượng QSDB

Trang 31

tất cả các mục trong một tập mục được sắp xếp theo thứ tự từ điển Một dãy S

là một danh sách có thứ tự của các tập mục, mỗi tập mục xuất hiện trong dãy

được gọi là một thành phần của dãy Độ dài của dãy S là số mục xuất hiện trong

S Cơ sở dữ liệu định lượng QSDB là một danh sách các dãy S i , mỗi dãy S i trong QSDB được gọi là một dãy dữ liệu đầu vào S i có thể biểu diễn chuỗi các giao dịch của một khách hàng trong một siêu thị Bảng 2.1 là một ví dụ về CSDL định lượng với lợi ích trong Bảng 2.2 là bảng lợi ích ngoài của các mục trong QSDB

Định nghĩa 2.1 Lợi ích trong và lợi ích ngoài

Trong một QSDB, mỗi mục a được gán một giá trị thực dương 𝑝 ∈ 𝑅+ thể hiện mức độ quan trọng của mục đó gọi là lợi ích ngoài Một số nguyên dương

Trang 32

25

q được gán với mỗi lần xuất hiện của mục a trong QSDB thể hiện số lượng của

a tại lần xuất hiện đó Ví dụ trong CSDL tại Bảng 2.1, q(b,S 1 ) = 6 và p(b) = 7 Trong một dãy dữ liệu S i, một mục có thể xuất hiện nhiều lần với nhiều giá

trị lợi ích trong khác nhau Khi đó, lợi ích của mục đó trong dãy dữ liệu S i sẽ

được tính bằng lợi ích lớn nhất trong các lần xuất hiện của mục đó trong dãy

Ví dụ, trong bảng Bảng 2.1, mục a xuất hiện 3 lần trong dãy S 1 với các giá

trị lợi ích trong lần lượt là 3, 2 và 5 Khi đó, lợi ích trong q(a,S 1) = 5

Định nghĩa 2.2 Lợi ích của một mục trong dãy

Lợi ích của một mục a j trong dãy S i ký hiệu là su(a j , S i) và được tính bằng

công thức: su(a j , S i ) = q(a j , S i ) * p(a j ) Vì mục a j có thể xuất hiện nhiều lần trong

dãy S i nên ở đây lợi ích của mục a j được tính bằng giá trị lớn nhất của các lợi

ích của mục a j trong S i

Ví dụ 2: trong dãy S 1 , mục a xuất hiện 3 lần, lợi ích của mục a trong S 1 được tính bằng giá trị của lần xuất hiện lớn nhất Do đó, lợi ích của a trong S 1

là 5*5=25

Định nghĩa 2.3 Lợi ích của một mẫu dãy trong dãy dữ liệu đầu vào

Cho 𝛼 = 〈𝑋1, 𝑋2, … , 𝑋𝑛〉 là một mẫu dãy có độ dài n, với 𝛼  𝑆𝑖 Lợi ích

của một mẫu dãy α trong S i , ký hiệu su(α, S i), được tính bằng công thức:

𝑠𝑢(α, 𝑆𝑖) = max { ∑ 𝑠𝑢(𝑎𝑗, 𝑆𝑖)

𝑎𝑗∈𝛼

Ví dụ 3: mẫu dãy <ad> có 4 lần xuất hiện trong S1 , lần lượt là a[3]d[2],

a[3]d[1], a[2]d[1], a[5]d[1] Giá trị lợi ích của chúng lần lượt là 3*5+2*10=35

và 3*5+1*10=25; 2*5+1*10= 30; 5*5+1*10=35 Vậy lợi ích của mẫu dãy 〈a,d〉

trong S 1 là 𝑠𝑢(𝑎𝑑, 𝑆1) = 35

Trang 33

26

Cần lưu ý là cách tính lợi ích của Ahmed và cộng sự [27] đề xuất có khác biệt: nếu mẫu dãy đó xuất hiện nhiều lần phân biệt trong 1 dãy đầu vào thì lợi ích của mẫu dãy đó bằng tổng các lần xuất hiện của mẫu dãy Nếu mẫu dãy xuất hiện nhiều lần nhưng các lần xuất hiện đan xen nhau (có nhiều hơn 1 phần

tử trùng nhau giữa 2 lần xuất hiện) thì lợi ích mẫu dãy bằng tổng lợi ích của các

lần xuất hiện lớn nhất Ví dụ: mẫu dãy <ad> trong S 1 có 4 lần xuất hiện, trong

đó các lần xuất hiện a[3]d[2] và a[3]d[1] đan xen nhau, a[2]d[1] và a[5]d[1] cũng đan xen Lợi ích của <ad> sẽ tính bằng tổng lợi ích của các lần xuất hiện lớn nhất trong các lần đan xen Trong trường hợp này su(<ad>) = 3*5+2*10 + 5*3+1*10 = 60

Cách tính này khá phức tạp do phải xác định được các lần xuất hiện của mẫu dãy là phân biệt hay đan xen nhau Và cũng như đã phân tích ở trên, cách tính này không phù hợp trong thực tế, do vậy các nghiên cứu về sau đều sử dụng cách tính lợi ích dựa vào giá trị lớn nhất

Định nghĩa 2.4 Lợi ích của một dãy đầu vào

Lợi ích của một dãy đầu vào S i được tính bằng tổng tất cả các lợi ích của

các mục trong dãy S i, nghĩa là bằng:

𝑠𝑢(𝑆𝑖) = ∑ 𝑠𝑢(𝑎𝑗,𝑆𝑖)

𝑎𝑗∈𝑆𝑖

(2.2)

Định nghĩa 2.5 Lợi ích của một mẫu dãy trong CSDL

Lợi ích của một mẫu dãy α trong toàn bộ CSDL QSDB ký hiệu là su(α,

Trang 34

27

Định nghĩa 2.6 Lợi ích của một CSDL định lượng

Lợi ích của một CSDL định lượng QSDB là tổng các lợi ích của các dãy

đầu vào S i trong QSDB và được định nghĩa bởi công thức:

𝑠𝑢(𝑄𝑆𝐷𝐵) = ∑ 𝑠𝑢(𝑆𝑖)

𝑆𝑖∈𝑄𝑆𝐷𝐵

(2.4)

Định nghĩa 2.7 Mẫu dãy lợi ích cao

Giả sử có một CSDL định lượng QSDB và một ngưỡng lợi ích tối thiểu

minUtil, mỗi mục a trong QSDB được gán một giá trị lợi ích trong q và lợi ích

ngoài p Một mẫu dãy α được gọi là mẫu dãy lợi ích cao nếu lợi ích của α trong QSDB lớn hơn hoặc bằng minUtil, nghĩa là:

chưa chắc đã là mẫu dãy lợi ích cao Trở lại ví dụ trên, mẫu dãy a không phải

là một mẫu dãy lợi ích cao vì su(a) = 100 <221 nhưng mẫu dãy cha của nó là

a(bd)a lại là mẫu dãy lợi ích cao Vì vậy tính chất đóng xuống không được thỏa

mãn

Để duy trì tính chất đóng xuống, Ahmed và cộng sự đã định nghĩa một độ

đo gọi là sequence-weighted utility (SWU)

Định nghĩa 2.8 Giá trị SWU của một mẫu dãy

Sequence-weighted utility (SWU) của một mẫu dãy α trong QSDB là tổng tất cả các lợi ích của các mẫu dãy đầu vào có chứa α trong QSDB Nghĩa là:

Trang 35

28

𝛼  𝑆𝑖 ∧ 𝑆𝑖∈𝑄𝑆𝐷𝐵

(2.5)

Giá trị swu đóng vai trò là ngưỡng cận trên của hàm lợi ích và sử dụng để

tỉa bớt ứng viên trong không gian tìm kiếm

Định nghĩa 2.9 Mẫu dãy ứng viên lợi ích cao

Một mẫu dãy α được gọi là mẫu dãy ứng viên lợi ích cao nếu giá trị swu

của nó lớn hơn ngưỡng hỗ trợ tối thiểu Nghĩa là

Độ đo swu thỏa mãn tính chất đóng xuống, nghĩa là nếu 1 mẫu dãy α là mẫu

dãy ứng viên thì tất cả các mẫu dãy con của nó cũng phải là mẫu dãy ứng viên Swu được sử dụng để tỉa bớt không gian tìm kiếm trong các thuật toán khai phá mẫu dãy lợi ích cao Nếu một mẫu dãy có swu nhỏ hơn minUtil thì ta có thể loại bỏ nó cùng tất cả các mẫu dãy cha của nó khỏi không gian tìm kiếm

2.3 Thuật toán UL, US

Để giải quyết bài toán khai phá mẫu dãy lợi ích cao, Ahdmed [27] và cộng

sự đề xuất hai thuật toán UtilityLevel (UL) dựa trên Apriori và UtilitySpan (US) dựa trên phương pháp tăng trưởng mẫu dãy của thuật toán PrefixSpan

2.3.1 Thuật toán UL:

Thuật toán UL sử dụng phương pháp sinh mẫu dãy ứng viên theo tiếp cận Apriori UL bao gồm 2 pha: đầu tiên, UL sinh các mẫu dãy rồi kiểm tra xem có

mẫu dãy nào là ứng viên lợi ích cao không (có giá trị swu lớn hơn hoặc bằng

minUtil), sau đó tiếp tục sinh ra các mẫu ứng viên khác Trong pha thứ 2, UL

tính lại lợi ích thực của các mẫu ứng viên lợi ích cao tìm được trong pha 1 để tìm ra các mẫu lợi ích cao thực sự

Thuật toán UL mô tả như sau:

Trang 36

29

Input: Một CSDL dãy định lượng QSDB, ngưỡng lợi ích tối thiểu minUtil Output: Tập các mẫu dãy lợi ích cao

Start

1 Gọi C 1 là tập các mẫu dãy 1 ứng viên phần tử

2 Gọi F 1 là tập các mẫu dãy ứng viên lợi ích cao 1 phần tử

3 Gọi L là tập tất cả các mẫu dãy ứng viên lợi ích cao:

𝐿 = ⋃ 𝐹𝑘𝑘

4 Quét QSDB để tính giá trị swu của tất cả các mẫu dãy a trong QSDB

5 If (swu(a) ≥ minUtil) then

Trang 37

30

Độ phức tạp thuật toán UL: Thuật toán UL dùng phương pháp sinh ứng viên kiểu Apriori nên độ phức tạp của UL cũng giống với Apriori là độ phức tạp hàm mũ O(2N) trong đó N là tổng số mục trong CSDL

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

Cho CSDL dãy định lượng QSDB như trong Bảng 2.1 và ngưỡng lợi ích minUtil = 230 Thuật toán UL thực hiện như sau: Đầu tiên quét QSDB để tính giá trị swu của tất cả các mục trong QSDB Các giá trị này lần lượt là:

Swu(a) = 602, swu(b) = 676, swu(c) = 226, swu(d) = 743, swu(e) = 546, swu(f) = 271, swu(g) = 67

Mục c và g có swu lần lượt là 226 và 67 nhỏ hơn minUtil nên <c>, <g>

không là mẫu dãy ứng viên lợi ích cao Do vậy, theo tính chất đóng xuống, các

mẫu dãy cha của c và g cũng không là ứng viên lợi ích cao Nên c, g bị loại Tập các mẫu dãy ứng viên lợi ích cao 1 phần tử là {a, b, d, e, f}

Tiếp tục sinh các ứng viên độ dài 2 từ các mẫu dãy ứng viên lợi ích cao 1 phần tử bằng cách ghép các ứng viên 1 phần tử với nhau Một số mẫu dãy ứng

viên 2 phần tử là: <aa>, <ab>, <ad>, <ae>, <af>, <(ab)>, <(ad)>, <(ae)>,

<(ae)>, <(af)>, <ba>, <bb>, <bc>, <bd>, <be>, <bf>…

Quét CSDL QSDB để tính giá trị swu của các mẫu dãy ứng viên 2 phần tử

và tìm ra các mẫu dãy là ứng viên lợi ích cao (có swu > minUtil) Một số ứng viên không xuất hiện trong QSDB thì sẽ bị loại luôn (ví dụ <(ae)>, <(af)> ) Các mẫu dãy ứng viên lợi ích cao 2 phần tử là: <aa>: 310, <ab>:517,

<ad>:602, <ae>: 387, <ba>:310, <bb>:387…

Các mẫu dãy này lại được sử dụng để sinh các ứng viên 3 phần tử CSDL

QSDB được quét lần nữa để tính swu của các ứng viên và tìm ra các ứng viên

lợi ích cao Quá trình như vậy tiếp tục diễn ra đến khi không tìm thấy ứng viên nào nữa

Trang 38

31

Quá trình sinh ứng viên của thuật toán UL được minh họa trong Bảng 2.3

Level Mẫu dãy ứng viên Mẫu dãy ứng viên lợi ích cao và

giá trị swu của chúng

aba: 310, abe: 387, ada: 310, adb:

387, ade: 387, a(ab): 310, a(bd):

310, bbe: 387, dad: 337, dae: 387,

dbe: 387, d(ab): 387, ead: 292, ebd: 292, e(ab): 292, (ab)d: 422, (ab)e: 387, (bd)a: 310

4 adbe, a(bd)a, d(ab)e, e(ab)d adbe: 387, a(bd)a: 310, d(ab)e:

387, e(ab)d: 292

Bảng 2.3 Sinh mẫu dãy ứng viên trong thuật toán UL

Sau khi tất cả các ứng viên mẫu dãy lợi ích cao được tìm thấy, quét QSDB

lần nữa, tính giá trị lợi ích su của từng ứng viên và tìm ra các mẫu dãy lợi ích

cao thực sự

Các mẫu dãy lợi ích cao tìm được là: ={<(ab)>: 239, <(ab)d>: 238, <a(bd)a>:

231, <d(ab)e>: 250}

Trang 39

32

2.3.2 Thuật toán US:

Thuật toán UL sử dụng phương pháp sinh ứng viên kiểu Apriori nên cũng

có những nhược điểm của phương pháp Apriori:

- UL sinh ra các mẫu ứng viên không tồn tại trong QSDB

- UL phải quét CSDL nhiều lần

Như trong ví dụ trên, UL sinh ra các ứng viên không tồn tại trong QSDB

như: <(ae)>, <(af)>, <(be)>,<(bf)>…UL cũng mất 5 lần quét CSDL để tính

swu của các ứng viên Một cách tổng quát, để tạo ra ứng viên độ dài N thì UL cần N+1 lần quét CSDL

Thuật toán US được phát triển để giải quyết các nhược điểm đó US là thuật toán được phát triển dựa trên phương pháp tăng trưởng mẫu dãy của thuật toán PrefixSpan US cũng bao gồm 2 pha như UL: pha 1 sinh ứng viên, pha 2 tính lại lợi ích và tìm ra mẫu dãy lợi ích cao thật sự Sự khác biệt đến từ giải thuật sinh ứng viên trong pha 1 Đầu tiên, US quét QSDB để tìm ra các mẫu dãy ứng viên lợi ích cao 1 phần tử Sau đó, US xây dựng các CSDL chiếu của các mẫu dãy ứng viên lợi ích cao 1 phần tử Tiếp theo, US thực hiện thủ tục đệ quy sinh các ứng viên với độ dài tăng dần theo phương pháp PrefixSpan

Thuật toán US mô tả như sau:

Input: CSDL dãy định lượng QSDB, ngưỡng lợi ích tối thiểu minUtil Output: Tập tất cả các mẫu dãy lợi ích cao

Start

1 Đặt L là tập tất cả các mẫu dãy ứng viên lợi ích cao

2 L = NULL

3 Gọi thủ tục US(NULL, 0, QSDB)

Trang 40

Procedure US(α, len, QSDB| α)

Input: α là một mẫu dãy ứng viên lợi ích cao, len là độ dài của α, QSDB| α

là CSDL chiếu với tiền tố α, nếu α = NULL thì QSDB| α = QSDB

Output: Các mẫu dãy ứng viên lợi ích cao với tiền tố α

Start

1 Quét QSDB| α lần 1 để tìm ra các mẫu dãy ứng viên lợi ích cao β sao cho:

a β có thể nối với α để tạo thành ứng viên lợi ích cao

b β có thể nhóm vào với phần tử cuối cùng của α để tạo thành một

ứng viên lợi ích cao

2 Với mỗi ứng viên lợi ích cao β

- Ghép β với α để tạo thành mẫu dãy ứng viên lợi ích cao α’

- L = L ⋃ 𝛼’

- Xây dựng CSDL chiếu của α’, ký hiệu QSDB| α’

- Gọi thủ tục US(α’, len+1, QSDB| α’)

End Procedure

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

Giả sử có CSDL dãy định lượng QSDB như trong Bảng 2.1 và ngưỡng lợi ích tối thiểu minUtil = 230

Đầu tiên, US quét QSDB lần 1 để tính giá trị swu của các mục trong QSDB

và tìm các mẫu dãy ứng viên lợi ích cao 1 phần tử Các giá trị này lần lượt là:

Ngày đăng: 07/08/2020, 17:07

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[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 Sách, tạp chí
Tiêu đề: Mining Association Rules between Sets of Items in Large Databases
[2] R. Agrawal, R. Srikant, 1995, "Mining sequential patterns," in Proceedings of the International Conference on Data Engineering (ICDE) Sách, tạp chí
Tiêu đề: Mining sequential patterns
[3] R. Agrawal, R.Srikant, 1996, "Mining sequential patterns: Generallizations and performance improvements," Lecture Notes in Computer Science, vol. 1057, pp. 3-17 Sách, tạp chí
Tiêu đề: Mining sequential patterns: Generallizations and performance improvements
[4] Ayres, J., Gehrke, J., Yiu, T. and Flannick, J, 2002, "Sequential Pattern Mining using Bitmap Representation," in Proc. of ACM SIGKDD’02 Sách, tạp chí
Tiêu đề: Sequential Pattern Mining using Bitmap Representation
[5] Zaki.M, 2000, "SPADE: An Efficient Algorithm for Mining Frequent Sequences," Machine Learning, vol. 40, pp. 31-60, . [6] J. Pei, J. Han, B.M. Asi, H. Pino, 2001, "PrefixSpan: MiningSequential Patterns Efficiently by Prefix-Projected Pattern Growth,"in Proceedings of the Seventeenth International Conference on Data Engineering Sách, tạp chí
Tiêu đề: SPADE: An Efficient Algorithm for Mining Frequent Sequences," Machine Learning, vol. 40, pp. 31-60, . [6] J. Pei, J. Han, B.M. Asi, H. Pino, 2001, "PrefixSpan: Mining Sequential Patterns Efficiently by Prefix-Projected Pattern Growth
[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 Sách, tạp chí
Tiêu đề: bitSPADE: A lattice-based sequential pattern mining algorithm using bitmap representation
[8] K. Gouda, M. Hassaan and M. Zaki, 2010, "Prism: An effective approach for frequent sequence mining via prime-block encoding,"Journal of Computer and System Sciences, vol. 76, p. 88–102, . [9] J. Han, J. Pei, B. Mortazavi-Asl, Q. Chen, U. Dayal and M. Hsu Sách, tạp chí
Tiêu đề: Prism: An effective approach for frequent sequence mining via prime-block encoding
[10] K. Huang, C. Chang, J. Tung and C. Ho, 2006, "COBRA: closed sequential pattern mining using bi-phase reduction approach," in The International Conference on Data Warehousing and Knowledge Discovery, p. 280–291 Sách, tạp chí
Tiêu đề: COBRA: closed sequential pattern mining using bi-phase reduction approach
[11] P. Tzvetkov, X. Yan and J. Han, 2003, "TSP: Mining Top-K Closed Sequential Patterns," ICDM, pp. 347-354 Sách, tạp chí
Tiêu đề: TSP: Mining Top-K Closed Sequential Patterns
[12] 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 Sách, tạp chí
Tiêu đề: Mining weighted closed sequential patterns in large databases
[13] Y. Xifeng, H. Jiawei and R. Afshar, 2003, "CloSpan: Mining Closed Sequential Patterns in Large Data Base," in SIAM International Conference on Data Mining, p. 166–177 Sách, tạp chí
Tiêu đề: CloSpan: Mining Closed Sequential Patterns in Large Data Base
[14] P. Fournier-Viger, C.-W. Wu and V. Tseng, 2013, "Mining Maximal Sequential Patterns without Candidate Maintenance," in The International Conference on Advanced Data Mining and Applications, p. 169–180 Sách, tạp chí
Tiêu đề: Mining Maximal Sequential Patterns without Candidate Maintenance
[15] P. Fournier-Viger, C.-W. Wu, A. Gomariz and V. Tseng, 2014á"VMSP: Efficient vertical mining of maximal sequential patterns," in The Canadian Conference on Artificial Intelligence, p.83–94 Sách, tạp chí
Tiêu đề: VMSP: Efficient vertical mining of maximal sequential patterns
[16] R. Garcia-Hernandez, J. Martanez-Trinidad and J. Carrasco-Ochoa, 2006, "A new algorithm for fast discovery of maximal sequential patterns in a document collection," in The International Conference on Intelligent Text Processing and Computational Linguistics, p.514–523 Sách, tạp chí
Tiêu đề: A new algorithm for fast discovery of maximal sequential patterns in a document collection
[17] E. Guan, X. Chang, Z. Wang and C. Zhou, 2005, "Mining maximal sequential patterns," in The International Conference on Neural Networks and Brain, p. 525–528 Sách, tạp chí
Tiêu đề: Mining maximal sequential patterns
[18] N. Lin, W.-H. Hao, H.-J. Chen, H.-E. Chueh and C.-I. Chang, 2007, "Fast mining maximal sequential patterns," in The International Conference on Simulation, Modeling and Optimization, p. 405–408 Sách, tạp chí
Tiêu đề: Fast mining maximal sequential patterns
[19] C. Luo and S. Chung, 2005, "Efficient mining of maximal sequential patterns using multiple samples," A Survey of Sequential Pattern Mining, vol. 73, p. 415–426 Sách, tạp chí
Tiêu đề: Efficient mining of maximal sequential patterns using multiple samples
[20] P. Fournier-Viger, A. Gomariz, M. Sebek and M. Hlosta, 2014, "VGEN: fast vertical mining of sequential generator patterns," in The International Conference on Data Warehousing and Knowledge Discovery, p. 476–488 Sách, tạp chí
Tiêu đề: VGEN: fast vertical mining of sequential generator patterns
[21] T. Pham, J. Luo, T.-P. Hong and B. Vo, 2012, "MSGPs: a novel algorithm for mining sequential generator patterns," in The International Conference on Computational Collective Intelligence, p. 393–401 Sách, tạp chí
Tiêu đề: MSGPs: a novel algorithm for mining sequential generator patterns
[22] C. Gao, J. Wang, Y. He and L. Zhou, 2008, "Efficient mining of frequent sequence generators," in The International Conference on the World Wide Web, p. 1051–1052 Sách, tạp chí
Tiêu đề: Efficient mining of frequent sequence generators

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w