Đó là nền tảng của nhiều nhiệm vụ khai thác dữ liệu khác như khai thác luật kết hợp, mối tương quan; mẫu tuần tự, cấu trúc như đồ thị con; phân tích dữ liệu không gian, đa phương tiện, p
Trang 1ĐẠI HỌC QUỐC GIA TP.HCM
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
Mã số: 60.48.01.01
NGƯỜI HƯỚNG DẪN KHOA HỌC
TS PHẠM THỊ THIẾT
TP HỒ CHÍ MINH – NĂM 2015
Trang 2LỜI CAM ĐOAN
Tôi xin cam đoan luận văn Thạc sĩ “Khai thác tập phổ biến tối đại sử dụng cấu trúc Nodeset” ngành Khoa học máy tính là công trình của tôi Luận văn có sử dụng thông tin trích dẫn từ nhiều nguồn khác nhau, các thông tin trích dẫn đều được ghi rõ nguồn gốc
Số liệu và kết quả nghiên cứu trong luận văn là hoàn toàn trung thực và chưa từng được công bố trong bất kỳ công trình nào khác
TP HCM, tháng 10 năm 2015
Tác giả luận văn
Phạm Phú Thanh Sang
Trang 3LỜI CẢM ƠN
Đầu tiên, tôi xin chân thành cảm ơn và biết ơn sâu sắc sự tận tình dạy dỗ và giúp đỡ của tất cả Quý Thầy/Cô Trường Đại học Công nghệ Thông tin
Tôi xin gửi lời cảm ơn chân thành và sâu sắc đến Cô Phạm Thị Thiết và Thầy
Võ Đình Bảy, người đã tận tình hướng dẫn và giúp đỡ tôi trong suốt thời gian làm luận văn
Ngoài ra, con xin cảm ơn Ông Bà, Cha Mẹ và người thân trong gia đình đã hết
lòng giúp đỡ, động viên và luôn tạo điều kiện cho con được hoàn thành khóa học và luận văn này
Tôi xin 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 này
Phạm Phú Thanh Sang
Trang 4MỤC LỤC
Lời cam đoan
Lời cảm ơn
Mục lục 1
Danh mục các ký hiệu và chữ viết tắt 3
Danh mục các bảng 4
Danh mục các hình vẽ, biểu đồ 5
MỞ ĐẦU 6
Chương 1 TỔNG QUAN 11
1.1 Giới thiệu 11
1.2 Một số nghiên cứu liên quan 11
1.3 Đóng góp của luận văn 13
Mục tiêu nghiên cứu 14
Đối tượng, phạm vi nghiên cứu 14
Phương pháp nghiên cứu 14
Chương 2 CƠ SỞ LÝ THUYẾT BÀI TOÁN KHAI THÁC TẬP PHỔ BIẾN TỐI ĐẠI 16
2.1 Bài toán khai thác tập phổ biến tối đại 16
2.2 Các thuật toán khai thác tập phổ biến tối đại 17
Thuật toán Mafia 17
Thuật toán GenMax 25
2.3 Tổng kết chương 36
Chương 3 PHƯƠNG PHÁP KHAI THÁC TẬP PHỔ BIẾN TỐI ĐẠI SỬ DỤNG CẤU TRÚC N-LIST 37
3.1 Một số khái niệm 37
Cây PPC 37
Cấu trúc N-list 40
Khái niệm subsume 42
3.2 Thuật toán NLA-MFP 44
3.3 Thuật toán INLA-MFI 46
3.4 Ví dụ minh họa 50
Trang 5Thuật toán NLA-MFP 50
Thuật toán INLA-MFP 53
3.5 Tổng kết chương 54
Chương 4 KẾT QUẢ THỰC NGHIỆM 55
4.1 Môi trường và cơ sở dữ liệu thực nghiệm 55
4.2 Thời gian thực thi 55
4.3 Bộ nhớ sử dụng 59
4.4 Tổng kết chương 63
Chương 5 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 64
5.1 Kết luận 64
5.2 Hướng phát triển 64
TÀI LIỆU THAM KHẢO 65
Trang 6DANH MỤC CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT
MFI Maximal Frequent Itemset Tập phổ biến tối đại
MFP Maximal Frequent Pattern Mẫu phổ biến tối đại
LMFI Local Maximal Frequent Itemset Tập phổ biến tối đại cục bộ
Trang 7DANH MỤC CÁC BẢNG
Bảng 1 Cơ sở dữ liệu ví dụ, DB Ex 16
Bảng 2 Các tập phổ biến của DB Ex với minSup = 60% 16
Bảng 3 CSDL DB Ex sau khi đã xóa các item không phổ biến và sắp xếp giảm dần
theo độ phổ biến 38
Bảng 4 Bảng N-list của tất cả các 1-patterns 50 Bảng 5 Một số đặc điểm của CSDL thực nghiệm 55
Trang 8DANH MỤC HÌNH VẼ, ĐỒ THỊ
Hình 1 Ví dụ minh họa dàn tập con hoàn chỉnh thuật toán Mafia (Burdick và các
đồng sự, 2005) 18
Hình 2 Duyệt theo chiều sâu (Simple DFS) 19
Hình 3 Thủ tục tỉa cây PEP 20
Hình 4 Thủ tục FHUT 21
Hình 5 Thủ tục HUTMFI 22
Hình 6 Thủ tục Project 24
Hình 7 Thuật toán Mafia 25
Hình 8 Thủ tục FI-backtrack 27
Hình 9 Ví dụ thuật toán FI-backback 27
Hình 10 Thủ tục MFI-backtrack 28
Hình 11 Ví dụ thuật toán MFI-backback 29
Hình 12 Thủ tục LMFI-backtrack 33
Hình 13 Ví dụ thuật toán LMFI-backtrack 33
Hình 14 Thủ tục FI-combine sử dụng tidset 34
Hình 15 Thủ tục FI-combine sử dụng diffset 35
Hình 16 Thuật toán tạo cây PPC 38
Hình 17 Ví dụ tạo cây PPC sử dụng DB Ex ở Bảng 1 với minSup = 60% 39
Hình 18 Cây PPC hoàn chỉnh tạo từ DB Ex ở Bảng 1 với minSup = 60% 39
Hình 19 Thủ tục Generate_NList 41
Hình 20 Thủ tục NL_intersection 42
Hình 21 Thủ tục Find_Subsume 43
Hình 22 Thuật toán NLA-MFP 45
Hình 23 Thuật toán INLA-MFP 50
Hình 24 Tập 1-patterns và N-list của chúng 51
Hình 25 Thuật toán NLA-MFP ở lần duyệt tập A 52
Hình 26 Thuật toán NLA-MFP ở lần duyệt tập E 52
Hình 27 Thuật toán INLA-MFP ở lần duyệt tập A 53
Hình 28 Thuật toán INLA-MFP ở lần duyệt tập E 53
Trang 9Hình 29 Thời gian thực hiện của (a) dGenMax, TDM-MFI, NLA-MFP và
INLA-MFP và (b) NLA-INLA-MFP và INLA-INLA-MFP đối với CSDL Chess 56
Hình 30 Thời gian thực hiện của (a) dGenMax, TDM-MFI, NLA-MFP và
INLA-MFP và (b) NLA-INLA-MFP và INLA-INLA-MFP đối với CSDL Pumsb 56
Hình 31 Thời gian thực hiện của (a) dGenMax, TDM-MFI, NLA-MFP và
INLA-MFP và (b) NLA-INLA-MFP và INLA-INLA-MFP đối với CSDL Connect 57
Hình 32 Thời gian thực hiện của (a) dGenMax, TDM-MFI, NLA-MFP và
INLA-MFP và (b) NLA-INLA-MFP và INLA-INLA-MFP đối với CSDL Pumsb* 57
Hình 33 Thời gian thực hiện của (a) dGenMax, TDM-MFI, NLA-MFP và
INLA-MFP và (b) NLA-INLA-MFP và INLA-INLA-MFP đối với CSDL Mushroom 58
Hình 34 Thời gian thực hiện của (a) dGenMax, TDM-MFI, NLA-MFP và
INLA-MFP và (b) NLA-INLA-MFP và INLA-INLA-MFP đối với CSDL Accident 58
Hình 35 Thời gian thực hiện của (a) dGenMax, TDM-MFI, NLA-MFP và
INLA-MFP và (b) NLA-INLA-MFP và INLA-INLA-MFP đối với CSDL T10I4D100K 59
Hình 36 Thời gian thực hiện của (a) dGenMax, TDM-MFI, NLA-MFP và
INLA-MFP và (b) NLA-INLA-MFP và INLA-INLA-MFP đối với CSDL T40I10D100K 59
Hình 37 Bộ nhớ sử dụng của (a) dGenMax, TDM-MFI, NLA-MFP và INLA-MFP
và (b) NLA-MFP và INLA-MFP đối với CSDL Chess 60
Hình 38 Bộ nhớ sử dụng của (a) dGenMax, TDM-MFI, NLA-MFP và INLA-MFP
và (b) NLA-MFP và INLA-MFP đối với CSDL Pumsb 60
Hình 39 Bộ nhớ sử dụng của (a) dGenMax, TDM-MFI, NLA-MFP và INLA-MFP
và (b) NLA-MFP và INLA-MFP đối với CSDL Connect 60
Hình 40 Bộ nhớ sử dụng của (a) dGenMax, TDM-MFI, NLA-MFP và INLA-MFP
và (b) NLA-MFP và INLA-MFP đối với CSDL Pumsb* 61
Hình 41 Bộ nhớ sử dụng của của (a) dGenMax, TDM-MFI, NLA-MFP và
INLA-MFP và (b) NLA-INLA-MFP và INLA-INLA-MFP đối với CSDL Mushroom 61
Hình 42 Bộ nhớ sử dụng của (a) dGenMax, TDM-MFI, NLA-MFP và INLA-MFP
và (b) NLA-MFP và INLA-MFP đối với CSDL Accident 62
Hình 43 Bộ nhớ sử dụng của (a) dGenMax, TDM-MFI, NLA-MFP và INLA-MFP
và (b) NLA-MFP và INLA-MFP đối với CSDL T10I4D100K 62
Trang 10Hình 44 Bộ nhớ sử dụng của (a) dGenMax, TDM-MFI, NLA-MFP và INLA-MFP
và (b) NLA-MFP và INLA-MFP đối với CSDL T40I10D100K 62
Trang 11MỞ ĐẦU
1 Lời nói đầu
Với lượng thông tin lưu trữ ngày càng tăng lên theo cấp số nhân cả về số lượng lẫn kích cỡ của dữ liệu Dù vậy lượng tri thức cần thiết vẫn còn rất nhỏ so với khối lượng thông tin Do đó khai thác dữ liệu nhằm tìm kiếm những thông tin hữu ích, những tri thức tiềm ẩn trong khối dữ liệu đồ sộ đó là một vấn đề cấp bách
Khai thác dữ liệu là một trong trong 7 bước của quá trình khám phá tri thức trong cơ sở dữ liệu (KDD - Knowledge Discovery in Databases) và KDD được xem như 7 quá trình khác nhau theo thứ tự như sau:
- Làm sạch dữ liệu (data cleaning & preprocessings): loại bỏ nhiễu và dữ liệu không cần thiết
- Tích hợp dữ liệu (data integration): quá trình hợp nhất dữ liệu thành những kho dữ liệu sau khi đã làm sạch và tiền xử lý
- Trích chọn dữ liệu (data selection): trích chọn dữ liệu từ những kho dữ liệu và sau đó chuyển đổi về dạng thích hợp cho quá trình khai thác tri thức Quá trình bao gồm cả việc việc xử lý với dữ liệu nhiễu, dữ liệu không đầy đủ, v.v
- Chuyển đổi dữ liệu: Các dữ liệu được chuyển đổi sang các dạng phù hợp cho quá trình xử lý
- Khai thác dữ liệu (data mining): Là một trong các bước quan trọng nhất, trong đó sử dụng những phương pháp thông minh để chắt lọc ra những mẫu dữ liệu
- Đánh giá tri thức (knowledge evaluation): Quá trình đánh giá các kết quả tìm được thông qua các độ đo
- Biểu diễn tri thức (knowledge presentation): Quá trình này sử dụng các
kỹ thuật để biểu diễn và thể hiện trực quan cho người dùng
Khai thác dữ liệu được chia thành một số hướng sau:
- Mô tả khái niệm (concept description)
- Luật kết hợp (association rules)
- Phân lớp và dự đoán (classification & prediction)
Trang 12- Phân cụm (clustering)
- Khai thác chuỗi phổ biến (sequential patterns)
Bài toán tìm tập phổ biến là một trong những bài toán quan trọng trong lĩnh vực khai thác dữ liệu Đó là nền tảng của nhiều nhiệm vụ khai thác dữ liệu khác như khai thác luật kết hợp, mối tương quan; mẫu tuần tự, cấu trúc (như đồ thị con); phân tích dữ liệu không gian, đa phương tiện, phụ thuộc thời gian; phân loại dựa trên luật kết hợp; gom nhóm dựa trên mẫu phổ biến, v.v…
Bên cạnh bài toán khai thác tập phổ biến, bài toán khai thác tập phổ biến tối đại nhằm tìm ra một tập đại diện cho các tập phổ biến cũng được quan tâm xem xét Hiện nay, có rất nhiều thuật toán khai thác tập phổ biến tối đại như: MaxMiner (Bayardo, 1998); DepthProject (Agrawal và các đồng sự, 2000); Mafia (Burdick và các đồng sự, 2001); GenMax (Gouda và Zaki, 2005); TDM-MFI (Liu và các đồng sự, 2012) Cho đến nay, mặc dù đã được nhiều nghiên cứu, nhưng thời gian khai thác và bộ nhớ sử dụng còn lớn Do đó, việc đề xuất một phương pháp mới để khai thác tập phổ biến tối đại với thời gian và bộ nhớ khai thác thấp là cần thiết
Luận văn tập trung nghiên cứu một thuật toán hiệu quả cho bài toán khai thác tập phổ biến tối đại Dựa trên một số công trình đã nghiên cứu trong lĩnh vực khai thác tập phổ biến và tập phổ biến tối đại đã được công bố trong những năm gần đây, luận văn trình bày các vấn đề chính sau đây:
- Một số hướng tiếp cận mới trong thời gian gần đây
- Sử dụng cấu trúc N-list và khái niệm subsume đề xuất một thuật toán hiệu quả cho bài toán khai thác tập phổ biến tối đại
- Hai kỹ thuật cắt tỉa để giảm không gian tìm kiếm được đề xuất nhằm tìm kiếm nhanh tập phổ biến tối đại dựa trên cấu trúc N-list
- Thực nghiệm tính hiệu quả của phương pháp đề xuất so sánh với dGenMax (thuật toán GenMax sử dụng diffset) và thuật toán TDM-MFI
cả về thời gian thực thi và bộ nhớ sử dụng
2 Bố cục đề tài
Chương 1: Tổng quan
Chương 2: Cơ sở lý thuyết bài toán khai thác tập phổ biến tối đại
Trang 13Chương 3: Phương pháp khai thác tập phổ biến tối đại sử dụng cấu trúc list
N-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 bao gồm 5 chương Chương 1 giới thiệu tổng quan về bài toán tập khai thác tập phổ biến tối đại; đồng thời nêu lên các hướng tiếp cận mới trong những năm gần đây và trình bày hướng nghiên cứu và đóng góp của luận văn Chương 2 trình bày cơ sở lý thuyết của bài toán khai thác tập phổ biến tối đại, phân tích hai thuật toán Mafia và thuật toán GenMax Chương 3 trình bày các khái niệm
về cây PPC, cấu trúc N-list và khái niệm subsume từ đó đề xuất một thuật toán khai thác tập phổ biến tối đại sử dụng cấu trúc N-list (NLA-MFP); ngoài ra, trong chương này cũng trình bày hai kỹ thuật cắt tỉa để giảm không gian tìm kiếm và đề xuất một thuật toán cải tiến dựa trên cấu trúc N-list (INLA-MFP) Chương 4 trình bày các kết quả thực nghiệm so sánh thời gian thực hiện và bộ nhớ sử dụng của thuật toán NLA-MFP và INLA-MFP với thuật toán dGenMax (thuật toán GenMax
sử dụng diffset) và TDM-MFI Chương 5 trình bày các kết quả đã thực hiện trong luận văn và định hướng phát triển của đề tài trong tương lai
Trang 141 Chương 1 TỔNG QUAN
1.1 Giới thiệu
Khai thác dữ liệu (Data mining) là quá trình phân tích dữ liệu đã có (thường lớn) để tìm ra các thông tin có giá trị tiềm ẩn Khai thác dữ liệu gồm nhiều bài toán như bài toán khai thác tập phổ biến (Agrawal và các đồng sự, 1993; Han và các đồng sự, 2000; Zaki và Hsiao, 2005; Grahne và Zhu, 2005; Dong và Han, 2007; Fan
và các đồng sự, 2008; Deng và các đồng sự, 2012; Deng và Lv, 2014, 2015; Vo và các đồng sự, 2014; Pyun và Yun, 2014), bài toán phân cụm (Le 2015; Mai và các đồng sự, 2015; Xiao và các đồng sự, 2014), bài toán phân lớp (Liu và các đồng sự, 1998; Nguyen và Nguyen, 2015), trong đó bài toán khai thác luật kết hợp là một trong những bài toán quan trọng và phổ biến nhất Luật kết hợp được dùng nhiều trong phân tích hỗ trợ chiến lược bán hàng, thương mại điện tử, y học Trong bài toán phân tích giỏ hàng hóa của thương mại điện tử, những người muốn mua sách
“Data Mining and Analysis: Fundamental Concepts and Algorithms” của Zaki và
họ cũng có xu hướng mua các sách “Understanding Machine Learning: From
Theory to Algorithms” của Shelev-Shwartz và sách “Machine Learning: The Art and Science of Algorithms that Make Sense of Data” của Flach Do đó, hệ thống sẽ
gợi ý hai cuốn sách của Shelev-Shwartz và của Flach cho người dùng muốn mua sách của Zaki
Bài toán khai thác tập phổ biến được đề xuất lần đầu bởi Agrawal và các đồng
sự (1993) là bước đầu tiên để tìm ra các luật kết hợp Tuy nhiên, số lượng tập phổ biến thu được thường rất lớn, và có rất nhiều tập phổ biến thừa Hiện nay, có một số bài toán giới hạn số lượng tập phổ biến mà không mất đi tính tổng quát như bài toán khai thác tập phổ biến đóng (closed patterns), bài toán khai thác tập phổ biến tối đại
(maximal patterns), khai thác top-k và top-rank-k tập phổ biến
1.2 Một số nghiên cứu liên quan
Hiện nay, có rất nhiều thuật toán khai thác tập phổ biến tối đại với các thuật toán tiêu biểu như: MaxMiner (Bayardo, 1998) là một thuật toán giải quyết bài toán khai thác các tập phổ biến tối đại Nó sử dụng các kỹ thuật cắt tỉa hiệu quả để nhanh
Trang 15chóng thu hẹp không gian tìm kiếm MaxMiner duyệt không gian tìm kiếm theo chiều rộng; nó làm giảm số lần duyệt cơ sở dữ liệu bằng cách sử dụng một chiến lược cắt tỉa trước, tức là nếu một nút với tất cả phần mở rộng của nó có thể xác định
là phổ biến thì không cần phải duyệt nút đó nữa Nó cũng sử dụng heuristic sắp xếp lại để tăng hiệu quả việc cắt tỉa
DepthProject (Agrawal và các đồng sự, 2000) là thuật toán tìm tập phổ biến tối đại sử dụng tìm kiếm theo chiều sâu trên cây từ điển và sử dụng một phương pháp đếm dựa trên dự đoán giao dịch dọc theo các nhánh của nó DepthProject cũng sử dụng phương pháp cắt tỉa sớm và tái sắp xếp để nâng cao hiệu quả quá trình khai thác tập phổ biến tối đại
Mafia (Burdick và các đồng sự, 2001) sử dụng ba kỹ thuật cắt tỉa để loại bỏ bộ không tối đại Kỹ thuật đầu tiên là cắt tỉa trước tương tự như trong MaxMiner Kỹ thuật thứ hai là kiểm tra xem một tập mới được gộp vào một tập tối đại hiện có Kỹ
thuật cuối cùng là kiểm tra t(X) t(Y) Nếu điều kiện này thỏa thì X được gộp với Y
để mở rộng thành nút XY Ngoài ra, Mafia sử dụng cấu trúc dữ liệu bit-vector dọc
và nén, chiếu của bitmap để cải thiện thời gian khai thác và bộ nhớ sử dụng Mafia khai thác tập phổ biến tối đại và yêu cầu một bước cắt tỉa lại để loại bỏ các mẫu không tối đại
GenMax (Gouda và Zaki, 2005) tích hợp cắt tỉa với khai thác và trả về chính xác các tập phổ biến tối đại GenMax giả định dữ liệu đầu vào là ở định dạng tidset dọc Đầu tiên GenMax tính những tập phổ biến 1-patterns và những tập phổ biến 2-patterns, sử dụng phương pháp diffset (Zaki và Gouda, 2003) Thông tin này dùng
để sắp xếp lại các item trong danh sách kết hợp ban đầu để giảm kích thước của cây tìm kiếm được tạo ra GenMax sử dụng các kỹ thuật tập trung cấp tiến của LMFI-backtrack, kết hợp với diffset của thủ tục FI-diffset-combine để tạo các bộ chính xác của tất cả các tập phổ biến tối đại
Trong năm 2012, Liu và các đồng sự trình bày một dạng đồ thị các tập phổ biến để lưu thông tin các tập phổ biến và cung cấp cấu trúc lưu trữ danh sách liên kết chia ba của đồ thị tập phổ biến Sau đó, một thuật toán khai thác tập phổ biến tối đại dựa trên cấu trúc này với tên gọi TDM-MFI đã được đề xuất Kết quả thực
Trang 16nghiệm của thuật toán này tốt hơn so với một số thuật toán nổi tiếng như GenMax, Mafia với các bộ dữ liệu Adult, Congressional Voting Records, Steel Sales
Cấu trúc Nodelist (Deng và Wang, 2010) và N-list (Deng và các đồng sự, 2012) được đề xuất trong bài toán tìm tập phổ biến Chúng dựa trên cây PPC, nơi lưu trữ các thông tin liên quan với tập phổ biến 1-patterns N-list và Nodelist là tập các nút được sắp xếp trong cây PPC Nodelist được xây dựng từ các nút hậu duệ trong khi N-list được xây dựng từ các nút tổ tiên Cả hai đều có hai thuộc tính quan
trọng: (i) một N-list hoặc Nodelist liên kết với tập phổ biến (k+1) item có thể được xây dựng bằng cách ghép các N-list hoặc Nodelist của tập con k item và (ii) độ hỗ
trợ của một tập phổ biến có thể xác định bằng cách đếm các đăng ký tại các nút của N-list hoặc Nodelist của nó Thuật toán PrePost (dựa trên N-list) và thuật toán PPV (dựa trên Nodelist) nhanh hơn so với các thuật toán khác bao gồm dEclat và Eclat N-list tốt hơn so với Nodelist vì (i) độ dài N-list của một tập phổ biến nhỏ hơn nhiều so với Nodelist của nó và (ii) N-list có một thuộc tính gọi là nhánh đơn Do
đó, thuật toán PrePost hiệu quả hơn so với thuật toán PPV Ngoài ra, Nodelist và
N-list đã được sử dụng để cải thiện hiệu suất của bài toán tìm tập phổ biến top-rank-k
bởi Deng (2014) và Huynh và các đồng sự (2015) Tiếp đó, Deng và Lv (2014) đề
xuất cấu trúc Nodeset, trong đó mỗi nút chỉ có pre hoặc post trên cây PPC cho bài
toán tìm tập phổ biến Những cải tiến trong nghiên cứu này là hiệu quả hơn các phương pháp sử dụng cấu trúc N-list và Nodelist trước đó Deng và Lv (2015) mới đây nhất đã đề xuất thuật toán PrePost+ khai thác tập phổ biến sử dụng cấu trúc N-list và chiến thuật cắt tỉa ứng viên giữa tập cha/con
1.3 Đóng góp của luận văn
Đã có rất nhiều thuật toán được đề xuất để khai thác tập phổ biến tối đại nhưng do độ phức tạp của bài toán là rất lớn nên thời gian khai thác và bộ nhớ sử dụng vẫn còn rất nhiều Gần đây, cấu trúc N-list đã được đề xuất và chứng minh là
rất có hiệu quả trong các bài toán khai thác FPs, FCPs, top-rank-k FPs Do đó, luận
văn này sử dụng cấu trúc N-list để khai thác chính xác các tập phổ biến tối đại của
cơ sở dữ liệu Đầu tiên, một thuật toán dựa trên cấu trúc N-list và khái niệm subsume được đề xuất để khai thác tập phổ biến tối đại (thuật toán NLA-MFP) Tiếp
Trang 17đó, áp dụng hai kỹ thuật cắt tỉa để giảm không gian tìm kiếm được đề xuất để tìm nhanh tập phổ biến tối đại dựa trên cấu trúc N-list (thuật toán INLA-MFP) Cuối cùng, thực nghiệm được thực hiện để kiểm chứng cho sự hiệu quả của thuật toán Kết quả thực nghiệm cho thấy thuật toán chúng tôi đề xuất là tốt hơn những thuật toán hiện có để khai thác tập phổ biến tối đại
Mục tiêu nghiên cứu
Bài toán tìm tập phổ biến tối đại làm một bài toán cơ bản của nhiều nhiệm vụ khác của khai thác dữ liệu Đã có nhiều thuật toán được đề xuất để khai thác tập phổ biến tối đại nhưng độ phức tạp của bài toán lớn, thời gian khai thác và bộ nhớ sử dụng còn cao Vì vậy luận văn tập trung nghiên cứu các phương pháp tiếp cận mới như cấu trúc Nodeset, N-list, một số phương pháp giảm không gian tìm kiếm của bài toán nhằm giảm thời gian thai thác và bộ nhớ sử dụng Từ đó đề xuất một thuật toán hiệu quả cho bài toán tìm tập phổ biến tối đại
Đối tượng, phạm vi nghiên cứu
Đề tài thực hiê ̣n hai yếu tố chính sau:
Nắm bắt và vận dụng các giải thuật khai thác tập phổ biến tối đại đã có
Vận dụng các cấu trúc dữ liệu hiệu quả trong bài toán tìm tập phổ biến, tập phổ biên đóng và các phương pháp cải tiến giảm thời gian và không gian tìm kiếm Từ đó tiến hành cài đặt thuật toán đề xuất trên các bộ dữ liệu chuẩn để kiểm chứng kết quả thực thi
Phương pháp nghiên cứu
Tìm hiểu và cài đặt lại thuật toán dGenMax (thuật toán GenMax sử dụng diffset), thuật toán TDM-MFI bằng ngôn ngữ C#
Tìm hiểu cấu trúc N-list và một số thuật toán sử dụng N-list như thuật toán khai thác tập phổ biến sử dụng N-list và khái niệm subsume (Vo và các đồng sự, 2014) và thuật toán sử dụng cấu trúc N-list cho khai thác tập phổ biến đóng (Le và Vo, 2015)
Kiểm thử và so sánh về thời gian thực thi và bộ nhớ sử dụng của thuật toán dGenMax và thuật toán TDM-MFI với thuật toán đề xuất sử dụng
Trang 18cấu trúc N-list NLA-MFP và INLA-MFP trên cùng các bộ dữ liệu chuẩn như Chess, Pumbs, Connect, Pumbs*, Mushroom, Accident, T10I4D100K
và T40I10D100K
Trang 192 Chương 2 CƠ SỞ LÝ THUYẾT BÀI TOÁN KHAI THÁC TẬP
PHỔ BIẾN TỐI ĐẠI
2.1 Bài toán khai thác tập phổ biến tối đại
Cho trước cơ sở dữ liệu DB gồm một tập n các giao dịch (Transaction) trong
đó mỗi giao dịch chứa một số các mục dữ liệu (Itemset) Một DB Ex gồm n = 5 giao
dịch được trình bày trong Bảng 1 được sử dụng làm CSDL ví dụ xuyên suốt luận
văn Độ phổ biến của một pattern X ∈ I, kí hiệu sup(X), là tỉ số các transaction có chứa X và số lượng các transaction Một tập X được gọi là phổ biến nếu sup(X) ≥
minSup (minSup ngưỡng phổ biến nhỏ nhất mà người dùng chỉ định) Một tập phổ
biến được gọi là tập phổ biến tối đại (MFP – Maximal Frequent Pattern) nếu nó không phải là tập con của bất kỳ một tập phổ biến khác
item, sau đó tính độ hộ trợ của các tập ứng viên bằng cách tính số giao dịch có xuất
hiện các item trong tập ứng viên đó Nếu độ hỗ trợ lớn hơn minSup = 60% thì tập
ứng viên là tập phổ biến Tất cả các tập phổ biến được trình bày trong Bảng 2
Bảng 2 Các tập phổ biến của DB Ex với minSup = 60%
patterns Số giao dịch chứa item Độ phổ biến
Trang 20Với minSup = 60%, ta tìm được các tập phổ biến như sau: A, B, C, E, AC, BC,
BE, CE, BCE Trong những tập phổ biến trên, tập AC và BCE không là tập con của
tập phổ biến nào nên tập AC và BCE là hai tập phổ biến tối đại
2.2 Các thuật toán khai thác tập phổ biến tối đại
Có rất nhiều thuật toán khai thác tập phổ biến tối đại hiện có, trong luận văn này tập trung phân tích hai thuật toán tiêu biểu là thuật toán Mafia và thuật toán GenMax
Thuật toán Mafia
Cơ sở lý thuyết
Hầu hết các thuật toán trước đó sử dụng định dạng dữ liệu ngang, trong đó dữ liệu được tổ chức như là tập hợp các hàng và mỗi hàng đại diện cho một giao dịch
(Apriori) Một số thuật toán lại sử dụng định dạng dữ liệu dọc với mỗi item X là
một tập các định danh của giao dịch (Tidset, Diffset) Ngoài ra cũng có định dạng
dữ liệu đại diện theo chiều dọc (Vertical Bitvectors) Thuật toán Mafia sử dụng định dạng dữ liệu đại diện theo chiều dọc để khai thác tập phổ biến tối đại
Giả sử có một cây từ điển mà các item được sắp xếp theo một thứ tự nào đó (kí hiệu thứ tự là ≤L) của items I trên cơ sở dữ liệu Nếu item i được sắp xếp trước
item j, kí hiệu i ≤L j Sự sắp xếp này có thể được sử dụng để sinh dàn tập con hoặc
sắp xếp một phần của tập lớn S của item I Chúng ta định nghĩa sắp xếp một phần ≤
trên S 1 , S 2 S sao cho S 1 ≤ S 2 nếu S 1 S 2 Nếu S 1 S 2, không có mối quan hệ sắp
xếp giữa S 1 , S 2
Trang 21Hình 1 Ví dụ minh họa dàn tập con hoàn chỉnh thuật toán Mafia (Burdick và các
đồng sự, 2005)
Hình 1 là một ví dụ của dàn tập con hoàn chỉnh của 4 item Phần tử trên cùng
của dàn là một tập rỗng và mỗi cấp độ k ở dưới chứa tất cả các tập items Tập
k-items được sắp xếp trên cây từ điển ở mỗi cấp độ và tất cả các tập con được sinh ra
từ các tập con trên cây từ điển ở cấp độ trước đó Tạo các tập con theo cách trên làm giảm dàn tập con trên cây từ điển cũ được trình bày bởi Rymon (1992) và được cải tiến bởi Bayardo (1998) và Agarwal (2001)
Các tập phổ biến xác định mỗi nút được gọi là head của nút, trong khi phần
mở rộng của nút gọi là tail của nút Trong cách duyệt theo chiều sâu đơn thuần của cây, tail chứa tất cả các mục của cây lớn hơn bất kỳ thành phần nào của head Với việc sắp xếp lại, tail chỉ chứa độ hộ trợ của các nút hiện hành Lưu ý, tất cả các tập
có thể xuất hiện trong một cây con được chứa trong head hợp với tail (HUT) của
cây con gốc, một tập được hình thành bằng cách kết hợp tất cả các thành phần của
head và tail
Vấn đề của khai thác tập phổ biến có thể xem như việc tìm kiếm một đường cắt qua dàn mà tất cả các thành phần trên đường cắt là tập phổ biến và tất cả các tập con bên dưới là tập không phổ biến (Hình 1) Các tập phổ biến trên đường cắt tạo thành biên giới tích cực, trong khi các tập không phổ biến bên dưới đường cắt tạo thành biên giới tiêu cực Với một vòng lặp mà không có cắt tỉa, chúng ta cần phải tính độ hỗ trợ của tất cả các thành phần bên trên và trong biên giới tiêu cực Ví dụ trong Hình 1, một đường cắt trên dàn đã được vẽ và tất cả các tập phổ biến được tìm
Trang 22thấy ngoại trừ {1, 2, 3, 4} và {1, 3, 4}, kể cả khi cả hai nằm bên dưới biên giới tiêu cực
Xem xét nút P và đường cắt ngang dàn (Hình 1) head của P là {1} và tail (trước khi thực thi) là {2, 3, 4} Vì vậy HUT của P là {1, 2, 3, 4} Sử dụng cách sắp xếp lại, con của P là {1, 2}, {1, 3}, {1, 4} sẽ được tính đầu tiên Dựa vào đường cắt trong Hình 1, chỉ tập {1, 2} là phổ biến; item 3 và 4 sẽ được cắt ra khỏi tail của P
và không có tập phổ biến mới cần phải tính trong cây con có gốc là P Trong phần
còn lại của cây tìm kiếm, tập phổ biến {2, 3} và {3, 4} cũng sẽ được tính lại Mặt khác, theo phương pháp duyệt theo chiều sâu sẽ thêm và bổ sung tập {1, 2, 3}, {1,
2, 4} và {2, 3, 4} vào tập phổ biến Do đó, kích thước của cây sẽ phát triển, việc sắp xếp lại sẽ loại bỏ nhiều nhánh trên cây tìm kiếm
Thuật toán
Duyệt chiều sâu (DFS)
Trong thuật toán ở Hình 2, thuật toán duyệt cây từ điển theo chiều sâu
thuần túy, tại mỗi nút n, mỗi phần tử trong tail được tạo ra và được tính như là một tập mở rộng Nếu độ hỗ trợ của {head của n} {phần mở rộng} nhỏ hơn
minSup, thì thuật toán dừng bởi nguyên tắc Apriori, vì bất kỳ tập mở rộng từ
tập không phổ biến sẽ là tập không phổ biến Nếu không có phần mở rộng đến một tập phổ biến, các nút đó chính là nút lá của cây
Thủ tục Simple(Current node C, MFI)
1 Duyệt từng item i trong C.tail
7 If (C là nút lá và C.head không có trong MFI) then
8 Thêm C.head vào MFI
Hình 2 Duyệt theo chiều sâu (Simple DFS)
Trang 23Khi thuật toán tìm được một nút lá của cây, sẽ bổ sung một ứng viên cho
MFI Tuy nhiên một tập phổ biến con của một tập phổ biến có thể đã được
phát hiện Vì vậy chúng ta cần phải kiểm tra xem tập ứng viên có là tập con
trong MFI không Nếu không tồn tại, chúng ta thêm ứng viên vào MFI Điều
quan trọng là với duyệt theo chiều sâu, chúng ta không quan tâm việc loại bỏ
các tập con từ MFI Vì trên thực tế các tập phổ biến bổ sung vào MFI đã được
sắp xếp theo thứ tự từ điển
Cắt tỉa cây
o Tỉa tập tương đương cha (PEP – Parent Equivalence Pruning)
Một phương pháp cắt tỉa liên quan đến việc so sánh các bộ giao dịch
của mỗi cặp cha/con (Hình 3) Giả sử xét nút n, ta có x là head của nút n
và y là tail của n Nếu t(x) t(y) thì bất kỳ giao dịch nào chứa x cũng chứa y Điều này đảm bảo rằng bất kỳ tập phổ biến z nào chứa x nhưng không chứa y đều có có tập phổ biến cha (z y) Vì chúng ta chỉ muốn các tập phổ biến tối đại nên không cần thiết tính các tập có chứa x mà không chứa y Do đó có thể chuyển item y từ tail qua head Đối với nút
n, x = x y và item y được loại khỏi tail của nút n
Thủ tục PEP(Current node C, MFI)
1 Duyệt từng item i trong C.tail
2 Begin
4 If (newNode.support = C.support) then
5 Chuyển i từ C.tail sang C.head
6 Else if (newNode là tập phổ biến) then
8 End
9 If (C là nút lá và C.head không có trong MFI) then
10 Thêm C.head vào MFI
Hình 3 Thủ tục tỉa cây PEP
Trang 24o FHUT (Frequent Head Union Tail)
Một cách cắt tỉa khác là cắt tỉa tập con của MFI Có thể quan sát thấy tại nút n, các tập phổ biến lớn nhất có thể chứa trong cây con gốc n
là HUT của n như quan sát của Bayardo (1998) Nếu HUT của n là phổ biến, chúng ta không cần phải tìm các tập con của HUT và do đó có thể tỉa toàn bộ cây con gốc n Phương pháp cắt tỉa này gọi là FHUT
(Frequent Head Union Tail)
FHUT có thể được tính bằng cách khám phá các đường ngoài cùng bên trái trong cây con của mỗi nút Trong thực tế, kể từ khi thuật toán duyệt theo chiều sâu đã khám phá những đường ngoài cùng bên trái, không có tính toán thêm là cần thiết (Hình 4)
Thủ tục FHUT(node C, MFI, boolean IsHUT)
1 Duyệt từng item i trong C.tail
2 Begin
4 IsHUT = con ngoài cùng bên trái của tail
5 If (newNode là tập phổ biến) then
6 FHUT(newNode, MFI, IsHUT)
7 End
8 If (C là nút lá và C.head không có trong MFI) then
9 Thêm C.head vào MFI
10 If (IsHUT và tất cả phần mở rộng là phổ biến) then
11 Ngừng tìm kiếm và quay lên cây
12 IsHUT thay đổi thành true
Hình 4 Thủ tục FHUT
o HUTMFI
Có hai phương pháp kiểm tra một tập x có phổ biến hay không: Thứ nhất, tính trực tiếp độ hỗ trợ của x và kiểm tra nếu một tập cha của x đã
Trang 25phổ biến FHUT sử dụng phương pháp đầu tiên Cách tiếp cận thứ hai
là xác định nếu một tập cha của HUT có trong MFI Nếu một tập cha không tồn tại thì HUT phải thường xuyên và cây con có gốc là các nút tương ứng với x có thể được loại bỏ Cách cắt tỉa này gọi là HUTMFI
(Hình 5)
Thủ tục HUTMFI(node C, MFI)
1 HUT = C.head C.tail
2 If (HUT có trong MFI) then
3 Ngừng tìm kiếm và trả về
4 Duyệt từng item i trong C.tail
5 Begin
7 If (newNode là tập phổ biến) then
9 End
10 If (C.head không có trong MFI) then
11 Thêm C.head vào MFI
Hình 5 Thủ tục HUTMFI
Sắp xếp lại (Dynamic Reordering)
Lợi ích của việc sắp xếp lại các con của mỗi nút dựa trên độ hỗ trợ thay vì thứ tự từ điển là đáng kể Tuy nhiên, sắp xếp lại yêu cầu tính độ hộ trợ của tất
cả các phần mở rộng của một nút, do đó sẽ không tỉa được không gian tìm kiếm của phương pháp duyệt theo chiều sâu
Lưu ý rằng hầu hết các phần tử tail của một nút sẽ không xuất hiện trong nhiều tail bên dưới Một thuật toán mà cắt tỉa tail để mở rộng tập phổ biến ở
mức cấp độ cao sẽ tiết kiệm được nhiều tính toán Ví dụ trong Hình 1, nếu tập phổ biến {1, 4} được tính và là không phổ biến, thì item {4} có thể được xóa
Trang 26khỏi tail của tất cả các nút trong cây con và các tập {1, 2, 4}, {1, 3, 4} không
Thuật toán sử dụng định dạng dữ liệu đại diện bitmap dọc Trong
bitmap dọc, mỗi bit đại diện cho mỗi giao dịch Nếu item i có trong giao giao dịch j thì bit j của bitmap item i được gán giá trị là 1, ngược lại sẽ gán giá trị 0 Cho X là tập phổ biến tương ứng với head của mỗi nút onecount(X) là số bit 1 trong bitmap dọc của X Lưu ý, số bit 1 cũng chính là độ hỗ trợ của tập X Cho bitmap(X) tương ứng với bitmap dọc đại diện cho các giao dịch của tập X Với mỗi phần tử Y trong tail của nút, phép tính t(X) t(Y) đơn giản là tính AND của bitmap(X) và
bitmap(Y)
Thuật toán tối ưu việc tính byte khi tạo nút mới và tính byte của phần mở rộng của tập phổ biến Thuật toán tính số bit 1 của một byte, ví
dụ giá trị của byte là 2 có 1 bit 1, giá trị của byte là 255 có 8 bit 1 Tạo
một bitmap của tập phổ biến mới bằng cách AND bitmap(X) với một bitmap của tập Y và lưu kết quả trong bitmap(X Y) Tiếp theo, tra cứu
các số 1 trong byte của bằng cách sử dụng bảng tính toán trước Tổng
hợp các tra cứu cho độ hỗ trợ của (X Y)
o Nén dữ liệu
Trang 27Một định dạng đại diện dữ liệu khác là tidset Trong một tidset chúng ta cần một từ (32 bit của kiểu Int32) để đại diện cho sự hiện diện của item so với 1 bit của phương pháp đại diện bitvector Vì vậy, đây là một phương pháp đại diện hiệu quả
Ở đây chúng ta chỉ cần thông tin của giao dịch chứa tập phổ biến X
để đếm độ hỗ trợ của cây con gốc N Nếu giao dịch T không chứa tập X (bit vector của X là 0 trên T) thì nó sẽ không cung cấp thông tin hữu ích cho tính độ hỗ trợ của tập con của N và có thể bỏ qua các tính toán tiếp theo Vì vậy chúng ta có thể loại bỏ các bit cho giao dịch T từ X và tất
cả item trên tail nút N Đây là một hình thức nén bitmap dọc để tăng tốc
độ tính toán Thủ tục này được trình bày ở Hình 6
Thủ tục Project(Bitmap X, MFI, node’s Tail)
1 Duyệt từng item I trong Tail
2 Begin
3 Tạo bitmap I’ trống
4 Duyệt từng giao dịch T
5 If (bit T của X là 1) then
6 Thêm bit T của I vào I’
7 End
8 Tạo X’ – một bitmap chứa các giá trị 1 và độ lớn bằng support(X)
9 Return I’ và X’
Hình 6 Thủ tục Project
Thuật toán Mafia
Thuật toán Mafia sử dụng 3 loại cắt tỉa cây là FHUT, HUTFMI và PEP FHUT và HUTMFI là hai cách cắt tỉa kiểm tra tập cha và do đó có xu hướng
“chồng chéo” về hiệu quả của nó để giảm không gian tìm kiếm Ngoài ra, việc sắp xếp lại các tập cũng giảm đáng kể kích thước của không gian tìm kiếm
bằng cách loại bỏ các item không phổ biến từ tail của mỗi nút
Trang 28Thuật toán MAFIA(node C, MFI, boolean IsHUT)
1 HUT = C.head C.tail
2 If (HUT có trong MFI) then
11 If (IsHUT và tất cả phần mở rộng là phổ biến) then
12 Ngừng tìm kiếm và quay lên cây
13 If (C là nút lá và C.head không có trong MFI) then
14 Thêm C.head vào MFI
Hình 7 Thuật toán Mafia
Trang 29gọi là tập item Một tập với k item gọi là k-itemset Tập t(X) T bao gồm các tid của giao dịch chứa X, được gọi là tidset của X
Độ hỗ trợ của X, kí hiệu là sup(X), là số giao dịch mà X xuất hiện Vì vậy
sup(X) = |t(X)| Một tập là phổ biến nếu độ hỗ trợ của nó lớn hơn hoặc bằng ngưỡng
hỗ trợ tối thiểu (minSup), tức là sup(X) ≥ minSup Kí hiệu tập phổ biến k-itemset là
F k và tất cả các tập phổ biến là FI Một tập phổ biến gọi là tối đại nếu nó không là
tập con của bất kỳ tập phổ biến nào khác Tất cả các tập phổ biến tối đại kí hiệu là
MFI Cho một giá trị minSup xác định để liệt kê tất cả các tập phổ biến tối đại MFI
GenMax sử dụng tìm kiếm quay lui để liệt kê các MFI Thuật toán quay lui là hữu ích cho nhiều vấn đề tổ hợp mà giải pháp có thể được biểu diễn như một tập I = {i 0 , i 1 , …} trong đó mỗi i j được chọn từ một tập hữu hạn P j Ban đầu I trống, nó
được mở rộng thêm một item tại một thời điểm như là duyệt không gian tìm kiếm
Độ dài của I tương tự như chiều sâu của các nút tương ứng trong cây tìm kiếm tập
có độ dài l, I l = {i 0 , i 1 , …, i l-1 }, giá trị tiếp theo của item kế tiếp đến từ tập C l P l
gọi là tập kết hợp Nếu y P l – C l , thì nút trên cây con với gốc là I l = {i 0 , i 1 , …, y}
sẽ không được xem xét bởi thuật toán quay lui Sau khi cây con đã loại bỏ bớt như
trên từ không gian tìm kiếm ban đầu, xác định C l cũng được coi như cắt tỉa
Ban đầu xem xét thuật toán quay lui tìm tất cả các tập phổ biến (Hình 8) Vòng
lặp chính cố gắng mở rộng I l với mỗi item x trong tập kết hợp C l Ban đầu tính I l+1,
mà phần mở rộng của I l là x Bước thứ hai là trích xuất các tập mới nhất của phần
mở rộng, P l+1 , trong đó chỉ bao gồm item y trong C l theo x Bước thứ ba là tạo tập
kết hợp mới cho lần quay lui tiếp theo, gồm các phần mở rộng hợp lệ Một phần mở
rộng là hợp lệ nếu các tập kết quả là phổ biến Tập kết hợp C l+1 do đó bao gồm
những item trong phần mở rộng mà có thể sinh ra tập phổ biến cho I l+1 Những item không nằm trong tập kết hợp sẽ được cắt tỉa cây con Bước cuối cùng là gọi đệ quy cho mỗi phần mở rộng Trình bày trên là phương thức quay lui duyệt theo chiều sâu của không gian tìm kiếm
Trang 30Với CSDL DB Ex ở Bảng 1 và minSup = 60%, thuật toán FI-backtrack tạo các
tập phổ biến được minh họa từng bước như Hình 9
`
Hình 9 Ví dụ thuật toán FI-backback
Ban đầu ta tính tập I 1 , ta được các tập A, B, C, E Bước đầu tiên ta tính I 2 với
phần mở rộng của A Tập P của phần mở rộng tập A là {B, C, E} Tính FI-combine
2
3
Trang 31của I 2 và P 2 của tập A ta được tập C 2 = {AC} Tương tự ta tính I 2 với phần mở rộng
của tập B Tập P 2 của phần mở rộng tập B là {C, E} Thủ tục FI-combine, ta được
C 2 = {BC, BE} Ta gọi đệ quy thuật toán FI-backtrack cho tập I 2 và C 2 của phần mở
rộng tập B Cứ thế thuật toán FI-backtrack sẽ liệt kê tất cả các tập phổ biến
Thuật toán
Có hai thành phần chính để phát triển một thuật toán khai thác tập phổ biến tối đại hiệu quả Đầu tiên là tập hợp các kỹ thuật để loại bỏ các nhánh của không gian tìm kiếm và thứ hai là sử dụng các định dạng để có thể tính toán nhanh độ phổ biến
Thủ tục Mbacktrack trong GenMax cơ bản là mở rộng thuật toán backtrack Phần thêm chính là kiểm tra để loại bỏ tập phổ biến không tối đại
FI-Thuật toán được thêm ở dòng 5 trong Hình 10, sau khi xây dựng tập mở rộng nhằm
kiểm tra nếu I l+1 P l+1 là tập con của tập phổ biến tối đại hiện có thì item hiện tại
và tất cả item trong C l có thể được cắt tỉa Sau khi tạo tập kết hợp mới, nếu trống và
I l+1 không là tập con của các tập phổ biến tối đại hiện có thì thêm nó vào MFI (dòng
8, 9, 10) Nếu tập kết hợp mới không trống thì gọi đệ quy cho phần mở rộng tiếp theo
Với cơ sở dữ liệu DB Ex ở Bảng 1 và minSup = 60%, thuật toán FI-backtrack
tạo các tập phổ biến được minh họa từng bước như Hình 11
Trang 32Hình 11 Ví dụ thuật toán MFI-backback
Thuật toán MFI-backtrack cơ bản giống thuật toán FI-backtrack chỉ thêm 2 lần
kiểm tra ở dòng 5 và dòng 9 Ban đầu MFI trống nên dòng kiểm tra tập cha ở dòng
5 trong thuật toán MFI-backtrack luôn sai Vì C 2 = {AC} nên C 3 trống, và AC không
có tập cha trong MFI nên AC được thêm vào MFI Tương tự ở lần duyệt mở rộng tập B, ta thêm BCE vào MFI Đến lần duyệt mở rộng tập C, ở lần kiểm tra ở dòng 5 trong thuật toán, ở đây cụ thể là {C} {E} là tập con của tập BCE có trong MFI nên nhánh duyệt mở rộng tập C được cắt bỏ
Kỹ thuật kiểm tra tập cha trong MFI
Kiểm tra xem tập phổ biến I l+1 kết hợp với tập P l+1 là bao hàm bởi tập phổ biến tối đại tương tự như đề xuất trong thuật toán Mafia (Burdick và các đồng
sự, 2001) với cái tên HUTMFI Cắt tỉa hơn nữa nếu dựa vào độ hỗ trợ của tập
kết hợp I l+1 P l+1 sẽ đảm bảo phổ biến Trong trường hợp này có thể tránh phải tính toán thêm một vài nhánh Phương pháp này lần đầu được giới thiệu trong MaxMiner (Bayardo, 1998) và cũng được sử dụng trong Mafia với tên gọi FHUT
Sắp xếp lại tập kết hợp
Sắp xếp lại các phần tử trong tập kết hợp là một cách hiệu quả để cắt giảm không gian tìm kiếm Heuristic đầu tiên là sắp xếp lại các tập kết hợp tăng dần theo độ hỗ trợ Điều này làm giảm tập kết hợp cho cấp độ tiếp theo, khi đó những item có độ phổ biến nhỏ hơn sẽ có ít khả năng tạo tập kết hợp ở cấp độ
kế tiếp Heuristic lần đầu được sử dụng trong thuật toán MaxMiner, và từ đó
2
3
Trang 33được sử dụng trong những thuật toán sau đó (Agrawal và các đồng sự, 2000; Burdick và các đồng sự, 2001; Zaki và Hsiao, 2002)
Ngoài ra để sắp xếp các tập kết hợp ở cấp độ 0 tăng dần theo độ hỗ trợ, GenMax sử dụng một heuristic sắp xếp lại dựa trên một bổ đề
Bổ đề 1: Cho IF(x) = {y : y F 1 ; xy là không phổ biến} là kí hiệu cho tập 2
item không phổ biến có chứa một item F 1 và để cho M(x) là tập phổ biến tối đại dài nhất chứa x thì |M(x)| ≤ |F 1 | - |IF(x)|
Chứng minh: Giả sử tồn tại một tập phổ biến tối đại chứa x với |M(x)| > |F 1| -
|IF(x)| Điều này dẫn đến |M(x)| + |IF(x)| > |F 1| Nhưng điều này là vô lý vì
IF(x) và M(x) lệch nhau, M(x) F 1 và IF(x) F 1 Vì vậy kích thước của
|M(x)| + |IF(x)| không thể vượt |F 1|
Giả sử F 2 đã được tính, sắp xếp lại C 0 tăng dần theo IF(x) (với x C 0) đảm bảo rằng tập kết hợp là nhỏ nhất sẽ được xử lý trước, và kết quả nhỏ hơn cây
tìm kiếm quay lui GenMax bước đầu sắp xếp các item giảm dần theo IF(x) và
tăng dần theo độ hỗ trợ Sau đó, tại các cấp độ tiếp theo, GenMax sắp xếp lại tập kết hợp tăng dần theo độ hỗ trợ
Định lý 1: Thuật toán MFI-backtrack trả về tất cả và chỉ là các tập phổ biến tối
đại của cơ sở dữ liệu
Chứng minh: Thủ tục FI-backtrack xem xét tất cả tập mở rộng I l {x} của tập I l Do đó nó tạo ra tất cả tập phổ biến Các thủ tục trong MFI-backtrack chỉ
loại bỏ các nhánh nếu tập phổ biến hiện tại cùng với các item của nhánh (I l+1
P l+1) đã thuộc một trong các tập phổ biến tối đại Vì vậy không có tập mở
rộng nào của tập I l+1 có thể trở thành tập phổ biến tối đại Cuối cùng, một tập phổ biến được thêm vào các tập phổ biến tối đại chỉ khi nó không phải là tập con của tập phổ biến tối đại nào khác Tính đúng đắn của thuật toán GenMax
vì vậy từ tính đúng đắn của thuật toán FI-backtrack, thuật toán liệt kê tất cả tập phổ biến tối đại, kết hợp với việc chỉ loại bỏ các nhánh không tối đại
Tối ưu thuật toán
o Tối ưu kiểm tra tập cha trong MFI
Trang 34Hiệu quả chính của thuật toán GenMax là loại bỏ các nhánh đã tồn tại trong mẫu phổ biến tối đại
Nếu không có việc cắt tỉa này, GenMax về cơ bản mặc định sẽ duyệt theo chiều sâu của cây tìm kiếm Trước khi tạo tập kết hợp cho
lần kế tiếp (dòng 5 trong Hình 10), GenMax kiểm tra I l+1 P l+1 đã được chứa trong tập phổ biến tối đại hay chưa Nếu có thì cây con với
gốc I l+1 và các phần tử của phần mở rộng được cắt tỉa Nếu không thì phần mở rộng mới là cần thiết Một kiểm tra tập cha khác là cần thiết ở
dòng 9, khi I l+1 không có phần tập mở rộng nào, tức là khi kết hợp với
C l+1 là trống Mặc cù I l+1 là một nút lá không có phần mở rộng nào có thể thêm vào tập phổ biến tối đại nhưng trường hợp này không được kiểm tra ở dòng 5
Những thách thức trong việc xây dựng thuật toán GenMax là làm thế nào để kiểm tra các tập hiện hành trong các mẫu phổ biến tối đại hiệu quả Nếu chúng ta thực hiện tìm kiếm này hai lần trên các mẫu phổ
biến tối đại MFI và trong mỗi lần gọi đệ quy, chúng ta phải dành một
lượng thời gian chỉ để kiểm tra tập con này Mỗi lần tìm kiếm sẽ mất
thời gian O(|MFI|) trong trường hợp xấu nhất Lưu ý trong một số thuật toán tốt nhất thời gian chạy thử nghiệm là O( √𝑠 log 𝑠) cho s tính toán
Với cơ sở dữ liệu dày đặc, chúng ta có đến hàng triệu tập phổ biến tối đại và số lần kiểm tra tập con sẽ rất nhiều
Ở đây chúng ta có hai lần kiểm tra tập con (dòng 5 và dòng 9) có
thể giảm xuống một lần kiểm tra Tập I l+1 P l+1 là tập cha của tập I l+1,
khi thực hiện kiểm tra tập cha của tập I l+1 P l+1 chúng ta lưu lại vị trí
tối đại, kí hiệu là p, nơi mà item trong tập I l+1 P l+1 không tìm thấy
trong tập phổ biến tối đại M MFI Nói cách khác, tất cả item trước p
đã được gộp vào các tập phổ biến tối đại Đối với lần kiểm tra tập cha
của tập I l+1 , chúng ta chỉ cần kiểm tra |I l+1 | < p Nếu có, I l+1 tập là tập
không tối đại Ngược lại, chúng ta thêm vào MFI
Trang 35Quan sát thứ hai là thực hiện kiểm tra tập cha của mỗi lần đệ quy có
thể là thừa Ví dụ, giả sử số thành phần của tập P l+1 là m Thủ tục backtrack làm cho m dư thừa kiểm tra tập con, nếu MFI hiện tại không thay đổi trong khi m gọi liên tục Để tránh dư thừa như vậy, một cờ
MFI-check_status được sử dụng Nếu cờ là sai, việc kiểm tra tập cha không
được thực hiện Trước mỗi lần gọi đệ quy thì cờ có giá trị sai; nó trở
thành đúng khi C l+1 là trống
Một heuristic khác tăng tốc đáng kể quá trình kiểm tra tập cha Ý tưởng chính là từng bước thu hẹp các tập phổ biến tối đại trong các lần gọi đệ quy Nói cách khác, chúng ta xây dựng cho mỗi lần gọi MFI-
backtrack một danh sách các tập phổ biến tối đại cục bộ, LMFI l Danh sách này chứa các tập phổ biến tối đại có khả năng là tập cha của các
tập ứng viên mà được tạo tập I l, chỉ những tập phổ biến tối đại chứa tất
cả các item trong I l Bằng cách này, thay vì kiểm tra I l+1 P l+1 có được
chứa trong tất cả MFI, chúng ta chỉ kiểm tra LMFI l – các tập phổ biến tối đại có liên quan Kỹ thuật này gọi là tập trung cấp tiến, cực kì mạnh
mẽ trong việc thu hẹp tìm kiếm chỉ những tập phổ biến tối đại có liên quan, làm cho việc kiểm tra tập cha trong dữ liệu dày đặc hiệu quả