Tải bản đầy đủ (.pdf) (70 trang)

KHAI THÁC tập PHỔ BIẾN tối đại sử DỤNG cấu TRÚC NODESET

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (7.15 MB, 70 trang )

ĐẠI HỌC QUỐC GIA TP.HCM
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN


PHẠM PHÚ THANH SANG

KHAI THÁC TẬP PHỔ BIẾN TỐI ĐẠI
SỬ DỤNG CẤU TRÚC NODESET

LUẬN VĂN THẠC SĨ
NGÀNH KHOA HỌC MÁY TÍNH
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


LỜ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




LỜ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


MỤ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
-1-


Thuậ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

-2-


DANH MỤC CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT
Từ viết tắt


Tiếng Anh

Tiếng Việt

CSDL

Dataset

Cơ sở dữ liệu

minsup

Minimum support

Độ hỗ trợ tối thiểu

KDD

Knowledge Discovery in
Database

Khai thác tri thức trong cơ
sở dữ liệu

Sup

Support

Độ hỗ trợ


Con

Confidence

Độ tin cậy

DM

Data Mining

Khai thác dữ liệu

FI

Frequent Itemset

Tập phổ biến

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ộ

-3-


DANH MỤC CÁC BẢNG
Bảng 1. Cơ sở dữ liệu ví dụ, DBEx ............................................................................16
Bảng 2. Các tập phổ biến của DBEx với minSup = 60% ...........................................16
Bảng 3. CSDL DBEx 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

-4-


DANH 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 DBEx ở Bảng 1 với minSup = 60% ................39
Hình 18. Cây PPC hoàn chỉnh tạo từ DBEx ở 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

-5-


Hình 29. Thời gian thực hiện của (a) dGenMax, TDM-MFI, NLA-MFP và INLAMFP và (b) NLA-MFP và 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à INLAMFP và (b) NLA-MFP và 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à INLAMFP và (b) NLA-MFP và 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à INLAMFP và (b) NLA-MFP và 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à INLAMFP và (b) NLA-MFP và 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à INLAMFP và (b) NLA-MFP và 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à INLAMFP và (b) NLA-MFP và 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à INLAMFP và (b) NLA-MFP và 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à INLAMFP và (b) NLA-MFP và 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

-6-


Hì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

-7-


MỞ ĐẦ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)
-8-


-


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); TDMMFI (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
-9-


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 Nlist
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.

-10-


1 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
-11-


chó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 XY. 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 2patterns, 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 LMFIbacktrack, 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
-12-


nghiệ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à Nlist đã đượ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 Nlist 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
-13-


đó, á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
-14-


cấ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

-15-


2 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 DBEx 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.
Bảng 1. Cơ sở dữ liệu ví dụ, DBEx
Transaction
1
2
3
4
5

Items
A, C, D
B, C, E
A, B, C, E
B, E
A, B, C, E

Từ CDSL DBEx ở Bảng 1 và minSup = 60%, chúng ta tìm tất cả các tập phổ
biến bằng cách liệt kê ra tất cả các tập ứng viên từ tập có một item đến các tập có k
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 DBEx với minSup = 60%
patterns
B
C
E
A
AC

BC
BE
CE
BCE

Số giao dịch chứa item
4
4
4
3
3
3
4
3
3
-16-

Độ phổ biến
80%
80%
80%
60%
60%
60%
80%
60%
60%


Vớ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 S1, S2  S sao cho S1 ≤ S2 nếu S1  S2. Nếu S1  S2, không có mối quan hệ sắp
xếp giữa S1, S2.

-17-


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)
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 k-items. Tập kitems đượ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

-18-


thấ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
2
3

Duyệt từng item i trong C.tail
Begin
newNode = C  i

4

If (newNode là tập phổ biến) then

5

Simple(newNode, MFI) }

6
7
8

End

If (C là nút lá và C.head không có trong MFI) then
Thêm C.head vào MFI
Hình 2. Duyệt theo chiều sâu (Simple DFS)
-19-


Khi 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

3

newNode = C  i

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

7

PEP(newNode, MFI)

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


o 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

3

newNode = C  i


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 đã
-21-


phổ 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

6

newNode = C  i

7

If (newNode là tập phổ biến) then

8

HUTMFI (newNode, MFI)

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

-22-


×