Tuy nhiên, các nghiên cứu này mới đề cập trên CSDL nhị phân, chưa được nghiên cứu áp dụng trên CSDL số lượng, do đặc thù của CSDL số lượng cần tính trọng số các giao dịch của các tập mục
Trang 1ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
-
NGUYỄN DUY HÀM
PHÁT TRIỂN MỘT SỐ THUẬT TOÁN HIỆU QUẢ
KHAI THÁC TẬP MỤC TRÊN CƠ SỞ DỮ LIỆU SỐ LƯỢNG
CÓ SỰ PHÂN CẤP CÁC MỤC
LUẬN ÁN TIẾN SĨ TOÁN HỌC
Hà Nội - 2016
Trang 2ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
-
NGUYỄN DUY HÀM
PHÁT TRIỂN MỘT SỐ THUẬT TOÁN HIỆU QUẢ
KHAI THÁC TẬP MỤC TRÊN CƠ SỞ DỮ LIỆU SỐ LƯỢNG
XÁC NHẬN NCS ĐÃ CHỈNH SỬA THEO QUYẾT NGHỊ
CỦA HỘI ĐỒNG ĐÁNH GIÁ LUẬN ÁN
Luận án Tiến sĩ
Hà Nội - 2016
Trang 3i
LỜI CAM ĐOAN
Tôi xin cam đoan luận án này là công trình nghiên cứu do tác giả thực hiện dưới sự hướng dẫn của tập thể cán bộ hướng dẫn Luận án có sử dụng thông tin trích dẫn từ nhiều nguồn tham khảo khác nhau, các thông tin trích dẫn đều được ghi rõ nguồn gốc Các số liệu thực nghiệm, kết quả nghiên cứu trình bày trong luận án là hoàn toàn trung thực, chưa được công bố bởi tác giả nào hay trong bất kì công trình nào khác
Tác giả
Nguyễn Duy Hàm
Trang 4ii
LỜI CẢM ƠN
Luận án Tiến sĩ này được thực hiện tại trường Đại học Khoa học và Tự nhiên - Đại học Quốc gia Hà Nội với sự hướng dẫn khoa học của TS Nguyễn Thị Hồng Minh, PGS.TS.Võ Đình Bảy và TS Lê Quang Minh Nghiên cứu sinh xin bày tỏ lòng biết ơn sâu sắc tới thầy giáo, cô giáo hướng dẫn đã định hướng khoa học, tận tâm giúp đỡ và chỉ bảo tỉ mỉ trong suốt quá trình nghiên cứu mới có thể hoàn thiện bản luận án này Nghiên cứu sinh luôn ghi nhớ công lao dạy dỗ, dìu dắt vào con đường khoa học của cố PGS.TS Hoàng Chí Thành - người đã hướng dẫn Nghiên cứu sinh ở giai đoạn đầu làm nghiên cứu khoa học Nghiên cứu sinh xin chân thành cảm ơn các nhà khoa học, tác giả các công trình nghiên cứu đã được trích dẫn trong luận án vì đây là nguồn tài liệu quý báu để Nghiên cứu sinh phát triển và hoàn thiện các công bố của mình
Nghiên cứu sinh xin chân thành cảm ơn Ban Giám hiệu, lãnh đạo Khoa Toán -
Cơ - Tin học, các thầy cô, giảng viên Bộ môn Tin học - Trường Đại học Khoa học Tự nhiên - Đại học Quốc gia Hà Nội đã tạo những điều kiện thuận lợi nhất để Nghiên cứu sinh hoàn thành chương trình học tập và thực hiện hoàn tất luận án của mình Nghiên cứu sinh xin chân thành cảm ơn Ban Giám hiệu Trường Đại học An ninh nhân dân, tập thể giáo viên Bộ môn Toán - Tin học Trường Đại học An ninh nhân dân nơi Nghiên cứu sinh công tác và các bạn bè thân thiết đã luôn tạo điều kiện, động viên, khuyến khích và hỗ trợ tối đa để Nghiên cứu sinh hoàn thành bản luận án này
Cuối cùng, con xin cảm ơn Bố Mẹ, đặc biệt là Mẹ - người đã luôn hy sinh tất
cả vì sự nghiệp học tập của các con, rất tiếc mẹ đã không đợi được đến ngày con hoàn thành luận án Xin cảm ơn gia đình, chị gái và các em đã luôn đồng hành, động viên, chia sẻ giúp duy trì nhiệt huyết và nghị lực để đi đến hoàn thành bản luận án này./
TP Hồ Chí Minh, tháng năm 2016
Trang 5iii
MỤC LỤC
LỜI CAM ĐOAN I LỜI CẢM ƠN II MỤC LỤC III DANH MỤC BẢNG V DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ VII DANH MỤC CÁC KÍ HIỆU VÀ CHỮ VIẾT TẮT X
MỞ ĐẦU 1
CHƯƠNG 1 TỔNG QUAN VỀ KHAI THÁC TẬP MỤC 7
1.1 Bài toán khai thác tập mục 7
1.1.1 Một số khái niệm cơ bản 8
1.1.2 Bài toán khai thác FI 15
1.2 Các phương pháp khai thác FI 15
1.2.1 Phương pháp khai thác FI trên CSDL ngang 15
1.2.2 Phương pháp khai thác FI trên CSDL dọc dựa trên IT-tree 18
1.3 Một số phương pháp khai thác FWI và FWUI trên CSDL số lượng 21
1.3.1 Giới thiệu 21
1.3.2 Khai thác FWI 21
1.3.3 Khai thác FWUI 24
1.3.4 Khai thác TRFIk 26
1.4 Khai thác FI trên CSDL có sự phân cấp các mục 28
1.5 Tiếp cận bit-vector trong khai thác FI 31
1.6 Kết luận chương 32
CHƯƠNG 2 KHAI THÁC TẬP MỤC PHỔ BIẾN TRÊN CƠ SỞ DỮ LIỆU SỐ LƯỢNG 35
2.1 Thuật toán khai thác tập FWI 36
2.1.1 Giới thiệu 36
2.1.2 Thuật toán tính giao của hai IWS 40
2.1.3 Thuật toán khai thác FWI 42
2.1.4 Kết quả thực nghiệm 48
2.2 Thuật toán khai thác FWUI 54
2.2.1 Cấu trúc Multi bit segment 54
2.2.2 Thuật toán xác định giao MBiS 55
2.2.3 Thuật toán khai thác FWUI dựa trên MBiS-tree 56
2.2.4 Kết quả thực nghiệm 59
Trang 6iv
2.3 Thuật toán khai thác TRFWUI k 63
2.3.1 Một số khái niệm 63
2.3.2 Cấu trúc DTab 64
2.3.3 Cấu trúc TR-tree 65
2.3.4 Thuật toán khai thác TRFWUIk sử dụng cấu trúc dữ liệu DTab 65
2.3.5 Thuật toán khai thác nhanh TRFWUIk dựa trên cấu trúc DHeap 68
2.3.6 Kết quả thực nghiệm 70
2.4 Kết luận chương 73
CHƯƠNG 3 KHAI THÁC TẬP MỤC PHỔ BIẾN TRÊN CƠ SỞ DỮ LIỆU SỐ LƯỢNG CÓ SỰ PHÂN CẤP CÁC MỤC 75
3.1 Giới thiệu bài toán 76
3.2 Thuật toán khai thác FWUI trên HQDB 79
3.2.1 Thuật toán xác định weight cho các mục cha 79
3.2.2 Thuật toán thêm mục cha vào CSDL 80
3.2.3 Thuật toán khai thác FWUI 81
3.3 Một số cải tiến nâng cao hiệu quả khai thác FWUI trên HQDB 84
3.3.1 Cấu trúc EDBV 84
3.3.2 Tính tidset nút cha từ tidset nút con 89
3.3.3 Kiểm tra mối quan hệ cha con đối với các mục trong tập mục 91
3.3.4 Thuật toán khai thác nhanh FWUI trên HQDB 92
3.4 Kết quả thực nghiệm 93
3.4.1 CSDL thực nghiệm 93
3.4.2 Kết quả thực nghiệm 94
3.5 Kết luận chương 100
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 101
DANH MỤC CÔNG TRÌNH KHOA HỌC CỦA TÁC GIẢ LIÊN QUAN
ĐẾN LUẬN ÁN 103
Trang 7v
DANH MỤC BẢNG
Bảng 1.1. Các giao dịch của nhị phân DB 8
Bảng 1.2. Các giao dịch của CSDL nhị phân có sự phân cấp mục DB 9
Bảng 1.3. ID của các mục của DB 10
Bảng 1.4. Các giao dịch của DB bằng ID 10
Bảng 1.5. Giao dịch của CSDL số lƣợng BD 12
Bảng 1.6. Trọng số các mục của DB 12
Bảng 1.7. Các giao dịch của CSDL trọng số DB 13
Bảng 1.8. Trọng số của các mục của DB 13
Bảng 1.9. CSDL DB 15
Bảng 1.10. DB theo chiều dọc 19
Bảng 1.11. Giá trị tw của CSDL DB trong ví dụ 1.4 23
Bảng 1.12. twu các giao dịch của DB trong ví dụ 1.4 25
Bảng 1.13. DB trong Ví dụ 1.2 sau khi thêm mục cha 30
Bảng 2.1. Bit-vector 36
Bảng 2.2. DBV của bit-vector trong ví dụ 2.1 36
Bảng 2.3. IWS từ bit-vector trong ví dụ 2.1 37
Bảng 2.4. Chỉ số các bit 1 của IWS(X) 39
Bảng 2.5. Mảng MAP 42
Bảng 2.6. IWS của các mục 46
Bảng 2.7. Mô tả CSDL thực nghiệm 49
Bảng 2.8. Bit-vector với 96 phần tử 54
Bảng 2.9. MBiS từ bit-vector ở Bảng 2.8 55
Bảng 2.10. Bảng TRFWUIk 64
Bảng 3.1. Giao dịch của HD 76
Bảng 3.2. Trọng số 76
Bảng 3.3. Tên mặt hàng của các mục 77
Trang 8vi
Bảng 3.4. Giao dịch của HD 82
Bảng 3.5. Trọng số 82
Bảng 3.6. twu của các giao dịch 83
Bảng 3.7. Tập 1-itemset phổ biến 83
Bảng 3.8. Mảng MAP với 65.535 phần tử 86
Bảng 3.9. Biểu diễn số nguyên K dưới dạng bốn đoạn, mỗi đoạn là một word 86
Bảng 3.10. Mô tả CSDL 93
Bảng 3.11. Các mức trên cây phân cấp 93
Bảng 3.12. So sánh bộ nhớ và số lượng các mục 94
Bảng 3.13. Thực nghiệm trên CSDL SALE-FACT-SYNC 95
Bảng 3.14. So sánh thời gian chạy trên CSDL SALE-FACT-1997 99
Trang 9vii
DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ
Hình 1.1 Cây phân cấp Tr 10
Hình 1.2 Cây phân cấp Tr biểu diễn theo ID 11
Hình 1.3 Thuật toán Apriori trong khai thác tập mục phổ biến 16
Hình 1.4 Thuật toán FP-Growth dựa trên cấu trúc FP-tree 17
Hình 1.5 Thuật toán Eclat dựa trên cấu trúc IT-tree 19
Hình 1.6 Cây IT tree với minsup = 0,5 của CSDL DB 20
Hình 2.1 Thuật toán xác định giao hai IWS 41
Hình 2.2 Thuật toán tính ws của tập mục X 43
Hình 2.3 Thuật toán xây dựng cây IWS-tree 45
Hình 2.4 Thuật toán khai thác FWI dựa trên IWS-tree 45
Hình 2.5 IWS-tree với nút A(minws = 0,4) 46
Hình 2.6 IWS-tree với nútA vàB(minws = 0,4) 47
Hình 2.7 IWS-tree với minws = 0,4 48
Hình 2.8 So sánh thời gian chạy với CSDL RETAIL 49
Hình 2.9 So sánh thời gian chạy với CSDL BMS-POS 49
Hình 2.10 So sánh thời gian chạy với CSDL SALE-FACT-1997 50
Hình 2.11 So sánh thời gian chạy với CSDL SALE-FACT-1997+1998 50
Hình 2.12 So sánh thời gian chạy với CSDL SALE-FACT-SYNC 50
Hình 2.13 So sánh thời gian chạy với CSDL CONNECT 50
Hình 2.14 So sánh thời gian chạy với CSDL ACCIDENTS 51
Hình 2.15 So sánh bộ nhớ sử dụng với CSDL RETAIL 51
Hình 2.16 So sánh bộ nhớ sử dụng với CSDL BMS-POS 51
Hình 2.17 So sánh bộ nhớ sử dụng với CSDL SALE-FACT-1997 51
Hình 2.18 So sánh bộ nhớ sử dụng với CSDL SALE-FACT-1997+1998 52
Trang 10viii
Hình 2.19 So sánh bộ nhớ sử dụng với CSDL SALE-FACT-SYNC 52
Hình 2.20 So sánh bộ nhớ sử dụng với CSDL CONNECT 52
Hình 2.21 So sánh bộ nhớ sử dụng với CSDL ACCIDENT 52
Hình 2.22 Thuật toán xác định giao hai MBiS 56
Hình 2.23 Thuật toán tính wus dựa trên MBiS 57
Hình 2.24 Thuật toán khai thác FWUI dựa trên MBiS-tree 58
Hình 2.25 So sánh thời gian chạy trên CSDL RETAIL 59
Hình 2.26 So sánh thời gian chạy trên CSDL BMS-POS 59
Hình 2.27 So sánh thời gian chạy trên CSDL SALE-FACT-1997 60
Hình 2.28 So sánh thời gian chạy trên CSDL SALE-FACT-1997+1998 60
Hình 2.29 So sánh thời gian chạy trên CSDL SALE-FACT-SYNC 60
Hình 2.30 So sánh thời gian chạy trên CSDL CONNECT 60
Hình 2.31 So sánh thời gian chạy trên CSDL ACCIDENTS 61
Hình 2.32 So sánh bộ nhớ sử dụng trên CSDL RETAIL 61
Hình 2.33 So sánh bộ nhớ sử dụng trên CSDL BMS-POS 61
Hình 2.34 So sánh bộ nhớ sử dụng trên CSDL SALE-FACT-1997 61
Hình 2.35 So sánh bộ nhớ sử dụng trên CSDL SALE-FACT-1997+1998 62
Hình 2.36 So sánh bộ nhớ sử dụng trên CSDL SALE-FACT-SYNC 62
Hình 2.37 So sánh bộ nhớ sử dụng trên CSDL CONNECT 62
Hình 2.38 So sánh bộ nhớ sử dụng trên CSDL ACCIDENT 62
Hình 2.39 DTab với k = 5 65
Hình 2.40 Thuật toán tạo TR-tree sử dụng DTab 67
Hình 2.41 Thuật toán lọc ra TRFWUIk 68
Hình 2.42 DHeap với k = 5 với CSDL trong ví dụ 1.4 69
Hình 2.43 Thuật toán tạo TR-tree sử dụng DHeap 70
Trang 11ix
Hình 2.44 Thuật toán lọc ra TRFWUIk 70
Hình 2.45 So sánh thời gian chạy trên CSDL MBS-POS 71
Hình 2.46 So sánh thời gian chạy trên CSDL RETAIL 71
Hình 2.47 So sánh thời gian chạy trên CSDL CONNECT 72
Hình 2.48 So sánh thời gian trên CSDL SALE-FACT-1997 72
Hình 2.49 So sánh thời gian trên CSDL SALE-FACT-1997+1998 72
Hình 2.50 So sánh thời gian trên CSDL SALE-FACT-SYNC 72
Hình 3.1 Tập các cây phân cấp Tr 77
Hình 3.2 Thuật toán tính weight cho các mục cha 80
Hình 3.3 Thuật toán thêm mục cha vào CSDL 80
Hình 3.4 Thuật toán khai thác FWUI từ HQDB 82
Hình 3.5 Cây HIT-tree với CSDL HD và minwus = 0,6 84
Hình 3.6 Sử dụng các phép AND và dịch bit để tách các đoạn hai byte 87
Hình 3.7 Thuật toán tính nhanh wus của các tập mục 89
Hình 3.8 Thuật toán xác định tidset các mục và tính twu của các giao dịch 90
Hình 3.9 Thuật toán khai thác nhanh FWUI trên HQDB 92
Hình 3.10 So sánh thời gian trên CSDL SALE-FACT-1997 96
Hình 3.11 So sánh thời gian trên CSDLSALE-FACT-1997+1998 96
Hình 3.12 So sánh thời gian trên CSDL SALE-FACT-SYNC 97
Hình 3.13 So sánh thời gian trên CSDL SALE-FACT-1997 98
Hình 3.14 So sánh thời gian trên CSDL SALE-FACT-1997+1998 98
Hình 3.15 So sánh thời gian trên CSDL SALE-FACT-SYNC 98
Trang 12x
DANH MỤC CÁC KÍ HIỆU VÀ CHỮ VIẾT TẮT
Stt Từ viết tắt Thuật ngữ tiếng Anh Thuật ngữ tiếng Việt
có thứ hạng cao nhất
16 TRFWUIk Top-rank-k frequent weight
utility itemsets
K nhóm tập mục phổ biến trọng số hữu ích có thứ hạng k cao nhất
Trang 131
MỞ ĐẦU
Sự phát triển mạnh mẽ của Công nghệ thông tin trong những năm gần đây đã thúc đẩy sự phát triển chung của toàn xã hội Với các ứng dụng của Công nghệ thông tin, con người đã có những “trợ thủ” đắc lực hỗ trợ mình trong cuộc sống cũng như trong công việc Công nghệ thông tin ứng dụng trong rất nhiều lĩnh vực đưa đến sự tiện lợi và kết nối mọi người trên khắp thế giới lại với nhau Các ứng dụng như ngân hàng điện tử, thương mại điện
tử, v.v… đã giúp cho con người tiết kiệm rất nhiều thời gian và công sức so với thao tác thủ công trước đây Trong những ứng dụng đó, thông tin, dữ liệu thường xuyên được đưa vào để các hệ thống thông tin lưu trữ và xử lý Bên cạnh đó, một số lượng lớn các dữ liệu được cập nhật hàng ngày và tự động lưu trữ thông qua các hoạt động của con người khi tương tác với các hệ thống thông tin, mạng xã hội, v.v… làm cho dữ liệu càng ngày càng lớn và phức tạp.
Ngoài việc phục vụ cho các hệ thống thông tin hoạt động theo chức năng sẵn có thì một vấn đề đặt ra là làm sao có thể khai thác hiệu quả các loại dữ liệu lưu trữ trong hệ thống, tìm ra các tri thức quan trọng, các quy luật của dữ liệu phục vụ cho việc đưa ra các dự đoán, dự báo nhằm hỗ trợ ra quyết định
và các nhu cầu liên quan khác Ví dụ như từ cơ sở dữ liệu (CSDL) của hệ thống bán hàng trong siêu thị có thể tìm ra được quy luật (thói quen) mua hàng của các khách hàng Khách hàng thường mua các mặt hàng nào cùng với
nhau? hay độ tuổi từ “A” đến “B” thường ưa thích mặt hàng nào?, v.v Từ đó
để giúp cho việc triển khai các kế hoạch phát triển sản phẩm hiệu quả hơn của các hệ thống bán hàng như trung tâm thương mại, siêu thị, v.v…
Khai thác tập mục phổ biến trên CSDL nhị phân
Từ những yêu cầu thiết thực đó, lĩnh vực khai thác dữ liệu đã và đang được phát triển mạnh trong thời gian gần đây Một trong những bài toán quan trọng trong khai thác dữ liệu được quan tâm nghiên cứu là khai thác tập mục phổ biến (frequent itemsets - FI), từ FI có thể khai thác luật kết hợp, đưa ra
Trang 14đề xuất thuật toán Eclat [49] dựa trên cấu trúc IT-tree (Itemset Tidset-tree) với chỉ một lần đọc dữ liệu để chuyển CSDL ngang thành CSDL dọc với các mục
và tidset (set of transaction identifiers - tập các giao dịch) của chúng Tuy nhiên, Eclat có hạn chế là cần nhiều bộ nhớ để lưu trữ tidset, do đó gián tiếp ảnh hưởng đến hiệu quả về mặt thời gian của thuật toán này Tiếp theo Zaki và các đồng sự [50] đề xuất cấu trúc diffset, với tư tưởng sử dụng phần bù của tidset, nhưng cách làm này chỉ thực sự có hiệu quả trên CSDL dày Tuy nhiên, trong khi thực tế CSDL thưa mới là loại CSDL phổ biến
Một số phát triển gần đây với cấu trúc N-list [8, 9,10,11,12, 17, 26, 40]
là các nghiên cứu dựa trên tiếp cận lai ghép giữa FP-tree và định dạng dữ liệu dọc nhằm giảm bộ nhớ giúp cải tiến thời gian khai thác và bộ nhớ sử dụng Tuy nhiên, các nghiên cứu này mới đề cập trên CSDL nhị phân, chưa được nghiên cứu áp dụng trên CSDL số lượng, do đặc thù của CSDL số lượng cần tính trọng số các giao dịch của các tập mục để xác định độ hỗ trợ của các tập mục, mà đây là một khó khăn của tiếp cận dựa trên FP-tree
Khai thác tập mục phổ biến trên CSDL số lượng
Các chủ đề nghiên cứu trên CSDL số lượng như khai thác tập mục phổ biến có trọng số (frequent weighted itemsets - FWI) [7, 22, 23, 32, 34, 37, 41,
42, 43, 44, 45, 46, 47, 48] hay khai thác tập mục phổ biến trọng số hữu ích
Trang 153
(frequent weighted utility itemsets - FWUI) [21, 39], hay tập mục hữu ích cao
- (hight utility itemsets - HUIs) [14, 24, 25, 29] đã được quan tâm nghiên cứu
Rakumar và đồng sự [32] đề xuất bài toán khai thác luật kết hợp trọng số
và một framework để khai thác FWI Sau đó Tao và đồng sự [34] đề xuất thuật toán khai thác FWI dựa trên tiếp cận Apriori với hai độ đo trọng số giao
dịch (transaction weight - tw) và độ hỗ trợ trọng số (weight support - ws), tuy
nhiên như đã trình bày ở trên cách tiếp cận này rất tốn thời gian do quét CSDL nhiều lần Tiếp đến, Vo và các đồng sự [37] đề xuất cấu trúc WIT-tree trong khai thác FWI và cấu trúc MWIT-tree [39] trong khai thác FWUI theo tiếp cận Eclat [49] với chỉ một lần quét CSDL Hạn chế của các phương pháp này là cần nhiều bộ nhớ lưu trữ tidset của các tập mục bằng các danh sách, làm tốn thời gian xác định giao tidset của các tập mục
Một bài toán mới được đặt ra và phát triển gần đây trong khai thác FI là
khai thác k nhóm tập mục phổ biến có thứ hạng cao nhất (Top-rank-k frequent
itemset-TRFIk) [8, 11, 15, 26] Khai thác FI thông thường không kiểm soát được số lượng các tập mục phổ biến tìm thấy Trong nhiều trường hợp chỉ cần quan tâm đến một số lượng nhất định các FI, hay số lượng các nhóm FI có độ
hỗ trợ lớn nhất Khai thác TRFIk giải quyết được đòi hỏi này Bài toán khai thác TRFIk đã được Deng giới thiệu vào năm 2007 [8] với thuật toán FAE, sau đó được Fang đề xuất thuật toán VTK [17] để giải quyết Tiếp theo, Deng [11] đề xuất thuật toán NTK dựa trên cây PPC-tree (Pre-order Post-order Code tree) và cấu trúc N-list Gần đây, Le và các đồng sự [26] đề xuất thuật toán iNTK là một cải tiến của NTK iNTK sử dụng cấu trúc N-list với khái niệm subsume được giới thiệu trong [40] Đây được xem là thuật toán hiệu quả nhất cho đến hiện nay, mặc dù iNTK tốn thời gian cho việc tạo cây PPC-tree Tuy nhiên, các nghiên cứu trên mới chỉ đề cập đến CSDL nhị phân, còn trên CSDL số lượng bài toán khai thác Top-rank-k vẫn chưa được quan tâm nghiên cứu
Trang 164
Khai thác tập mục phổ biến trên CSDL có sự phân cấp các mục
Bên cạnh CSDL nhị phân và CSDL số lượng thì CSDL có sự phân cấp các mục là loại CSDL có nhiều trong ứng dụng thực tế CSDL có sự phân cấp các mục là CSDL có thể hiện mối quan hệ khách quan giữa các mục dưới dạng cây phân cấp, các mục có mặt trong CSDL là các mục ở nút lá của cây phân cấp Năm 1995, Han và các đồng sự [20] lần đầu tiên đề cập tới bài toán khai thác FI trên CSDL có sự phân cấp các mục Tiếp theo, Liu
và các đồng sự [31] đề xuất bài toán khai thác FI với nhiều ngưỡng hỗ trợ trên CSDL có sự phân cấp các mục, theo đó, mỗi mục có một ngưỡng hỗ trợ riêng biệt Từ đó đến nay đã có nhiều nghiên cứu liên quan đến bài toán này [4, 5, 6, 28, 30, 35, 36] Tuy nhiên các tiếp cận hiện nay đối với khai thác trên CSDL có sự phân cấp các mục còn có nhiều hạn chế, trong đó đặc biệt
là tốn thời gian và bộ nhớ để thêm các mục cha trên cây phân cấp vào CSDL Ngoài ra các nghiên cứu hiện tại chưa đề cập trên CSDL số lượng có
sự phân cấp các mục
Động lực nghiên cứu của luận án
Bài toán khai thác FI trên một số loại CSDL như đã phân tích ở trên mặc dù đã được quan tâm nghiên cứu nhiều, nhưng cho đến hiện nay các phương pháp khai thác FI trên các loại CSDL số lượng còn hạn chế là tốn
bộ nhớ và thời gian xử lý chưa được tối ưu Mặt khác, khai thác FI trên CSDL số lượng có sự phân cấp các mục hiện nay chưa được quan tâm nghiên cứu, mặc dù đây là loại CSDL có nhiều trong các ứng dụng thực tế Đồng thời, CSDL số lượng có sự phân cấp các mục là sự kết hợp giữa CSDL số lượng và CSDL có sự phân cấp các mục Do đó, đề xuất thuật toán khai thác hiệu quả FI trên CSDL số lượng có sự phân cấp các mục có thể áp dụng để khai thác hiệu quả FI trên các CSDL số lượng và CSDL có
sự phân cấp các mục, giúp cải thiện thời gian và bộ nhớ trong khai thác FI trên các hệ thống thông minh
Trang 175
Trên cơ sở đó, Nghiên cứu sinh chọn đề tài “Phát triển một số thuật toán hiệu quả khai thác tập mục trên cơ sở dữ liệu số lượng có sự phân cấp các mục” làm đề tài nghiên cứu cho luận án tiến sĩ của mình
Đối tượng và phạm vi nghiên cứu của luận án
Đối tượng nghiên cứu là CSDL số lượng và CSDL số lượng có sự phân cấp mục Phạm vi nghiên cứu của luận án là phát triển các thuật toán khai thác tập mục phổ biến ứng dụng trên CSDL số lượng và CSDL số lượng có sự phân cấp mục
Mục tiêu của luận án như sau:
i) Đối với các thuật toán hiện có trên CSDL số lượng, luận án nghiên cứu cách thức khai thác hiệu quả hơn bằng cách cải tiến theo hướng tiếp cận bit - vector
ii) Phát triển khái niệm CSDL số lượng có sự phân cấp mục và đề xuất phương pháp khai thác mẫu trên CSDL số lượng có sự phân cấp mục
Luận án đạt được một số kết quả như sau:
1 Đề xuất một số cấu trúc dữ liệu mới, thuật toán mới để nâng cao hiệu quả khai thác FWI và FWUI trên CSDL số lượng Từ đó áp dụng cho khai thác tập mục phổ biến trên CSDL số lượng có sự phân cấp các mục
2 Đề xuất thuật toán hiệu quả để khai thác k nhóm tập mục phổ biến trọng
số hữu ích có thứ hạng cao nhất trên CSDL số lượng
3 Đề xuất cấu trúc dữ liệu, thuật toán hiệu quả để khai thác FWUI trên CSDL số lượng có sự phân cấp các mục
Cấu trúc luận án bao gồm năm phần, ngoài phần mở đầu và phần kết
luận, nội dung luận án được trình bày trong ba chương:
Chương 1: “Tổng quan về khai thác tập mục” trình bày các khái niệm
về khai thác FI các phương pháp khai thác FI, FWI, FWUI và TRFIk Phân tích ưu điểm và hạn chế của các phương pháp này đồng thời đề xuất hướng nghiên cứu của luận án
Trang 186
Chương 2: “Khai thác tập mục phổ biến trên cơ sở dữ liệu số lượng”
trình bày một số cấu trúc dữ liệu mới để biểu diễn tidset của các tập mục, trên
cơ sở đó đề xuất các phương pháp hiệu quả để khai thác nhanh FWI, FWUI trên CSDL số lượng Đồng thời, trong chương này cũng đề xuất bài toán khai
thác k nhóm tập mục phổ biến trọng số hữu ích có thứ hạng cao nhất
(TRFWUIk) trên CSDL số lượng và thuật toán hiệu quả để giải quyết bài toán này với hai cấu trúc DTab và DHeap
Chương 3: “Khai thác tập mục phổ biến trên cơ sở dữ liệu số lượng
có sự phân cấp các mục” đề xuất thuật toán khai thác FWUI trên CSDL số
lượng có sự phân cấp các mục Chương này trình bày một mở rộng của cấu trúc dữ liệu trong chương 2 và một số đề xuất nhằm cải tiến thuật toán khai thác hiệu quả FWUI trên CSDL số lượng có sự phân cấp các mục
Trang 197
CHƯƠNG 1 TỔNG QUAN VỀ KHAI THÁC TẬP MỤC
Chương này trình bày các nghiên cứu liên quan đến khai thác tập mục phổ biến trên các loại CSDL như CSDL nhị phân, CSDL số lượng, CSDL có
sự phân cấp các mục và khai thác k nhóm tập phổ biến có thứ hạng cao nhất
(Top-rank-k) từ các nhóm nghiên cứu trong nước và quốc tế Phần này cũng trình bày các phân tích về ưu điểm và hạn chế của các phương pháp khai thác tập mục phổ biến hiện có Từ cơ sở đó luận án đề ra các thuật toán mới dựa trên các cấu trúc dữ liệu phù hợp hơn cho các bài toán này trong chương 2 và
3 của luận án
1.1 Bài toán khai thác tập mục
Mục đích của việc khai thác tập mục là để xác định nhóm các mục (item)
có tần suất xuất hiện thỏa mãn một ngưỡng nào đó của người sử dụng đưa vào Trong đó, bài toán khai thác tập mục phổ biến là một bài toán con của bài toán khai thác tập mục với việc khai thác các tập mục có tần suất xuất hiện nhiều trong CSDL Tần suất xuất hiện này thỏa mãn ngưỡng do người sử dụng đưa vào (được gọi là ngưỡng phổ biến) Từ các FI khai thác được có thể sinh ra tập luật kết hợp nhằm khám phá mối quan hệ tiềm ẩn, hữu ích giữa các mục trong CSDL, phục vụ các yêu cầu xuất phát từ đòi hỏi của thực tế của người sử dụng Có thể nói, từ khi được giới thiệu đến nay, đã có khá nhiều công trình nghiên cứu liên quan nhằm mục đích giải quyết tốt bài toán này Hiện nay, bài toán khai thác tập mục đang được tiếp tục nghiên cứu để tìm ra các giải pháp hiệu quả hơn
Nội dung chương 1 sẽ trình bày một số định nghĩa và khái niệm liên quan đến bài toán khai thác tập mục trên một CSDL như CSDL nhị phân, CSDL có sự phân cấp các mục, CSDL số lượng và một biến thể của CSDL số lượng là CSDL trọng số Đồng thời chương 1 giới thiệu tổng quát một số tiếp cận chính cho bài toán khai thác tập mục trên các loại CSDL đó
Trang 208
1.1.1 Một số khái niệm cơ bản
Định nghĩa 1.1 CSDL nhị phân (binary database) là một bộ gồm hai
Các mục xuất hiện trong một giao dịch của CSDL tương ứng có giá trị 1,
ngược lại có giá trị 0 Ví dụ giao dịch t 1 = {1, 1, 0, 1, 1} có nghĩa các mục A,
B, D, E có trong giao dịch, mục C không có trong giao dịch
CSDL nhị phân là CSDL biểu diễn sự xuất hiện hay không của các mục trong các giao dịch Trong nhiều trường hợp, các mục trong CSDL có mối quan hệ với nhau được thể hiện qua các cây phân cấp, ví dụ "computer" là mức khái quát của "Desktop" và "Notebook", hay "Printer" là mức khái quát
Trang 219
của "Laser priter", "Ink-Jet printer", v.v… Những CSDL có thể hiện mối quan
hệ của các mục thông qua cây phân cấp nhƣ trên đƣợc gọi là CSDL nhị phân
Tr là cây phân cấp thể hiện mối quan hệ của các mục trong CSDL
Cho CSDL nhị phân có sự phân cấp mục DB với tập các mục I = {Desktop, Dot-matrix printer, Ink-jet printer, Laser printer, Notebook, Scanner}, các giao dịch T đƣợc biểu diễn nhƣ Bảng 1.2 và cây phân cấp thể
hiện quan hệ các mục nhƣ Hình 1.1
Bảng 1.2 Các giao dịch của CSDL nhị phân có sự phân cấp mục DB
t 1 Notebook, Laser printer
t 2 Scanner, Dot-matrix printer
t 3 Dot-matrix printer, Ink-jet printer
t 4 Notebook, Dot-matrix printer, Laser printer
t 5 Scanner
t 6 Desktop
Trang 22Từ ID đƣợc định nghĩa trong Bảng 1.3, các giao dịch trong Bảng 1.2 và
cây phân cấp Tr đƣợc biểu diễn lại nhƣ trong Bảng 1.4 và Hình 1.2
Trang 2311
Hình 1.2 Cây phân cấp Tr biểu diễn theo ID
Tập J = {G, K, H} là tập các mục cha của cây phân cấp không xuất hiện trong các giao dịch của DB Tuy nhiên chúng có vai trò nhất định, thể hiện mối quan hệ của các mục trong DB Do đó, khi khai thác FI trên CSDL phân cấp đòi hỏi phải khai thác cả tập các mục trên cây phân cấp bao gồm (I J)
CSDL nhị phân là CSDL thể hiện sự có mặt hay không của mục trong các giao dịch của CSDL mà không quan tâm đến giá trị (trọng số, lợi ích, số lượng, v.v…) của các mục trong các giao dịch Trong nhiều ứng dụng thực tế như CSDL bán hàng trong siêu thị, CSDL đơn thuốc, v.v… mỗi mục trên mỗi đơn hàng thường kèm theo số lượng và giá trị của chúng Các CSDL dạng này được gọi là CSDL số lượng
Định nghĩa 1.3 CSDL số lượng (quantitative database) là một bộ ba
Với giao dịch thứ k (k = 1 m): t k = { , , …, }, là số tự nhiên
chỉ số lượng của mục thứ j trong giao dịch, j = 1 n
Ví dụ 1.2: Cho CSDL số lượng DB với tập các mục I = {A, B, C, D, E}, các giao dịch T được biểu diễn trong Bảng 1.5, trọng số các mục như trong
Trang 24Theo Bảng 1.5, DB có sáu giao dịch {t 1 , t 2 , t 3 , t 4 , t 5 , t 6}, ví dụ giao dịch
= {1, 1, 0, 4, 1} có nghĩa là trong giao dịch có một mục A, một mục B, bốn mục D, một mục E, không có mục C
Trong nhiều ứng dựng thực tế, CSDL số lượng có thể không quan tâm đến số lượng của các mục trong mỗi giao dịch, mà chỉ quan tâm đến trọng số của chúng Ví dụ CSDL vi phạm giao thông, người ta chỉ quan tâm là người
vi phạm lỗi gì và mức tiền phạt tương ứng cho từng lỗi ấy, hay CSDL khám bệnh, người ta quan tâm đến bệnh nhân có những triệu chứng gì mức độ nặng nhẹ (trọng số) của từng triệu chứng ấy, v.v… Các CSDL đó được gọi là CSDL có trọng số hay CSDL trọng số - một biến thể của CSDL số lượng với
số lượng của các mục xuất hiện trong CSDL là 1
Trang 25Ví dụ 1.3: Cho CSDL trọng số DB với tập mục I = {A, B, C, D, E}, các
giao dịch đƣợc biểu diễn trong Bảng 1.7, trọng số các mục đƣợc thể hiện trong Bảng 1.8
Trang 2614
Định nghĩa 1.6 Độ hỗ trợ của một tập mục (support) là tần suất xuất
hiện của tập mục đó trong CSDL và được xác định theo công thức sau:
support(X) =
Trong đó:
- k là số giao dịch chứa X
- m là số lượng giao dịch của CSDL
Ví dụ 1.4: Dựa vào CSDL Bảng 1.1, ta có support(AB) = =
66,67% (tập mục AB xuất hiện trong bốn giao dịch t 1 , t 3 , t 4 , t 5)
Để khai thác FI, người ta đưa vào một ngưỡng, gọi là ngưỡng phổ biến
(minsup), tập mục phổ biến theo ngưỡng minsup là tập mục có độ hỗ trợ (support) lớn hơn hay bằng ngưỡng minsup Như vậy tập các tập mục phổ
biến - FI được xác định như sau:
FI = {X|X I và support(X) minsup}
Định nghĩa 1.7 FI gồm k phần tử theo ngưỡng minsup cho trước gọi là
k-itemset
Định nghĩa 1.8 Rank của một tập mục X thuộc CSDL DB, kí hiệu RX
là một số nguyên chỉ thứ tự tập mục X theo độ phổ biến từ cao xuống thấp của tất cả các tập mục thuộc CSDL DB
RX = |{Y I | support(Y) support(X)}|
Định nghĩa 1.9 Cho một giá trị nguyên k và CSDL DB, k nhóm tập
mục phổ biến có độ phổ biến cao nhất ( Top - rank - k frequent itemsets - TRFIk) của CSDL DB là tập các tập mục có hạng nhỏ hơn hoặc bằng k được xác định như sau:
TRFIk = {X|X I và Rx k}
Trang 2715
1.1.2 Bài toán khai thác FI
Bài toán khai thác FI trên CSDL DB cho trước là bài toán tìm tất cả các
tập mục của CSDL có tần số xuất hiện trong các giao dịch thỏa mãn ngưỡng
minsup do người dùng xác định trước Tập các tập mục được khai thác theo ngưỡng minsup được gọi là FI của DB
Ví dụ 1.5: Xét CSDL trong Bảng 1.1 gồm sáu giao dịch được mô tả lại như Bảng 1.9:
FI của DB với minsup = 0,5 như sau:
FI = {A, B, C, D, E, AB, AD, AE, BC, BD, BE, DE, ABD, ABE, BDE, ABDE}
Bài toán khai thác FI là bài toán tìm tất cả các tập mục của CSDL có tấn
suất xuất hiện thõa mãn ngưỡng minsup cho trước
1.2 Các phương pháp khai thác FI
1.2.1 Phương pháp khai thác FI trên CSDL ngang
CSDL ngang được hiểu là CSDL giao dịch được mô tả như các định nghĩa về các loại CSDL đã nêu ở trên (Định nghĩa 1.1, đến Định nghĩa 1.4)
Có hai phương pháp chính khai thác FI trên CSDL ngang đó là Apriori và Growth
Trang 28FP-16
1.2.1.1 Thuật toán Apriori
Thuật toán Apriori [1, 3] do Agrawal và các đồng sự đề xuất năm 1994 Thuật toán này khai thác FI bằng cách quét CSDL nhiều lần Ý tưởng như
sau: Thuật toán quét CSDL lần thứ nhất để sinh ra tập1-itemset phổ biến, từ tập 1-itemset phổ biến quét CSDL lần thứ hai để sinh ra tập 2-itemset phổ
biến, v.v… cho đến khi không tìm được bất kì tập phổ biến nào nữa thì dừng Thuật toán Apriori dựa trên tính chất được đặt tên là tính chất Apriori (còn
được gọi là tính chất bao đóng giảm) như sau:
Cho hai tập mục X và Y của CSDL DB:
Nếu X Y ⟹ support(X) support(Y)
Thuật toán 1.1: Apriori
Input: CSDL DB và một ngưỡng minsup
Output: Các FI của DB thỏa minsup
1 Quét CSDL để tính support của các 1 - itemset, so sánh support với
minsup để lọc ra FI gồm 1-itemset (L1 ) thỏa mãn minsup
2 Sử dụng Lk-1 để sinh ra ứng viên k-itemset Sau đó quét CSDL để tính support của các ứng viên và loại bỏ các k-itemset không phải là FI thu được k-itemset phổ biến (Lk )
3 Lặp lại bước 2 cho đến khi không tạo ra ứng viên nào nữa FI khai thác được = L1 L2
Hình 1.3 Thuật toán Apriori trong khai thác FI
Trang 2917
Ngày nay các CSDL thực tế có xu hướng tăng rất nhanh về dung lượng, bởi vậy việc quét CSDL nhiều lần là không khả thi do rất tốn thời gian Đồng thời việc sinh ra tập các ứng viên ở mỗi bước quét CSDL cần lượng bộ nhớ lớn để lưu trữ Do đó thuật toán Apriori ít được quan tâm nghiên cứu và sử dụng trong thời gian gần đây
1.2.1.2 Thuật toán FP-Growth với cấu trúc FP-tree
Thuật toán FP-Growth [18] do Han và đồng sự đề xuất năm 2000 đã phần nào giải quyết các hạn chế của Apriori về cả thời gian xử lý và bộ nhớ sử dụng Tiếp sau đó Grahne và đồng sự đề xuất FP-Growth* [19] Đây là một tiếp cận thú vị với việc sử dụng cấu trúc cây FP-tree (Frequent Partern-tree) để nén toàn
bộ CSDL với mỗi nút trên FP-tree là các mục của CSDL ban đầu Đồng thời, thuật toán FP-Growth chỉ cần hai lần quét CSDL, giảm đáng kể thời gian so với thuật toán Apriori, đặc biệt là trong các trường hợp CSDL lớn
Bước đầu tiên, thuật toán FP-Growth quét CSDL và sắp xếp lại trật tự các mục theo thứ tự tần suất xuất hiện giảm dần trên mỗi giao dịch Bước thứ
2, FP-Growth quét CSDL và nén toàn bộ dữ liệu lên cây FP-tree Bước thứ 3,
duyệt FP-tree để khai thác các FI:
Thuật toán FP-Growth được mô tả như trong Hình 1.4
Thuật toán 1.2: FP-Growth
Input: CSDL DB và một ngưỡng minsup
Output: Các FI của DB thỏa minsup
1 Quét toàn bộ CSDL DB và tính độ hỗ trợ (support) của từng mục Sau đó xác định những mục có support lớn hơn minsup và sắp xếp giảm dần theo support vào trong f_list
2 Tạo cây FP-tree chỉ có một nút gốc được gán nhãn là “null” ký hiệu root
a Với mỗi giao dịch trong DB được thể hiện như sau: chọn và sắp xếp những danh mục phổ biến theo thứ tự giảm dần trong f_list.
b Chèn các mục lên cây FP-tree
3 Duyệt cây FP-tree để khai thác các FI thỏa mãn minsup
Hình 1.4 Thuật toán FP-Growth khai thác FI dựa trên cấu trúc FP-tree
Trang 3018
Hạn chế của thuật toán này là quét CSDL đến hai lần và đặc biệt là tốn thời gian trong duyệt cây FP-tree để xây dựng các FI
1.2.2 Phương pháp khai thác FI trên CSDL dọc dựa trên IT-tree
Thuật toán Eclat [49] được đề xuất bởi Zaki sử dụng cấu trúc IT-tree (Tidset Itemset-tree) để lưu tidset của các tập mục trên mỗi nút và đưa ra khái niệm lớp tương đương để kết nối các tập mục trong cùng một lớp tương đương để tạo ra tập mục mới Thuật toán Eclat với chỉ một lần quét CSDL là một tiếp cận hiện đại, tiết kiệm thời gian xử lý và có thể áp dụng khai thác FI trên nhiều loại CSDL một cách hiệu quả Trong đó, nhiều nghiên cứu đã mở rộng và biến đổi cấu trúc IT-tree một cách phù hợp để áp dụng khai thác FI trên nhiều loại CSDL khác như khai thác trên CSDL trọng số [37] CSDL số lượng [39] và CSDL có sự phân cấp các mục [36] một cách hiệu quả hơn Tiếp cận Eclat sử dụng tính chất Apriori để cắt nhánh các tập mục không thỏa ngưỡng phổ biến Do vậy các tập mục trên IT-tree là các FI thỏa mãn
ngưỡng minsup
Như vậy nếu tập mục X không thỏa mãn ngưỡng minsup thì các tập mục
là phủ của X cũng không thỏa ngưỡng minsup, do vậy ta không cần xét nhánh
do tập mục X tạo ra Áp dụng tính chất bao đóng giảm trên cây IT-tree sẽ cắt
nhánh được tất cả các nhánh chắc chắn không chứa FI và các tập mục trên tree chính là FI cần khai thác
Trang 3119
phần tử cuối cùng Một nút mới đƣợc chèn vào IT-tree nếu độ hỗ trợ
(support) của nó thỏa mãn ngƣỡng phổ biến (minsup) do đó các nút trên
IT-tree sau khi xây dựng xong chính là các FI cần khai thác
1.2.2.2 Thuật toán Eclat
Thuật toán 1.3: Eclat
Input: CSDL DB và một ngưỡng minsup
Output: Các FI của DB thỏa minsup
Method: Eclat
1 Quét toàn bộ CSDL DB để xác định tập giao dịch (tidset) của các mục Chọn các mục có support thỏa ngưỡng minsup (1-itemset)
2 Chèn 1-itemset vào mức 1 của IT-tree
3 Mỗi nút ở mức k - 1 kết hợp với các nút có cùng nút cha với nó tạo ra các nút ở mức k nếu support của các nút này thỏa ngưỡng minsup
4 Lặp lại bước 3 cho đến khi không thể tạo thêm nút mới trên IT-tree
5 Duyệt cây IT-tree để lấy ra các FI (Tất cả các nút trên IT-tree là FI)
Hình 1.5 Thuật toán Eclat dựa trên cấu trúc IT-tree
Ví dụ 1.6: Cho CSDL nhị phân DB trong ví dụ 1.1 và minsup = 0,5:
Bước 1: Quét CSDL chuyển sang CSDL theo chiều dọc nhƣ trong Bảng
Trang 3220
Hình 1.6 Cây IT tree với minsup = 0,5 của CSDL DB
Đầu tiên, tập 1-itemset được đưa vào mức đầu tiên của cây IT-tree Sau
đó, các cặp nút trong cùng một lớp tương đương được kết nối với nhau để tạo
ra các tập mục mới ở mức tiếp theo nếu tập mục mới thỏa mãn ngưỡng
minsup như trên Hình 1.4
Bước 4: Các FI khai thác được: {A, B, C, D, E, AB, AD, AE, BC, BD,
BE, DE, ABD, ABE, ADE, BCE, BDE, ABDE}
Thuật toán Eclat với cấu trúc IT-tree là hướng tiếp cận tốt được biết đến hiện nay với chỉ một lần quét CSDL Tuy nhiên, phương pháp này có nhược điểm lớn là tốn bộ nhớ sử dụng để lưu tidset của các tập mục, do mỗi giao dịch chứa tập mục cần một ô nhớ Đồng thời bộ nhớ tạm cần thiết trong quá trình tính toán trung gian cũng rất lớn Các hạn chế này làm cho thời gian tính toán của thuật toán Eclat chưa được tối ưu Do đó, nghiên cứu đề xuất các phương pháp mới nhằm tối ưu bộ nhớ để nâng cao hiệu quả khai thác FI trên các loại CSDL theo hướng tiếp cận này có tính thực tế cao Đây cũng chính là một trong những mục tiêu nghiên cứu của luận án
Trang 33Một dạng rút gọn của CSDL số lượng là CSDL trọng số (Định nghĩa 1.4) với các giao dịch nhị phân, tức là các mục xuất hiện trong giao dịch là 1, các mục không xuất hiện là 0, mỗi mục có một trọng số xác định CSDL trọng số cũng là CSDL được sử dụng nhiều trong các ứng dụng thực tế Với CSDL trọng số, người ta không quan tâm đến số lượng mỗi mục trong các giao dịch,
mà quan tâm đến mục đó có xuất hiện hay không và trọng số của nó Ví dụ CSDL tai nạn giao thông, với mỗi vụ tai nạn giao thông người ta chỉ cần biết có
lỗi A, lỗi B và mức phạt của các lỗi ấy, hay CSDL bệnh nhân, mỗi người bệnh
có một số triệu chứng và các triệu chứng đó nặng hay nhẹ, ở mức độ nào, v.v…
Do đó, bên cạnh khai thác FWUI trên CSDL số lượng thì khai thác FWI trên CSDL trọng số cũng được quan tâm khai thác từ nhiều nhóm nghiên cứu về khai thác dữ liệu trên thế giới [7, 22, 23, 32, 34, 37, 42, 43, 44, 45, 46, 47, 48]
1.3.2 Khai thác FWI
1.3.2.1 Giới thiệu
Bài toán khai thác FWI được đề xuất lần đầu tiên bởi Ramkumar và đồng sự [32], trong nghiên cứu này, các tác giả đã đưa ra mô hình mô tả khái niệm về luật kết hợp có trọng số, trong đó đề xuất thuật toán WIS để khai thác FWI Sau đó, việc nghiên cứu bài toán khai thác FWI được chia làm hai hướng tiếp cận riêng biệt dựa theo các cách thức xác định độ đo hỗ trợ trọng
số (weight support - ws) khác nhau
Trang 3422
Hướng tiếp cận thứ nhất khởi đầu bởi Yun và đồng sự [45] sử dụng một
hàm trung bình để tính trọng số của tập mục, từ đó tính ws của tập mục bằng
tích của trọng số và độ hỗ trợ của tập mục đó Do tính trọng số của tập mục bằng hàm trung bình nên một tập mục có thể nhận giá trị trọng số lớn hơn khi thêm vào một mục mới, điều này không đảm bảo tính chất bao đóng giảm Để giải quyết vấn đề, Yun & Leggett [46] đề xuất thuật toán WSPAN sử dụng mô hình maximum-weighted-upper-bound, trong đó các mục được gán các giá trị khác nhau trong phạm vi weight - range được định nghĩa trước Sau đó, Lan và các đồng sự [21] (tương tự [47, 48]) đề xuất tiếp mô hình sequence -maximum-weight để rút gọn lại upper-bound của các ws nhằm giảm bớt số lượng ứng viên trong quá trình khai thác Cách tiếp cận theo hướng này xem xét song song trọng số và độ hỗ trợ của tập mục trong quá trình khai thác Thêm nữa,
theo cách tính ws của cách tiếp cận này, một tập mục xuất hiện trong giao dịch
t i cũng tương đương với xuất hiện trong giao dịch t j, điều này không phản ánh được tầm quan trọng khác nhau của các giao dịch trong CSDL thực tế
Hướng tiếp cận thứ hai được đề xuất lần đầu tiên bởi Tao và đồng sự
[34] dựa trên độ đo trọng số giao dịch (transaction weight - tw) được tính
bằng trung bình cộng các trọng số của các mục có trong giao dịch và giá trị
ws của một tập mục được xác định bằng tỉ số giữa tổng các tw của các giao dịch có chứa tập mục đó và cho tổng tw của tất cả giao dịch Theo cách tiếp cận này thì giá trị ws của tập mục vừa phản ánh được mức độ xuất hiện của
tập mục trong các giao dịch, vừa thể hiện được mức độ quan trọng khác nhau của các giao dịch Một ưu điểm nữa của cách tiếp cận này là thỏa mãn tính chất bao đóng giảm một cách tự nhiên Tuy nhiên, thuật toán do Tao và đồng
sự đề xuất dựa vào việc sinh ứng viên theo phương pháp Apriori nên cần đọc CSDL nhiều lần, dẫn đến tốn thời gian xử lý và cả bộ nhớ lưu trữ Tiếp theo,
Vo và các đồng sự [37] đề xuất cách thức lưu trữ trọng số trên cây WIT-tree, một mở rộng của cây IT-tree Do chỉ cần quét CSDL một lần, cùng với áp dụng chiến lược Diffset để khai thác FWI trên cây WIT-tree, nên phương
Trang 3523
pháp này tỏ ra hiệu quả hơn phương pháp theo hướng tiếp cận Apriori trước
đó Hạn chế của phương pháp này là ở chỗ tốn bộ nhớ để lưu trữ tidset, đó cũng là nguyên nhân làm cho thời gian xử lý chưa được tối ưu
Theo hướng tiếp cận thứ hai này, Tao [34] và các đồng sự đưa ra công
thức tính các đại lượng trọng số giao dịch (transaction weight - tw) và độ hỗ trợ trọng số (weight support - ws), trong đó tw của một giao dịch là trung bình cộng của trọng số của các mục trong giao dịch đó, còn ws của một tập mục là thương của tổng tw của các giao dịch chưa tập mục đó với tổng tw của CSDL Cách tính này được thể hiện qua hai định nghĩa 1.11 và 1.12 như sau:
Định nghĩa 1.10 Trọng số giao dịch của các giao dịch tw được xác định như công thức 1.1:
Trang 36Với, t(X) là tập các giao dịch chứa tập mục X và sum_tw = ∑
Với tập mục BD trong DB ở ví dụ 1.3 được xác định như sau:
ws(BD) = 0,78
Tập mục X được gọi là phổ biến nếu và chỉ nếu ws(X) minws, với minws được xác định bởi người sử dụng Bài toán khai thác FWI trên CSDL trọng số là bài toán tìm tất cả các tập mục X (X I) thỏa mãn ws(X) minws
1.3.2.2 Một số nghiên cứu liên quan
Ramkumar và các đồng sự [32] đưa ra bài toán khai thác FWI trên CSDL trọng số Sau đó, Tao và đồng sự [34] đề xuất mô hình giải quyết bài
toán này dựa trên hai đại lượng trọng số giao dịch (tw) và độ hỗ trợ trọng số (ws) với công thức tính như trên trong định nghĩa 1.15 và định nghĩa 1.16
Vo và các đồng sự [37] đề xuất cấu trúc WIT-tree là một mở rộng của IT-tree [49] Mỗi nút trên WIT-tree gồm ba thành phần ws, itemset, tidset
Sự kết nối hai nút trong cùng một lớp tương đương ở mức k tạo ra nút mới ở mức k+1, nếu ws của tập mục mới tạo thành này thỏa ngưỡng minws, tập mục
ở nút mới chính là hợp từ hai tập mục của hai nút phía trên và tidset mới chính là giao của hai tidset của hai nút đó Sau khi xây dựng xong WIT-tree,
các tập mục trên cây chính là tất cả các FWI thỏa ngưỡng khai thác minws
Tuy nhiên các tiếp cận này chưa được tối ưu cả về thời gian lẫn bộ nhớ
1.3.3 Khai thác FWUI
Bên cạnh khai thác FWI, bài toán khai thác FWUI cũng nhận được một
số quan tâm nghiên cứu [21, 39] Việc khai thác FWUI liên quan đến việc xác
định trọng số hữu ích của các giao dịch twu (transaction weight utility) và độ
hỗ trợ trọng số hữu ích wus (weight utility support)
Trang 3725
Khan và đồng sự [21] đã đƣa ra định nghĩa hai đại lƣợng là trọng số hữu
ích của giao dịch - transaction weight utility (twu) và độ hỗ trợ trọng số hữu ích - weight utility support (wus) đƣợc biểu diễn lại nhƣ sau:
Định nghĩa 1.12 Trọng số hữu ích của các giao dịch twu đƣợc định
Trang 38Các tập mục phổ biến xác định theo minwus thỏa ngưỡng tính chất bao
đóng giảm, điều này đã được chứng minh trong [40]
Khan và các đồng sự [21] đề xuất bài toán khai thác FWUI bằng việc đề
xuất hai độ đo trong khai thác FWUI là trọng số hữu ích của giao dịch - twu
và độ hỗ trợ trọng số hữu ích - wus, đồng thời đề xuất một “framework” trong
việc giải quyết bài toán khai thác FWUI dựa trên hai độ đo này
Vo và các đồng sự đề xuất một cấu trúc dữ liệu có tên MWIT-tree [39] là một mở rộng khác của IT-tree để khai thác FWUI với chỉ một lần quét dữ liệu
dựa trên tính chất bao đóng giảm của wus Cấu trúc này gồm nhiều nút mỗi nút gồm ba thành phần {X, t(X), wus(X)} trong đó X là tập mục, t(X) là tidset(X) và wus(X) là độ hỗ trợ trọng số hữu ích của X Tuy nhiên tiếp cận
này có hạn chế là bộ nhớ sử dụng lưu trữ tidset của các tập mục còn rất lớn, điều này ảnh hưởng đến thời gian khai thác FWUI
1.3.4 Khai thác TRFIk
Khai thác FI là bài toán trọng tâm trong khai thác dữ liệu được nhiều nhóm nghiên cứu quan tâm Tuy nhiên, trong nhiều trường hợp khai thác FI với ngưỡng cho trước không đáp ứng được các đòi hỏi thực tế Ví dụ, với
ngưỡng minsup đưa vào thì số lượng các FI khai thác được quá nhiều hoặc
Trang 3927
quá ít, nghĩa là người sử dụng không kiểm soát được số lượng các FI tìm thấy, v.v… Trong những trường hợp như vậy khai thác TRFIk sẽ giải quyết được yêu cầu trên
Fang và các đồng sự [17] đã đề xuất thuật toán VTK để khai thác TRFIk
trên CSDL nhị phân Thuật toán VTK khai thác dữ liệu theo chiều dọc gồm hai bước Đầu tiên VTK quét CSDL để chuyển dữ liệu sang chiều dọc và tính
support của các 1-itemset và đưa chúng vào TRFI-Table theo thứ tự giảm dần của support Mỗi thành phần trên TRFI-Table gồm hai thành phần, một là count (support của tập mục) hai là danh sách các tập mục có cùng support Bước thứ 2, các l-itemset trong TRFI-Table được kết nối với nhau để tạo ra các (l+1)-itemset, các tập mục mới được tạo thành sẽ được chèn vào TRFI- Table nếu support của nó lớn hơn giá trị tại chỉ số k của TRFI-Table (phần tử
cuối của TRFI-Table) Thuật toán kết thúc khi không còn tập mục nào được cập nhật vào TRFI-Table VTK là một thuật toán khá hiệu quả song nó có
một số điểm yếu như:
- Bộ nhớ sử dụng lớn trong lưu trữ tidset của các tập mục
- Tốn nhiều thời gian thực hiện kết nối các l-itemset để tạo ra itemset từ TRFI-Table, do phải xét cặp với m là số lượng các tập mục trong TRFI-Table
(l+1)-Deng và các đồng sự [8,10] đã đề xuất thuật toán NTK dựa trên cấu trúc N-list để tiết kiệm bộ nhớ, giảm thời gian tính toán trong khai thác TRFIk NTK tạo ra cây PPC-tree giống với cây FP-tree Dựa trên PPC-tree sinh ra N-
list của các 1-itemset, từ đó khai thác TRFIk NTK tuy đã cải thiện được bộ nhớ lưu trữ tidset của các tập mục, song vẫn tốn thời gian nhiều do quét CSDL hai lần để tạo ra PPC-tree
Le cùng các đồng sự [26] đưa ra một cải tiến của NTK với thuật toán iNTK dựa trên cấu trúc N-list giúp giảm thời gian trong tính giao các N-list
Trang 401.4 Khai thác FI trên CSDL có sự phân cấp các mục
CSDL có sự phân cấp các mục theo Định nghĩa 1.2 là CSDL có nhiều trong các ứng dụng thực tế, trong đó các mục trong CSDL có mối quan hệ nhất định với nhau thông qua cây phân cấp, các mục tại nút lá là các mục
có mặt trong các giao dịch trong CSDL, các mục ở nút cha trên cây phân cấp là các mục ở mức khái quát của các mục nút lá Do đó, bài toán này đã nhận đƣợc sự quan tâm từ nhiều nhóm nghiên cứu [4, 5, 6, 14, 15, 20, 28,
Định nghĩa 1.14 Tập X là FI thì support(X) minsup, đồng thời trong X không tồn tại một cặp mục nào có quan hệ cha con, nhƣ vậy X là phổ biến khi:
{ ( )
Có hai tiếp cận khai thác FI trên CSDL có sự phân cấp các mục, đó là khai thác với một ngƣỡng phổ biến và khai thác với nhiều ngƣỡng phổ biến Các ngƣỡng phổ biến khác nhau đối với mỗi cấp trên cây phân cấp