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 1BỘ 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 2BỘ 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 3Lờ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 4Lờ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 5Danh 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 6Danh 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 7Danh 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 81
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 92
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 103
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 114
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 125
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 13Bà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 147
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 158
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 161.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 17bấ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 18Gọ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 1912
<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 2013
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 2215
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 23End
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 2417
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 2518
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 2619
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 2720
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 281 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 2922
- Đầ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 3023
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 31tấ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 3225
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 3326
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 3427
Đị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 3528
𝛼 𝑆𝑖 ∧ 𝑆𝑖∈𝑄𝑆𝐷𝐵
(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 3629
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 3730
Độ 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 3831
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 3932
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 40Procedure 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à: