Ví dụ chuỗi các mặt hàng đã mua sắm của các khách hàng tại một cửa hàng, chuỗi truy cập web, chuỗi di truyền trong sinh học, chuỗi sự kiện trong khoa học, trong tự nhiên hoặc xã hội … Mặ
Trang 1ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
VĂN THỊ THIÊN TRANG
KHAI THÁC LUẬT TUẦN TỰ TRÊN CƠ SỞ DỮ LIỆU CHUỖI
LUẬN VĂN THẠC SĨ NGÀNH HỆ THỐNG THÔNG TIN
Thành phố Hồ Chí Minh – 2010
Trang 2ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
VĂN THỊ THIÊN TRANG
KHAI THÁC LUẬT TUẦN TỰ TRÊN CƠ SỞ DỮ LIỆU CHUỖI
Ngành: HỆ THỐNG THÔNG TIN
Mã số: 60.48.05
LUẬN VĂN THẠC SĨ (Chuyên ngành Hệ Thống Thông Tin)
NGƯỜI HƯỚNG DẪN KHOA HỌC:
PGS.TS LÊ HOÀI BẮC
TP Hồ Chí Minh – 2010
Trang 3LỜI CẢM ƠN
ầu tiên, tôi xin chân thành và sâu sắc biết ơn sự tận tình dạy dỗ và sự giúp đỡ của tất cả quý thầy cô khoa Công nghệ Thông tin, Trường Đại học Khoa Học Tự Nhiên
Cuối cùng, tôi xin gửi lời cảm ơn đến bạn bè, đồng nghiệp, những người luôn sát cánh động viên, và tạo mọi điều kiện tốt nhất để tôi có thể học tập và hoàn tất được luận văn tốt nghiệp này
Văn Thị Thiên Trang
Trang 4Mục lục
Mục lục i
Danh mục các bảng iii
Danh mục các hình vẽ, đồ thị iv
MỞ ĐẦU 1U Chương 1 TỔNG QUAN 3
1.1 Đặc điểm dữ liệu chuỗi 3
1.2 Một số ví dụ về dữ liệu chuỗi 3
1.3 Các kỹ thuật thác dữ liệu chuỗi 6
1.4 Khai thác luật trên cơ sở dữ liệu chuỗi 7
1.5 Đóng góp của luận văn 9
Chương 2 CƠ SỞ LÝ THUYẾT 10
2.1 Giới thiệu 10
2.2 Ý nghĩa luật tuần tự 10
2.3 Phát biểu bài toán khai thác luật tuần tự 11
2.3.1 Các khái niệm về chuỗi dữ liệu 11
2.3.2 Các khái niệm về luật tuần tự 14
2.3.3 Bài toán khai thác luật tuần tự 14
2.4 Khai thác mẫu tuần tự 16
2.4.1 Các cách tổ chức dữ liệu 16
2.4.2 Các hướng tiếp cận 18
2.4.3 Thuật toán PRISM 22
- i -
Trang 52.5 Khai thác luật tuần tự từ tập mẫu tuần tự 35
2.5.1 Một số hướng tiếp cận trong khai thác luật tuần tự 35
2.5.2 Thuật toán Full 35
Chương 3 PHƯƠNG PHÁP KHAI THÁC LUẬT TUẦN TỰ DỰA TRÊN CÂY TIỀN TỐ 37
3.1 Giới thiệu 37
3.2 Thuật toán MSR_ImpFull 37
3.3 Thuật toán MSR_PreTree 40
3.3.1 Cây tiền tố 40
3.3.2 Thuật toán MSR_PreTree 42
3.3.3 Trường hợp đặc biệt 45
3.3.4 Đánh giá 49
Chương 4 KẾT QUẢ THỰC NGHIỆM 50
4.1 Giới thiệu 50
4.2 Kết quả thực nghiệm trên cơ sở dữ liệu tổng hợp 50
4.3 Kết quả thực nghiệm trên cơ sở dữ liệu thực 54
Chương 5 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 58
5.1 Kết luận 58
5.2 Hướng phát triển 58
TÀI LIỆU THAM KHẢO 60
- ii -
Trang 6Danh mục các bảng
Bảng 2.1 CSDL chuỗi 13
Bảng 2.2 Tập mẫu tuần tự 15
Bảng 2.3 Tập luật tuần tự sinh từ tập mẫu tuần tự 15
Bảng 3.1 Tập mẫu tuần tự sau khi sắp tăng theo kích thước 39
Bảng 3.2 Sinh luật tuần tự sử dụng thuật toán MSR_ImpFull 39
Bảng 3.3 Sinh luật tuần tự từ cây con gốc 〈(A)〉 sử dụng thuật toán MSR_PreTree44 Bảng 3.4 CSDL chuỗi, mỗi itemset trong chuỗi chỉ có 1 item 46
Bảng 3.5 Sinh luật tuần tự từ cây con gốc 〈(A)〉 sử dụng thuật toán MSR_PreTree (trường hợp đặc biệt) 48
Bảng 4.1 Đặc điểm của các CSDL tổng hợp 51
Bảng 4.2 So sánh thời gian thực hiện trên các CSDL tổng hợp (minConf = 50%) 52 Bảng 4.3 Đặc điểm của các CSDL thực 54 Bảng 4.4 So sánh thời gian thực hiện trên các CSDL tổng hợp (minConf = 50%) 55
- iii -
Trang 7- iv -
Danh mục các hình vẽ, đồ thị
Hình 1.1 Một phân đoạn của chuỗi DNA [8] 4
Hình 1.2 Một phân đoạn của chuỗi Protein [8] 4
Hình 1.3 Một chuỗi truy cập web [8] 5
Hình 1.4 Chuỗi các lần mua sắm của một khách hàng [8] 5
Hình 1.5 Chuỗi lịch sử bán hàng của các cửa hàng [8] 5
Hình 2.1 Dàn xây dựng trên tập ⊗P(G) 24
Hình 2.2 Ví dụ về khối mã hóa nguyên tố 27
Hình 2.3 Không gian khai thác mẫu tuần tự, bao gồm mở rộng theo itemset và mở rộng theo chuỗi với chiến lược tìm kiếm theo chiều sâu 30
Hình 2.4 Mã hóa nguyên tố cho mẫu mở rộng 32
Hình 2.5 Thuật toán Full [14] 36
Hình 3.1 Thuật toán MSR_ImpFull 38
Hình 3.2 Các mẫu tuần tự được lưu trữ trên cây tiền tố 41
Hình 3.3 Thuật toán MSR_PreTree 43
Hình 3.4 Thủ tục sinh luật từ các mẫu trên cây với tiền tố cho trước 44
Hình 3.5 Cây tiền tố lưu trữ các mẫu tuần tự 47
Hình 3.6 Thủ tục sinh luật từ một cây con (có sửa đổi) 48
Hình 4.1 So sánh tốc độ thực thi của ba thuật toán trên CSDL - C6T5N1kD1k 53
Hình 4.2 So sánh tốc độ thực thi của ba thuật toán trên CSDL - C6T5N1kD10k 53
Hình 4.3 So sánh tốc độ thực thi của ba thuật toán trên CSDL thực - Chess 56
Hình 4.4 So sánh tốc độ thực thi của ba thuật toán trên CSDL thực - Mushroom 56
Hình 4.5 So sánh tốc độ thực thi của ba thuật toán trên CSDL thực – Pumb-star 57
Trang 8MỞ ĐẦU
1 Lời nói đầu
Với sự phát triển nhanh chóng của máy tính và công nghệ Internet, khối lượng dữ liệu thu thập được từ các ứng dụng dưới nhiều dạng khác nhau ngày càng trở nên đồ sộ Do đó khai thác dữ liệu nhằm tìm kiếm những thông tin quý giá, những tri thức cần thiết tiềm ẩn trong khối lượng dữ liệu đồ sộ đó
Sự đa dạng và phong phú của dữ liệu hình thành nên nhiều mô hình dữ liệu khác nhau: mô hình dữ liệu giao tác (transaction), mô hình dữ liệu chuỗi (sequence),
mô hình dòng dữ liệu (data stream), chuỗi thời gian (time-series)… Với mô hình dữ liệu chuỗi, sự kiện hoặc dữ liệu nói chung tồn tại theo một chuỗi có trật tự thời gian, nhưng không nhất thiết phải gắn liền với một khái niệm thời gian cụ thể Ví dụ chuỗi các mặt hàng đã mua sắm của các khách hàng tại một cửa hàng, chuỗi truy cập web, chuỗi di truyền trong sinh học, chuỗi sự kiện trong khoa học, trong tự nhiên hoặc xã hội …
Mặc dù đã có nhiều phương pháp khai thác dữ liệu chung cho các loại dữ liệu nhưng đối với dữ liệu chuỗi, không thể áp dụng những phương pháp này vì dữ liệu chuỗi có đặc thù riêng Bản chất của dữ liệu chuỗi là có tính thứ tự, dựa trên tích chất này có thể phân ra nhiều loại khác nhau, bao gồm: mẫu tuần tự, mẫu tuần hoàn, mẫu có thứ tự bộ phận, mẫu chuỗi sinh học xấp xỉ… Sự phong phú về các loại chuỗi đã đẩy mạnh việc phát triển các phương pháp mới trên các bài toán phân lớp, gom cụm, khai thác luật… Chính vì vậy, khai thác dữ liệu chuỗi nói chung, khai thác mẫu và tri thức nói riêng từ khối lượng dữ liệu chuỗi lớn đã trở thành một trong những chủ đề nghiên cứu cơ bản và thiết thực trong lĩnh vực khai thác dữ liệu
Mô hình dữ liệu chuỗi thể hiện rõ rệt mối quan hệ xuyên thời gian của dữ liệu, chính vì vậy việc áp dụng khai thác luật trên mô hình dữ liệu này kỳ vọng mang lại nhiều tri thức tiềm ẩn quí giá có ý nghĩa liên kết xuyên thời gian
Luận văn này tập trung nghiên cứu giải pháp cho bài toán khai thác luật tuần
tự trên cơ sở dữ liệu (CSDL) chuỗi Dựa trên một số công trình nghiên cứu trong
- 1 -
Trang 9lĩnh vực khai luật tuần tự đã công bố trong những năm gần đây, từ đó luận văn trình
bày:
• Luật tuần tự: Ý nghĩa luật tuần tự, phát biểu bài toán và các hướng tiếp
cận
• Phương pháp khai thác mẫu tuần tự: trình bày thuật toán PRISM
• Phương pháp khai thác luật tuần tự từ tập mẫu tuần tự: trình bày hai thuật
toán đề xuất là MSR_ImpFull và MSR_PreTree
• Kết quả thực nghiệm trên các phương pháp đề xuất và so sánh kết quả
với các phương pháp đã có
2 Bố cục đề tài
Chương 1: Tổng quan
Chương 2: Cơ sở lý thuyết
Chương 3: Phương pháp khai thác luật tuần tự dựa trên cây tiền tố
Chương 4: Kết quả thực nghiệm
Chương 5: Kết luận và hướng phát triển
Luận văn trình bày trong 5 chương Chương 1 giới thiệu chung về CSDL
chuỗi, một số kỹ thuật khai thác dữ liệu chuỗi; đồng thời nêu lên hướng tiếp cận
nghiên cứu và đóng góp của đề tài Chương 2 trình bày cơ sở lý thuyết của bài toán
khai thác luật tuần tự và các giai đoạn giải quyết bài toán Chương 3 trình bày chi
tiết các phương pháp mà đề tài đề xuất Kết quả thực nghiệm triển khai trên CSDL
tổng hợp IBM và CSDL chuẩn UCI được mô tả trong chương 4 Chương 5 trình bày
kết luận chung và định hướng phát triển của đề tài Cuối cùng, phần tham khảo trình
bày các bài báo, sách được tham khảo, trích dẫn trong luận văn
- 2 -
Trang 10Chương 1 TỔNG QUAN
1.1 Đặc điểm dữ liệu chuỗi
Dữ liệu chuỗi có một số đặc điểm riêng biệt so với các loại dữ liệu khác Do
đó, khai thác dữ liệu chuỗi đặt ra nhiều cơ hội và thách thức, thu hút nhiều quan tâm nghiên cứu Dữ liệu chuỗi có đặc điểm như sau [8]:
Kích thước chuỗi có thể rất dài Trong cùng một CSDL, kích thước của mỗi chuỗi là khác nhau thậm chí có sự chênh lệch lớn Ví dụ các chuỗi gen có độ dài tối thiểu là vài trăm nhưng độ dài tối đa lên đến hàng trăm nghìn
Một mẫu là một chuỗi con, nghĩa là các thành phần trong chuỗi con phải liên tục kề nhau trong chuỗi cha ban đầu Một mẫu cũng có thể là một tập hợp con của chuỗi, các thành phần của mẫu không liên tục trong chuỗi cha
Vị trí tuyệt đối của các thành phần trong chuỗi thường không quan trọng Chẳng hạn, khi cần kiểm tra một chuỗi dữ liệu có chứa một mẫu hay không thì không cần quan tâm mẫu đó xuất hiện trong chuỗi ở vị trí tuyệt đối nào
Mối quan hệ về thứ tự/vị trí giữa các thành phần trong chuỗi đóng vai trò quan trọng Ví dụ chuỗi XY hoàn toàn khác với chuỗi YX Hơn nữa, khoảng cách giữa hai thành phần trong chuỗi cũng có ý nghĩa Mối quan hệ về thứ tự/vị trí giữa các thành phần trong chuỗi là đặc điểm duy nhất chỉ có ở dữ liệu chuỗi Đây chính là điểm khác biệt cơ bản của dữ liệu chuỗi so với các loại dữ liệu khác
1.2 Một số ví dụ về dữ liệu chuỗi
• Chuỗi dữ liệu sinh học: DNA, RNA và Protein
Chuỗi dữ liệu sinh học giúp chúng ta hiểu rõ về cấu trúc và chức năng của các loại tế bào khác nhau, hỗ trợ cho việc chẩn đoán và chữa bệnh Có ba loại chuỗi sinh học là chuỗi deoxyribonucleic acid (DNA), chuỗi amino acid (hay còn gọi là
- 3 -
Trang 11Protein) và ribonucleic acid (RNA) Hình 1.1 và 1.2 minh họa một phần của chuỗi DNA và một phần của chuỗi protein
GAATTCTCTGTAACACTAAGCTCTCTTCCTCAAAACCAGAGGTAGATAGAA TGTGTAATAATTTACAGAATTTCTAGACTTCAACGATCTGATTTTTTAAATT TATTTTTATTTTTTCAGGTTGAGACTGAGCTAAAGTTAATCTGTGGC
Hình 1.1 Một phân đoạn của chuỗi DNA [8]
SSQIRQNYSTEVEAAVNRLVNLYLRASYTYLSLGFYFDRDDVALEGVCHEFRE LAEEKREGAERLLKMQNQRGGRALFQDLQKPSQDEWGTTPDAMKAAIVLE KSLNQALLDLHALGSAQADPHLCDFLESHFLDEEVKLIKKMGDHLTNIQRLV GSQAGLGEYLFERLTLKHD
Hình 1.2 Một phân đoạn của chuỗi Protein [8]
Một số bài toán phân tích dữ liệu trên chuỗi sinh học thường gặp là: Phân tích cấu trúc và chức năng của protein từ chuỗi protein, xác định đặc điểm của mẫu trong họ các chuỗi DNA, RNA hay protein, so sánh họ các chuỗi với nhau…
• Chuỗi sự kiện: chuỗi lịch sử bán hàng, chuỗi lịch sử mua sắm của
khách hàng, chuỗi vết hệ thống, chuỗi truy cập web (weblog)…
Chiếm phần lớn các loại chuỗi là chuỗi sự kiện Từ những chuỗi như vậy, có thể hiểu được cách thức các đối tượng hoạt động như thế nào, từ đó rút ra cách tốt nhất để giải quyết chúng Sau đây là một số ví dụ về chuỗi sự kiện
Chuỗi truy cập web là một chuỗi các cặp gồm định danh người dùng và sự kiện Một sự kiện là một yêu cầu về một tài nguyên web chẳng hạn như một trang web hay một dịch vụ Với mỗi trang được yêu cầu, một số thông tin truyền thống là
có sẵn, ví dụ như kiểu và nội dung của trang, lượng thời gian người dùng đã tiêu tốn trên trang đó Các sự kiện của một mẫu truy cập web được liệt kê dưới dạng danh
sách tăng dần theo thời gian Hình 1.3 minh họa một chuỗi truy cập web, trong đó a,
b, c, d, e là các sự kiện và 100, 200, 300 và 400 là các định danh của người dùng
- 4 -
Trang 12〈100, a〉, 〈100,b〉, 〈200, a〉, 〈300, b〉 〈400, a〉, 〈100, a〉, 〈400, b〉, 〈300, a〉, 〈100, c〉,
〈200, c〉, 〈400, a〉, 〈400, e〉
Hình 1.3 Một chuỗi truy cập web [8]
Chuỗi vết hệ thống cũng tương tự như chuỗi truy cập web Chúng là chuỗi các bản ghi ghi nhận các hoạt động được thực hiện bởi người dùng hoặc tiến trình, trên những loại dữ liệu và tài nguyên khác nhau trong một hay nhiều hệ thống
Chuỗi lịch sử mua sắm của khách hàng là những chuỗi các bộ, trong đó mỗi
bộ gồm định danh khách hàng, địa điểm, thời gian và tập các mặt hàng đã mua… Hình 1.4 minh họa chuỗi các lần mua sắm của một khách hàng có định danh là
223100
〈223100, 05/26/06, 10am, CentralStation, {WholeMealBread, AppleJuice}〉,
〈223100, 05/26/06, 11am, CentralStation, {Burger, Pepsi, Banana }〉,
〈223100, 05/26/06, 4am, WalMart, {Milk, Cereal, Vegetable}〉,
〈223100, 05/26/06, 10am, CentralStation, {WholeMealBread, AppleJuice}〉
Hình 1.4 Chuỗi các lần mua sắm của một khách hàng [8]
Chuỗi lịch sử bán hàng là chuỗi các bộ, mỗi bộ gồm định danh cửa hàng, thời gian, tổng số các mặt hàng đã bán và doanh thu tương ứng tại thời gian đó và một số thông tin khác Hình 1.5 minh họa chuỗi lịch sử bán hàng của các cửa hàng
〈97100, 05/06, {〈Apple : $85K〉, 〈Bread : $100K〉, 〈Cereal : $150K〉, …}〉,
〈90089, 05/06, {〈Apple : $65K〉, 〈Bread : $105K〉, 〈Diaper : $20K〉, …}〉,
〈97100, 05/06, {〈Apple : $95K〉, 〈Bread : $110K〉, 〈Cereal : $160K〉, …}〉,
〈90089, 05/06, {〈Apple : $66K〉, 〈Bread : $95K〉, 〈Diaper : $22K〉, …}〉
Hình 1.5 Chuỗi lịch sử bán hàng của các cửa hàng [8]
- 5 -
Trang 131.3 Các kỹ thuật thác dữ liệu chuỗi
Khai thác dữ liệu phụ thuộc vào loại tri thức mà hệ thống khai phá tri thức và khai thác dữ liệu tìm kiếm Mỗi nhiệm vụ khai thác dữ liệu có đặc tính riêng của nó
và thực hiện theo các bước trong quá trình khai thác tri thức Sau đây là các nhiệm
vụ khai thác dữ liệu thường được sử dụng phổ biến trong ứng dụng khai thác dữ liệu chuỗi [8]
• Khai thác chuỗi con phổ biến hay còn gọi là khai thác mẫu tuần tự (mining frequent subsequence hoặc mining sequential pattern)
Khai thác mẫu tuần tự là khai thác các mẫu phổ biến liên quan đến thời gian hoặc các sự kiện khác, với yêu cầu là các mẫu phổ biến là những chuỗi con trong CSDL chuỗi mà sự xuất hiện của chúng lớn hơn ngưỡng hỗ trợ do người dùng chỉ
ra
• Phân lớp các chuỗi (classification)
Khai thác có hay không một phần tử thuộc về một trong các lớp đã biết trước Vấn đề là phải xác định các lớp như thế nào Trong thực tế, các lớp thường được xác định dựa trên giá trị của trường nào đó trong mẫu tin hoặc dẫn xuất của các giá trị khác nhau trong các trường
• Phân cụm các chuỗi (cluster identification)
Sắp xếp các đối tượng theo từng cụm Ngược với lớp, số lượng và tên của cụm chưa được biết trước Khi xác định các cụm, các độ đo khoảng cách được sử dụng
để tính toán sao cho mức độ tương tự giữa các đối tượng trong cùng một cụm là lớn nhất và mức độ tương tự giữa các đối tượng nằm trong các cụm khác nhau là nhỏ nhất
• Khai thác luật (mining rules)
Khai thác luật là quá trình tìm kiếm những mối quan hệ theo thời gian giữa các
sự kiện tuần tự Một luật mô tả mẫu tuần tự có dạng X→Y phản ánh sự xuất hiện của biến cố X sẽ dẫn đến sự xuất hiện của biến cố Y kế tiếp
- 6 -
Trang 141.4 Khai thác luật trên cơ sở dữ liệu chuỗi
Trên CSDL chuỗi, đã có nhiều nghiên cứu trên các loại luật khác nhau: luật tuần tự (sequential rules), luật thú vị (interesting rules), luật phân lớp tuần tự (sequential classification rules), luật tuần hoàn (recurrent rules)
Luật tuần tự [5], [14], [19] mở rộng khả năng sử dụng và tăng cường ý nghĩa
của mẫu tuần tự Một luật khai thác được sẽ biểu diễn ràng buộc là: trong một chuỗi
sự kiện, những sự kiện xảy ra trước sẽ được theo sau bởi một loạt sự kiện khác Ngoài ra, độ thú vị của một luật được đo bởi cả hai yếu tố là độ hỗ trợ và độ tin cậy
Độ tin cậy là một độ đo hữu ích, đặc biệt là khi ngưỡng hỗ trợ tối thiểu có giá trị thấp Do đó, luật tuần tự đặc biệt hữu dụng cho việc dò và lọc ra những dị thường
mà vi phạm các ràng buộc Chính vì vậy, chúng được ứng dụng rộng rãi trong việc
dò lỗi, phát hiện xâm nhập và bẫy lỗi… Bên cạnh đó, các nghiên cứu cũng cho thấy rằng luật tuần tự cũng rất có ích trong lĩnh vực y dược [24] và công nghệ phần mềm [15], [22]
Luật thú vị [19] tương tự như luật tuần tự, nó cũng biểu diễn ràng buộc giữa
các loạt sự kiện theo thời gian Độ thú vị của luật cũng được đo bởi hai yếu tố là độ
hỗ trợ và độ tin cậy, tuy nhiên bổ sung thêm một độ đo mới, đó là độ tăng cường (improvement)
Phân lớp là một kỹ thuật khai thác dữ liệu quan trọng, cho phép gán nhãn tự động cho một đối tượng dữ liệu vào một phân lớp đúng
Luật phân lớp tuần tự [5] là luật biểu thị dưới dạng X→c, với X là một chuỗi và c là nhãn của một lớp Luật X→c là một luật phân lớp tuần tự trong CSDL chuỗi khi và chỉ khi tồn tại một chuỗi dữ liệu trong CSDL là chuỗi cha của X và
chuỗi dữ liệu đó thuộc phân lớp có nhãn là c
Luật tuần hoàn [16] là luật được tạo ra từ hai loại mẫu: mẫu tuần tự (frequent
sequential pattern) và phân đoạn phổ biến (frequent episode) Phân đoạn (episode) được định nghĩa là mẫu gồm các sự kiện xuất hiện tương đối gần nhau trong chuỗi, tức là các sự kiện xuất hiện trong một giới hạn thời gian (time window) Luật tuần
- 7 -
Trang 15tự được sinh từ mẫu tuần tự Một luật tuần tự X→Y phát biểu rằng khi một chuỗi trong CSDL là chuỗi cha của mẫu X thì nó cũng là chuỗi cha của mẫu gồm mẫu X nối với mẫu Y Luật sinh từ phân đoạn gọi là luật phân đoạn Một luật phân đoạn X→Y phát biểu rằng: khi một phân đoạn là chuỗi cha của mẫu X thì nó cũng là chuỗi cha của mẫu X nối với Y Luật tuần hoàn khái quát cả hai loại luật – tuần tự
và phân đoạn: khái quát luật tuần tự ở chỗ phần tiền kiện X và hậu kiện Y được xét
có thể lấy từ cùng một chuỗi hoặc nhiều chuỗi khác nhau; đồng thời, luật tuần hoàn khái quát luật phân đoạn bằng cách cho phép phần tiền kiện X và hậu kiện Y được tách riêng bởi một số sự kiện tùy ý trong CSDL chuỗi
Trong các loại luật trên, luật tuần tự là cơ bản nhất, các loại luật còn lại đều là dạng biến đổi của luật tuần tự bằng cách bổ sung thêm hoặc loại bỏ đi một số thông tin hoặc ràng buộc Do đó, luận văn tập trung nghiên cứu trên bài toán khai thác luật tuần tự
Khai thác luật tuần tự là việc tìm kiếm những mối quan hệ theo thời gian giữa các sự kiện tuần tự Một luật tuần tự biểu diễn dưới dạng Χ→Υ, nghĩa là nếu X có mặt trong một chuỗi bất kỳ của CSDL thì với một độ tin cậy cao có thể khẳng định
Y cũng xuất hiện trong chuỗi đó theo sau X
Tuy nhiên, trong lĩnh vực khai thác luật tuần tự, có những nghiên cứu cho bài toán khai thác luật tuần tự không dư thừa (Spiliopoulou-1999, David Lo-2009) mà chưa có nghiên cứu thực sự nào cho bài toán khai thác tập đầy đủ các luật tuần tự
Tuy nhiên, nếu khai thác luật dựa trên những độ đo khác chẳng hạn như độ đo lift [6] hoặc độ đo conviction [7] thì cách tiếp cận giải quyết bài toán của David Lo và
đồng sự không còn phù hợp Hiện nay, chỉ có duy nhất một phương pháp cơ bản để khai thác tập luật tuần tự đầy đủ do Spiliopoulou đề xuất [19] Từ những mô tả của
phương pháp này, David Lo cùng đồng sự đã khái quát thành thuật toán Full [14]
Đặc điểm cơ bản của thuật toán Full là dựa trên phương pháp vét cạn, do đó tốn nhiều chi phí tính toán Chính vì vậy, luận văn tập trung nghiên cứu cho bài toán khai thác tập đầy đủ các luật tuần tự
- 8 -
Trang 161.5 Đóng góp của luận văn
Luận văn trình bày các giai đoạn giải quyết bài toán khai thác luật tuần tự trên CSDL chuỗi
• Giai đoạn 1: Khai thác tập mẫu tuần tự
• Giai đoạn 2: Khai thác luật tuần tự từ tập mẫu tuần tự
Đối với từng giai đoạn, luận văn nghiên cứu các phương pháp tiến bộ đã có và chọn ra phương pháp tối ưu nhất Ở giai đoạn một của bài toán, để tiến hành khai thác tập mẫu tuần tự hiệu quả, luận văn sử dụng phương pháp mã hóa nguyên tố được đề xuất bởi Gouda và Zaki (2010) và cải tiến bằng cách tổ chức cơ sở dữ liệu đầu vào theo định dạng dọc Với phương pháp này, tập mẫu tuần tự tìm thấy được lưu trữ dưới dạng cấu trúc cây tiền tố Ở giai đoạn khai thác luật, các phương pháp tiến bộ hiện thời vẫn tồn tại nhược điểm Do đó, luận văn đề xuất một số phương pháp mới để khắc phục các nhược điểm này Luận văn đề xuất hai thuật toán: MSR_ImpFull và MSR_PreTree Trong đó, MSR_ImpFull là thuật toán cải tiến thuật toán Full [14] đã có, còn MSR_PreTree là thuật toán mới Thuật toán MSR_PreTree tiến hành khai thác tập đầy đủ các luật tuần tự dựa trên cây tiền tố
- 9 -
Trang 17Chương 2 CƠ SỞ LÝ THUYẾT
2.1 Giới thiệu
Trong lĩnh vực khai thác dữ liệu trên CSDL chuỗi, khai thác mẫu tuần tự là bài toán đầu tiên được đề xuất bởi Agrawal và Srikant vào năm 1995 [3] và đã thu hút nhiều nghiên cứu [4], [5], [10], [17], [18], [20], [23] Cho CSDL chuỗi, khai thác mẫu tuần tự là xác định những mẫu mà sự xuất hiện của chúng trong CSDL thỏa ngưỡng hỗ trợ tối thiểu Khai thác mẫu tuần tự được ứng dụng trong nhiều lĩnh vực như: phân tích thị trường, phân tích mẫu truy cập web, dự đoán nhu cầu mua sắm của khách hàng…
Luật tuần tự được sinh từ mẫu tuần tự, nó biểu diễn mối quan hệ giữa hai loạt sự kiện, loạt sự kiện này sẽ xảy ra sau loạt sự kiện kia Luật tuần tự mở rộng khả năng
sử dụng và ý nghĩa biểu đạt của mẫu tuần tự, thể hiện tri thức tiềm ẩn của dữ liệu tuần tự
2.2 Ý nghĩa luật tuần tự
Luật tuần tự biểu diễn mối quan hệ giữa các mẫu tuần tự theo thời gian Có thể coi luật tuần tự là mở rộng tự nhiên của mẫu tuần tự, tương tự như luật kết hợp là
mở rộng tự nhiên của tập phổ biến [2] Một luật tuần tự biểu thị dưới dạng X→Y, nghĩa là trong các chuỗi dữ liệu, nếu mẫu X xuất hiện thì mẫu Y cũng xuất hiện theo sau mẫu X với độ tin cậy cao So với các mẫu tuần tự, các luật giúp ta hiểu tốt hơn về thứ tự thời gian thể hiện trong CSDL chuỗi Ví dụ, một người mua đĩa phim Star Wars phần 4 sẽ mua tiếp phần 5 và phần 6 Như vậy mẫu mua hàng (4, 5, 6) là mẫu thể hiện hoạt động mua Tuy nhiên, trong thực tế một cửa hàng bán đĩa có hàng trăm khách hàng với sở thích khác nhau Do đó, mẫu (4, 5, 6) có xu hướng xuất hiện với độ hỗ trợ thấp Khai thác với độ hỗ trợ thấp vẫn trả về các mẫu, tuy nhiên sẽ có nhiều mẫu sai và không thích hợp Nếu như sử dụng luật, có thể loại bỏ đi các mẫu
- 10 -
Trang 18sai như vậy bằng cách đưa ra khái niệm độ tin cậy cho tập mẫu Chỉ có những luật thỏa ngưỡng hỗ trợ và ngưỡng tin cậy mới được khai thác
Như vậy, thông qua luật tuần tự chúng ta có thể biết được loạt sự kiện nào thường sẽ xảy ra sau loạt sự kiện trước đó Luật tuần tự tuy khá đơn giản nhưng những thông tin mà luật mang lại có nhiều ý nghĩa quan trọng, hỗ trợ không nhỏ cho quá trình ra quyết định, quản lý và có tính định hướng Luật tuần tự rất hữu ích trong nhiều lĩnh vực: y dược [24], thương mại [8], công nghệ phần mềm [13], [15], [22] Một số ví dụ về ý nghĩa của luật tuần tự trong các lĩnh vực ứng dụng:
• Phân tích thị trường: Nếu một khách hàng mua xe hơi thì sau đó khách hàng này sẽ mua bảo hiểm Quy luật này rất hữu ích cho việc thiết kế chiến lược quảng cáo sản phẩm đối với khách hàng
• Y dược: Nếu một bệnh nhân bị sốt và giảm mức thrombosite, sau đó xuất hiện những đốm đỏ trên da thì có khả năng bệnh nhân này mắc bệnh sốt xuất huyết Luật tuần tự này giúp dự đoán bệnh để có hướng điều trị thích hợp cho bệnh nhân
• Công nghệ phần mềm: Nếu trình điều khiển thiết bị trong hệ điều hành Window gọi thủ tục KeAcquireSpinLock thì sau đó cũng sẽ gọi thủ tục
KeReleaseSpinLock [14]
2.3 Phát biểu bài toán khai thác luật tuần tự
2.3.1 Các khái niệm về chuỗi dữ liệu
Cho tập I = {i 1 , i 2 , …, i m } gồm m phần tử còn gọi là các item Một itemset là tập không có thứ tự khác rỗng, gồm các item Itemset i ký hiệu là (i 1 , i 2 , …, i k ) với mỗi i j là một item Itemset có lực lượng là k ký hiệu là k-itemset Không mất tính
tổng quát, giả sử các item trong itemset được sắp theo thứ tự tăng dần
Một chuỗi (sequence) là một danh sách có thứ tự những itemset Chuỗi s được
ký hiệu là 〈s1 s 2 … s n〉 hoặc 〈s 1→s 2→…→s n〉 với mỗi s i là một itemset, n là số lượng
itemset Kích thước của chuỗi bằng số lượng itemset có trong chuỗi Chiều dài của
- 11 -
Trang 19chuỗi là tổng số item có trong chuỗi, ký hiệu là Chuỗi có chiều dài k còn được gọi là k-sequence Ví dụ, s = 〈(B)(AC)〉 là một 3-sequence có kích thước là 2
∑
=
= n
j i
s l
1
Chuỗi β = 〈b 1 b 2 … b m〉 được gọi là chuỗi con của chuỗi α = 〈a 1 a 2 … a n〉 hay
α là chuỗi cha của β, ký hiệu β⊆α, nếu tồn tại những số nguyên 1≤ j 1 < j 2 < … <
j n ≤ m sao cho b 1 ⊆ a j1 , b 2 ⊆ a j2 , …, b m ⊆ a jm Ví dụ chuỗi 〈(B)(AC)〉 là chuỗi con của
〈(AB)(E)(ACD)〉; nhưng 〈(AB)(E)〉 không phải là chuỗi con của chuỗi 〈(ABE)〉 và ngược lại
Cơ sở dữ liệu chuỗi: Cơ sở dữ liệu chuỗi là một tập hợp các bộ dữ liệu có
dạng (sid, s), trong đó sid là định danh của chuỗi và s là chuỗi các itemset
Mẫu: Mẫu là một chuỗi con của một chuỗi dữ liệu Mỗi itemset trong một
mẫu còn được gọi là một thành phần (element)
Độ hỗ trợ (support): Cho CSDL chuỗi D, mỗi chuỗi có một chỉ số định danh
duy nhất Độ hỗ trợ tuyệt đối của một mẫu tuần tự f là tổng số chuỗi trong D có chứa f, ký hiệu sup D( )f = {S i∈ D f ⊆ S i} Độ hỗ trợ tương đối của f là tỉ lệ phần trăm chuỗi trong D chứa f Ở đây, mức hỗ trợ tuyệt đối hoặc tương đối sẽ được sử dụng chuyển đổi qua lại, kí hiệu là sup(f)
Mẫu tuần tự: Cho trước ngưỡng hỗ trợ tối thiểu (minSup) xác định bởi người
dùng, minSup ∈ (0, 1] Một mẫu f được coi là phổ biến nếu độ hỗ trợ của nó lớn hơn hoặc bằng minSup: sup(f) ≥ minSup, khi đó f được gọi là mẫu tuần tự
Ví dụ: Cho CSDL như bảng 2.1 có tập các item phân biệt là {A, B, C} và
minSup tuyệt đối là 2 Xét chuỗi s 1 = 〈(AB)(B)(B)(AB)(B)(AC)〉, chuỗi s 1 có 6
itemset là: (AB), (B), (B), (AB), (B), (AC) và có 9 item Vậy s 1 có kích thước là 6
và có độ dài là 9 Trong chuỗi s 1, item A xuất hiện ba lần nhưng nếu tính độ hỗ trợ
thì độ hỗ trợ của item A chỉ được tính là 1 đối với chuỗi s 1 đó Chuỗi p = 〈(AB)(C)〉
là một chuỗi con của chuỗi s 1 , vì vậy chuỗi con p còn được gọi là mẫu Trong
- 12 -
Trang 20CSDL, chỉ có chuỗi s 1 , s 2 và s 5 có chứa mẫu p, vậy độ hỗ trợ của mẫu p là 3 Vì sup(p) > minSup nên p là một mẫu tuần tự
Khai thác mẫu tuần tự: Cho trước CSDL chuỗi và ngưỡng minSup Khai
thác mẫu tuần tự là đi tìm tập đầy đủ tất cả các mẫu tuần tự có trong CSDL
Tiền tố, hậu tố, tiền tố không hoàn toàn:
Cho hai chuỗi dữ liệu α = 〈a 1 a 2 … a n〉 và β = 〈b 1 b 2 … b m〉 (m<n), (trong đó
a i , b i là các itemset) β được gọi là tiền tố của α nếu và chỉ nếu b i = a i với mọi
1≤i≤m Sau khi loại bỏ phần tiền tố β trên chuỗi α, phần chuỗi còn lại được gọi là hậu tố của α Chuỗi β được gọi là tiền tố không hoàn toàn của chuỗi α nếu và chỉ
nếu b i = a i với mọi 1≤i≤m-1, b m ⊂ a m và tất cả các item trong tập (a m - b m ) đều là những item đứng sau các item trong b m xét theo thứ tự từ điển
Từ định nghĩa trên, ta thấy rằng nếu một chuỗi có kích thước k sẽ có (k-1) tiền
tố Ví dụ, chuỗi 〈(A)(BC)(D)〉 có 2 tiền tố là 〈(A)〉 và 〈(A)(BC)〉 Do đó, 〈(BC)(D)〉
là hậu tố đối với tiền tố 〈(A)〉 và 〈(D)〉 là hậu tố đối với tiền tố 〈(A)(BC)〉 Hai chuỗi
〈(A)(B)〉 và 〈(BC)〉 không phải là tiền tố của chuỗi đã cho; tuy nhiên chuỗi 〈(A)(B)〉
là một tiền tố không hoàn toàn
- 13 -
Trang 212.3.2 Các khái niệm về luật tuần tự
Luật tuần tự: Luật tuần tự biểu diễn mối quan hệ giữa hai loạt sự kiện xảy ra
tuần tự, biểu thị dưới dạng X→Y (sup, conf), trong đó X là loạt sự kiện xảy ra
trước, Y là loạt sự kiện xảy ra sau, sup là giá trị độ hỗ trợ và conf là giá trị độ tin
cậy của luật [14]
Từ mẫu tuần tự đã có, luật tuần tự được xây dựng bằng cách tách mẫu tuần tự
ra làm hai phần: phần tiền tố X và phần hậu tố Y (nối tiền tố với hậu tố: X++Y, ta được mẫu tuần tự như ban đầu) Độ hỗ trợ và độ tin cậy của luật được xác định như sau:
• Độ hỗ trợ: sup = sup(X++Y) ×100%
• Độ tin cậy: conf = sup(X++Y)/sup(X)×100%
Độ hỗ trợ của một luật bằng số chuỗi trong CSDL có chứa mẫu tuần tự tạo nên luật Như vậy độ hỗ trợ của luật bằng độ hỗ trợ của mẫu tuần tự sinh ra luật Độ tin
cậy của một luật r bằng với khả năng chuỗi trong CSDL có chứa tiền kiện của luật dẫn đến chứa hậu kiện của luật Một luật có độ hỗ trợ cao hơn minSup thì luật đó
được coi là phổ biến Tương tự, nếu luật có độ tin cậy cao hơn ngưỡng tin cậy tối
thiểu (minimum confidence), kí hiệu là minConf, thì được coi là đáng tin cậy
Với mỗi mẫu tuần tự kích thước k, có thể tạo ra (k-1) luật vì mẫu tuần tự kích thước k sẽ có (k-1) tiền tố Ví dụ, với mẫu tuần tự 〈(A)(BC)(D)〉 có kích thước là 3,
có thể tạo ra 2 luật là 〈(A)〉→〈(BC)(D)〉, 〈(A)(BC)〉→〈(D)〉
2.3.3 Bài toán khai thác luật tuần tự
Khai thác luật tuần tự là đi tìm ra những luật thỏa mãn tối thiểu ngưỡng
minSup và minConf cho trước Quá trình này gồm hai giai đoạn:
• Giai đoạn 1: Tìm tất cả các mẫu tuần tự từ CSDL, tức đi tìm tất cả các
mẫu f sao cho sup(f) ≥ minSup
• Giai đoạn 2: Sinh luật tin cậy từ các mẫu tuần tự tìm được ở giai đoạn 1,
tức là tìm tất cả các luật r thỏa sup(r) ≥ minConf
- 14 -
Trang 22Ví dụ: Cho CSDL chuỗi D như bảng 2.1, độ hỗ trợ tối thiểu minSup= 50%, và
độ tin cậy tối thiểu minConf=70% Nếu khai thác luật tuần tự từ CSDL này ta được
kết quả như sau:
• Tìm tập mẫu tuần tự gồm các mẫu có độ hỗ trợ ≥ minSup, tức support ≥
50%×5≈ 3 Tập mẫu tuần tự tìm được như bảng 2.2
• Với tập mẫu tuần tự tìm được, ta có tập luật như bảng 2.3 (chỉ sinh luật
từ những mẫu có kích thước lớn hơn 1)
Bảng 2.3 Tập luật tuần tự sinh từ tập mẫu tuần tự
Mẫu tuần tự Luật tuần tự,
Trang 23Vậy, với CSDL đã cho, có thể khai thác được 18 luật thỏa minSup và minConf
2.4 Khai thác mẫu tuần tự
2.4.1 Các cách tổ chức dữ liệu
Có hai dạng tổ chức dữ liệu cơ bản:
• Dạng biểu diễn ngang: Dữ liệu được tổ chức theo chiều ngang, mỗi hàng đại diện cho dãy sự kiện (event) tương ứng với đối tượng (object)
- 16 -
Trang 24CSDL trên có thể biểu diễn theo 2 cách sau:
Biểu diễn ngang
Đối tượng Sự kiện
tổ chức theo chiều dọc mang tính cô đọng, giúp thực thi nhanh hơn và cho phép lặp lại việc tìm các mẫu tuần tự một cách dễ dàng Tuy nhiên, dữ liệu gốc ban đầu thường được tổ chức theo chiều ngang, nếu muốn tổ chức theo chiều dọc phải có bước tiền xử lý để chuyển đổi
Trang 252.4.2 Các hướng tiếp cận
Bài toán khai thác mẫu tuần tự được đề xuất đầu tiên bởi Agrawal và Srikant vào năm 1995 AprioriAll [3] là thuật toán đầu tiên được thiết kế để giải quyết bài toán khai thác mẫu tuần tự trên CSDL chuỗi giao dịch AprioriAll dựa trên thuật toán khai thác mẫu phổ biến Apriori [1], là thuật toán nền tảng làm cơ sở cho các thuật toán về sau
Giai đoạn 2, trong CSDL chuỗi ban đầu, mỗi chuỗi được thay thế bởi tập tất cả các itemset phổ biến có chứa trong chuỗi đó Nếu itemset không chứa itemset con phổ biến nào thì loại bỏ itemset đó khỏi tập chuỗi dữ liệu Nếu chuỗi dữ liệu không chứa itemset phổ biến nào thì loại bỏ chuỗi đó khỏi CSDL Sau khi biến đổi, mỗi chuỗi 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 tuần tự 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 tuần tự 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ài k được phát
sinh bằng cách kết các mẫu độ dài (k-1), sau đó dựa vào nguyên tắc Apriori và minSup để loại bỏ các mẫu không phổ biến
Như vậy, để tìm được mẫu tuần tự, giải thuật AprioriAll phải phát sinh các ứng viên, nhưng số lượng ứng viên tạo ra rất lớn dễ dẫn đến tình trạng “nghẽn cổ
- 18 -
Trang 26chai” Với chuỗi độ dài n thì số ứng viên có thể tạo ra là , do đó không
đủ bộ nhớ để xử lý Mặt khác, để tìm tất cả mẫu các mẫu tuần tự, thuật toán AprioriAll phải duyệt CSDL nhiều lần vì với mỗi tập ứng viên để đếm độ hỗ trợ phải duyệt toàn bộ CSDL
n i n
C
1
12
Đối với bài toán khai thác mẫu tuần tự, các yếu tố ảnh hưởng đến tính hiệu quả của thuật toán là cách thức tổ chức dữ liệu và thuật toán giải quyết Do đó phải
sử dụng cấu trúc dữ liệu thích hợp và thuật toán tối ưu Như vậy, các đặc trưng ảnh hưởng đến tốc độ thực thi là cách tổ chức biễu diễn dữ liệu để lưu trữ vào bộ nhớ, cách duyệt dữ liệu để xử lý, các chiến lược tìm kiếm Ngoài ra, sử dụng một số đặc trưng khác như vận dụng lý thuyết đồ thị, đưa ra những ràng buộc cho bài toán sẽ giúp thuật toán thực thi nhanh hơn, các mẫu tuần tự tìm được có giá trị hơn Chính
vì vậy, tiếp cận theo nhiều hướng khác nhau, xuất phát từ thuật toán nền tảng AprioriAll, các nhóm nghiên cứu đã đưa ra nhiều thuật toán khác nhau để giải quyết bài toán khai thác mẫu tuần tự
• Thuật toán GSP
GSP [20] là thuật toán mở rộng từ mô hình Apriori GSP giải quyết bài toán khai thác mẫu tuần tự một cách tổng quát, đó là bổ sung thêm các ràng buộc: ràng buộc về khoảng thời gian cực đại và cực tiểu giữa các thành phần trong một mẫu tuần tự Các item của một thành phần trong một mẫu có thể lấy từ một hoặc nhiều thành phần khác nhau nhưng khoảng cách thời gian giữa các thành phần phải nằm trong giới hạn “time window” Ngoài ra, có sự phân cấp trên các item, một mẫu có thể gồm những item trên các mức phân cấp khác nhau
• Thuật toán PSP
Một thuật toán khác cũng dựa trên mô hình Apriori là PSP [12] Điểm khác biệt của PSP so với GSP là PSP quản lý và lưu trữ các mẫu ứng viên bằng một cấu trúc dữ liệu hiệu quả hơn Tuy nhiên, khi thực hiện cả ba phương pháp AprioriAll, GSP, PSP đều phải duyệt CSDL nhiều lần và phải tải toàn bộ CSDL vào bộ nhớ
- 19 -
Trang 27chính, do đó những phương pháp này chỉ thật sự hiệu quả khi bộ nhớ chính có thể chứa hết toàn bộ CSDL
• Thuật toán FreeSpan, PrefixSpan
Tiếp cận theo hướng chia nhỏ dữ liệu, FreeSpan [12] là thuật toán đầu tiên thực hiện phép chiếu trên CSDL để giảm chi phí lưu trữ dữ liệu Sau đó, thuật toán này được phát triển thành PrefixSpan [18] Xuất phát từ tập mẫu tuần tự độ dài 1, PrefixSpan tạo ra CSDL được chiếu với mỗi mẫu đó Trong CSDL chiếu, mỗi chuỗi
dữ liệu chỉ giữ lại phần hậu tố đối với tiền tố đã chiếu Mẫu được phát triển bằng những item phổ biến tìm được trong CSDL được chiếu Quá trình này được lặp lại cho đến khi CSDL chiếu không còn item phổ biến nào Tuy nhiên, khi phát triển mẫu, thuật toán FreeSpan và PrefixSpan đều phải thực hiện chiếu CSDL và duyệt CSDL chiếu để tìm item phổ biến
Tất cả các phương pháp trên đều tiếp cận theo hướng biểu diễn thông tin dữ liệu theo chiều ngang Để xác định độ hỗ trợ của một mẫu cần phải duyệt lại toàn bộ CSDL Để khắc phục điều này, một số hướng nghiên cứu mới tiến hành tổ chức dữ liệu theo chiều dọc, đi đầu là SPADE [23], sau đó có SPAM [4], và PRISM [9] là những thuật toán khá hiệu quả Thay vì phải duyệt toàn bộ CSDL chuỗi, với mỗi mẫu ứng viên, chúng thực hiện lưu trữ thông tin cho biết mẫu đó có mặt trong những chuỗi dữ liệu nào, từ đó tính nhanh độ hỗ trợ Mặt khác, mẫu mới được tạo ra lấy thông tin dựa trên những mẫu đã có và không cần phải duyệt lại CSDL
• Thuật toán SPADE
Thuật toán SPADE [23] tổ chức dữ liệu theo chiều dọc, trong đó ứng với mỗi item sẽ lưu danh sách định danh của các chuỗi dữ liệu và định danh của các itemset
có chứa item đó Độ hỗ trợ của item được tính trực tiếp từ danh sách các định danh Mặt khác, SPADE còn dựa trên lý thuyết dàn để chia nhỏ không gian tìm kiếm và thao tác kết đơn giản để tạo ra tập ứng viên Thuật toán này gom nhóm các mẫu tuần tự dựa theo tiền tố thành các lớp tương đương Thuật toán chỉ duyệt CSDL đúng ba lần: lần duyệt thứ nhất và thứ hai thực hiện tìm các mẫu tuần tự có độ dài 1
- 20 -
Trang 28và 2 Ở lần duyệt thứ ba, thuật toán phát triển mẫu độ dài k từ hai mẫu độ dài (k-1)
có (k-2) item đầu giống nhau, tiến hành duyệt trên từng lớp tương đương do đó giảm chi phí tính toán và sử dụng bộ nhớ hiệu quả hơn Với ngưỡng minSup thấp,
so với thuật toán GSP, thuật toán SPADE thực hiện nhanh gấp đôi [23]
• Thuật toán SPAM
Thuật toán SPAM [4] cũng tổ chức dữ liệu theo chiều dọc như thuật toán SPADE Thông tin của các mẫu ứng viên được biểu diễn dưới dạng bảng bit dọc, mỗi bit ứng với một itemset của một chuỗi trong CSDL Nếu item có mặt trong
itemset j thì bit tương ứng itemset j được đánh dấu là 1, ngược lại là 0 Độ hỗ trợ
của mẫu được xác định dựa trên bảng bit Về tốc độ thực thi, trên các CSDL nhỏ, SPAM thực hiện nhanh hơn 2.5 lần so với SPADE, nhưng chưa thực hiện tốt bằng PrefixSpan [18] Với CSDL lớn, SPAM thực hiện tốt hơn nhiều so với SPADE và PrefixSpan vì tổ chức biểu diễn và lưu trữ dữ liệu dưới dạng bit nên thao tác phát sinh ứng viên và đếm độ hỗ trợ rất hiệu quả [18]
• Thuật toán PRISM
Thuật toán PRISM [9] là thuật toán mới nhất hiện nay, tiếp cận theo hướng hoàn toàn khác biệt đó là sử dụng phương pháp mã hóa nguyên tố để biểu diễn thông tin của mẫu ứng viên Thuật toán sử dụng cấu trúc dữ liệu cây từ điển để lưu trữ các mẫu tuần tự tìm được Thuật toán chỉ duyệt CSDL đúng một lần để tìm tập mẫu tuần tự độ dài 1 cùng với khối mã hóa thông tin tương ứng cho các mẫu đó Sau đó, phát triển mẫu bằng cách thêm vào mẫu một item phổ biến Thông tin của mẫu mới được xác đinh dựa trên khối mã hóa của mẫu cũ và của item thêm vào Như vậy, thuật toán PRISM không phải duyệt CSDL nhiều lần Đồng thời, thuật toán giảm chi phí tính toán bằng cách sử dụng bảng tra cho khối mã hóa thông tin dựa trên lý thuyết mã hóa nguyên tố
Trong đề tài này, luận văn sử dụng thuật toán PRISM để khai thác tập mẫu tuần
tự vì PRISM là thuật toán hiệu quả nhất trong số các thuật toán đã có Mặt khác, sử dụng thuật toán này, tập mẫu tuần tự tìm thấy sẽ được tổ chức và lưu trữ dưới dạng
- 21 -
Trang 29cấu trúc cây từ điển, là tiền đề cho phương pháp khai thác luật tuần tự dựa trên cây tiền tố mà luận văn đề xuất
2.4.3 Thuật toán PRISM
Thuật toán PRISM (Prime-Encoding Based Sequence Mining) [9] được đề
xuất bởi Karam Gouda, Mosab Hasaan, và Zaki vào năm 2010
PRISM sử dụng cách tiếp cận dọc để tìm liệt kê và đếm độ hỗ trợ Khác với các thuật toán trước đây, PRISM dựa trên khái niệm mới đó là khái niệm mã hóa khối nguyên tố, mà nền tảng là lý thuyết phân tích thừa số
2.4.3.1 Một số khái niệm
Mọi số nguyên dương (>1) đều có thể biểu diễn dưới dạng tích các số nguyên
tố Gọi p 1 , p 2 , …, p r là các thừa số nguyên tố phân biệt của n, được sắp theo thứ tự
p 1< p 2< …< p r Các thừa số lặp lại có thể biểu thị dưới dạng số mũ,
trong đó m i là số nguyên dương được gọi là lũy thừa của p i Cách thừa số hóa n được gọi là dạng chuẩn của n Ví dụ: n = 31752 =23 34 72
1m 2m mr
r
Cho hai số nguyên a, b được biểu diễn dưới dạng chuẩn và
Ước chung lớn nhất của hai số a và b kí hiệu
1
ia a a
m r
Với mục đích của thuật toán mã hóa nguyên tố cho dữ liệu chuỗi, ta chỉ quan
tâm đến số nguyên không chính phương [9] Số nguyên không chính phương n là số
mà tất cả các thừa số nguyên tố p i của nó đều có số mũ m i = 1
Cho tập hợp G gồm n phần tử có thứ tự, lấy P(G) là tập tất cả tập con của tập
G Xét tập S ∈ P(G), S có thể biểu diễn dưới dạng vector nhị phân gồm n bit, trong
đó bit thứ i có giá trị 1 nếu phần tử thứ i của G có trong S và ngược lại, bit thứ i có
- 22 -
Trang 30giá trị 0 Kí hiệu vector bit của S là S B Ví dụ: Nếu G = {2, 3, 5, 7} và S = {2, 5} thì
S B = 1010
Tập sinh nguyên tố [9]
Xét tập S gồm n phần tử, S∈P(G) Tích các phần tử của S kí hiệu
⊗S=s 1 s 2 …s n Nếu S = ∅, ta quy ước ⊗S = 1 Khi đó, ⊗P(G) = {⊗S: S∈P(G)} là
tập có được khi áp dụng phép toán tích ⊗ vào tất cả các tập S có trong P(G) Ta gọi
G là tập sinh của ⊗P(G) theo phép toán ⊗ Ta gọi G là tập sinh không chính phương nếu mọi phần tử X ∈ ⊗P(G) đều là số nguyên không chính phương Nếu tập G chỉ gồm các số nguyên tố thì G được gọi là tập sinh nguyên tố
Ta có tập (P, ⊗) là nửa nhóm; (P, ⊗) là nửa nhóm không chính phương nếu và chỉ nếu với mọi phần tử X, Y ∈ P, nếu Z = X ⊗ Y là số nguyên không chính phương thì Z∈P
Định lý 1 [9]: Tập (P, ⊗) là nửa nhóm không chính phương khi và chỉ khi nó
có tập sinh G là tập nguyên tố không chính phương Nói cách khác, P là nửa nhóm không chính phương khi và chỉ khi P = ⊗P(G)
Theo lý thuyết toán học, từ nửa nhóm, ta có thể xây dựng được một dàn Do
đó, P(G) tạo ra một dàn với phép toán ⊗ Trong dàn, chặn trên chung được xác định
là giao các thành phần của P(G) tức là ước chung lớn nhất tương ứng của các thành phần của P(G); và chặn dưới chung là hội tương ứng là bội chung nhỏ nhất Ví dụ, lấy tập G gồm 4 số nguyên tố G = {2, 3, 5, 7}
Trang 31Định lý 2 [9]: Cho P(G) là một nửa nhóm không chính phương với tập sinh
nguyên tố G, lấy hai phần tử phân biệt X, Y ∈ ⊗P(G) thì ucln(X, Y) = ⊗(S X ∩ S Y ),
và bcnn(X, Y) = ⊗(S X∪ S Y ), trong đó X = ⊗S X và Y = ⊗S Y với S X , S Y∈ P(G) là các thừa số nguyên tố của X và Y
Định nghĩa số lượng thừa số của một số nguyên tố X ∈ ⊗P(G) là số lượng số nguyên tố có trong tập G mà tích của chúng bằng X Ví dụ, 21G ={3, 7} 2=
Hệ quả [9]: Cho ⊗ P(G) là nửa nhóm không chính phương với tập sinh nguyên tố G, với hai phần tử phân biệt X, Y ∈⊗P(G) thì ucln(X,Y) ∈⊗P(G)
2.4.3.2 Lý thuyết về khối mã hóa nguyên tố
Cho tập G gồm các số nguyên tố được sắp theo thứ tự tăng dần và vector nhị phân B có độ dài n Khi đó, B có thể phân hoạch thành m N
G
= khối liên tiếp, trong
- 24 -
Trang 32đó khối thứ i là Bi B i= ⎡⎣( −1) *G +1: *i G⎤⎦,1≤ ≤i m Mỗi khối B i đại diện cho một tập con S ⊆G
[ ]
i
B j
Lấy là bit thứ j trong khối B i và G[j] là số nguyên tố thứ j tương ứng
trong G, ta định nghĩa giá trị của B i đối với tập G như sau v B G( , )i = ⊗{G j[ ]Bi j[ ]}
Mã hóa nguyên tố theo khối của vector nhị phân B đối với tập nguyên tố cơ sở
G được định nghĩa là v B G( , )={v B G( , ) :1i ≤ ≤i m} Có thể viết tắt là
và là Như vậy, vector nhị phân được chia ra thành các khối, mỗi khối
G và tiến hành mã hóa từng khối dựa vào tập nguyên tố cơ sở G
Ví dụ: Cho G ={2, 3, 5, 7} và B = 100111100100 có độ dài 12 Có thể chia B
Xét hai dãy nhị phân A và B có khối nguyên tố mã hóa tương ứng là v(A) và v(B), ta định nghĩa ucln(v(A),v(B)) = {ucln(v(A i ),v(B i )): 1 ≤ i ≤ m} Ví dụ cho v(A) = {2, 210, 2}, v(B) = {14, 30, 5} thì ucln(v(A), v(B)) = {ucln(2, 14), ucln(210, 30), ucln(2, 5)} = {2, 30, 1}
Cho vector nhị phân A =A 1 A 2 …A m với A i là một dãy gồm G bit Gọi f A là vị trí
đầu tiên trong A có bit là 1, định nghĩa phép toán lấy mặt nạ ( ) A>như sau:
0, ( ) [ ]
Trang 33Tức là, ( ) A>là vector bit thu được bằng cách đổi bit 1 đầu tiên tìm được trong
A thành 0 và các bit từ sau vị trí đó được gán là 1 Ví dụ, nếu A = 001001100100 thì
A
f = 3 và ( ) A>
( (v
= 000111111111 Tương tự, chúng ta cũng có thể định nghĩa phép toán lấy mặt nạ cho khối nguyên tố mã hóa như sau Ví dụ,
theo định nghĩa trên ta có ({
( ( ))v A >=v A(( ) )1111) (1111) {7,v
Xét tập các item I = {i 1 , i 2 , …, i n } của CSDL chuỗi, mỗi item có thể xuất hiện
ở các chuỗi dữ liệu khác nhau và xuất hiện ở các vị trí khác nhau trong chuỗi Vì
vậy, với mỗi item i j, ta tiến hành mã hóa theo định danh của các chuỗi dữ liệu và mã hóa theo vị trí xuất hiện của item trong chuỗi dữ liệu
Kí hiệu P(S X , P X ) là mã hóa nguyên tố của item X, trong đó S X là mã hóa theo
định danh chuỗi dữ liệu chứa X và P X là mã hóa theo vị trí xuất hiện X trong chuỗi
dữ liệu
• Khối mã hóa theo chuỗi
Mã hóa theo định danh của các chuỗi dữ liệu (tìm S X) Xây dựng mã hóa nguyên tố theo khối đối với định danh của các chuỗi dữ liệu Thực hiện 2 bước như sau:
Bước 1: Xây dựng vector nhị phân biểu diễn sự có mặt của item trong các
chuỗi dữ liệu Độ dài vector nhị phân bằng số lượng chuỗi có trong CSDL Nếu
chuỗi thứ i có chứa item X thì bit thứ i tương ứng là 1 ngược lại là 0 Sau đó, bổ sung thêm các bit 0 vào vector nhị phân để có độ dài là bội của G
Bước 2: Mã hóa vector nhị phân thành khối nguyên tố dựa vào tập nguyên tố
cơ sở G Ví dụ, trong hình 2.2.(a) gồm 5 chuỗi, trong đó I = {A, B, C}, cho G = {2,
3, 5, 7} là tập phát sinh nguyên tố không chính phương cơ sở Để phát sinh khối mã hóa nguyên tố cho item A, đầu tiên ta xây dựng mã hóa nguyên tố theo định danh của các chuỗi trong CSDL đối với sự có mặt của item A Vì item A xuất hiện ở tất
- 26 -
Trang 34cả các chuỗi ngoại trừ chuỗi 4, nên có thể biểu diễn sự xuất hiện của item A trên toàn bộ cơ sơ dữ liệu dưới dạng vec-tơ nhị phân, sau khi đệm thêm 3 bit bên phải, A
= 11101000, sinh ra mã hóa nguyên tố trong hình 2.2.(c) là v(A) = ν(1110)ν(1000) =
{30, 2}
Hình 2.2 Ví dụ về khối mã hóa nguyên tố
(a) Cho CSDL chuỗi, (b) Khối mã hóa vị trí của item A, (c) Khối mã hóa chuỗi của các item, (d) Các khối mã hóa đầy đủ, (e) Các khối mã hóa sau khi thu gọn
• Khối mã hóa theo vị trí
Mã hóa theo vị trí xuất hiện của item trong mỗi chuỗi (tìm P X) Xây dựng mã hóa nguyên tố theo khối cho các vị trí xuất hiện của item trong mỗi chuỗi Vị trí xuất hiện của item được xác định theo chỉ số của itemset chứa item đó, trong mỗi chuỗi chỉ số của itemset được đếm từ 1 Ví dụ, vị trí xuất hiện của item A trong
- 27 -