ĐẠ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

ĐẠ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

Chuyên ngành: CƠ SỞ TOÁN CHO TIN HỌC Mã số: 62460110

LUẬN ÁN TIẾN SĨ TOÁN HỌC

NGƢỜI HƢỚNG DẪN KHOA HỌC:

1. TS. NGUYỄN THỊ HỒNG MINH

2. PGS.TS. VÕ ĐÌNH BẢY

XÁC NHẬN NCS ĐÃ CHỈNH SỬA THEO QUYẾT NGHỊ CỦA HỘI ĐỒNG ĐÁNH GIÁ LUẬN ÁN

Ngƣời hƣớng dẫn khoa học

TS. Nguyễn Thị Hồng Minh

Chủ tịch hội đồng đánh giá Luận án Tiến sĩ PGS.TS. Huỳnh Quyết Thắng

Hà Nội - 2016

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ả

i

Nguyễn Duy Hàm

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

ii

LỜI CẢM ƠN

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

iii

2.3. Thuật toán khai thác TRFWUIk ....................................................................... 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

iv

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

v

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

vi

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

vii

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

viii

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

ix

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

1. CSDL

Database

Cơ sở dữ liệu

2. DBV

Dynamic bit-vector

Bit động

3. EDBV

Extended dynamic bit-vector

Bit động mở rộng

4. EIWS

Extended interval word segment Các đoạn word mở rộng

5. FI

Frequent itemset

Tập mục phổ biến

6. FP-tree

Frequent Pattern-Tree

Cây FP

Tập mục phổ biến có

7. FWI

Frequent weighted itemset

trọng số

Tập mục phổ biến trọng

8. FWUI

Frequent weighted utility itemset

số hữu ích

Hierarchical quantitative

Cơ sở dữ liệu số lƣợng

9. HQDB

database

có sự phân cấp các mục

10.

IT-tree

Itemset tidset-tree

Cây IT-tree

11.

IWS

Interval words segment

Các đoạn word

12. MBiS

Multi bits segment

Các đoạn bit 1 liên tiếp

13. MByS

Multi bytes segment

Các đoạn byte

14. DTab

Dynamic table

Bảng động

K nhóm tập mục phổ biến

Top-rank-k frequent itemsets

15. TRFIk

có thứ hạng cao nhất

K nhóm tập mục phổ biến

Top-rank-k frequent weight

trọng số hữu ích có

16. TRFWUIk

utility itemsets

thứ hạng k cao nhất

17. DHeap

Dynamic heap

Heap động

18.

Item

Item

Mục

19.

Itemset

Set of items

Tập mục

20. LI

Large integer

Số nguyên lớn (tám byte)

x

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

1

phổ biến (frequent itemsets - FI), từ FI có thể khai thác luật kết hợp, đƣa ra

những dự báo, dự đoán và tìm ra quy luật của dữ liệu nhằm phục vụ cho các

nhu cầu khác nhau của con ngƣời.

Thuật toán đầu tiên đƣợc biết tới trong khai thác FI là đƣợc đề xuất bởi

Agrawal và các đồng sự [2] năm 1993, sau đó chính Agrawal đề xuất thuật

toán Apriori [1] năm 1994. Tuy nhiên thuật toán này sớm bộc lộ hạn chế về

thời gian xử lý do đọc CSDL nhiều lần. Tiếp theo Han và các đồng sự đề xuất

thuật toán FP-Growth [19] và Grahne cùng các đồng sự đề xuất FP-Growth*

[18] dựa trên việc nén dữ liệu lên cây FP-tree (frequent pattern-tree) với chỉ hai

lần đọc CSDL, đây là thuật toán hiệu quả về bộ nhớ sử dụng, song lại tốn thời

gian cho duyệt cây FP-tree để khai thác các FI. Tiếp đến Zaki và các đồng sự

đề 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,

2

42, 43, 44, 45, 46, 47, 48] hay khai thác tập mục phổ biến trọng số hữu ích

(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

3

nghiên cứu.

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

4

trên các hệ thống thông minh.

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

Đối tượng và phạm vi nghiên cứu của luận án

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

5

nghiên cứu của luận án.

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

6

thác hiệu quả FWUI trên CSDL số lƣợng có sự phân cấp các mục.

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

7

cận chính cho bài toán khai thác tập mục trên các loại CSDL đó.

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

thành phần: T, I trong đó:

T = {t1, t2, ..., tm} là tập gồm m giao dịch của CSDL

I = {i1, i2, ..., in} là tập gồm n mục trong CSDL

Với giao dịch thứ k (k = 1..m): ={ } trong đó 0

hoặc 1, với j =

Ví dụ 1.1: Cho CSDL DB với tập các mục I = {A, B, C, D, E} và tập các

giao dịch T đƣợc biểu diễn bởi Bảng 1.1 nhƣ sau:

Bảng 1.1. Các giao dịch của CSDL nhị phân DB

Mục A B C D E Giao dịch

1 1 0 1 1 t1

0 1 1 1 0 t2

1 1 0 1 1 t3

1 1 1 0 1 t4

1 1 1 1 1 t5

0 1 1 0 1 t6

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 t1 = {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à

8

mức khái quát của "Desktop" và "Notebook", hay "Printer" là mức khái quát

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

có sự phân cấp các mục.

Định nghĩa 1.2. CSDL nhị phân có sự phân cấp các mục

(hierarchical database) là một bộ gồm ba thành phần: T, I, Tr, trong đó:

T = {t1, t2, ..., tm} là tập gồm m giao dịch của CSDL

I = {i1, i2, ..., in} là tập gồm n mục trong CSDL

Với giao dịch thứ k (k = 1..m): ={ } trong đó 0

hoặc 1, với j = 1..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

Giao dịch Mục

Notebook, Laser printer t1

Scanner, Dot-matrix printer t2

Dot-matrix printer, Ink-jet printer t3

Notebook, Dot-matrix printer, Laser printer t4

Scanner t5

9

Desktop t6

Printer

Computer

Scanner

Non – impact Dot – matrix

Desktop

Notebook

Laser

Ink – jet

Hình 1.1. Cây phân cấp Tr

Để đơn giản, ta gán các mục trên cây phân cấp Tr bằng các ID nhƣ Bảng 1.3:

Bảng 1.3. ID các mục của DB

ID mục Tên mục

Desktop A

Ink-jet Printer B

Laser Printer C

Notebook D

Scanner E

Dot-matrix Printer F

Non-impact G

Computer H

Printer K

Từ 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.

Bảng 1.4. Các giao dịch của DB bằng ID

Giao dịch mục

D, C t1

E, F t2

F, B t3

D, F, C t4

E t5

10

A t6

H

K

E

G

D

A

F

C

B

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

thành phần: T, I, W, trong đó:

T = {t1, t2, ..., tm} là tập gồm m giao dịch của CSDL

I = {i1, i2, ..., in} là tập gồm n mục trong CSDL

W = {w1, w2, …, wn} là tập gồm n trọng số của các mục tƣơng ứng trong

tập I

Với giao dịch thứ k (k = 1..m): tk = { , , …, }, 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

11

bảng 1.6.

Bảng 1.5. Giao dịch của CSDL số lƣợng BD

Giao dịch

A B C D E

1 1 0 4 1

0 1 3 0 1

2 1 0 3 2

3 1 1 0 1

1 2 2 1 3

0 1 1 1 0

Bảng 1.6. Trọng số các mục trong DB

Mục Trọng số

A 0,6

B 0,1

C 0,3

D 0,9

E 0,2

Theo Bảng 1.5, DB có sáu giao dịch {t1, t2, t3, t4, t5, t6}, 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

12

số lƣợng của các mục xuất hiện trong CSDL là 1.

Định nghĩa 1.4. CSDL trọng số (weighted database) là một bộ gồm ba

thành phần: T, I, W, trong đó:

T = {t1, t2, ..., tm} là tập gồm m giao dịch của CSDL

I = {i1, i2,.., in} là tập gồm n mục trong CSDL

W = {w1, w2, …, wn} là tập gồm n trọng số của các mục tƣơng ứng trong

tập I

Ví 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.

Bảng 1.7. Các giao dịch của CSDL trọng số DB

Mục

A, B, D, E

B, C, E

A, B, D, E

A, B, C, E

A, B, C, D, E

B, C, D Giao dịch

Bảng 1.8. Trọng số của các mục của DB

mục Trọng số

A 0,6

B 0,1

C 0,3

D 0,9

E 0,2

Định nghĩa 1.5. Tidset của tập mục X là tập hợp các giao dịch chứa X.

Nhƣ vậy:

13

tidset(X) = {t|t T  X  t}

Đị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 t1, t3, t4, t5).

Để 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:

14

TRFIk = {X|X I và Rx k}

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:

Bảng 1.9. CSDL DB

Giao dịch Các mục trong các giao dịch

A, B, D, E t1

B, C, E t2

A, B, D, E t3

A, B, C, E t4

A, B, C, D, E t5

B, C, D t6

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à FP-

15

Growth.

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)

Do đó:

Nếu support(X) minsup ⟹Y  X, support(Y) minsup

Nếu (Y) minsup ⟹X Y, support(X) minsup

Dựa vào tính chất trên, thuật toán Apriori [1] đƣợc mô tả nhƣ trong

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:

16

Hình 1.3. Thuật toán Apriori trong khai thác FI

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

Thuật toán FP-Growth đƣợc mô tả nhƣ trong Hình 1.4

17

Hình 1.4. Thuật toán FP-Growth khai thác FI dựa trên cấu trúc FP-tree

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

tree chính là FI cần khai thác.

1.2.2.1. Cấu trúc IT-tree

IT-tree có cấu trúc gồm nhiều mức, mỗi mức gồm nhiều lớp tƣơng

đƣơng. Mỗi lớp tƣơng đƣơng gồm các nút có cùng nút cha ở mức trên. Mỗi

nút gồm hai thành phần:

- Tập mục X

- Tidset của X

Mỗi lớp tƣơng đƣơng đƣợc tạo ra từ một mục cha ở mức trên kết hợp lần

lƣợt các nút phía sau nó trong cùng một lớp tƣơng đƣơng. Do vậy các nút

18

trong cùng một lớp tƣơng đƣơng có cùng số lƣợng phần tử chỉ khác nhau

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.

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

1.2.2.2. Thuật toán Eclat

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

1.10

Bảng 1.10. CSDL DB theo chiều dọc

Mục Tidset

A 1, 3, 4, 5

B 1, 2, 3, 4, 5, 6

C 2, 4, 5, 6

D 1, 3, 5, 6

E 1, 2, 3, 4, 5

19

Bước 2 và 3: IT-tree đƣợc xây dựng với ngƣỡng minsup = 0,5.

{}

D1,3,5,6 E1,2,3,4,5

B1,2,3,4,5,6 C2,4,5,6

A1,3,4,5

BC2,4,5,6 BD1,3,5,6

BE1,2,3,4,5

AD1,3,5 AE1,3,4,5

DE1,3,5

ABD1,3,5 ABE1,3,4,5

ADE1,3,5

BCE2,4,5 BDE1,3,5

ABDE1,3,5

AB1,3,4,5

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à

20

một trong những mục tiêu nghiên cứu của luận án.

1.3. Một số phƣơng pháp khai thác FWI và FWUI trên CSDL số lƣợng

1.3.1. Giới thiệu

CSDL số lƣợng theo Định nghĩa 1.3 là CSDL đƣợc xuất hiện nhiều trong

thực tế, ví dụ CSDL giao dịch bán hàng trong các siêu thị, CSDL các đơn

thuốc, v.v… Trong đó các giao dịch có số lƣợng các mặt hàng cùng lợi nhuận

(lợi ích) của các mặt hàng đó. Do đó, bài toán khai thác FWI và FWUI từ

CSDL số lƣợng đƣợc nhiều ngƣời quan tâm nghiên cứu.

Mộ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

21

số (weight support - ws) khác nhau.

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

ti cũng tƣơng đƣơng với xuất hiện trong giao dịch tj, đ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

22

dụng chiến lƣợc Diffset để khai thác FWI trên cây WIT-tree, nên phƣơng

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:

∑ tw(tk) =

( )

(1.1)

Với:

– tw( ) là trọng số giao dịch của

– là trọng số của mục trong

– là số các mục có mặt trong

Từ CSDL trọng số DB trong ví dụ 1.3, ta có giá trị tw của các giao dịch

đƣợc tính nhƣ trong Bảng 1.11:

Bảng 1.11. Giá trị tw của CSDL DB trong ví dụ 1.4 Giao dịch Tw

= 0,45 t1 tw(t1) =

= 0,20 t2 tw(t2) =

= 0,45 t3 tw(t3) =

= 0,30 t4 tw(t4) =

= 0,42 t5 tw(t5) =

0,45+0,20+0,45+0,30+0,42+0,43

= 0,43 t6 tw(t6) =

23

= 2,25 Sum_tw

Định nghĩa 1.11. Độ hỗ trợ trọng số (ws) của tập mục X đƣợc tính

nhƣ công thức 1.2:

∑ (1.2)

Với, t(X) là tập các giao dịch chứa tập mục X và sum_tw = ∑

ws(BD) =

0,78.

Với tập mục BD trong DB ở ví dụ 1.3 đƣợc xác định nhƣ sau:

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à độ

24

hỗ trợ trọng số hữu ích wus (weight utility support).

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

nghĩa nhƣ công thức 1.3:

(1.3) twu( ) =

Với:

- twu( ) là trọng số hữu ích của ;

- là số lƣợng mục thứ i trong , i [1,…, n];

- là trọng số của mục i;

- s( là tổng các mục trong giao dịch

Bảng 1.12 là giá trị twu của các giao dịch của CSDL DB đƣợc cho trong

ví dụ 1.2

Tid

Twu

1,13

t1

6 9 4 2 7

0,4

t2

3 3 2 5

1,1

t3

6 2 9 3 2 2 8

0,6

t4

6 3 3 2 6

0,58

t5

6 2 3 2 9 2 3 9

0,43

t6

3 9 3

Sum_twu 1,13 + 0,4 + 1,1 + 0,6 + 0,58 + 0,43 =

4,24

25

Bảng 1.12. twu các giao dịch của DB trong ví dụ 1.2

Định nghĩa 1.13. Độ hỗ trợ trọng số hữu ích của các tập mục wus đƣợc

định nghĩa nhƣ công thức 1.4:

∑ wus(X) =

(1.4)

Với, T(X) là tập các giao dịch chứa tập mục X và sum_twu =

∑ .

Một tập mục X đƣợc gọi là phổ biến với ngƣỡng minwus (do ngƣời sử

dụng đƣa vào) nếu wus(X) minwus. Bài toán xác định tập mục phổ biến trên

CSDL số lƣợng là bài toán xác định tất cả các tập X sao cho X I và wus(X)

minwus.

Cá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

26

ngƣỡng minsup đƣa vào thì số lƣợng các FI khai thác đƣợc quá nhiều hoặc

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.

cặp với m là số lƣợng các tập

- Tốn nhiều thời gian thực hiện kết nối các l-itemset để tạo ra (l+1)-

itemset từ TRFI-Table, do phải xét

mục trong TRFI-Table.

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

27

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

của các tập mục. Tuy nhiên cũng nhƣ NTK thuật toán iNTK vẫn phải quét

CSDL hai lần để tạo cây PPC-tree và tốn thời gian duyệt cây để tạo N-list của

1-itemset.

Hai thuật toán NTK và iNTK cải tiến đƣợc bộ nhớ nhƣng vẫn gặp phải

hạn chế thứ hai của VTK đã nêu ở trên.

1.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,

30, 35, 36].

Một số định nghĩa liên quan đến khai thác FI trên CSDL có sự phân cấp

các mục đƣợc trình bày trong [30]:

Một giao dịch trên CSDL có sự phân cấp các mục t = tid, X, X = (Y

Z) là tập các mục có trong giao dịch (Y) và các mục cha của Y trên cây phân

cấp (Z).

Đị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.

28

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.

Khai thác với một ngưỡng phổ biến

Khai thác FI trên CSDL phân cấp sử dụng cùng một ngƣỡng phổ biến là

việc coi các mục cha trên cấp phân cấp và các mục con (là các mục trong

CSDL) có cùng một vai trò nhƣ nhau, đƣợc khai thác với cùng một ngƣỡng

phổ biến. Một số nghiên cứu theo tiếp cận này nhƣ [4, 5, 15, 20]. Tuy nhiên,

trong nhiều CSDL thực tế các mục tuy ít xuất hiện nhƣng lại quan trọng và

cần đƣợc quan tâm hơn các mục khác. Đồng thời các mục cha trên cây phân

cấp sẽ có tần suất xuất hiện nhiều hơn sau khi đƣợc thêm vào CSDL để khai

thác. Do đó, khi khai thác nhiều khả năng sẽ ít xuất hiện các mục con trong

các tập mục phổ biến tìm thấy. Do vậy cần đặt ra nhiều ngƣỡng phổ biến để

có thể lọc đƣợc các tập mục phổ biến đáp ứng đƣợc nhu cầu của ngƣời sử

dụng. Từ đó hình thành một tiếp cập khác rất tự nhiên là ngƣời ta sử dụng

nhiều ngƣỡng phổ biến để khai thác.

Khai thác với nhiều ngưỡng phổ biến

Khai thác tập mục phổ biến trên CSDL phân cấp mà mỗi mục đƣợc xác

định một ngƣỡng hỗ trợ khác nhau, điều này giúp cho việc khai thác các luật

kết hợp thú vị từ các mục ít xuất hiện trong CSDL nhƣng lại có tầm quan

trọng cao hơn các mục khác. Một số nghiên cứu theo hƣớng này [30, 35] đã

cho rằng việc khai thác tập mục phổ biến với nhiều ngƣỡng hỗ trợ là cần thiết

và cần đƣợc đầu tƣ nghiên cứu hơn nữa trên nhiều loại CSDL khác nhau.

Định nghĩa 1.15. ms(x) là độ hỗ trợ nhỏ nhất của mục x (I J), một

tập mục X = {x1, x2, …, xk} với xi (I J) và 1 i đƣợc gọi là phổ biến

nếu:

support(X) ms(xi)

Liu và các đồng sự [30] đề xuất bài toán khai thác tập mục phổ biến trên

CSDL có sự phân cấp các mục với nhiều ngƣỡng hỗ trợ theo tiếp cận Apriori.

29

Tiếp đến, Tseng và đồng sự [35] đƣa ra các công thức xác định các ngƣỡng

hỗ trợ tối thiểu đối với các mục, từ đó đƣa ra công thức tính ngƣỡng hỗ trợ

cho các tập mục. Sau đó sử dụng phƣơng pháp sinh ứng viên theo hƣớng tiếp

cận Apriori để khai thác FI. Phƣơng pháp này có đặc điểm ngƣời sử dụng tự

đƣa ra các ngƣỡng tối thiểu cho các mục theo quan điểm cá nhân để có thể

khai thác đƣợc các luật thú vị, tuy nhiên chính điều này cũng làm khó khăn

cho ngƣời sử dụng khi số lƣợng các mục cần quan tâm lớn. Đồng thời cách

tiếp cận Apriori tốn nhiều thời gian khai thác do quét CSDL nhiều lần.

Kế thừa các công thức từ [30], Vo và các đồng sự [36] sử dụng hƣớng

tiếp cận theo thuật toán Eclat [49] với việc đề xuất cấu trúc dữ liệu GIT-tree

là một mở rộng của IT-tree. Tuy nhiên, hạn chế của nghiên cứu này là việc

thêm các mục cha trên cây phân cấp vào các giao dịch của CSDL, thao tác

này làm tăng bộ nhớ lƣu trữ CSDL dẫn đến tăng thời gian khai thác do phải

phai thác trên CSDL lớn hơn.

Với CSDL phân cấp DB trong Ví dụ 1.2, sau khi thêm các mục cha vào

các giao dịch có chứa nút con, CSDL mới sẽ gồm các giao dịch nhƣ Bảng

1.13:

Bảng 1.13. DB trong Ví dụ 1.2 sau khi thêm mục cha

Giao dịch Mục

D, C, G, K, H t1

E, F, K t2

F, B, G, K t3

t4 D, F, C, G, K, H

E t5

A, H t6

Nhƣ vậy, DB bao gồm sáu giao dịch tổng cộng mƣời một mục nhƣ trong

Bảng 1.4, sau khi thêm các mục cha vào các giao dịch có chứa mục con ta có

30

CSDL DB mới gồm sáu giao dịch và hai mƣơi mốt mục nhƣ trong Bảng 1.13.

1.5. Tiếp cận bit-vector trong khai thác FI

Các thuật toán khai thác FI dựa trên IT-tree trên CSDL nhị phân hay các

mở rộng của IT-tree để khai thác trên các loại CSDL khác nhƣ: cấu trúc GIT-

tree khai thác FI trên CSDL nhị phân có sự phân cấp các mục, cấu trúc WIT-

tree dùng trong khai thác FWI trên CSDL trọng số, hay MWIT-tree dùng

trong khai thác FWUI trên CSDL số lƣợng, v.v… cho thấy hiệu quả cao về

mặt thời gian do chỉ cần duyệt dữ liệu một lần. Tuy nhiên nhƣ đã phân tích ở

trên, bộ nhớ sử dụng lƣu tidset của các tập mục là rất lớn.

Đã có một số nghiên cứu nhằm tối ƣu hóa bộ nhớ để nâng cao hiệu quả

của các phƣơng pháp dựa trên IT-tree. Một trong số đó là thuật toán dEclat

[50] do Zaki và đồng sự đề xuất với cấu trúc diffset thay vì tidset. Tuy nhiên

diffset chỉ có hiệu quả trên CSDL dày (là CSDL có nhiều mục trên mỗi giao

dịch). Trong khi thực tế CSDL thƣa lại rất phổ biến.

Một hƣớng hiệu quả là sử dụng phƣơng pháp bit-vector do tiết kiệm

đƣợc bộ nhớ lƣu trữ tidset (mỗi giao dịch chỉ cần một bit), đồng thời tận dụng

đƣợc tốc độ cao của các phép toán trên bit (bitwise).

Đầu tiên, Luoie & Liu [31] đề xuất sử dụng bit-vector trong biểu diễn

tidset của các tập mục và sau đó Dong & Han [13] (Song và các đồng sự [33])

cụ thể hóa bằng đề xuất cấu trúc BitTable, với việc sử dụng bit-vector bằng

mảng các byte để ghi nhận các giao dịch của tập mục. BitTable chỉ cần sử

dụng ( +1) byte cho mỗi tập mục để lƣu tidset (T là số lƣợng giao dịch trong

CSDL), đồng thời sử dụng phép toán AND trên bit để tính giao hai tidset

nhằm xác định tidset của tập mục mới từ hai tập mục đã có.

Tuy nhiên, với CSDL có số lƣợng các giao dịch lớn, thì việc biểu diễn

trên BitTable có thể chƣa hiệu quả bởi BitTable chứa nhiều byte có giá trị = 0,

(do BitTable của mỗi tập mục sử dụng lƣợng bộ nhớ bằng nhau là ( +1)

31

byte). Điều này làm cho phƣơng pháp sử dụng BitTable trong biểu diễn tidset

lãng phí bộ nhớ, đồng thời dẫn đến tốn thời gian trong xác định giao của hai

BitTable.

Tiếp đến, Vo và các đồng sự đề xuất cấu trúc DBV (Dynamic bit-vector)

[38] là một cải tiến của BitTable với việc loại bỏ các byte có giá trị bằng 0 ở

đầu và cuối trong biểu diễn tidset trên mảng byte.

Tuy nhiên DBV còn chứa nhiều byte có giá trị bằng 0 “ở giữa”, điều này

làm cho cấu trúc DBV chƣa thật sự tối ƣu về bộ nhớ, do đó tốn thời gian khi

tính toán trên các byte có giá trị bằng 0. Đặc biệt trên các CSDL thƣa, số

lƣợng các byte có giá trị bằng 0 rất lớn.

Ngoài ra, cấu trúc BitTable và DBV sử dụng mảng byte. Do đó, số lƣợng

các phần tử của mỗi DBV là khá lớn, nhất là trên các CSDL có số lƣợng giao

dịch nhiều. Nghiên cứu sử dụng các phần tử là các số nguyên lớn nhƣ bốn

byte hay tám byte sẽ tăng tốc tính toán trên DBV lên rất nhiều do hiện nay các

thế hệ máy tính hỗ trợ 64 bit là phổ biến. Tuy nhiên, khó khăn khi sử dụng

các số nguyên lớn là việc xác định tidset csủa các tập mục để tính các giá trị

twu, wus trong khai thác FWUI trên CSDL số lƣợng và tw, ws trong khai thác

FWI trên CSDL trọng số.

1.6. Kết luận chƣơng

Có thể nói, khai thác FI là một khâu rất quan trọng trong khai thác dữ

liệu, phục vụ cho việc khai thác luật kết hợp và các yêu cầu khác nhằm chỉ ra

mối quan hệ, quy luật giữa các mục trong CSDL. Vì vậy, bài toán này đã thu

hút đƣợc nhiều nhóm nghiên cứu trên thế giới quan tâm nghiên cứu. Từ thuật

toán Apriori với nhiều lần quét CSDL, đến thuật toán FP-Growth với chỉ hai

lần quét CSDL và duyệt cây FP-tree. Tiếp đến Zaki với tiếp cận theo dữ liệu

dọc đã đề xuất khai thác FI với chỉ một lần quét CSDL.

Bên cạnh CSDL nhị phân, khai thác tập mục phổ biến trên CSDL số

32

lƣợng cũng đã nhận đƣợc nhiều quan tâm từ các nhóm nghiên cứu về khai

thác dữ liệu trên thế giới. Trong đó, khai thác FWI với hai độ đo tw và ws trên

CSDL trọng số là một trƣờng hợp riêng của CSDL số lƣợng đƣợc quan tâm từ

rất sớm với việc áp dụng các thuật toán Apriori, FP-Growth hay Eclat. Cùng

với đó là khai thác FWUI với độ đo twu của các giao dịch và wus của các tập

mục đƣợc biết đến lần đầu tiên với nghiên cứu của Khan và đồng sự. Phƣơng

pháp khai thác FWI và FWUI từ CSDL số lƣợng tốt nhất đến hiện nay là

phƣơng pháp tiếp cận quét CSDL một lần sử dụng cấu trúc MWIT-tree [40].

Tuy nhiên, nhƣ đã phân tích ở trên, các cấu trúc dữ liệu hiện tại sử dụng trong

các thuật toán còn nhiều hạn chế. Do đó, cần phát triển các cấu trúc mới để

cải thiện về bộ nhớ và thời gian khai thác của các thuật toán hiện tại.

CSDL có sự phân cấp các mục là CSDL có mặt nhiều trong các ứng

dụng thực tế. Do đó, thời gian gần đây khai thác FI trên loại CSDL này đã

nhận đƣợc nhiều quan tâm nghiên cứu. Từ việc khai thác cùng một ngƣỡng hỗ

trợ, tiếp đến là khai thác trên nhiều ngƣỡng hỗ trợ, mỗi mục có một ngƣỡng

hỗ trợ riêng và qua đó xây dựng các công thức xác định độ hỗ trợ tối thiểu

cho các tập mục. Tuy nhiên, các nghiên cứu hiện tại còn có nhiều hạn chế,

thời gian và bộ nhớ sử dụng còn lớn, nhiều tồn tại cần đƣợc nghiên cứu khắc

phục để có thể khai thác hiệu quả hơn trên loại CSDL này. Một trong số đó là

việc thêm các mục nút cha trên các cây phân cấp vào các giao dịch có chứa

các mục con của nó trong CSDL là một hạn chế lớn, có thể sẽ gây ra sự bùng

nổ về dung lƣợng CSDL, nhất là trên các CSDL có nhiều cây phân cấp hay

các cây phân cấp có độ cao lớn. Đây là các điểm hạn chế cần đƣợc cải tiến để

giảm thời gian khai thác và dung lƣợng bộ nhớ sử dụng.

CSDL số lƣợng có sự phân cấp các mục là loại CSDL có sự khác biệt

nhiều so với các CSDL hiện có, đây 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 đó việc khai thác cần có các phƣơng pháp

riêng biệt, đặc thù. Tuy nhiên, hiện nay nghiên cứu khai thác tập mục trên

33

CSDL số lƣợng có sự phân cấp các mục chƣa đƣợc quan tâm. Do vậy, bài

toán khai thác tập mục trên CSDL số lƣợng có sự phân cấp các mục cần đƣợc

đặt ra nghiên cứu. Đề xuất thuật toán khai thác hiệu quả trên CSDL số lƣợng

có sự phân cấp các mục có thể đƣợc áp dụng vào khai thác hiệu quả trên

CSDL số lƣợng và CSDL có sự phân cấp, khắc phục những hạn chế hiện tại

của các thuật toán khai thác tập mục phổ biến trên hai loại CSDL này nhƣ đã

34

phân tích ở trên là các mục tiêu của luận án.

CHƢƠNG 2. KHAI THÁC TẬP MỤC PHỔ BIẾN

TRÊN CƠ SỞ DỮ LIỆU SỐ LƢỢNG

Tiếp cận bit-vector trong biểu diễn tidset của các tập mục là một hƣớng

phát triển hiệu quả, do tận dụng đƣợc tốc độ tính toán của các phép toán trên

bit, đồng thời tiết kiệm đƣợc bộ nhớ lƣu trữ tidset do mỗi giao dịch chỉ cần

đánh dấu bởi một bit. Do đó, trong nhiều nghiên cứu liên quan đến biểu diễn

chuỗi các phần tử có tính liên tục ngƣời ta thƣờng sử dụng phƣơng pháp bit-

vector. Đối với khai thác tập mục phổ biến ngƣời ta đã sửa dụng phƣơng

pháp bit-vector từ khá sớm, tuy nhiên việc sử dụng phƣơng pháp này khá

nguyên thủy [13, 31] hoặc chƣa đƣợc cải tiến triệt để nhƣ DBV [38] để có

thể loại bỏ các bộ nhớ thừa nhằm tối ƣu bộ nhớ cũng nhƣ tăng tốc độ tính

toán tốt hơn .

Trong chƣơng này, luận án trình bày một số cải tiến theo hƣớng tiếp cận

này với việc đề xuất hai cấu trúc dữ liệu IWS và MBiS sử dụng trong thuật

toán khai thác tập phổ biến. Cấu trúc IWS là một cải tiến của cấu trúc DBV

[38] bằng việc loại bỏ tất các các đoạn hai byte (word) liên tiếp có giá trị bằng

0 trên bit-vector giúp giảm bộ nhớ lƣu trữ tidset của các tập mục. Đồng thời

luận án đề xuất một mảng MAP khai báo trƣớc vị trí các bit 1 trong các số

nguyên hai byte để giúp tính nhanh độ phổ biến ws của các tập mục. Cấu trúc

MBiS [I] là một đề xuất khác theo hƣớng tiếp cận bit-vector, MBiS chỉ lƣu

các đoạn bit 1 liên tiếp trên bit-vector. Cấu trúc này cho phép việc xác định

nhanh hợp của các tập mục thông qua xác định giao của các MBiS của chúng,

do chỉ cần cập nhật lại các vị trí đầu đoạn và cuối đoạn mới bằng các phép

toán lấy MAX và MIN của hai đầu đoạn và cuối đoạn trƣớc đó.

Các phân tích về mặt lý thuyết và kết quả thực nghiệm cho thấy sự hiệu

quả của các cấu trúc mới này trong việc tiết kiệm bộ nhớ và giảm thời gian

35

khai thác trên các CSDL thƣa và CSDL trung bình.

Đồng thời, chƣơng 2 cũng trình bày về một đề xuất hiệu quả cho bài toán

khai thác hiệu quả FWUIk trên CSDL số lƣợng với hai cấu trúc DTab và

DHeap. Các kết quả thực nghiệm cho thấy các cấu trúc mới đề xuất này có

hiệu quả hơn các cấu trúc đã có.

2.1. Thuật toán khai thác tập FWI

Phần này luận án trình bày về cấu trúc Interval word segment - IWS là

một cải tiến của BDV, đã đƣợc công bố tại hội thảo quốc tế SMC 2015 [II],

sau đó đƣợc phát triển mở rộng, thử nghiệm trên nhiều bộ dữ liệu hơn và công

bố tại [V].

2.1.1. Giới thiệu

Định nghĩa 2.1. Interval word segment (IWS) của một tập mục X thuộc

CSDL DB là một cấu trúc gồm nhiều đoạn, trong đó mỗi đoạn là các word

(hai byte) liên tiếp khác 0 trên bit-vector biểu diễn tidset của tập mục X.

Mỗi đoạn gồm hai thành phần:

Start: Vị trí word đầu tiên của đoạn trên bit-vector.

Word list: Danh sách giá trị các word liên tiếp khác 0.

Ví dụ 2.1: Cho tập mục X của CSDL DB biểu diễn bởi một bit-vector

đƣợc cho dƣới dạng các byte nhƣ bảng 2.1

Chỉ số byte 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32

Giá trị

0 0 0 0 6 9 0 0 0 1 5 1 4 6 0 0 0 0 0 0 0 0 0 1 5 4 6 0 0 0 0 0

Bảng 2.1. Bit-vector

Bit-vector trong Bảng 2.1 (còn đƣợc gọi là BitTable) gồm 21 byte có giá

trị bằng 0, bit-vector trên đƣợc biểu diễn qua cấu trúc DBV [43] trong Bảng

2.2 nhƣ sau:

Chỉ số byte 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27

Giá trị

6 9 0 0 0 1 5 1 4 6 0 0 0 0 0 0 0 0 0 1 5 4 6

DBV

5(6, 9, 0, 0, 0, 1, 5, 1, 4, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 5, 4, 6)

36

Bảng 2.2. DBV của bit-vector trong ví dụ 2.1

DBV loại bỏ các byte có giá trị bằng 0 ở đầu và cuối của bit-vector, do

đó trong nhiều trƣờng hợp DBV tiết kiệm bộ nhớ khá tốt, nhờ vậy tăng tốc độ

tính toán trong khai thác FI. Tuy nhiên trong cấu trúc DBV vẫn còn tồn tại

các byte bằng 0, nhất là trên các CSDL thƣa thì số byte bằng 0 càng nhiều. Do

đó cấu trúc DBV vẫn chƣa tối ƣu đƣợc bộ nhớ.

Cấu trúc IWS đƣợc đề xuất trong [II, V] là một mở rộng của MByS, với

mỗi phần tử là một word (hai byte). IWS loại bỏ hoàn toàn các word có giá trị

bằng 0 khỏi DBV, bằng cách này đã giải quyết đƣợc hạn chế về lãng phí bộ

nhớ của DBV.

Bảng 2.3. IWS từ bit-vector trong ví dụ 2.1

Chỉ số word 3 5 6 7 12 13 14

Giá trị các byte 6 9 0 1 5 1 4 6 0 1 5 4 6 0

Giá trị các word 1545 1 1281 1030 1 1284 1536

{3(1545), 5(1, 1281, 1030), 12(1, 1284, 1536)}

IWS

IWS đƣợc biểu diễn nhƣ trong Bảng 2.3 có ba đoạn, đoạn thứ nhất từ

word có chỉ số là 3, giá trị là 1545. Đoạn thứ hai bắt đầu từ word chỉ số là 5

với ba phần tử là 1, 1281 và 1030, v.v… Nhƣ vậy, cấu trúc IWS đã loại bỏ

hoàn toàn các word bằng 0, chỉ lƣu giữ các đoạn word liên tiếp có giá trị

khác 0.

Mệnh đề 2.1. Đoạn Sx =  ( ) đƣợc gọi là đoạn con

của đoạn Sy =  ( ) nếu thỏa mãn ba điều kiện sau:

1.

2. 3. Chứng minh: Từ = , = , …, = , Sx

thay bằng Sx =  ( ) Sy. Do đó, Sx đƣợc gọi là

37

đoạn con của Sy.

Ví dụ 2.2: Sx = 6(1281, 1030) với sx = 6 là một đoạn con của Sy = 5(1,

1281, 1030) với sy =5. Bởi vì, với t = 1 ta có:

1.

2. 7 7 ⟹

3. = = 1281, = = 1030

Mệnh đề 2.2. chỉ nếu   IWS(X) nếu và

  là đoạn con của một đoạn thuộc IWS(X).

Ví dụ 2.3: Cho IWS(X) = {3(1545), 5(1, 1281, 1030), 12(1, 1284,

1536)}. Đoạn 6(1281, 1030) IWS(X) bởi vì 6(1281, 1030) là đoạn con

của đoạn 5(1, 1281, 1030) thuộc IWS(X) theo ví dụ 2.2.

Định nghĩa 2.2. Giao giữa hai đoạn Sx =   và Sy =

  là đoạn Sz, kí hiệu là Sz = Sx Sy,

Với:

sz = max(sx, sy)

Sz =  ( ), với: = & ; = & ; …; =

.

m = min(k+sx, l+sy)

Trong đó “&” là phép AND trên bit.

Ví dụ 2.4: Cho hai đoạn =5(1, 1281, 1030), k = 2 và = 6(3220,

8726, 3104), l = 2. Ta có:

= max(5, 6) = 6;

m = min((5+2), (6+2)) = 7;

⟹ = 6  với:

= & = 1281 & 3220 = 1024

= & = 1030 & 8726= 6

38

Do đó, giao của và là =6(1024, 6).

Định nghĩa 2.3. Giao của IWS(X) và IWS(Y) đƣợc định nghĩa là

IWS(X Y) = IWS(X) IWS(Y). IWS(X Y) chứa các đoạn, mỗi đoạn là giao

của các đoạn trên IWS(X) và IWS(Y) theo Định nghĩa 2.2.

Ví dụ 2.5:

IWS(X) = {3(1545), 5(1, 1281, 1030), 12(1, 1284, 1536)}

IWS(Y) = {6(3220, 8726, 3104), 10(1242, 8721, 6527,6)}

⟹ IWS(X Y) = {6(1024, 6), 12(1, 4)} 1281

Mệnh đề 2.1. Cho đoạn Si = si( , … ) IWS(X), l là chỉ số

bit 1 của (từ trái sang phải) với si sj ei. l đƣợc ánh xạ lên bit-vector

theo công thức 2.1:

(2.1) k = (sj - 1) 16 + l

Với, k chỉ số bit 1 trên bit-vector của bit có chỉ số l của asj.

Chứng minh: sj là chỉ số của trên word-vector. Nhƣ vậy có (sj - 1)

word trƣớc . Điều này có nghĩa là có [(sj - 1) 16] bit trƣớc trên bit-

vector (mỗi word có 16 bit). Do đó, bit có vị trí l trong word thứ sj đƣợc ánh

xạ lên bit-vector với vị trí k theo công thức:

k = (sj - 1) 16 + l.

Ví dụ 2.6: Cho IWS(X) = {3(1545)}, chỉ số các bit 1 của X đƣợc xác

định nhƣ trong Bảng 2.4:

Chỉ số bit 1 trên word

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

Giá trị các bit

0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 1

Giá trị word

1545

Chỉ số bit 1 trong word

{6,7,13,16}

Bảng 2.4. Chỉ số các bit 1 của IWS(X)

Ta thấy IWS(X) chỉ có một đoạn với một phần tử, do vậy start của

IWS(X) = 3, nên có (3 - 1) ×16 = 32 bit trƣớc IWS(X). Dựa trên công thức 2.1

39

và Bảng 2.4 ta có chỉ số các bit 1 của IWS(X) trên bit-vector lần lƣợt là:

32 + 6 = 38;

32 + 7 = 39;

32 + 13 = 45;

32 + 16 = 48;

Do đó, tidset(X) = {38, 39, 45, 48}

Định nghĩa 2.4. Cho tập mục X của CSDL DB, các chỉ số bit 1 trong

IWS(X) là các giao dịch trong CSDL DB, công thức 1.2 đƣợc định nghĩa lại

nhƣ công thức 2.2:

(2.2) ws(X)

Với, Sum_tw = ∑ với m là số lƣợng các giao dịch trong

CSDL DB.

2.1.2. Thuật toán tính giao của hai IWS

Khai thác FWI với định dạng dữ liệu dọc theo tiếp cận Eclat [5] đòi hỏi

phải tính giao các tidset để xác định tập mục mới đƣợc tạo thành từ hai tập

mục cũ. Điều này đồng nghĩa với việc tính giao của hai IWS của hai tập mục

tƣơng ứng theo Định nghĩa 2.3.

Thuật toán 2.1: INTERSECTION_IWS

Input:

- IWS(X) gồmn1 đoạn, đoạn thứ I có start là IWS(X) [i].start

- IWS(Y) gồmm1đoạn, đoạn thứjcóstart là IWS(Y) [j].start

Output: Z = IWS(X) IWS(Y)

Method name: INTERSECTION_IWS()

40

Thuật toán xác định giao của hai IWS đƣợc trình bày nhƣ Hình 2.1

INTERSECTION_IWS (IWS(X), IWS(Y))

1

i = 1; j = 1; Z = ;

2

while (i n1 and j m1)

3

Đoạn i1 của IWS(X và đoạn j1 của IWS(Y là các đoạn giao đầu tiên

của IWS(X) và IWS(Y) tính từ đoạn i (IWS(X và đoạn j (IWS(Y))

4

S = ;

5

Start = max(IWS(X) [i1].start, IWS(Y) [j1].start);

6

End = min(IWS(X) [i1].end, IWS(Y) [j1].end);

7

for all k [Start, End] do

8

S = S IWS(X) [k] IWS(Y) [k]};

9

Loại bỏ các Word = 0 trong S và thêm S vào Z

10

if (End = IWS(X) [i1].end) then

11

i = i1 1;

12

j = j1;

13

if (End = IWS(Y) [i1].end) then

14

j = j1 1;

15

i = i1;

16

Return Z

Hình 2.1. Thuật toán xác định giao hai IWS

Đầu vào của thuật toán là IWS(X) và IWS(Y). Trong đó, IWS(X) có n1

đoạn. IWS(Y) có m1 đoạn. Đầu ra là Z là một IWS. Dòng 4, xác định đoạn giao

tiếp theo của IWS(X) và IWS(Y). Dòng 5 và 6, tính đầu và cuối đoạn giao kết

quả. Dòng 7 đến 9, tính S là đoạn giao kết quả. Dòng 10, loại các word có giá

trị bằng 0 khỏi S (có thể tạo ra nhiều đoạn mới). Dòng 10 đến dòng 15, xác

định đoạn giao tiếp theo trên IWS(X) và IWS(Y).

Dễ nhận thấy độ phức tạp thuật toán là O(n1 + m1), với n1 và m1 lần lƣợt

là số lƣợng các đoạn của IWS(X) và IWS(Y). Do đó, thời gian thực hiện thuật

41

toán INTERSECTION_IWS phụ thuộc vào số đoạn của mỗi IWS.

2.1.3. Thuật toán khai thác FWI

a. Cấu trúc IWS-tree

Từ cấu trúc IWS luận án đề xuất cấu trúc IWS-tree để khai thác FWI

theo dữ liệu dọc. Mỗi nút của IWS-tree gồm ba thành phần:

- X là một tập mục,

- IWS(X) là IWS của X,

- ws(X) là giá trị ws của X.

Các nút của IWS-tree ở mức thứ nhất là các 1-itemset, từ mức thứ hai,

các nút ở mức dƣới đƣợc tạo thành từ sự kết hợp của hai nút ở mức trên với

các điều kiện sau:

- Hai nút cùng số lƣợng phần tử và chỉ khác nhau phần tử cuối cùng.

- wus của tập mục tạo thành thỏa mãn ngƣỡng minwus do ngƣời sử

dụng đƣa vào.

b. Thuật toán tính nhanh wus dựa trên IWS

Khai thác FWI trên CSDL trọng số là phải xác định ws của các tập mục

theo công thức 2.2. Do đó cần xác định vị trí các bit 1 của IWS của các tập

mục, điều này đồng nghĩa với việc xác định tidset của các tập mục. Để giải

quyết hiệu quả vấn đề này, luận án đề xuất sử dụng một mảng MAP gồm

65.535 phần tử nhƣ trong Bảng 2.5. Phần tử thứ i của mảng MAP chứa một

danh sách các bit 1 trong biểu diễn nhị phân của i. Dựa trên mảng MAP ta có

thể tính đƣợc vị trí các bit 1 của IWS trên bit-vector.

Chỉ số mảng

2

65.534

65.535

1

Giá trị nhị phân 0000000000000001 0000000000000010 … 1111111111111110 1111111111111111

MAP

15

… 1, 2, …, 14, 15 1, 2, …, 15, 16

16

Bảng 2.5. Mảng MAP

Thuật toán tính ws của tập mục X đƣợc trình bày trong Hình 2.2. Bƣớc thứ

nhất tidset của các tập mục đƣợc xây dựng theo Mệnh đề 2.1 dựa trên công

42

thức 2.1 và mảng MAP. Bƣớc thứ 2 tính ws theo công thức 2.2.

Thuật toán 2.2: CALCULATION_WS

Input: IWS(X)

- Output: ws của tập mục X

- Method name: CALCULATION_WS()

CALCULATION_WS(IWS(X))

tidset(X) = ;

1

2

for all i IWS(X) do

3

for all j MAP [i] do

4

tidset(X) (si - 1) 16 j;

5

y = 0;

6

for all i tidset(X) do

7

y = y + tw( );

8

ws = y/sum_tw;

9

return ws

Hình 2.2. Thuật toán tính ws của tập mục X

Đầu vào của thuật toán là IWS của tập mục X, đầu ra là ws(X). Dòng 1

đến dòng 4, xây dựng tidset của X dựa trên công thức 2.1 và mảng MAP.

Dòng 5 đến dòng 8, tính ws(X) theo công thức 2.2. Cuối cùng, dòng 9 trả về

giá trị ws của X.

Với mảng MAP việc tính toán ws là khá đơn giản và tiết kiệm thời gian

tính toán. Vì chỉ cần O(1) để xác định vị trí một bit 1 trên bit-vector.

Do đó, độ phức tạp thuật toán là O(k) với k là số các giao dịch của tập

mục X.

c. Thuật toán

Luận án đề xuất thuật toán IWS-FWI [II, IV]khai thác FWI trên CSDL

trọng số dựa trên cấu trúc IWS-tree với lƣợng tiếp cận dữ liệu dọc. IWS-tree

43

đƣợc tạo ra nhƣ sau:

Trƣớc hết, mức thứ nhất của cây bao gồm các nút chứa các 1-itemset có

độ đo ws thỏa ngƣỡng minws. Tất cả các nút ở mức thứ nhất cùng thuộc một

lớp tƣơng đƣơng. Mỗi nút khi kết nối với lần lƣợt từng nút phía sau nó trong

cùng một lớp tƣơng đƣơng tạo ra các nút cùng một lớp tƣơng đƣơng ở mức

dƣới. Hai nút chứa hai tập mục X1X2…XkY1 và X1X2…XkY2 thuộc cùng một

lớp tƣơng đƣơng kết nối với nhau (các tập mục thuộc các nút trong cùng một

- Tạo ra nút mới X1X2…XkY1Y2

- ws(X1X2…XkY1Y2) minws

lớp tƣơng đƣơng có cùng độ dài và khác nhau phần tử cuối cùng):

Nhƣ vậy các k-itemset đƣợc tạo thành từ các (k-1)-itemset ở cùng một

lớp tƣơng đƣơng ở mức trên với điều kiện tập mục mới tạo thành thỏa mãn

ngƣỡng minws do ngƣời sử dụng đƣa vào. Do đó, các tập mục trên các nút

của IWS-tree chính là các FWI cần khai thác.

Thuật toán 2.3: CREATE_IWS-tree

Input: tậpP (tập 1-itemset) và minws;

Output: Tập P chứa tất cả FWI của CSDL DB với ngưỡng minws

Method name: CREATE_IWS_Tree()

CREATE_IWS_Tree(P)

1

IWS-tree = 

2

for all li P] do

3

[Pi] = ;

4

for all lj [P], (vớij i) do

5

X = li lj;

6

Y = INTERSECTION_IWS(IWS(li), IWS(lj));

7

ws_X= CALCULATION_WS(Y);//ws của tập mục X

8

if (ws_X minws) then

44

Thuật toán đệ quy tạo IWS-tree đƣợc trình bày nhƣ Hình 2.3.

9

[Pi] = [Pi] {(X, Y, ws_X};

10

IWS-tree = IWS-tree Pi;

11

CREATE_IWS_Tree( [Pi])

Hình 2.3. Thuật toán xây dựng IWS-tree

Đầu vào của thuật toán là lớp tƣơng đƣơng P (chứa các tập mục có cùng

độ dài chỉ khác nhau phần tử cuối và thỏa mãn minws). Dòng 1 đến dòng 4,

với mỗi tập mục li kết nối với tất cả các tập mục lj đứng phía sau li thuộc cùng

lớp tƣơng đƣơng P tạo ra X là tập mục mới. Dòng 6 tính Y = IWS(X) theo

thuật toán INTERSECTION_IWS trong Hình 2.1. Dòng 7, tính ws(Y) là ws

của tập mục X. Nếu ws(X) thỏa ngƣỡng minws thêm {X, Y, ws_X} vào Pi tại

dòng 9. Sau khi xây dựng xong lớp tƣơng đƣơng Pi, Pi đƣợc thêm vào IWS-

tree tại dòng 10. Cuối cùng gọi đệ quy với lớp tƣơng đƣơng mới Pi sau khi kết

nối li với tất cả các lj sau nó ở dòng 11.

Thuật toán IWS_FWI khai thác FWIs trên CSDL trọng số đƣợc trình bày

Thuật toán 2.4: IWS_FWIs

Input: CSDL DB và minws;

Output: IWS-tree chứa các FWI của DB theo ngưỡng minws

Method name: IWS_FWIs()

IWS_FWIs(minws)

P = ;

1

2

for all i I do

3

if (CALCULATION_WS(i) minws) then

4

P = P {i};

5

CREATE_IWS_TREE(P);

trong Hình 2.4

Hình 2.4. Thuật toán khai thác FWI dựa trên IWS-tree

Đầu vào thuật toán là CSDL trọng số D và minws. Dòng 1, P đƣợc gán

bằng . Từ dòng 2 đến dòng 4, P bằng tập 1-itemset thỏa mãn minws. Dòng

45

5, gọi hàm IWS-tree để tạo cây IWS-tree theo thuật toán 3 ở Hình 2.3.

Sau đây là một ví dụ khai thác FWI trên CSDL trọng số theo thuật toán

IWS_FWI.

Ví dụ 2.7: Khai thác FWI trên CSDL DB trong ví dụ 1.3 với minws =

0,4. IWS và ws của các mục đƣợc xác định nhƣ trong Bảng 2.6.

Bảng 2.6. IWS của các mục

mục Tidset BitTable IWS ws

0,72 1, 3, 4, 5 A {1(29)} 000111012

1,00 1, 2, 3, 4, 5, 6 B {1(63)} 001111112

0,60 2, 4, 5, 6 C {1(58)} 001110102

0,78 1, 3, 5, 6 D {1(53)} 001101012

0,81 E 1, 2, 3, 4, 5 {1(31} 000111112

Trong ví dụ này, mỗi IWS chỉ có một đoạn với một phần tử duy nhất.

Các giá trị ws của mục thỏa mãn minws. Do vậy, P = {A, B, C, D, E} và A, B,

C, D, E đƣợc thêm vào IWS-tree. Thuật toán đệ quy IWS_tree() đƣợc thực

hiện nhƣ sau:

[]

𝐴 }

𝐶 }

𝐵 }

𝐷 }

𝐸 }

𝐴𝐴𝐵 }

𝐴𝐸 }

𝐴𝐷 }

𝐴𝐷𝐸 }

𝐴𝐵𝐸 }

𝐴𝐵𝐶 }

𝐴𝐵𝐷 }

𝐴𝐵𝐷𝐸 }

 Với nút A:

46

Hình 2.5. IWS-tree với nút A (minws = 0,4)

Kết nối hai nút A và B. Ta có, IWS(A) IWS(B) = {1(29)}

{1(63)}, do đó IWS(AB) = {1(29)}. Dựa trên thuật toán 2.2, ta có ws(AB)

= ws(A) = 0,72 minws, nên AB đƣợc thêm vào IWS-tree.

Tiếp theo, kết nối A và C. IWS(A) IWS(C) = {1(29)} {1(58)}, nên

IWS(AC) = {1(24)}. Do ws(AC) = 0,32 minws, nên AC không đƣợc thêm

vào IWS-tree.

Tƣơng tự nhƣ trên, các tập mục {AD, AE, ABC, ABD, ABE, ABDE}

đƣợc thêm vào IWS-tree nhƣ trong Hình 2.5.

[]

𝐵 }

𝐴 }

𝐵𝐶 }

𝐵𝐸 }

𝐴𝐴𝐵 }

𝐴𝐸 }

𝐴𝐷 }

𝐵𝐷 }

𝐵𝐷𝐸 }

𝐴𝐵𝐷 }

𝐴𝐵𝐸 }

𝐴𝐷𝐸 }

𝐴𝐵𝐶 }

𝐴𝐵𝐷𝐸 }

 Với nút B:

Hình 2.6. IWS-tree với nút A và B (minws = 0,4)

Kết nối hai nút B và C. Ta có, IWS(B) IWS(C) = {1(63)}

{1(58)}, nên IWS(BC) = {1(29)}. Do ws(BC) = 0,72 minws, nên BC

đƣợc chèn vào IWS-tree.

Tiếp theo, kết nối B và D. Ta có, IWS(B) IWS(D) = {1(63)}

{1(53)}, nên IWS(BD) = {1(53)}. Do, ws(BD) = 0,78 minws, nên BD

đƣợc thêm vào IWS-tree.

Tƣơng tự, các tập mục {BE, BDE} đƣợc thêm vào IWS-tree nhƣ trong

Hình 2.6.

Sau khi xét tƣơng tự với các nút C, D và E còn lại, IWS-tree đầy đủ

47

đƣợc thể hiện nhƣ trong Hình 2.7.

Nhƣ vậy, với minws = 0,4 ta có tập các FWI theo: {A, B, C, D, E, AB,

𝐵 }

𝐴 }

𝐶 }

𝐷 }

𝐸 }

59

𝐴𝐴𝐵 }

𝐴𝐸 }

𝐵𝐶 }

𝐴𝐷 }

𝐵𝐷 }

𝐷𝐾 }

𝐵𝐸 }

𝐷𝐸 2 }

𝐶𝐸 }

𝐵𝐷𝐸 }

𝐴𝐵𝐶 }

𝐴𝐵𝐷 }

𝐴𝐷𝐸 }

𝐴𝐵𝐸 }

𝐴𝐵𝐷𝐸 }

AD, AE, BC, BD, BE, DE, ABD, ABE, ADE, BDE, ABDE}.

Hình 2.7. IWS-tree với minws = 0,4

2.1.4. Kết quả thực nghiệm

2.1.4.1. Môi trường thực nghiệm

Hệ thống thử nghiệm đƣợc cài đặt bằng C# 2014 trên Microsoft

Windows 8.1 Pro 64 bit, Net Framework 4.5,với CPU Intel® Haswell Core™

i5 - 1.4 GHz, Ram 4Gb. Hệ thống phần mềm đƣợc sử dụng: Visual Studio

2013 Ultimate.

2.1.4.2. CSDL thực nghiệm

CSDL thực nghiệm gồm BMS-POS, RETAIL, ACCIDENTS,

CONNECT, CHESS đƣợc lấy từ http: //fimi.cs.helsinki.fi/data/ và SALE-

FACT-1997, SALE-FACT-1997+1998, SALE-SYNC đƣợc lấy từ CSDL

FOODMART2000 của Microsoft SQL server, trong đó SALE-FACT-

1997+1998 đƣợc tổng hợp từ bản SALE-FACT-1997 và SALE-FACT-1998,

còn SALE-FACT-SYNC đƣợc kết hợp từ SALE-FACT-1997, SALE-FACT-

48

1998 và SALE-FACT-DEC_1998.

Các CSDL thử nghiệm đƣợc mô tả cụ thể trong Bảng 2.7 nhƣ sau:

Số lƣợng mục Số lƣợng giao dịch

Ghi chú

Stt CSDL

Bảng 2.7. Mô tả CSDL thực nghiệm

16.470 88.162 Thêm trọng số 1. RETAIL

2. BMS-POS 1.657 515.597 Thêm trọng số

3. SALE-FACT-1997 1.753 20.522

4. SALE-FACT-1997+1998 1.753 54.537

5. SALE-FACT-SYNC 1.753 58.308

6. CONNECT 468 340.183 Thêm trọng số

7. ACCIDENTS 130 67.557 Thêm trọng số

Các CSDL 1, 2, 6, 7 nguyên gốc đƣợc thêm vào một bảng mới với các

giá trị ngẫu nhiên trong khoảng từ 1 đến 10 làm giá trị trọng số của các mục.

Phần này trình bày biểu đồ thời gian thực thi và bộ nhớ sử dụng của ba

phƣơng pháp DBV, DIFFSET và IWS trên các CSDL thực nghiệm.

2.1.4.1. Kết quả thực nghiệm

150

139,571

100

DBV DIFFSET IWS

64,141

a. So sánh thời gian thực thi

) s ( e m

050

i t

27,69

000

001

001

000

000

000

000

minws(%)

300

232,209

200

DBV IWS DIFFSET

100

Hình 2.8. So sánh thời gian chạy với CSDL RETAIL.

) s ( e m

i t

125,091 61,511

0

0.6

0.5

0.4

0.3

0.2

0.1

minws(%)

49

Hình 2.9. So sánh thời gian chạy với CSDL BMS-POS.

400

309,301

300

200

DBV IWS DIFFSET

) s ( e m

i t

100

98,594 68,836

0

0.3

0.2

0.03

0.01

0.06

0.1 minws(%)

2501,68

DBV

IWS

Hình 2.10. So sánh thời gian chạy với CSDL SALE-FACT-1997.

) s ( e m

DIFFSET

i t

563,70

250,34

3000 2500 2000 1500 1000 500 0

0.3

0.2

0.1

0.06

0.03

0.01

minws(%)

3000

2748,776

2000

DBV IWS DIFFSET

1000

640,854

Hình 2.11. So sánh thời gian chạy với CSDL SALE-FACT-1997+1998.

) s ( e m

i t

322,957

0

0.3

0.2

0.1

0.06

0.03

0.01

minws(%)

60

48,812 41,935

40

DBV IWS DIFFSET

Hình 2.12. So sánh thời gian chạy với CSDLSALE-FACT-SYNC.

) s ( e m

20

i t

6,094

0

0.96

0.95

0.94

0.93

0.92

0.9

minws

50

Hình 2.13. So sánh thời gian chạy với CSDLCONNECT.

250

212,667

200

150

DBV IWS DIFFSET

) s ( e m

112,667

i t

100

50

30,742

0

0.9

0.8

0.7

0.6

0.5

minws

Hình 2.14. So sánh thời gian chạy với CSDL ACCIDENTS.

160,687

150

100

DBV IWS DIFFSET

50

48,479 24,002

b. So sánh bộ nhớ sử dụng 200

) b M ( y r o m e m

0

0.6

0.5

0.3

0.2

0.1

0.4 minws(%)

600

431.725

400

DBV IWS DIFFSET

200

213.67 103.038

Hình 2.15. So sánh bộ nhớ sử dụng với CSDL RETAIL.

) b M ( y r o m e m

0

0.6

0.5

0.3

0.2

0.1

0.4 minws(%)

800

DBV

600

IWS

622,14 542,7 509,81

400

DIFFSET

200

Hình 2.16. So sánh bộ nhớ sử dụng với CSDL BMS-POS.

) b M ( y r o m e m

0

0.03

0.02

0.1

0.06

0.03

0.01

minws(%)

51

Hình 2.17. So sánh bộ nhớ sử dụng với CSDLSALE-FACT-1997.

2000

DBV

1500

IWS

1477,976 1344,846 1284,567

1000

DIFFSET

500

0

) b M ( y r o m e m

0.3

0.2

0.1

0.06

0.03

0.01

minws(%)

2000

DBV

1500

IWS

1543,975 1482,239 1400,239

1000

DIFFSET

500

0

Hình 2.18. So sánh bộ nhớ sử dụng với CSDLSALE-FACT-1997+1998.

) b M ( y r o m e m

0.6

0.5

0.2

0.1

0.4

0.3 minws(%)

60

DBV

48,81 41,935

40

IWS

DIFFSET

20

6,094

0

Hình 2.19. So sánh bộ nhớ sử dụng với CSDLSALE-FACT-SYNC.

) b M ( y r o m e m

0.96

0.95

0.94

0.93

0.92

0.9

minws

150

112,667

100

78,172

DBV IWS DIFFSET

50

30,742

Hình 2.20. So sánh bộ nhớ sử dụng với CSDLCONNECT.

) b M ( y r o m e m

0

0.9

0.8

0.6

0.5

0.7 minws

52

Hình 2.21. So sánh bộ nhớ sử dụng với CSDL ACCIDENT.

Các kết quả thử nghiệm cho thấy hiệu quả của IWS trên các CSDL thƣa

(RETAIL, MBS-POS) và các CSDL trung bình (các CSDL SALE_FACT),

còn trên các CSDL dày (CONNECT, ACCIDENT) thì DIFFSET có hiệu quả

rõ rệt, do với các CSDL dày thì tidset của các tập mục lớn, nên diffset sẽ nhỏ

(do diffset lấy phần bù). Ví dụ, với CSDL RETAIL thì IWS là 27,69s còn

Diffset là 67,141s đối với độ phổ biến minws = 0,1%. Còn với dữ liệu

ACCIDENT thì MBiS là 112,667s còn Diffset là 30,742s đối với độ phổ biến

minws = 0,5.

Đối với các CSDL thƣa và trung bình, số lƣợng các mục xuất hiện trên

các giao dịch ít, do đó khi biểu diễn bằng phƣơng pháp bit-vector có loại bỏ

các đoạn 2 byte có giá trị bằng 0 sẽ tiết kiệm đƣợc nhiều bộ nhớ. Đồng thời

với việc chỉ cần ít bộ nhớ trong biểu diễn tidset bằng IWS thì việc tính toán

trên IWS cũng sẽ nhanh hơn, do các việc tính giao các IWS phụ thuộc vào số

đoạn word của chính nó. Nên thời gian khai thác khi sử dụng IWS là nhỏ so

với DBV hay DIFFSET trên CSDL thƣa. Tƣơng tự nhƣ thế IWS cũng có hiệu

quả tốt hơn đối với CSDL có mức độ trung bình.

Đối với CSDL dày, số lƣợng các mục xuất hiện trên giao dịch khá lớn

(dày đặc). Do đó khi biểu diễn tidset bằng phƣơng pháp bit-vector chỉ loại

đƣợc ít các đoạn hai byte bằng 0 liên tiếp, đồng thời qua quan sát chạy thực

nghiệm thấy rằng IWS có sự phân mảnh khá lớn, nghĩa là IWS có rất nhiều

đoạn. Nhƣ vậy, việc phải sử dụng khá nhiều bộ nhớ để lƣu trữ tidset và IWS

có nhiều đoạn đã làm cho các tính toán trên IWS tốn nhiều thời gian, điều này

làm cho IWS không có hiệu quả trên CSDL dày. Các kết quả thực nghiệm

trên 2 CSDL dày CONNECT và ACCIDENT cho thấy nhận định trên là

53

chính xác.

2.2. Thuật toán khai thác FWUI

Phần này trình bày về cấu trúc dữ liệu Multi bit segment và áp dụng vào

bài toán khai thác FWUI. Đây là một tiếp cận khác theo hƣớng loại bỏ hoàn

toàn các bit 0 trên bit-vector, lƣu giữ lại các đầu đoạn và cuối đoạn của các

đoạn bit 1 liên tục. Nội dung này đã đƣợc công bố tại công trình [I].

2.2.1. Cấu trúc Multi bit segment

Định nghĩa 2.5. Multi bit segment (MBiS) là một cấu trúc lƣu lại các

đoạn bit 1 liên tiếp từ bit-vector biểu diễn tidset của tập mục. Mỗi đoạn MBiS

gồm thành phần:

Start: Chỉ số bit 1 đầu đoạn

End: Chỉ số bit 1 cuối đoạn

Một ví dụ về MBiS nhƣ sau:

Chỉ số bit 1 2 … 15 16 17 … 35 36 37 … 58 59 60 … 80 81 82 … 96

Giá trị bit 0 0 0 0 1 1 … 1 0 0 … 0

1 1 … 1 0 0 … 0

Bảng 2.8. Bit-vector với 96 phần tử

Bảng 2.8 trình bày bit-vector gồm 96 phần tử (tƣơng ứng với 12 byte).

MBiS của bit-vector trên gồm hai đoạn tƣơng ứng nhƣ sau:

MBiS: [16,35], [59,80]

Cho MBiS(X) và MBiS(Y) là các MBiS củatập mục X và tập mục Y thuộc

CSDL DB. Ta có các định nghĩa sau:

Định nghĩa 2.6. MBiS của tập mục X bao gồm nhiều đoạn, mỗi đoạn là

các bit 1 liên tiếp trên bit-vector biểu diễn tidset của tập mục X:

MBiS(X) = { [ ], [ ], ..., [ ]},

Với ei si,i {1, 2,...,k} và i {2, 3, ...,k}.

Ví dụ 2.8: Trong Bảng 2.8, MBiS có hai đoạn là [16, 35] và [59, 80] nhƣ

54

trong Bảng 2.9.

Bảng 2.9. MBiS từ bit-vector ở Bảng 2.8

[16, 35] [59, 80]

Đoạn 1 Đoạn 2

Định nghĩa 2.7. Phần tử i đƣợc gọi là thuộc MBiS(X)(i MBiS(X)) nếu

và chỉ nếu tồn tại một đoạn [ , ] là một đoạn củaMBiS(X) sao cho i

.

Ví dụ 2.9: Với MBiS(X) = {[16, 35], [59, 80]}, ta nói rằng 30 thuộc

MBiS(X) bởi vì 16 30 35, mà [16, 35] là một đoạn thuộc MBiS(X).

Định nghĩa 2.8. Giao của MBiS(X) và MBiS(Y) đƣợc định nghĩa là

MBiS(X) MBiS(Y). Nếu i MBiS(X) MBiS(X), thìi MBiS(X) và i

MBiS(Y) và ngƣợc lại.

Ví dụ 2.10: Với MBiS(X) = { [5, 20], [35, 50]}và MBiS(Y) = {[15, 25],

[40, 60]}. MBiS(X) MBiS(Y) = { [15, 20], [40, 50]}.

Định nghĩa 2.9. Cho tập mục X của CSDL DB, các chỉ số bit 1 trong

MBiS(X) là các giao dịch trong CSDL DB, do đó công thức 1.4 đƣợc viết lại

nhƣ sau:

(2.3) wus(X)

Với: Sum_twu = ∑ với m là số lƣợng các giao dịch trong

CSDL DB.

Thuật toán 2.5: INTERSECTION_MBiS

Input: MBiS(X) có n1 đoạn. Đoạn i có Starts = Si và End = Ei

MBiS(Y) có m1 đoạn Đoạn j có Starts = Sj và End = Ej

Output: Z = MBiS(X) MBiS(Y)

Method name: INTERSECTION_MBiS()

INTERSECTION_MBiS(MBiS(X), MBiS(Y))

1

Z =

55

2.2.2. Thuật toán xác định giao MBiS

2

while (i and j )

3

i1 IWS(X) và j1 IWS(Y là các đoạn giao đầu tiên của IWS(X) và

IWS(Y), tính từ đoạn i trên IWS(X và đoạn j trên IWS(Y);

4

Start = max(MBiS(X) [i1].start, MBiS(Y) [j1].start);

5

End = min(MBiS(X) [i1].end, MBiS(Y) [j1].end);

6

Z = Z [Start,End]};

7

if(End = MBiS(X) [i1].end)then

8

i = i1 1;// chuyển sang đoạn khác trênMBiS(X)

9

j = j1;

10

else

11

j = j1 1;// chuyển sang đoạn khác trênMBiS(Y)

12

i = i1;

13

return Z;//Z là kết quả củaMBiS(X) MBiS(Y)

Hình 2.22. Thuật toán xác định giao hai MBiS

Độ phức tạp của thuật toán INTERSECTION_MBiS trong hình 2.22 là

O(n + m), với n và m là số lƣợng đoạn tƣơng ứng của MBiS(X) và MByS(Y).

Để xác định giao của hai MBiS, ta chỉ cần xác định max và min của các đoạn

giao nhƣ dòng 5 và 6, đó chính là start và end của đoạn giao cần tìm. Do đó

tiết kiệm đƣợc thời gian trong xử lý.

2.2.3. Thuật toán khai thác FWUI dựa trên MBiS-tree

2.2.3.1. Cấu trúc MBiS-tree

Cấu trúc dữ liệu MBiS-tree đƣợc đề xuất trong [I] dùng để khai thác

FWUI. Mỗi nút trên MBiS-tree gồm ba thành phần X, MBiS(X) và wus(X),

trong đó:

- X là một tập mục,

- MBiS(X) là MBiS của X,

- wus(X) là giá trị wus của X.

Kết nối hai nút X và Y tạo ra nút mới X Y, với điều kiện X và Y có cùng

độ dài và cùng tiền tố |X|-1 phần tử. Đồng thời wus(X Y) minwus với

56

minwus do ngƣời sử dụng định nghĩa.

2.2.3.2. Thuật toán tính wus của tập mục

Để khai thác FWUI, cần phải xác định wus của các tập mục theo công

thức 2.3. Do đó cần phải xác định tidset của các tập mục dựa trên MBiS của

Thuật toán2.6: CALCULATION_WUS

Input: MBiS(X)

Output: wus của X

Method name: CALCULATION_WUS()

CALCULATION_WUS(MBiS(X))

for all i MBiS(X) do

1

for all j đoạn i của MBiS(X) do

2

3

s = s + twu( ;

4

return (s/Sum_twu);

các tập mục. Thuật toán đƣợc trình bày trong Hình 2.23.

Hình 2.23. Thuật toán tính wus dựa trên MBiS

Việc tính wus của tập mục dựa trên MBiS rất đơn giản, do cấu trúc

MBiS lƣu các đầu và cuối đoạn bit 1 liên tiếp trên bit-vector. Do đó chỉ cần

độ phức tạp O(1) để xác định các ID giao dịch. Nên độ phức tạp thuật toán

CALCULATION_WUS() là O(k) với k là số lƣợng các giao dịch chứa X. Nói

cách khác k chính là tổng số bit 1 trên bit-vector của tập mục X.

2.2.3.3. Thuật toán MBiS-FWUI

Lớp trên cùng (mức 0) của MBiS-tree đƣợc kí hiệu là []. Lớp thứ nhất

chứa các 1-itemset thỏa mãn minwus. Mức thứ k chứa các k-itemset thỏa mãn

minwus.

Mỗi mức của MBiS-tree chứa các lớp tƣơng đƣơng, mỗi lớp tƣơng

đƣơng đƣợc tạo thành từ một mục cha ở mức trên kết hợp lần lƣợt với các nút

cùng lớp tƣơng đƣơng của mục cha đó. Các nút trong cùng một lớp tƣơng

đƣơng chỉ khác nhau phần tử cuối cùng. Mức k chứa các k-itemset đƣợc tạo từ

57

sự kết hợp các cặp nút từ mức (k - 1) gồm các (k - 1)-itemset. Mỗi nút đƣợc

thêm vào MBiS-tree nếu giá trị wus của tập mục đó minwus. Do vậy,

MBiS-tree chứa tất cả các FWUI khai thác theo ngƣỡng minwus.

Quá trình xây dựng MBiS-tree theo mô tả trên đƣợc trình bày bằng thuật

Thuật toán 2.7: MBiS_FWUI

Input: CSDL BD vàminwus;

Output: MBiS-tree chứa tất cả FWUI thỏa mãn minwus của DB

Method name: MBiS_FWUI()

MBiS_FWUI()

1

[] = j I|wus_ j minwus;

2

MBiS-tree = ; P = ;

3

FWUI_MINE(P);

4

FWUI_mine( [P])

5

for all li P] do

6

[Pi] = ;

7

for all lj [P], (with j i) do

8

X = li lj;

9

Y =INTERSECTION_MBiS(MBiS(li), MBiS(lj));

10

wus_X = CALCULATION_WUS(Y);

11

if (wus_X minwus) then

12

[Pi] = [Pi] {(X, Y, wus_X)};

13

MBiS-tree = MBiS-tree [Pi];

14

FWUI_MINE( [Pi])

toán MBiS-FWUI.

Hình 2.24. Thuật toán khai thác FWUI dựa trên MBiS-tree

Đầu vào của thuật toán MBiS-FWUI là CSDL số lƣợng DB và minwus.

Trƣớc hết, CSDL đƣợc quét một lần để tính wus của các mục (dòng 2), các

mục thỏa mãn minwus đƣợc đƣa vào mức 0 của MBiS (dòng 3). Từ dòng 6

đến dòng 9, kết nối một nút với các nút sau đó (j > i) trong cùng một lớp

58

tƣơng đƣơng. Dòng 10 tính giao MBiS của tập mục mới tạo thành ở bƣớc 9

theo thuật toán 2.5. Dòng 11 tính wus theo thuật toán 2.6. Dòng 12, tập mục X

đƣợc kết nạp vào lớp Pi nếu thỏa mãn minwus. Dòng 13, lớp tƣơng đƣơng Pi

đƣợc kết nạp vào MBiS-tree. Cuối cùng, dòng 14 gọi đệ qui với lớp Pi.

2.2.4. Kết quả thực nghiệm

CSDL thực nghiệm và môi trƣờng thực nghiệm nhƣ trong mục 2.1.4. Số

lƣợng cho các mục xuất hiện trong các giao dịch đƣợc thêm bằng cách sinh

ngẫu nhiên trong khoảng từ 1 đến 10 đối với các CSDL: RETAIL, BMS-POS,

CONNECT, ACCIDENTS.

Sau đây là hình các kết quả thực nghiệm với cấu trúc MBiS đƣợc sử

dụng trong thuật toán MBiS_FWUI so sánh với các thuật toán khi cài đặt

bằng cấu trúc DBV và DIFFSET.

150

139,571

DBV

100

MBiS

64,141

DIFFSET

2.2.4.1. So sánh thời gian thực thi:

) s ( e m

50

29,648

i t

0

0.6

0.5

0.4

0.3

0.2

0.1

minwus(%)

250

232,209

DBV

200

MBiS

125,091

150

DIFFSET

85,102

Hình 2.25. So sánh thời gian chạy trên CSDL RETAIL.

) s ( e m

100

i t

50

0

0.6

0.5

0.4

0.3

0.2

0.1

minwus(%)

59

Hình 2.26. So sánh thời gian chạy trên CSDL BMS-POS.

400

DBV

309,301

300

MBiS

200

DIFFSET

) s ( e m

98,594 72,427

100

i t

0

0.3

0.2

0.1

0.06

0.03

0.01

minwus(%)

DBV

2501,68

MBiS

DIFFSET

Hình 2.27. So sánh thời gian chạy trên CSDL SALE-FACT-1997.

) s ( e m

i t

563,70 345,81

3000 2500 2000 1500 1000 500 0

0.3

0.2

0.1

0.06

0.03

0.01

minwus(%)

3000

2748,776

DBV

MBiS

2000

DIFFSET

Hình 2.28. So sánh thời gian chạy trên CSDL SALE-FACT-1997+1998.

) s ( e m

1000

i t

640,854 526,32

0

0.3

0.2

0.1

0.06

0.03

0.01

minwus(%)

60

DBV

55,202 41,935

MBiS

40

DIFFSET

Hình 2.29. So sánh thời gian chạy trên CSDL SALE-FACT-SYNC.

) s ( e m

20

i t

6,094

0

0.96

0.95

0.94

0.93

0.92

0.9

minwus(%)

60

Hình 2.30. So sánh thời gian chạy trên CSDL CONNECT.

250

DBV

212,667

200

MBiS

150

139,278

) s ( e m

DIFFSET

100

i t

50

30,742

0

0.9

0.8

0.6

0.5

0.7 minwus(%)

Hình 2.31. So sánh thời gian chạy trên CSDL ACCIDENTS.

200

DBV

160,687

150

MBiS

100

DIFFSET

50

2.2.4.1. So sánh bộ nhớ:

) b M ( y r o m e m

48,479 35,131

0

0.6

0.5

0.4

0.2

0.1

0.3 minwus(%)

DBV

431,725

MBiS

DIFFSET

213,67 144,981

Hình 2.32. So sánh bộ nhớ sử dụng trên CSDL RETAIL.

) b M ( y r o m e m

500 400 300 200 100 0

0.6

0.5

0.4

0.3

0.2

0.1

minwus(%)

800

DBV

600

720 622,14 542,7

MBiS

400

DIFFSET

200

Hình 2.33. So sánh bộ nhớ sử dụng trên CSDL BMS-POS.

) b M ( y r o m e m

0

0.03

0.02

0.1

0.06

0.03

0.01

minwus(%)

61

Hình 2.34. So sánh bộ nhớ sử dụng trên CSDL SALE-FACT-1997.

2000

DBV

1500

MBiS

1549,32 1477,976 1344,846

1000

DIFFSET

500

) b M ( y r o m e m

0

0.3

0.2

0.03

0.01

0.1

0.06 minwus(%)

2000

DBV

1500

1699,922 1543,975 1482,239

MBIS

1000

DIFFSET

500

Hình 2.35. So sánh bộ nhớ sử dụng trên CSDL SALE-FACT-1997+1998.

) b M ( y r o m e m

0

0.6

0.5

0.4

0.3

0.2

0.1

minwus(%)

50

DBV

46,579 41,935

40

MBiS

30

DIFFSET

20

10

Hình 2.36. So sánh bộ nhớ sử dụng trên CSDL SALE-FACT-SYNC.

) b M ( y r o m e m

6,094

0

0.96

0.95

0.92

0.9

0.94

0.93 minwus(%)

150

DBV

132,436

MBiS

100

78,172

DIFFSET

50

30,742

Hình 2.37. So sánh bộ nhớ sử dụng trên CSDL CONNECT.

) b M ( y r o m e m

0

0.9

0.8

0.7

0.6

0.5

minwus(%)

62

Hình 2.38. So sánh bộ nhớ sử dụng trên CSDL ACCIDENT.

Hình 2.25 đến 2.29 và Hình 2.32 đến 2.36 cho thấy rằng cấu trúc MBiS

hiệu quả hơn DBV và DIFFSET trên các CSDL thƣa. Ví dụ, trên CSDL

RETAIL với minws = 0,1%. Thời gian khai thác của MBiS, DIFFSET và

DBV lần lƣợt là 29,648s, 64,141s và 139,571s. Bộ nhớ sử dụng của IWS,

MBiS, DIFFSET và DBV lần lƣợt là 35,131MB, 48,479MB và 160,687MB.

Hình 2.30, 2.31, 2.37 và 2.38 cho thấy MBiS không tốt hơn DBV và

DIFFSET trên các CSDL dày. Do MBiS bị phân mảnh thành quá nhiều đoạn

bit 1, do đó việc xác định giao MBiS của các cặp tập mục sẽ tốn nhiều thời

gian do số lƣợng các đoạn bit 1 là rất lớn.

Đối với CSDL thƣa, số lƣợng các mục trên mỗi giao dịch ít, nên số đoạn

của MBiS là không nhiều, trong khi cấu trúc MBiS lại có lợi thế xác định

nhanh của giao của hai MBiS dó đó, MBiS có hiệu quả trên các dữ liệu thƣa

so với các cấu trúc đã có, kể cả tiếp cận Diffset. Đối với CSDL CSDL dày thì

ngƣợc lại, mỗi mục xuất hiện trong nhiều giao dịch, dó đó tidset của chúng

khi biểu diễn bằng MBiS sẽ có nhiều đoạn, điều này làm cho bộ nhớ có thể

tăng lên do cần thêm bộ nhớ để lƣu các đầu và cuối đoạn, ngoài ra với các

đoạn ít hơn bốn phần tử sẽ làm cho bộ nhớ cần nhiều hơn là cách biểu diễn

thông thƣờng. Do đó MBiS không hiệu quả hơn các phƣơng pháp khác trên

CSDL dày, các kết quả thực nghiệm trên hai CSDL CONNECT và

ACCIDENT thể hiện nhận định này.

2.3. Thuật toán khai thác TRFWUIk

Phần này trình bày kiến thức cơ sở về bài toán khai thác TRFWUIk trên

CSDL số lƣợng và đề xuất hai cấu trúc mới DTab và DHeap với hai thuật

toán tƣơng ứng DTab-TRFWUI và DHEAP_TRFWUI khai thác FWUIk.

Nội dung về cấu trúc DTab đã đƣợc công bố tại công trình [IV].

2.3.1. Một số khái niệm

Định nghĩa 2.10. (Rank của một tập mục) Cho một tập mục X ( I) của

63

CSDL số lƣợng DB. Rank của X là Rx đƣợc xác định nhƣ sau:

Rx = |{wus(Y)|wus(Y) wus(X), Y I}|.

Mệnh đề 2.1: Cho hai tập mục X và Y (X, Y I). Nếu wus(X) = wus(Y) thì

Rx = Ry.

Định nghĩa 2.11. TRFWUIk của CSDL số lƣợng BD là tập tất cả các

tập mục X mà X I và Rx k:

TRFWUIk = { X I| Rx k}

Ví dụ 2.11: Xét CSDL DB trong ví dụ 1.2, ta có TRFWUI3, TRFWUI4,

TRFWUI5 nhƣ trong Bảng 2.10.

Bảng 2.10. Bảng TRFWUIk

Số lượng K TRFWUIk

3 {1,0: B},{0,898: E, BE},{0,803: A, AB, ABE} 6

{1,0: B},{0,898: E, BE},{0,803: A, AB, ABE}, {0,764: D,

4 {1,0: B},{0,898: E, BE},{0,803: A, AB, ABE}, {0,764: D, BD} 8

BD},{0,662: AD, DE, ABD, ADE, BDE, ABDE}

14 5

Từ Bảng 2.10, với k = 3 ta có sáu FWUI và k = 5 có mƣời bốn FWUI

thỏa mãn. Trong đó E và BE có cùng nhóm do cùng độ đo wus. Tƣơng tự, A,

AB và ABE có cùng nhóm do có cùng wus = 0,803.

Mệnh đề 2.2: Tập mục X (X I) của một CSDL số lƣợng DB, nếu X

TRFWUIk thì các tập mục Y (Y I và X Y) TRFWUIk.

Nhƣ vậy, bài toán khai thác TRFWUIk từ CSDL số lƣợng là bài toán tìm

tất cả các tập mục X sao cho {X|X I, Rx k}

2.3.2. Cấu trúc DTab

DTab [45] là một danh sách liên kết hai chiều gồm k phần tử có giá trị

giảm dần. Nhƣ vậy phần tử thứ k là phần tử có giá trị nhỏ nhất gọi là min-

64

DTab. Ví dụ với k = 5 trong Bảng 2.10 ta có DTab nhƣ Hình 2.39:

1,0

0,898

0,803

0,764

0,662 NULL

Hình 2.39. DTab với k = 5

DTab trong Hình 2.40 có năm phần tử, phần tử thứ nhất có giá trị 1,0,

phần tử thứ hai có giá trị 0,898, v.v..., min-DTab = 0,662.

Với cấu trúc nhƣ trên, việc thêm một phần tử vào DTab để đảm bảo thứ

tự giảm dần có chi phí O(k). Đồng thời với nó là việc loại phần tử cuối cùng

ra khỏi DTab mất chi phí O(1).

2.3.3. Cấu trúc TR-tree

TR-tree là một cây gồm nhiều mức, mỗi mức gồm nhiều lớp tƣơng

đƣơng, mỗi lớp tƣơng đƣơng gồm nhiều nút, các nút trong cùng một lớp

tƣơng đƣơng có cùng nút cha ở mức trên, có số phần tử bằng nhau và chỉ khác

nhau phần tử cuối cùng.

Để tối ƣu bộ nhớ lƣu trữ tidset của các tập mục và tăng tốc độ tính toán

trong khai thác TRFWUIk, trong phần này tidset của các tập mục đƣợc biểu

diễn bởi cấu trúc IWS [II, V] đã đƣợc trình bày trong mục 2.1.

- Tập mục X

-

Mỗi nút gồm ba thành phần:

- wus của X

IWS của X

Kết hợp hai nút trong cùng một lớp tƣơng đƣơng tạo ra nút mới trên TR-

tree ở mức tiếp theo nếu wus của tập mục mới tạo thành min-DTab. Đồng

thời chèn wus(X) vào DTab và cập nhật lại min-DTab mới.

2.3.4. Thuật toán khai thác TRFWUIk sử dụng cấu trúc dữ liệu DTab

Thuật toán DTAB_TRFWUI dựa trên TR-tree gồm ba bƣớc nhƣ sau:

Bước 1: Quét CSDL tính wus của các mục, nếu số lƣợng mục có giá trị

wus khác nhau k thì chỉ lấy đúng k wus khác nhau lớn nhất. Các mục này

65

đƣợc đƣa vào lớp thứ nhất của TR-tree và là một lớp tƣơng đƣơng. Đồng thời

đƣa các giá trị wus của các mục này vào DTab theo thứ tự giảm dần. min-

DTab là giá trị nhỏ nhất wus trong DTab (DTab[k]).

Bước 2: Kết nối các cặp l-itemset (Xl và và Yl) trong các lớp tƣơng

đƣơng để tạo ra các (l+1)-itemset là {X, wus_X, IWS(X)} ở lớp tiếp theo nếu

wus_Xl và wus_Yl cùng min-DTab:

Nếu DTab chƣa đủ k phần tử thì bổ sung wus-X vào DTab

- Nếu trên DTab đã tồn tại một giá trị = wus_X thì thêm nút mới {X,

Ngƣợc lại, nếu wus_X min-DTab thì:

- Ngƣợc lại, loại phần tử thứ k trên DTab (DHaep) và chèn wus_X

wus_X, IWS(X)} vào TR-tree.

vào DTab sao cho đảm bảo tính giảm dần của DTab, đồng thời thêm

nút mới {X, wus_X, IWS(X)} vào TR-tree.

Bước 3: Lặp lại bƣớc 2 cho đến khi nào không có thêm tập mục nào

đƣợc tạo ra.

Kết thúc thuật toán, các tập mục trên TR-tree có wus min-DTab là các

TRFWUIk khai thác đƣợc.

Thuật toán 2.9: GEN_DTAB-TR-TREE

Input: CSDL DB và k;

Output: DTab, TR-tree

Method name: GEN_DTAB-TR-TREE()

GEN_DTAB-TR-TREE(DB, k)

1

d = 0;

2

[] =  j I, j là 1-itemset;

3

for all j [] do

4

if (d k) then

5

DTab wus_X;

6

Update min-DTab;

7

P = [];

66

Thuật toán đƣợc mô tả nhƣ Hình 2.40:

8

DTAB-TR-TREE( [P]);

9

for all li [P] do

10

[Pi] = ;

11

if (wus_li min-DTab) then

12

for all lj [P], với (j i) do

13

if (wus _lj min-DTab) then

14

X = lI lj;

15

IWS_X = INTERSECTION_IWS(IWS(li), IWS(lj));

16

Tính wus_X dựa trên IWS(X);

17

if (wus_X min-DTab) then

18

[Pi] = [Pj] {(X, wus_X, IWS_X};

19

if (wus_X>min-DTab) then

20

DTab wus_X;

21

Update min-DTab;

22

DTAB-TR-TREE( [Pi]);

Hình 2.40. Thuật toán tạo TR-tree sử dụng DTab

Dòng 3, tìm các 1-itemset và sắp xếp giảm dần theo wus. Dòng 4 đến

dòng 6, kết nạp các 1-itemset vào DTab. Dòng 15 sử dụng hai thuật toán

INTERSECTION_IWS(IWS(li), IWS(lj)) đƣợc trình bày trong [V] dùng để

tính giao hai IWS. Dòng 17 và 18, nếu wus min-DTab thì chèn nút mới

vào TR-tree. Dòng 19 đến dòng 21, nếu wus > min-DTab chèn wus vào

DTab và cập nhật lại giá trị min-DTab. Dòng 22 gọi đệ quy với lớp tƣơng

đƣơng mới Pi.

Nhƣ vậy chỉ các tập mục trong cùng một lớp tƣơng đƣơng có giá trị

wus min-DTab mới đƣợc xét kết nối với nhau để tạo ra các tập mục mới,

các tập mục mới này cũng phải có wus min-DTab mới đƣợc chèn vào TR-

tree, đồng thời min-DTab đƣợc cập nhật mới sau mỗi lần chèn một wus vào

67

DTab. Đây là điều kiện để cắt nhánh nhanh trên TR-tree.

Kết thúc thuật toán GEN_TR-Tree tạo ra cây TR-tree chứa các tập mục

đã đƣợc xét trong quá trình khai thác TRFWUIk, nhiều tập mục thuộcTR-tree

nhƣng không là TRFWUIk do các wus đƣợc cập nhật trên DTab đã loại các

tập mục này khỏi TRFWUIk. Thuật toán DTab-TRFWUI trong Hình 2.41 có

Thuật toán 2.10: DTAB_TRFWUI

Input: CSDL DB và ngưỡng k

Output: Z là TRFWUIk

Method name: DTAB_TRFWUI()

DTAB_TRFWUI(TR-tree,min-DTab)

GEN_DTAB-TR-TREE(DB, k)

1

Z = ;

2

for all X TR-tree do

3

if (X.wus min-DTab)then

4

Z {X.itemset, X.wus};

chức năng lọc các tập mục trên TR-tree là TRFWUIk

Hình 2.41. Thuật toán lọc ra TRFWUIk

Thuật toán DTAB_TRFWUI gọi hàm GEN_DTAB-TR-TREE() để tạo

TR-tree ở dòng 1, sau đó xét tất cả các nút thuộc TR-tree và lọc ra các tập

mục có wus không nhỏ hơn min-DTab-chính là TRFWUIk từ dòng 2 đến

dòng 5.

2.3.5. Thuật toán khai thác nhanh TRFWUIk dựa trên cấu trúc DHeap

2.3.5.1. Cấu trúc DHeap

Cấu trúc DTab dùng để cập nhật các giá trị wus thỏa mãn ngƣỡng min-

DTab của các tập mục trong quá trình khai thác TRFWUIk nhƣ đã trình bày ở

trên có chi phí O(k) để chèn một phần tử mới. Tuy nhiên, với những trƣờng

hợp giá trị k lớn thì chi phí cho việc chèn các giá trị mới vào DTab vẫn tốn

nhiều thời gian. Để giải quyết vấn đề này, luận án đề xuất cấu trúc Dynamic

68

Heap (DHeap) là hàng đợi ƣu tiên (Heap) nghĩa là các giá trị lớn hơn sẽ có

thứ tự ƣu tiên xử lý trƣớc (đống max). Thao tác cập nhật giá trị mới vào

DHeap mất chi phí O(log(k)). Nên thay thế DTab bằng DHeap sẽ giúp giảm

thời gian đáng kể trong khai thác TRFWUIk. Một ví dụ với DHeap đƣợc trình

bày trong hình 2.42.

Hình 2.42. DHeap với k = 5 với CSDL trong ví dụ 1.4

2.3.5.2. Thuật toán khai thác nhanh TRFWUIk dựa trên DHeap

Thuật toán DHEAP_TRFWUI khai thác nhanh TRFWUIk trên CSDL số

lƣợng dựa trên cấu trúc DHeap gồm bốn bƣớc nhƣ thuật toán

DTAB_TRFWUI. Chỉ thay cấu trúc DTab bằng cấu trúc DHeap trong quá

trình cập nhật các giá trị wus. Hình 2.44 là thuật toán tạo cây TR-tree kết hợp

Thuật toán 2.9: GEN_DHEAP-TR-TREE

Input: CSDL DB và k;

Output: DHeap, TR-tree

Method name: GEN_DHEAP-TR-TREE()

GEN_DHEAP-TR-TREE(DB, k)

1

d = 0;

2

[] =  j I|j là 1-itemset;

3

for all j [] do

4

if (d k) then

5

INSRERT_DHEAP(wus_j); // wus của mục j

6

DHEAP-TR-TREE( [P]);

7

P = [];

8

for all li [P] do

69

DHeap trong quá trình cắt nhánh các tập mục chắc chắn không thỏa mãn:

9

[Pi] = ;

10

if (wus_li min-Dheap) then

11

for all lj [P], (vớij i) do

12

if (wus_lj min-DTab) then

13

X = li lj;

14

IWS_X = INTERSECTION_IWS(IWS(li), IWS(lj));

15

Tính wus_X dựa trên IWS(X);

16

if (wus_X min-DHeap) then

17

[Pi] = [Pi] {(X, wus_X, IWS_X};

18

if (wus_X >min-DHeap) then

19

INSRERT_DHEAP(wus_X);

20

DHEAP-TR-TREE( [Pi]);

Hình 2.43. Thuật toán tạo TR-tree sử dụng DHeap

Thuật toán 2.10: DHEAP_TRFWUI

Input: CSDL DB và ngưỡng k

Output: Z là TRFWUIk

Method name: DHEAP_TRFWUI()

DHEAP_TRFWUI(TR-tree, min-DHeap)

GEN_DHEAP-TR-TREE(DB, k)

Z = ;

1

for all X TR-tree do

2

3

if (X.wus min-DHeap)then

4

Z {X.itemset, X.wus};

Thuật toán lọc TRFWUIk từ TR-tree nhƣ Hình 2.45

Hình 2.44. Thuật toán lọc ra TRFWUIk

2.3.6. Kết quả thực nghiệm

2.3.6.1. CSDL thực nghiệm

Phần này trình bày các kết quả thực nghiệm về thời gian thực thi của hai

phƣơng pháp đề xuất DHeap_TRFWUI và DTab_TRFWUI với phƣơng pháp

70

VTK. CSDL thực nghiệm đƣợc trình bày nhƣ trong Bảng 2.7

600

Dheap-TRFWUI

527,81

500

DTab-TRFWUI

400

300

VTK

2.3.6.2. Kết quả thực nghiệm

i

) s ( e m T

200

100

141,21 75,28

0

100

200

300

400

500

k

728,12

Dheap-TRFWUI

DTab-TRFWUI

Hình 2.45. So sánh thời gian chạy trên CSDL MBS-POS

i

VTK

) s ( e m T

211,66 107,4

800 700 600 500 400 300 200 100 0

100

200

400

500

300

k

DHeap-TRFWUI

578,62

DTab-TRFWUI

VTK

Hình 2.46. So sánh thời gian chạy trên CSD L RETAIL

i

) s ( e m T

164,22 68,2

700 600 500 400 300 200 100 0

100

200

300

400

500

k

71

Hình 2.47. So sánh thời gian chạy trên CSDL CONNECT

800

DHeap-TRFWUI

685,1

600

DTab-TRFWUI

400

269,2

VTK

i

) s ( e m T

200

97,61

0

100

200

400

500

300

k

800

732,06

600

400

279,02

DHeap-TRFWUI DTab-TRFWUI VTK

Hình 2.48. So sánh thời gian trên CSDL SALE-FACT-1997

i

) s ( e m T

200

104,2

0

100

200

400

500

300

k

800

739,15

DHeap-TRFWUI

600

DTab-TRFWUI

400

281,17

VTK

Hình 2.49. So sánh thời gian trên CSDL SALE-FACT-1997+1998

i

) s ( e m T

200

109,12

0

100

200

400

500

300

k

Hình 2.50. So sánh thời gian trên CSDL SALE-FACT-SYNC

Các kết quả thực nghiệm từ Hình 2.46 đến 2.51 cho thấy hiệu quả của

phƣơng pháp Dtab-TRFWUI và DHEAP_TRFWUI so với VTK trên các

CSDL thực nghiệm. Phƣơng pháp hiệu quả nhất là DHEAP_TRFWUI với

việc sử dụng cấu trúc DHeap. Ví dụ trên CSDL RETAIL với k = 500, VTK có

thời gian xử lý là 527,81s, DTab-TRFWUI là 141,21s, trong khi

DHEAP_TRFWUI là 107,4s. Thời gian chạy của VTK nhiều hơn 3,74 lần so

72

với DTab-FWUI và nhiều hơn DHEAP_TRFWUI 4,91 lần.

Kết quả thực nghiệm ở trên cho thấy việc sử dụng DHeap, DTab là hiệu

quả, không tốn thời gian lọc ra các tập mục cùng lớp để kết nối chúng lại do

trên cây TR-tree đã có sẵn các lớp. Đồng thời việc cập nhật các giá trị min-

DTab với chi phí O(1) trên DTab, DHeap và cắt nhánh nhanh trên TR-tree.

Ngoài ra, thao tác tìm và chèn một phần tử mới vào DHeap chỉ mất thời gian

O(nlogn).

2.4. Kết luận chƣơng

Chƣơng này tập trung trình bày các kết quả nghiên cứu khai thác nhanh

tập mục phổ biến trên CSDL số lƣợng với các cấu trúc mới đề xuất MBiS [I],

IWS [II, V] theo tiếp cận cải tiến cấu trúc dữ liệu lƣu tidset theo bit-vector.

Đồng thời đƣa ra bài toán khai thác Top-rank-k tập phổ trên CSDL số lƣợng

và đề xuất hai cấu trúc DTab [III], DHeap với hai thuật toán DTab-TRFWUI

[III] và DHEAP_TRFWUI để giải quyết hiệu quả bài toán này.

Các đề xuất về tối ƣu bit-vector với IWS bằng cách loại bỏ hoàn toàn các

word hai byte có giá trị bằng 0 trong biểu diễn bit-vector tidset của tập mục.

Nghĩa là IWS chỉ lƣu các word khác 0 liên tiếp trên bit-vector tidset của các

tập. Đồng thời đề xuất sử dụng mảng MAP lƣu trữ vị trí bit 1 đối với các số có

giá trị trong khoảng hai byte để tính nhanh ws (đối với khai thác FWI) và wus

(đối với khai thác FWUI). Các đề xuất này thật sự có hiệu quả nhất là đối với

các CSDL thƣa. Kết quả thực nghiệm trong mục 2.2.4.3 đã thể hiện rõ điều đó.

Bên cạnh đó, chƣơng 2 đề xuất cấu trúc MBiS, bằng cách chỉ lƣu các

đoạn bit 1 liên tiếp trên bit-vector của các tập mục. Với cấu trúc này việc xác

định giao MBiS của hai tập mục rất nhanh, do chỉ cần tính lại đầu và cuối mỗi

đoạn giao. Đồng thời, việc tính ws (đối với khai thác FWI) hay tính wus (đối

với khai thác FWUI). Các kết quả thực nghiệm trong mục 2.2.4.3 cho thấy

hiệu quả của MBiS so với DBV, tuy nhiên MBiS không hiệu quả hơn IWS,

do việc lƣu các đoạn bit 1 liên tiếp làm cho MBiS bị “phân mảnh” quá nhiều

73

dẫn tới việc xác định giao của các MBiS tốn nhiều thời gian.

Cuối cùng, chƣơng 2 đề xuất bài toán khai thác TRFWUIk trên CSDL số

lƣợng, đây là bài toán chƣa đƣợc đề cập trƣớc đây, mặc dù đã có nhiều công

bố liên quan đến bài toán này trên CSDL nhị phân. Cấu trúc DTab với khai

thác theo tiếp cận một lần quét CSDL đã cho thấy hiệu quả so với thuật toán

VTK. Tiếp theo luận án đề xuất cấu trúc DHeap dựa trên cấu trúc Heap, với

cấu trúc DHeap việc tìm vị trí chèn wus của tập mục mới là O(nlogn) giúp

giảm thời gian khai thác TRFWUIk. Các kết quả thực nghiệm trong mục

74

2.3.3.2 đã cho thấy hiệu quả của các đề xuất mới nói trên.

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

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 đó, về cơ bản 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 có thể đƣợc kế thừa từ

các phƣơng pháp khai thác tập mục phổ biến trên CSDL số lƣợng và CSDL

có sự phân cấp. Vì vậy, việc khó khăn và phức tạp của bài toán khai thác

FWUI trên CSDL số lƣợng có sự phân cấp cũng đƣợc kế thừa từ các bài toán

trên. Ngoài ra, đặc trƣng riêng của bài toán này là việc xác định trọng số của

các mục cha trên cây phân cấp nhƣ thế nào? Và xác định số lƣợng của từng

mục cha trong các giao dịch của CSDL ra sao? v.v... đã làm cho bài toán khai

thác tập mục phổ biến trên CSDL số lƣợng có sự phân cấp mục thêm sự phức

tạp và cần có những đề xuất tốt để giảm thiểu sự khó khăn đó.

CSDL số lƣợng có sự phân cấp các mục là CSDL xuất hiện nhiều trong

các ứng dụng thực tế, trong đó cây phân cấp đƣợc sử dụng nhƣ để phân loại

các nhóm mặt hàng, chủng loại hàng hóa. Các mục cha trên cây phân cấp là

mức khái quan cho mục con của nó. Tuy nhiên, cho đến hiện nay, bài toán

khai thác tập mục phổ biến trên loại CSDL này chƣa đƣợc quan tâm nghiên

cứu. Do vậy, phần nội dung chƣơng này luận án đề xuất bài toán khai thác

FWUI trên CSDL số lƣợng có sự phân cấp các mục trong mục 3.1 và đề xuất

một thuật toán MINE_FWUI dựa trên cấu trúc HIT-tree để khai thác FWUI

trong mục 3.2, các nội dung này đã đƣợc trình bày tại công bố [IV].

Tiếp theo, trong phần 3.3 luận án trình bày một số cải tiến nâng cao hiệu

quả khai thác FWUI trên CSDL số lƣợng có sự phân cấp các mục nhƣ:

(i) Đề xuất cấu trúc SDBV - là một mở rộng của DBV với việc sử dụng

phần tử là các số nguyên lớn (8 byte). Đề xuất này giúp làm giảm số

75

phép toán trong xác định giao giữa hai SDBV.

(ii) Đề xuất mệnh đề về việc xác định tidset mục nút cha dựa trên tidset

mục nút con. Với đề xuất này không phải tốn thời gian thêm các mục

nút cha vào CSDL và không làm tăng thêm bộ nhớ lƣu trữ.

(iii) Xác định nhanh mối quan hệ cha - con giữa các mục trên cây phân

cấp. Luận án đƣa ra mệnh đề về việc xác định mối quan hệ cha con

giữa các mục trong tập mục tạo thành bằng cách chỉ cần xác định

mối quan hệ của đúng một cặp mục trong tập mục đó.

Ngoài ra, các cấu trúc đã đề xuất trong chƣơng 2 nhƣ IWS, MBiS đều

đƣợc áp dụng vào để giải quyết hiệu quả hơn bài toán khai thác FWUI trên

CSDL số lƣợng có sự phân cấp các mục trong chƣơng này.

3.1. Giới thiệu bài toán

Định nghĩa 3.1. CSDL số lƣợng có sự phân cấp các mục -hierarchical

quantitative databases (HQDB) là một bộ gồm bốn thành phần: T, I, W, Tr

trong đó, T = {t1, t2, …, tm} là tập các giao dịch, I = {i1, i2, …, in} là tập các

mục, W = {w1, w2, …, wn} là tập các trọng số (lợi ích) tƣơng ứng của mỗi mục

trong tập các mục I và Tr là tập các cây phân cấp thể hiện mối quan hệ giữa

các mục. Mỗi giao dịch tk có dạng tk = { , , …, }, trong đó là số nguyên chỉ số lƣợng mục thứ i trong giao dịch tk, k = 1.. m.

Ví dụ 3.1: Cho HQBD HD = T, I, W, Tr với tập mục I = {A, B, C, D,

E}, các giao dịch T và trọng số W đƣợc trình bày trong Bảng 3.1 và Bảng 3.2,

các cây phân cấp Tr các mục nhƣ trong Hình 3.1.

Bảng 3.1. Giao dịch của HD Bảng 3.2. Trọng số

Giao dịch A B C D E F

Item

Weight

A

1 1 0 2 1 0

0,3

t1

B

0 1 3 0 1 0

0,2

t2

C

2 1 0 2 2 2

0,5

t3

D

3 1 1 0 1 0

0,6

t4

E

1 2 2 1 3 1

0,9

t5

F

0 1 1 1 0 1

0,1

t6

76

K

H

E

G

D

F

A

C

B

Và tập các cây phân cấp Tr nhƣ trong Hình 3.1

Hình 3.1. Tập các cây phân cấp Tr

Trong đó các kí hiệu A, B, C, D, E, F là đại diện cho tập các mặt hàng

theo Bảng 3.3 nhƣ sau:

Bảng 3.3. Tên mặt hàng của các mục

ID mục mục

A Desktop

B Ink-jet Printer

C Laser Printer

D Notebook

E Scanner

F Dot-matrix Printer

G Non-impact

H PC

K Printer

Theo Bảng 3.1 và Bảng 3.2, CSDL HD có sáu giao dịch {t1, t2, t3, t4, t5,

t6} và sáu mục {A, B, C, D, E, F}, trọng số của các mục tƣơng ứng là {0,3,

0,2, 0,5, 0,6, 0,9, 0,1}. Giao dịch t1 = {1, 1, 0, 2, 1, 0} có nghĩa là trong giao

dịch t1 có một mục A(Desktop), một mục B(Ink-jet Printer), hai mục

D(Notebook), một mục E(Scanner) và không có mục C với F nào.

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 CSDL HD. 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 CSDL HD. 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

77

gồm (I J).

HQDB có kế thừa hoàn toàn các định nghĩa, tính chất của CSDL số

lƣợng có sự phân cấp nhƣ đã trình bày trong chƣơng 1. Ngoài ra, khai thác

FWUI trên HQDB cần phải tính toán xác định trọng số của các mục cha, đồng

thời phải xác định số lƣợng các mục cha trong từng giao dịch dựa trên các

mục con của chúng trong mỗi giao dịch. Thông thƣờng có thể xác định các

đại lƣợng này thông qua các hàm MAX, MIN, SUM hay AVERAGE đối với

các giá trị số lƣợng và trọng số của các mục con của nó. Tuy nhiên, nếu sử

dụng công thức MIN hoặc AVERAGE thì số lƣợng và trọng số của mục cha

sẽ nhỏ hơn của mục con của nó trong nhiều trƣờng hợp. Điều này là không

thực tế, do mục cha là mức khái quát của mục con nên số lƣợng và trọng số

của nó không thể nhỏ hơn của mục con của nó. Do đó trong phạm vi luận án,

tác giả đề xuất sử dụng hai hàm là MAX và SUM trong xác định trọng số và

số lƣợng của các mục cha trên cây phân cấp trong mỗi giao dịch dựa trên

trọng số và số lƣợng của các mục con của nó trên cây phân cấp có sẵn trong

các giao dịch (là các mục ở nút lá).

Trong các CSDL thực tế, nếu trọng số hay số lƣợng của các mục cha nhƣ

là tổng trọng số hay số lƣợng của trọng số hay số lƣợng của các mục con (lợi

nhuận, giá trị, v.v…) thì sẽ sử dụng hàm SUM để xác định trọng số, số lƣợng

cho mục cha. Còn trong trƣờng hợp trọng số, số lƣợng của các mục cha nhƣ

đại diện cho trọng số và số lƣợng cho mục con (mức độ yêu thích, sự phản

hồi,…) thì sẽ sử dụng hàm MAX để xác định trọng số, số lƣợng của mục cha.

Trên cơ sở đó, luận án đề xuất hai định nghĩa sau:

Định nghĩa 3.2. Trọng số của mục cha trên cây phân cấp bằng hàm

Fun_weight của trọng số các mục con của nó ở nút lá nhƣ sau:

weight(A) Fun_weight(weight(A1); weight(A2 weight(Ak))

Trong đó A là mục cha trên cây phân cấp, A1, A2, ...,Ak là các nút lá của

78

A. Fun_weight có thể là hàm SUM hoặc MAX tùy vào CSDL thực tế.

Ví dụ 3.2: Với Fun_weight là hàm MAX: weight(K) =

MAX(weight(C), weight(B), weight(F)) = MAX(0,5; 0,2;0,1) = 0,5.

Định nghĩa 3.3. Số lƣợng của mục cha trên cây phân cấp ở trong giao

dịch nào đƣợc xác định bằng hàm Fun_quatity của số lƣợng các mục con của

quantity(A) tk = Fun_quantity(quantity(A1); quantity(A2 quantity(Ak))

nó ở trong giao dịch đó nhƣ sau:

Trong đó: A, A1, A2, ...,Ak tk và A1, A2, ..., Ak là con của A trên cây phân

cấp. Fun_quantity có thể là hàm MAX hoặc hàm SUM tùy thuộc vào CSDL

thực tế.

SUM(quantity(B); quantity(C); quantity(F))(do B, C, F t5) = SUM(2; 2; 1) = 5

Ví dụ 3.3: Với Fun_quantity là hàm SUM, ta có quantity(K) t5 =

Định nghĩa 3.4. Tập mục X I J) với I là tập các mục trong CSDL

(tập nút lá trên cây phân cấp) và J là tập các mục cha trên cây phân cấp đƣợc

gọi là phổ biến nếu wus(X) minwus, với minwus do ngƣời dùng xác định

trƣớc.

3.2. Thuật toán khai thác FWUI trên HQDB

Để khai thác FWUI trên HQDB bao gồm cả các mục cha trên cây phân

cấp, cần xác định weight cho các mục cha (theo Định nghĩa 3.2), đồng thời

cần xác định số lƣợng cho các mục cha (theo Định nghĩa 3.3) trong mỗi giao

dịch khi thêm các mục cha này vào trong các giao dịch [19].

3.2.1. Thuật toán xác định weight cho các mục cha

Thuật toán xác định weight cho các mục cha trên cây phân cấp theo Định

Thuật toán3.1: CALCULATION_WEGHTED

Input: R là gốc cây phân cấp Tr.

- Output: WA = {h, weght(h), h là các nút cha trên Tr}

79

nghĩa 3.2 đƣợc trình bày nhƣ sau:

- Method name: CALCULATION_WEGHTED()

CALCULATION_WEGHTED(R)

1

for all r children of R do

2

if (weight(r) = 0)then

3

CALCULATION_WEGHTED(r);

4

else

5

weight(R) = Fun_weight (weight(R), weight(r));

6

ChènR.weight vào WeightTable;

Hình 3.2. Thuật toán tính weight cho các mục cha

Thuật toán CALCULATION_WEGHTED trong Hình 3.2 là một thuật toán

đệ quy. Bắt đầu từ R là gốc của cây phân cấp. Duyệt hết toàn bộ cây để xác định

weight của các mục cha. Mỗi khi xác định đƣợc weight của một mục cha (line 6)

nó sẽ đƣợc chèn vào WeightTable (bảng WeightTable) chứa weight của tất cả

các mục trong CSDL).

3.2.2. Thuật toán thêm mục cha vào CSDL

Thuật toán thêm các mục cha vào CSDL đồng thời xác định weight cho

Thuật toán 3.2: ADD_PARENT

Input: CSDL HD và cây phân cấpTr.

- Output: CSDL HD (HD + các mục nút cha được chèn vào trong các giao dịch) - Method name: ADD_PARENT()

ADD_PARENT (R) for all t HD do for all i t do

if ( r Tr|r là cha của i) then

r.quantity = Fun_quantity (r.quantity, i.quantity);

1 2 3 4 5 6 7 8

if (r t) then

else

các mục cha trong các giao dịch đƣợc trình bày nhƣ Hình 3.3 sau đây:

t r; r.quantity = i.quantity; Hình 3.3. Thuật toán thêm mục cha vào CSDL

80

Thuật toán ADD_PARENT() quét lần lƣợt từng giao dịch trong CSDL,

với mỗi mục trong CSDL tìm các mục cha của nó trên cây cấp và thêm vào

CSDL nếu các mục cha này chƣa đƣợc thêm vào bởi một mục nào trong cùng

phân giao dịch. Dòng 1, quét từng dòng CSDL. Dòng 2, quét từng mục trên

mỗi giao dịch. Dòng 3, tìm các r là mục cha của i trên cây phân cấp Tr. Dòng

4 đến dòng 8, kiểm tra xem mục r đã đƣợc chèn vào CSDL trƣớc đó chƣa,

nếu đã chèn rồi thì xác định lại số lƣợng cho r theo Định nghĩa 3.3, còn nếu

chƣa chèn thì chèn r vào giao dịch t với quantity bằng quantity của mục i.

3.2.3. Thuật toán khai thác FWUI

3.2.3.1. Cấu trúc HIT-tree

Để khai thác FWUI trên HQDB theo Định nghĩa 3.4, luận án đề nghị sử

dụng cấu trúc HIT-tree. HIT-tree là một mở rộng của IT-tree [54]. HIT-tree

gồm nhiều mức, mỗi mức gồm nhiều lớp tƣơng đƣơng, mỗi lớp tƣơng đƣơng

bao gồm nhiều nút. Mỗi nút bao gồm ba thành phần: X, tidset(X), wus(X)

trong đó X là một tập mục, tidset(X) là tập các giao dịch chứa X và wus(X) là

độ hỗ trợ trọng số hữu ích của X đƣợc xác định theo công thức 1.4. Mỗi lớp

tƣơng đƣơng đƣợc tạo ra từ sự kết nối một mục cha ở lớp trên với lần lƣợt các

nút phía sau nó trong cùng lớp tƣơng đƣơng (để tránh trùng lặp), nút mới

đƣợc tạo thành khi và chỉ khi wus(X) của nút đó thỏa mãn ngƣỡng minwus.

Thuật toán 3.3: MINE_FWUIs

Input: HQDB HD, cây phân cấp Tr và ngưỡng minwus

Output: HIT-tree chứa các FWUI.

Method name: MINE_FWUIs()

MINE_FWUIs()

for all R TR do

1

CALCULATION_WEIGHTED(R);

2

ADD_PARENT();

3

81

3.2.3.2. Thuật toán khai thác FWUI

4

F = { i (I J), wus_i minwus};

5

HIT-tree ;

6

CREATE_HIT-tree(F)

7

P = ;

8

for all i F do

9

for j F (with j>i) do //j phía sau i

10

X = Fi Fj;

11

if ( x’ X, x” X: parent(x’) = x”)then

12

T = tidset(Fi) tidset(Fj) ;

13

if (wus_X minwus) then

14

P = P X, T, wus_X;

15

HIT-tree = HIT-tree X, T, wus_X;

16

CREATE_HIT-tree(P); // gọi đệ quy với lớp P

Hình 3.4. Thuật toán khai thác FWUI từ HQDB

Ví dụ 3.4: Thuật toán MINE_FWUIs trong Hình 3.4 với CSDL HD

trong ví dụ 3.1 và minwus = 0,6 nhƣ sau:

Dòng 2, thủ tục ADD_PARENT() cho kết quả nhƣ Bảng 3.4. Việc thêm

các mục cha, số lƣợng mục cha vào CSDL đƣợc thực hiện theo Định nghĩa 3.3,

việc thêm trọng số các mục cha theo Định nghĩa 3.2, ta có kết quả là Bảng 3.4

và 3.5. Đồng thời, twu của các giao dịch đƣợc tính nhƣ trong Bảng 3.6.

Bảng 3.5. Trọng số

Bảng 3.4. Giao dịchcủa HD

A B C D E F G H K

Item

Trọng số

1

1

0

2

1

1

2

1

A

0

0,3

0

1

3

0

1

3

0

3

B

0

0,2

2

1

0

2

2

1

2

2

C

2

0,5

3

1

1

0

1

1

3

1

D

0

0,6

1

2

2

1

3

2

1

2

E

1

0,9

0

1

1

1

0

1

1

1

F

1

0,1

ID t1 t2 t3 t4 t5 t6

G

0,5

H

0,6

K

0,5

82

Bảng 3.6. twu của các giao dịch

twu

ID

= 0,68

t1

3 2 2 6 9 5 2 6 5 7

= 1,12

t2

2 5 3 9 5 3 5 3 5

= 0,84

t3

3 2 2 6 2 9 2 2 5 6 2 5 2 8

= 0,76

t4

3 3 2 5 9 5 6 3 5 5

t5

= 0,84

3 2 2 5 2 6 9 3 5 2 6 5 2 9

= 0,43

t6

2 5 6 5 6 5 7

Sum_twu

= 4,67

Dòng 4, tập F (1-itemset phổ biến) gồm {A, B, C, D, E, G, H, K} nhƣ

Bảng 3.7:

mục

wus

Bảng 3.7. Tập 1-itemset phổ biến

F

= 0,65

A

A

68 84 76 84 4 76

= 1,0

B

B

68 2 84 76 84 43 4 76

= 0,67

C

C

= 0,6

D

D

2 76 84 43 4 76 68 84 84 43 4 76

= 0,91

E

E

= 0,45

F

68 2 84 76 84 4 76 84 84 43 4 76

= 1,0

G

G

68 2 84 76 84 43 4 76

= 0,76

H

H

68 84 76 84 43 4 76

= 1,0

K

K

68 2 84 76 84 43 4 76

83

Từ dòng 6 đến dòng 16 thủ tục đệ quy CREATE_HIT-tree() xây dựng

cây HIT-tree, sau khi xây dựng xong cây HIT-tree với ngƣỡng minwus, các

tập mục tại các nut trên cây HIT-tree là FWUI cần khai thác. Cây HIT-tree

với ngƣỡng minwus = 0,6 của CSDL HD nhƣ Hình 3.5.

Hình 3.5. Cây HIT-tree với CSDL HD và minwus = 0,6

Xét nút A trên cây HIT-tree:

A kết hợp với B: tidset(AB) = tidset(A) tidset(B) = {1, 3, 4, 5} {1, 2, 3,

4, 5, 6} = {1, 3, 4, 5}, wus(AB) = 0,68 >minwus⟹ kết nạp AB vào HIT-tree.

A kết hợp với C: tidset(AC) = tidset(A) tidset(C) = {1, 3, 4, 5} {2, 4,

5, 6} = {4, 5}, wus(AC) = 0,34 < minwus ⟹ không kết nạp AC vào HIT-tree.

Tƣơng tự kết nạp {AE, AG, AK} vào HIT-tree.

A kết hợp với H, không xét do H là cha của A trên cây phân cấp.

Tƣơng tự với các nút B, C, D, E, G, H, K ta có cây HIT-tree nhƣ Hình

3.5 có các nút là FWUI.

3.3. Một số cải tiến nâng cao hiệu quả khai thác FWUI trên HQDB

3.3.1. Cấu trúc EDBV

Thuật toán Eclat đƣợc Zaki và các đồng sự [49] đề xuất dựa trên IT-tree

có hiệu quả về mặt thời gian so với các phƣơng pháp khác. Tuy nhiên bộ nhớ

84

dùng để lƣu trữ tidset của các tập mục là rất lớn, đây chính là hạn chế của

phƣơng pháp này. Giải quyết đƣợc vấn đề bộ nhớ sẽ nâng cao hiệu quả về mặt

thời gian của tiếp cận này.

Zaki và các đồng sự [50] đề xuất sử dụng kĩ thuật diffset thay cho tidset.

Kĩ thuật diffset là một giải pháp hiệu quả nhằm rút gọn bộ nhớ so với tidset,

đồng thời giúp tính nhanh độ hỗ trợ trong bài toán khai thác FI. Tuy nhiên, do

đặc điểm diffset là lấy phần bù của tidset nên diffset không có hiệu quả trên

các CSDL thƣa.

Vo và các đồng sự [38] đề xuất DBV nhằm rút gọn bộ nhớ lƣu trữ tidset

bằng BitTable [13] và rút ngắn thời gian tính toán. Cách tiếp cận này khá hiệu

quả khi loại bỏ hoàn toàn các byte 0 ở đầu và cuối trên bit-vector và sử dụng

phép AND trên bit để tính giao tidset của hai tập mục. Đồng thời sử dụng một

mảng LOOKUP để định nghĩa trƣớc số lƣợng các bit 1 trong các byte, điều

này giúp tính nhanh độ hỗ trợ của các tập mục thông qua DBV. Từ đó DBV

đƣợc sử dụng với mảng mà mỗi phần tử là một byte. Đây là một hạn chế lớn

của DBV, do khi tính giao giữa hai DBV của các tập mục phải sử dụng nhiều

phép toán AND trên bit giữa các byte của hai DBV.

Cấu trúc MBiS đƣợc đề xuất và trình bày trong chƣơng 2 là cấu trúc

lƣu giữ các đoạn bit 1 liên tiếp nhau trên BitTable. MBiS có đặc điểm là xác

định giao giữa các tidset thông qua MBiS rất nhanh, do chỉ cần cập nhật lại

các đầu và cuối mỗi đoạn. Tuy nhiên, cấu trúc MBiS sẽ không có hiệu quả

nhiều trên các dữ liệu lớn do tính phân mảnh của tidset rất lớn dẫn đến

MBiS rất tốn bộ nhớ để lƣu trữ và tốn thời gian trong xác định giao do số

đoạn của mỗi MBiS lớn.

3.3.1.1. Xác định tidset của tập mục dựa trên EDBV

Luận án đề xuất cấu trúc EDBV (Extend DBV) và EIWS (Extend IWS)

bằng cách sử dụng các số nguyên lớn tám byte (Large Integer - LI) thay vì các

số nguyên một byte nhƣ DBV [38], MByS và hai byte nhƣ IWS Sử dụng các

85

LI giúp cho quá trình tính giao EDBV hay EIWS của hai tập mục nhanh hơn.

Do mỗi phép AND trên bit thực hiện trên các LI, mỗi LI có 64 bit đại diện

cho 64 giao dịch liên tiếp.

Tuy nhiên vấn đề đặt ra là làm thế nào để tính đƣợc wus của tập mục với EDBV và EIWS với các LI. Không đủ bộ nhớ định nghĩa trƣớc một mảng 264 phần tử để lƣu vị trí các bit 1 của các số trong khoảng từ 1 đến 264 nhƣ cách

làm trên MByS hay IWS.

Để tính nhanh tidset của tập mục phục vụ cho việc tính wus theo công thức 1.4, luận án định nghĩa trƣớc một mảng MAP gồm 216 (65536) phần tử

nhƣ đối với cấu trúc IWS. Trong đó, phần tử thứ i chứa một danh sách vị trí

các bit 1 của i tính từ trái qua phải đƣợc mô tả nhƣ Bảng 3.8:

Index

Bảng 3.8. Mảng MAP với 65.535 phần tử

Value 0000000000000001 0000000000000001 0000000000000010 …

111..110

111..111

MAP

Null

15

… 1, 2,.., 14, 15 1, 2,..,15, 16

16

0 2 … 65.534 65.535 1

Tiếp theo, sử dụng bốn phép AND trên bit với 65.535 kết hợp với ba

phép dịch phải bit để tách lần lƣợt các số nguyên hai byte (word) từ phải qua

trái. Mỗi lần AND với 65.535 ta đƣợc một word, ánh xạ word vào MAP ta

đƣợc danh sách vị trí các bit 1 trong word đó, từ đó ta xác định đƣợc ID giao

dịch của các tập mục.

Ví dụ 3.5: Cho K là một LI, K = 178.455.221.385.174.000, biểu diễn nhị

0000001001111010000000000001010000001110111110100001101111110000

phân của K bao gồm 64 bít nhƣ sau:

Cụ thể, số K đƣợc mô tả nhƣ trong Bảng 3.9

Binary 0000001001111010 0000000000010100 0000111011111010 0001101111110000

Index

634

3.834

7.126

20

MAP

7,10,11,12,13,15

5,6,7,9,10,11,12,13,15 4,5,7,8,9,10,11,12

12,14

Đoạn

1

3

4

2

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

634

20 3.834 7.126

AND

65.535 = 7.126  MAP[7.126] = {4, 5, 7, 8, 9, 10, 11, 12}

634

20 3.834

Bƣớc 1 0

AND

65.535 = 3.834 MAP[3.834]={5, 6, 7, 9, 10, 11, 12, 13, 15}

0

634

20

Bƣớc 2 0

AND

65.535 =

20  MAP[20] = {12, 14}

0

0

634

Bƣớc 3 0

AND

65.535 =

634  MAP[634] = {7, 10, 11, 12, 13, 15}

Hình 3.6. Sử dụng các phép AND và dịch bit để tách các đoạn hai byte

Hình 3.6 mô tả ba lần dịch bit trên K để tách các word, sau đó ánh xạ vào

MAP để có vị trí các bit trong các word đã đƣợc định nghĩa trƣớc.

Mệnh đề 3.1. Chỉ số của bit 1 có vị trí thứ i trong đoạn thứ j của word

thứ k thuộc EDBV trên bit-vector là l đƣợc xác định theo công thức 3.1:

(3.1) l = (k-1) × 64 + (j-1)×16 + i

Trong đó:

- j là số hiệu đoạn word của block

- i là chỉ số một bit 1 trong đoạn thứ j của block thứ k

- k là chỉ số word của EDBV.

Chứng minh:

Dễ thấy trƣớc block thứ k có (k - 1) × 64 bit (do mỗi block tám byte có

64 bit). Tƣơng tự trƣớc đoạn thứ j có (j - 1) × 16 (mỗi đoạn hai byte có 16

bit). Do đó, chỉ số bit 1 thứ i của đoạn thứ j thuộc block k trên bit - vector

đƣợc xác định theo công thức:

87

Index_bit-vector(i) =(k - 1) × 64 +(j - 1)×16 + i

Ví dụ 3.6: Với số K trong ví dụ 3.5, ta có tập vị trí các bit 1 của K đƣợc

xác định nhƣ sau:

Word thứ 4: 7.126 có tập chỉ số {4, 5, 7, 8, 9, 10, 11, 12} {52, 53, 55,

56, 57, 58, 59, 60} do mỗi số đƣợc cộng thêm với (4 - 1) 16 = 48 theo công

thức 3.1.

Word thứ ba: 3.834 có tập chỉ số {5, 6, 7, 9, 10, 11, 12, 13, 15} {37,

38, 39, 41, 42, 43, 44, 45, 47}, do mỗi vị trí đƣợc cộng thêm (3 - 1) 16 = 32

theo công thức 3.1.

Word thứ hai: 20 có tập chỉ số {12, 14} {20, 22} do mỗi vị trí đƣợc

cộng thêm (2 - 1) 16 = 16 theo công thức 3.1.

Word thứ nhất: 634 có tập chỉ số {7, 10, 11, 12, 13, 15} tập này giữ

nguyên do đây là word số một nên (j - 1) = 0 với j = 1

Do đó, tập hợp các index bit 1 của K là {7, 10, 11, 12, 13, 15, 20, 22, 37,

38, 39, 41, 42, 43, 44, 45, 47, 52, 53, 55, 56, 57, 58, 59, 60}.

3.3.1.2. Thuật toán tính nhanh wus của tập mục dựa trên mảng MAP

Tính wus theo công thức 1.4 là thao tác thƣờng xuyên trong các bài toán

khai thác FWUI. Do đó, đòi hỏi phải xác định đƣợc tidset của các tập mục

tƣơng ứng. Dựa trên mảng MAP và Mệnh đề 3.1, luận án đề xuất thuật toán

xác định nhanh wus của tập mục dựa trên mảng MAP đƣợc trình bày nhƣ

Thuật toán 3.4: FAST_ CALCULATION_WUS

Input: EDBV(X)

Output: wus của tập mục X

Methode name: FAST_CALCULATION_WUS()

FAST_CALCULATION_WUS(EDBV(X))

for all i EDBV(X) do //xét các word trong EDBV(X)

1

k = EDBV(X) [i];// lấy word thứ i

2

t = 3 // dùng để xác định vị trí các đoạn trong k

3

while (k > 0)

4

88

trong hình 3.7.

m = k &65535;// lấy đoạn thứ t trong k

5

pos = i × 64 +(t×16);

6

7

for all j MAP [m] do// xét danh sách với chỉ số m

8

tidset(X)pos + j;// ánh xạ ra vị trí trên bit-vector

9

k = k >> 16;// k dịch phải 16 bít

10

t- - ;// chuyển sang đoạn tiếp theo trên k

11

y = 0;

12

for all i tidset(X) do

13

y + = twu [i];

14

wus = y/sum_twu;

15

return wus

Hình 3.7. Thuật toán tính nhanh wus của các tập mục

3.3.2. Tính tidset nút cha từ tidset nút con

Việc thêm các mục cha vào CSDL khi khai thác tập mục trên CSDL

phân cấp theo các phƣơng pháp trƣớc đây làm cho bộ nhớ tăng lên và tốn thời

gian quét và chèn dữ liệu. Trong phần này, luận án đề xuất giải pháp tính

tidset mục cha thông qua các mục con của nó trên cây phân cấp - là các mục

có trong CSDL gốc.

Mệnh đề 3.2. Tidset của mục cha trên cây phân cấp đƣợc xác định bằng

hợp tidset các mục con của nó ở nút lá.

Nhƣ vậy, tidset(X) = tidset(X1) tidset(X2) ... tidset(Xk).

Trong đó X1, X2,..., Xk là các mục con ở nút lá của mục X.

Ví dụ 3.7: Xét CSDL HD, do H là cha của A và D trên cây phân cấp nên

tidset(H) = tidset(A) tidset(D) = {1, 3, 4, 5} {1, 3, 5, 6} = {1, 3, 4, 5, 6}

Chứng minh: Các mục cha thuộc các giao dịch có chứa mục con của nó

ở nút lá, do đó tidset của mục cha sẽ chính là hợp tidset của tất cả tidset các

89

mục con của nó ở nút lá.

Thuật toán xác định tidset mục cha dựa vào tidset mục con của nó đồng

Thuật toán 3.5: CREAT_TIDSET

Input: HQDB HD, minsup

Output: tập L chứa các 1-itemset

- Method name: CREAT_TIDSET()

CREAT_TIDSET(Tr)

for all t T do

1

twu [t] = 0;

2

L = ;

3

for all i t do

4

5

tidset(i) t;// cập nhật tidset cho mục i

6

twu [t] = twu [t] + quantity [i] weight [i];

7

for all h parent(i) of Tr do

8

tidset(h) t; //cập nhật tidset cho mục cha của i

9

weight(h) = Fun_weight(weight(h), weight(i));

10

quantity (h) = Fun_quantity(quantity(h), quantity(i);

11

L h;

12

for all l L do

13

twu [t] = twu [t] + quantity(l) weight(l);

thời tính twu của các giao dịch đƣợc trình bày nhƣ trong Hình 3.8.

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

Thuật toán CREAT_TIDSET() thực hiện nhƣ sau:

Dòng 2, quét lần lƣợt từng giao dịch, dòng 3, 4 gán các giá trị ban đầu

twu của giao dịch t = 0, L = là tập các mục cha có nút con trong giao dịch t.

Dòng 5 xét từng mục trong giao dịch t. Dòng 6, xây dựng tidset của mục i.

Dòng 7 tính twu của giao dịch t đối với mục i (là các mục có sẵn trong

CSDL). Dòng 8, xét các mục cha của mục i. Dòng 9 xây dựng tidset cho mục

cha của h, dòng 10 và 11 xác định weight và quantity cho mục h theo các

90

Định nghĩa 3.2 và 3.3. Dòng 12, kết nạp h vào L-tập các mục cha đƣợc thêm

vào giao dịch t. Dòng 13 và 14, tính twu [t] với các mục cha có nút con trong

giao dịch t.

Nhƣ vậy, thuật toán CREAT_TIDSET() chỉ cần một lần quét CSDL đã

xây dựng xong tidset của tất các các mục, đồng thời tính twu của các giao

dịch mà không cần phải thêm các mục cha vào CSDL nhƣ thuật toán

MINE_FWUIs trong Hình 3.4. Bằng việc xác định tidset mục cha thông qua

các mục con trong các giao dịch đã bỏ đƣợc công đoạn tiêu tốn nhiều thời

gian là quét và thêm các mục cha vào CSDL.

3.3.3. Kiểm tra mối quan hệ cha con đối với các mục trong tập mục

Dòng số 11 trong thuật toán MINE_FWUIs ở Hình 3.4 có chức năng

kiểm tra mối quan hệ cha con của các cặp hai mục trong X - là mục mới tạo

thành từ Fi và Fj, cũng giống nhƣ Vo và các đồng sự [37] đã xét hết tất cả các

cặp phần tử trong X với nhau (có tất cả 2 cặp với m là số lƣợng

mục của tập mục X). Trong phần này luận án đề xuất phƣơng pháp kiểm tra

nhanh tính cha con của các mục trong tập mục đƣợc tạo thành trên HIT-tree

dựa vào Mệnh đề 3.2 nhƣ sau:

Mệnh đề 3.3. Cho Fi = X1X2...XkY1 và Fj = X1X2…XkY2 là hai tập mục

thuộc hai nút bất kì trong cùng một lớp tƣơng đƣơng trên HIT-tree, tập mục X

= Fi Fj = X1X2…XkY1Y2. Ta nói rằng trong X không tồn tại hai cặp mục nào

có quan hệ cha con khi và chỉ khi Y1 và Y2 không có quan hệ cha con với nhau.

Chứng minh: Thật vậy, Fi = X1X2...XkY1, Fj = X1X2...XkY2 và X =

X1X2...XkY1Y2. Do Fi và Fj thuộc các nút trên HIT-tree nên không tồn tại cặp

mục nào có quan hệ cha con trong Fi và Fj Y1 và Y2 không có mối quan hệ

cha con với các mục trong tập {X1X2...Xk}. Đồng thời tập mục X1X2...Xk thuộc

mục cha của Fi và Fj trên HIT-tree, do đó X1X2…Xk không tồn tại mối quan hệ

cha con giữa các mục. Do đó, các mục trong X không có mối quan hệ cha con

khi và chỉ khi cặp {Y1, Y2} không có mối quan hệ cha con với nhau trên cây

91

phân cấp Tr.

3.3.4. Thuật toán khai thác nhanh FWUI trên HQDB

Dựa trên các cải tiến đã trình bày ở trên, thuật toán khai thác nhanh

FWUI từ HQDB có tên FAST_MINE_FWUIs đƣợc đề xuất trong phần này.

Trong đó module ADD_PARENT() đƣợc sử dụng trong thuật toán

MINE_FWUIs không còn đƣợc sử dụng trong thuật toán này. Đồng thời cấu

trúc EDBV với các phần tử là các LI và việc kiểm tra nhanh mối quan hệ giữa

Thuật toán3.6: FAST_MINE_FWUIs

Input: HQDBHD và độ đo minwus

Output: HIT-tree chứa tất cả các FWUI

Method name: FAST_MINE_FWUIs()

FAST_MINE_FWUIs()

CREATE_TIDSET(Tr)

1

2

F = { i (I J), wus_i minwus}; //tâp 1-itemset thỏa mãn minwus

3

HIT-tree ;

CREATE_HIT-TREE(F);

4

CREATE_HIT-TREE(F)

5

P = ; // khởi tạo một lớp mới

6

for all i F do

7

for j F (vớij>i)do //duyệt các j sau i

8

if (Y1 parent(Y2) and Y1 parent(Y2)) then

9

X = Fi Fj;

10

T = EDBV(Fi) EDBV(Fj); //T là EDBV của X

11

wus_X = FAST_CALCULATION_WUS(X);

12

if (wus_X minwus)then

13

P = P X, T, wus_X;

14

HIT-tree = HIT-tree X, T, wus_X;

15

CREATE_HIT-TREE(P)

các mục trong tập mục đƣợc thiết lập.

92

Hình 3.9. Thuật toán khai thác nhanh FWUI trên HQDB

Thuật toán FAST_MINE_FWUIs() trong Hình 3.9 sử dụng thủ tục

CREATE_TIDSET() với một lần quét CSDL để xây dựng tidset của các mục

bao gồm cả các mục thuộc mục cha trên cây phân theo Mệnh đề 3.2. Bên

cạnh đó, thuật toán này tính twu của tất cả các giao dịch. Dòng 10 của thuật

toán MINE_FWUIs() kiểm tra toàn bộ các cặp mục trong tập mục X đƣợc thay

bằng dòng 8 trong FAST_MINE_FWUIs() với việc kiểm tra đúng một cặp (Y1,

Y2), trong đóY1, Y2 lần lƣợt là các phần tử cuối cùng của Fi và Fj theo Mệnh đề

3.3. Dòng 12 trong MINE_FWUIs() đƣợc thay thế bằng dòng 10 trong

FAST_MINE_FWUIs() với việc sử dụng cấu trúc EDBV thay cho cấu trúc

DBV.

3.4. Kết quả thực nghiệm

3.4.1. CSDL thực nghiệm

CSDL thực nghiệm bao gồm ba CSDL SALE-FACT-1997, SALE-

FACT-1997+1998 và SALE-FACT-SYNC đƣợc cho trong bảng 2.7. Đây là

các HQDB rút ra từ CSDL Foodmart2000 của SQL2000. Bảng 3.10 mô tả về

các CSDL:

Bảng 3.10. Mô tả CSDL thực nghiệm

Tên CSDL Số lƣợng giao dịch

SALE-FACT-1997 20.522

SALE-FACT-1997+1998 54.537

SALE-FACT-SYNC 58.308

Các CSDL có chung cây phân cấp gồm sáu cấp đƣợc trình bày cụ thể

trong Bảng 3.11

Bảng 3.11. Các mức trên cây phân cấp

Mức Tên các mức Số lƣợng nút

1 Product_family 3

2 Product_department 24

93

3 Product_category 48

4 Product_subcategory 56

5 Product_class 110

6 Product 1560

Theo Bảng 3.11 các CSDL thực nghiệm có ba cây phân cấp (mức một có

ba nút). Độ cao của cây phân cấp là sáu (có sáu cấp).

3.4.2. Kết quả thực nghiệm

3.4.2.1. So sánh bộ nhớ

Bảng 3.12. So sánh bộ nhớ và số lƣợng các mục

CSDL

So sánh

MINE_FWUIs FAST_MINE_FWUIs

Số lƣợng mục

Bộ nhớ

Số lƣợng mục

275.539 86.837 SALE-FACT-1997 13,52 MB 4,65 MB

Bộ nhớ

783.639 251.395 SALE-FACT-

Số lƣợng mục

1997+1998 38,16 MB 13,46 MB

840.079 269.720 SALE-FACT-SYNC Bộ nhớ 40,92 MB 14,44 MB

Bảng 3.12 thể hiện việc thêm và không thêm các mục thuộc mục cha trên

cây phân cấp giữa hai thuật toán MINE_FWUIs và FAST_MINE_FWUIs. Số

lƣợng mục và dung lƣợng bộ nhớ tăng lên đáng kể sau khi thêm các mục cha

trên cây phân cấp vào CSDL.

Ví dụ với CSDL SALE-FACT-1997, số lƣợng mục ban đầu là 86.837,

sau khi thêm các mục cha là 275.539, nhƣ vậy việc thêm mục cha trên cây

phân cấp làm số lƣợng mục tăng 317%. Tƣơng tự nhƣ vậy, dung lƣợng dữ

liệu là 4,65 MB, sau khi thêm mục cha là 13,52 MB, nhƣ vậy dung lƣợng dữ

liệu tăng 290%.

3.4.2.2. Thực nghiệm với hàm MAX và SUM

Khi sử dụng hàm MAX hoặc SUM để xác định trọng số và số lƣợng của

các mục nút cha sẽ có bốn trƣờng hợp có thể xảy ra gồm: (max, max), (max,

sum), (sum, sum), (sum, max). Trong đó cặp (max, max) nghĩa là sử dụng

94

hàm MAX trong xác định trọng số và số lƣợng, tƣơng tự cho các cặp còn lại.

Trong mục này, luận án thống kê số lƣợng và tỉ lệ G-FWUI (Generalized

FWUI: là các FWUI chứa ít nhất một mục cha trên cây phân cấp) trên CSDL

SALE-FACT-SYNC với 02 ngƣỡng minwus khá nhỏ là 0,001% và 0,003%.

Đồng thời, so sánh số lƣợng và tỉ lệ G-FWUI khai thác đƣợc khi sử dụng cặp

hàm (max, max) và (sum, sum) khi xác định trọng số của các mục cha và số

lƣợng của các mục cha trong từng giao dịch.

minwus = 0,001%

minwus = 0,003%

G-FWUI

G-FWUI

Số

cấp

(max, max)

(sum, sum)

(max, max)

(sum, sum)

%

Số lƣợng %

Số lƣợng %

Số lƣợng %

Số lƣợng

0

1559

102

3 65,57% 4.528 73,99%

5.993

62,3%

818

87,53%

1.719

4 92,84% 21.783 95,48% 34.476 90,50% 4.128 97,52%

6.821

5 98,49% 103.292 99,16% 185.371 97,88% 1.906 99,43% 30.612

6 98,97% 151.435 99,43% 274.248 98,58% 26.580 99,62% 45.827

Bảng 3.13. Thực nghiệm trên CSDL SALE-FACT-SYNC

Số liệu thực nghiệm từ bảng 3.13 với CSDL SALE-FACT-SYNC cho

thấy cây có độ cao càng lớn thì số lƣợng các FWUI khai thác đƣợc càng lớn,

điều này là hợp lý do càng có nhiều mục cha đƣợc thêm vào CSDL hơn.

Tƣơng tự nhƣ thế, số lƣợng G-FWUI cũng đƣợc khai thác nhiều hơn.

So sánh tỉ lệ và số lƣợng G-FWUI khai thác đƣợc khi sử dụng cặp hàm

(sum, sum) và (max, max) cũng có sự khác biệt đáng kể, trong đó số lƣợng

khi sử dụng cặp hàm (sum, sum) lớn hơn khá nhiều so với cặp hàm (max,

max) trong cùng một ngƣỡng phổ biến wus. Ví dụ với wus = 0,003% và cây

phân cấp có sáu cấp, số lƣợng G-FWUI khi sử dụng cặp hàm (max, max) là

26.580, khi sử dụng cặp hàm (sum, sum) là 45.827. Do khi sử dụng cặp hàm

95

(sum, sum) sẽ tạo ra các mục cha có số lƣợng và trọng số lớn hơn khi sử dụng

cặp hàm (max, max), nên các mục nút cha sẽ tạo ra nhiều G-FWUI hơn khi

kết hợp với các mục trong CSDL có trọng số và số lƣợng nhỏ. Đây là lý do

mà sử dụng cặp hàm (sum, sum) sẽ tạo ra nhiều G-FWUI nhất so với các cặp

hàm còn lại.

Tùy theo CSDL thực tế nhƣ thế nào mà việc xác định trọng số hay số

lƣợng của các mục nút cha sẽ sử dụng cặp hàm nào trong bốn cặp trên cho

phù hợp.

3.4.2.3. So sánh thời gian

Kết quả thực nghiệm trên ba CSDL cho trong Bảng 3.10 với thuật toán

MINE_FWUIs khi sử dụng các cấu trúc DBV, MBiS, EDBV và EIWS đƣợc

DBV

308,02

MBiS

234,82

EDBV

chỉ ra trong các hình 3.10-3.12:

) s ( e m

174,82 156,32

EIWS

i t

350 300 250 200 150 100 050 000

000

000

000

000

000

000 minwus (%)

2634,16 2228,732

Hình 3.10. So sánh thời gian trên CSDL SALE-FACT-1997

) s ( e m

DBV MBiS SDBV EIWS

i t

1028,981 899,458

3000 2500 2000 1500 1000 500 0

0.3

0.2

0.1

0.06

0.03

0.01

minwus(%)

96

Hình 3.11. So sánh thời gian trên CSDLSALE-FACT-1997+1998

3000

DBV

2757,776

2500

MBiS

2109,512

2000

EDBV

1500

) s ( e m

1292,55

i t

EIWS

1000

910,23

500

0

0.3

0.2

0.1

0.06

0.03

0.01

minwus(%)

Hình 3.12. So sánh thời gian trên CSDL SALE-FACT-SYNC

Hình 3.10-3.12 so sánh thời gian chạy của bốn cấu trúc DBV, MBiS,

EDBV và EIWS với thuật toán MIN_FWUIs. Kết quả thực nghiệm chỉ ra

rằng thuật toán MINE_FWUIs hiệu quả nhất khi sử dụng cấu trúc EIWS. Ví

dụ, CSDL SALE-FACT-1997, với ngƣỡng minwus = 0,01%, thời gian chạy

với DBV, MBiS, EDBV và EIWS lần lƣợt là 308,02s, 234,82s, 174,82s và

156,32s. Nhƣ vậy EIWS nhanh hơn EDBV, MBiS vàDBV lần lƣợt là 1,12;

1,34 và 1,76 lần.

Cũng nhƣ các kết quả thực nghiệm trong chƣơng 2, các cấu trúc IWS và

MBiS có hiệu quả trên CSDL thƣờng và CSDL thƣa. Do đó đối với khai thác

tập mục phổ biến trên CSDL số lƣợng có sự phân cấp mục cũng có kết quả

tƣơng tự. Ngoài ra, ta có thể thấy thời gian khai thác FWUI trên CSDL số

lƣợng có sự phân cấp lớn hơn so với trên CSDL số lƣợng thông thƣờng (cùng

so sánh trên các CSDL SALE-FACT) do việc thêm các mục nút cha trên cây

phân cấp vào CSDL và phải xác định trọng số, số lƣợng cho các mục này.

Đồng thời trong quá trình khai thác luôn phải kiểm tra mối quan hệ cha con

giữa các mục trong tập mục mới tạo thành. Mặt khác, sau khi thêm các mục

nút cha vào CSDL, CSDL mới tạo thành cũng lớn hơn CSDL gốc do đó cũng

cần nhiều thời gian hơn để khai thác trên CSDL mới so với CSDL gốc.

Kết quả thực nghiệm với thuật toán FAST_MINE_FWUIs và

97

MINE_FWUIs đƣợc trình bày qua các Hình 3.13-3.15:

200

MINE_FWUIs- EIWS

156,321

150

FAST_MINE_FWUIs-EIWS

100

) s ( e m

50

i t

45,563

0

0.3

0.2

0.03

0.01

0.1

0.06 minwus(%)

1000

MINE_FWUIs-EIWS

393,452

800

FAST_MINE_FWUIs-EIWS

600

400

899,458

Hình 3.13. So sánh thời gian trên CSDL SALE-FACT-1997

) s ( e m

i t

200

0

0.3

0.2

0.1

0.06

0.03

0.01

minwus(%)

1500

MINE_FWUIs - EIWS

495,872

1000

FAST_MINE_FWUIs -EIWS

Hình 3.14. So sánh thời gian trên CSDL SALE-FACT-1997+1998

) s ( e m

1021,441

i t

500

0

0.3

0.2

0.1

0.06

0.03

0.01

minwus(%)

Hình 3.15. So sánh thời gian trên CSDL SALE-FACT-SYNC

Hình 3.13-3.15 chỉ ra sự hiệu quả của thuật toán FAST_MINE_FWUIs

so với MINE_FWUIs khi cùng sử dụng cấu trúc EIWS. Điều này thể hiện các

ƣu điểm của việc không chèn thêm mục cha vào CSDL và xác định nhanh

mối quan hệ cha con của tập mục tạo thành từ hai tập mục trong cùng một lớp

tƣơng đƣơng trên HIT-tree. Cụ thể ta có kết quả đối với CSDL SALE-FACT-

98

1997 nhƣ trong Bảng 3.14 sau đây:

Bảng 3.14. So sánh thời gian chạy trên CSDL SALE-FACT-1997

MINE_FWUIs FAST_MINE_FWUIs Thuật toán

DBV MBiS EDBV EIWS EDBV EIWS minwus

0,3% 18,41 16,68 11,68 6,21 4,68 2,33

0,2% 45,59 33,53 21,53 12,38 11,53 6,43

0,1% 57,26 42,03 26,03 19,32 17,03 10,12

0,06% 71,82 60,92 30,923 28,41 24,92 14,24

0,03% 121,46 90,76 52,76 45,46 30,76 18,54

0,01% 308,02 234,82 174,13 156,32 90,65 45,56

Từ bảng 3.14, với minwus = 0,01% thuật toán FAST_MINE_FWUIs với

cấu trúc EDBV có thời gian chạy là 90,65s nhanh hơn thuật toán

MINE_FWUIs (174,13s) là 1,93 lần. Điều này cho thấy tính hiệu quả của việc

không thêm mục cha vào CSDL và việc xác định nhanh mối quan hệ cha con

của các mục trong tập mục tạo thành từ hai tập mục trong cùng một lớp tƣơng

đƣơng của HIT-tree.

Bên cạnh đó, cấu trúc EIWS cho thấy hiệu quả khá tốt so với các phƣơng

pháp khác. Ví dụ với minwus = 0,01%, thuật toán FAST_MINE_FWUIs với

cấu trúc EDBV có thời gian chạy là 90,65s, với cấu trúc EIWS có thời gian

chạy là 45,56s. Nhƣ vậy sử dụng cấu trúc EIWS nhanh hơn 49,8% so với cấu

trúc EDBV.

Các kết quả thực nghiệm về mặt thời gian trên đã cho thấy thuật toán

FAST_MINE_FWUIs nhanh hơn hẳn thuật toán MINE_FWUIs trong khai

thác tập mục phổ biến trên CSDL số lƣợng có sự phân cấp mục. Điều này

chứng tỏ các cải tiến đã trình bày trong phần 3.3 của chƣơng 3 này là có hiệu

99

quả rõ rệt.

3.5. Kết luận chƣơng

Chƣơng này của luận án đề xuất hai cấu trúc EDBV và EIWS với các

phần tử là các LI, đây là các mở rộng của DBV và IWS. Đồng thời đề xuất sử

dụng mảng MAP định nghĩa trƣớc vị trí các bit 1 của các số nguyên hai byte

và sử dụng các phép dịch và AND bit để “cắt” các word (hai byte) từ các LI

để ánh xạ vào mảng MAP để tính tidset của các tập mục giúp tính nhanh wus

của chúng. Các kết quả thực nghiệm từ Hình 3.10-3.12 đã cho thấy hiệu quả

của EIWS và EDBV đối với các cấu trúc trƣớc đó trên ba CSDL thực nghiệm

lấy từ bản Foodmart2000 của SQL2000.

Bên cạnh đó, chƣơng này đề xuất hai mệnh đề nhằm tối ƣu bộ nhớ và tiết

kiệm thời gian khai thác FWUI trên HQDB. Thứ nhất, Mệnh đề 3.2 đƣa ra

cách xác định tidset mục cha thông qua tidset của các mục con ở nút lá trên

cây phân cấp. Bằng mệnh đề này, việc khai thác trên HQDB không tốn thời

gian thêm mục cha vào các giao dịch của HQDB nhƣ các phƣơng pháp trƣớc

đây và đồng thời không tốn bộ nhớ để lƣu trữ các mục cha này trong CSDL,

điều này thật sự có hiệu quả, nhất là trên các CSDL có nhiều cây phân cấp và

độ sâu của các cây phân cấp là lớn. Thứ hai, Mệnh đề 3.3 chứng minh việc

xác định trong tập mục mới tạo thành từ hai tập mục cùng lớp tƣơng đƣơng

trên HIT - tree bằng cách kiểm tra mối quan hệ của đúng một cặp mục cuối

của tập mục mới. Trong khi các phƣơng pháp trƣớc đây kiểm tra 2 (m - 1)

cặp với m là số lƣợng mục của tập mục cần kiểm tra. Kết quả thực nghiệm từ

Hình 3.13 - 3.15 cho thấy hiệu quả khi áp dụng hai mệnh đề đề xuất trong

100

chƣơng này.

KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN

Các kết quả đạt được

Luận án đã khảo sát các nghiên cứu đã có về khai thác tập mục phổ biến

trên CSDL, đặc biệt là khai thác FWI và FWUI trên CSDL số lƣợng và khai

thác FI trên CSDL có sự phân cấp các mục. Trên cơ sở đó, luận án đề xuất

cấu trúc MBiS [I], cấu trúc IWS [II] cấu trúc DTab [IV] để khai thác hiệu quả

tập mục phổ biến trên CSDL số lƣợng. Tiếp đến, luận án đề xuất bài toán 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. Luận án

đề xuất một số cải tiến nhƣ tính tidset của mục cha dựa trên tidset các mục

con, cấu trúc EDBV, EIWS là các mở rộng của các cấu trúc DBV và IWS áp

dụng trong khai thác hiệu quả tập mục trên CSDL số lƣợng có sự phân cấp

các mục. Các kết quả nghiên cứu nêu trên đã đƣợc công bố trên các tạp chí và

hội thảo trong nƣớc và quốc tế uy tín.

Đối với khai thác tập mục trên CSDL số lƣợng, các cấu trúc dữ liệu đƣợc

đề xuất trong luận án là IWS và MBiS là các cấu trúc mới theo hƣớng tiếp cận

bit-vector, cải tiến hiệu quả rõ rệt so với các cấu trúc đã có nhƣ BitTable hay

DBV về bộ nhớ sử dụng cũng nhƣ thời gian xử lý. Bên cạnh đó, đối với cấu

trúc IWS, luận án đề xuất sử dụng một mảng MAP định nghĩa trƣớc vị trí bit

1 trong các phần tử của cấu trúc để tính nhanh wus (đối với khai thác FWUI)

và ws (đối với khai thác FWI) trên CSDL số lƣợng. Đồng thời luận án đề xuất

cấu trúc DTab và DHeap đối với khai thác Top-rank-k tập mục phổ biến trên

CSDL số lƣợng. Hiệu quả của các cấu trúc này đƣợc minh họa cụ thể qua các

kết quả thực nghiệm trong chƣơng 2.

Đối với khai thác tập mục trên CSDL số lƣợng có sự phân cấp các mục,

hai cấu trúc EDBV và EIWS là mở rộng của các cấu trúc DBV và IWS tƣơng

ứng, bằng cách sử dụng các phần tử là các LI. Luận án đƣa ra giải pháp sử

dụng các phép dịch bit và AND bit để vẫn sử dụng đƣợc mảng MAP nhƣ đối

101

với cấu trúc IWS giúp tính nhanh wus (đối với khai thác FWUI) và ws (đối

với khai thác FWI). Bên cạnh đó, luận án đề xuất một số mệnh đề nhằm xác

định tidset của các mục cha thông qua tidset của mục con trên cây phân cấp

và xác định nhanh mối quan hệ cha con của các mục trong một tập mục để

giảm bộ nhớ lƣu trữ CSDL và tăng tốc tính toán cho bài toán khai thác FWUI

trên HQDB. Các kết quả thực nghiệm trong chƣơng 3 đã cho thấy sự hiệu quả

của các đề xuất đối với bài toán này.

Hướng phát triển

Luận án đã nghiên cứu các phƣơng pháp khai thác tập mục phổ biến trên

CSDL số lƣợng và CSDL số lƣợng có sự phân cấp các mục. Luận án đề xuất

một số thuật toán với các cấu trúc dữ liệu mới hiệu quả hơn các phƣơng pháp

khai thác tập phổ biến đã có. Tuy nhiên, các bài toán trên CSDL số lƣợng có

sự phân cấp các cần đƣợc mở rộng và nghiên cứu tiếp nhƣ:

1. Giải quyết bài toán khai thác tập mục phổ biến đóng, tập phổ biến tối đại

đối với HQDB.

2. Nghiên cứu các hƣớng tiếp cận hiệu quả hơn trong khai thác tập mục phổ

biến trên HQDB dày.

3. Mở rộng bài toán khai thác FWUI trên HQBD lớn, khi đó cần sử dụng các

hệ thống tính toán hiệu năng cao để giải quyết bài toán với các mô hình

song song hóa thuật toán một cách hợp lý.

4. Giải quyết bài toán khai thác tập mục phổ biến với CSDL số lƣợng có

nhiều tham số (trọng số, thời gian, giá trị, mức độ yêu thích, v.v…) của

102

các mục.

DANH MỤC CÔNG TRÌNH KHOA HỌC CỦA TÁC GIẢ

LIÊN QUAN ĐẾN LUẬN ÁN

[I] Nguyen Duy Ham, Vo Dinh Bay, Nguyen Thi Hong Minh, Tzung Pei

Hong (2015), “MBiS: an efficient method for mining frequent weighted

utility itemsets from QDB”, Journal of Computer Science and Cybernetics,

31(1), pp.17–30.

[II] Nguyen Duy Ham, Bay Vo, Nguyen Thi Hong Minh, Tzung Pei Hong

(2015), “An improved algorithm for mining frequent weighted itemsets”,

in Proc. of the International conf on IEEE System, Man, Cybernetics,

Hong Kong, pp. 2579–2584.

[III] Nguyễn Duy Hàm, Võ Đình Bảy, Nguyễn Thị Hồng Minh (2015), “Thuật

toán hiệu quả khai thác tập phổ biến từ cơ sở dữ liệu số lƣợng có sự phân

cấp mục”, Hội nghị khoa học quốc gia lần thứ 8:“Nghiên cứu cơ bản và

ứng dụng CNTT”, Viện CNTT – Đại học Quốc gia Hà Nội, tr. 679-686.

[IV] Nguyễn Duy Hàm, Võ Đình Bảy, Nguyễn Thị Hồng Minh (2015),

“Thuật toán hiệu quả khai thác Top – rank – k tập phổ biến trọng số hữu

ích”, Hội thảo quốc gia lần thứ 18: “Một số vấn đề chọn lọc về CNTT và

TT”, tr. 312–317.

[V] Nguyen Duy Ham, Bay Vo, Nguyen Thi Hong Minh, Witold Pedrycz (2016), “An Efficient Algorithm for Mining Frequent Weighted Itemsets

using Interval Word Segments”, Applied Intelligence, pp.1 -13.

103

[1] Agrawal, R., & Srikant, R. (1994). Fast algorithms for minings association rules.

Proc. of the 20th International Conf on Very Large Data Bases, pp. 487-499.

[2] Agrawal, R., Imielinski, T., & Swami, A. (1993). Mining association rules

between sets of items in large databases. Proc. of the 1993 ACM SIGMOD

International conference on Management of data, 22(2), 207-216.

[3] Agrawal, R., Mannila, H., Srikant, R., Toivonen, H., & Verkamo, I. A. (1996).

Fast discovery of association rules. Proc.of Conf on Advances in Knowldege

Discovery and Data Mining, pp. 307-328.

[4] Ali, Z. S., & Rathore, Y. (2014.). A effective and efficient algorithm for cross

level frequent pattern mining. Proc. of Conf on Advances in Engineering and

Technology Research, pp. 1-6.

[5] Baralis, E., Cagliero, L., Cerquitelli, T., & Garza, P. (2012). Generalized

association rule mining with constraints. Information Science (Elsevier

Science Inc), 194, pp. 68-84.

[6] Baralis, E., Cagliero, L., Cerquitelli, T., D’Elia, V., & Garza, P. (2014).

Expressive generalized itemsets. Information Sciences, 278, pp. 327-343.

[7] Cai, C. H., Fu, A. C., Cheng, C. H., & Kwong, W. W. (1998). Mining

association rules with weighted items. Proc. of Conf on IEEE Intelligence

Database Engineering and Applications Symposium, pp. 68-77.

[8] Deng, H. Z., & Fang, G. (2007). Mining top-rank-k-frequent patterns. Proc. of

Conf on Machine Learning and Cybernetics, pp. 1763-1768.

[9]

Deng, H.-Z. (2012). A new algorithm for fast mining frequent itemsets using

N-list. Science china information science, 55(9), pp. 2008-2030.

[10] Deng, H.-Z., & Long, S. (2014). Fast mining frequent itemsets using

Nodesets. Expert Systems with Applications, 41(10), pp. 4505-4512.

[11] Deng, Z.-H. (2014). Fast mining top-rank-k - frequent patterns by using Node-

list. Expert Systems with Applications, pp. 1763-1768.

104

TÀI LIỆU THAM KHẢO

[12] Deng, Z.-H., & Lv, S.-L. (2015). PrePost+: An efficient N-Lists-based

Algorithm for Mining Frequent Itemsets via Children-Parent Equivalence

Pruning. Expert Systems with Applications, 42(13), pp. 5424-5432.

[13] Dong, J., & Han, M. (2007). BitTable-FI An efficient mining frequent itemsets

algorithm. Knowledge-Based Systems, 20(4), pp. 329-335.

[14] Elena, B., Luca, C., Tania, C., & Paolo, G. (2012). Generalized association rule

mining with constraints. Information Science (Elsevier Science Inc), 194, 68-84.

[15] Elena, B., Luca, C., Tania, C., Vincenzo, D., & Paolo, G. (2014). Expressive

generalized itemsets. Information Sciences, 278, 327-343.

[16] Erwin, A., Gopalan, R. P., & Achuthan, R. N. (2007). CTU-Mine: An efficient

hight utility itemset mining algorithm using the pattern growth approach.

Computer and Informaition Technology, CIT, pp. 71-76.

[17] Fang, G., & Deng, Z.-H. (2008). VTK: Vertical mining of top-rank-k frequent

pattern. Proc. of the Conf on Fifth International Fuzzy Systems and

Knowdelge Discovery 2008, pp. 620 - 624.

[18] Grahne, G., & Zhu, J. (2005). Fast algorithms for frequent itemset mining

using FP-trees. Proc. of Conf on IEEE Transactions on Knowledge anh Data

Mining and Data Engineering, 17(10), pp. 1347-1362.

[19] Han , J., Pei , J., & Yin, Y. (2000). Mining frequent patterns without candidate

generation. Proc. of conf on ACM SIGMOD Management of Data, pp. 1-12.

[20] Han, J., & Fu, F. (1995). Discovery of multiple-level association rules from

large databases. Proc. of 21th conf on Very Largr Databases, (pp. 420-431).

Zurich, pp. 420-431.

[21] Khan, M. S., Muyeba, M., & Coenen, F. (2008). A weighted utility framework

for mining association rules. Proc. of conf on IEEE European Modeling

Symposium, pp. 87-92.

[22] Lan, C. G., Hong, P. T., & Lee, Y. H. (2014). An efficient approach for

finding weighted sequential patterns from sequence databases. Applied

Intelligence, 41(2), pp. 439-452.

105

[23] Lan, C. G., Hong, P. T., Lee, Y. H., Wang, L. S., & Tsai, W. C. (2013).

Enhancing the efficiency in mining weighted frequent itemsets. Proc. of IEEE

Internationnal conf on System, Man, Cybernetics (SMC), pp. 1104-1108.

[24] Lan, G. C., Hong, P. T., & Tseng, V. S. (2011). Discovery of hight utility

itemsets from on-shelf time periods of products. Expert Systems with

Applications, 38(6), pp. 5851-5857.

[25] Le, B., Cao, T. A., Nguyen, H., & Vo, B. (2009). A novel algorithm for

mining hight utility itemsets. Proc. of the Conf on 1st Asian Inteleigent

Information and Databases systems, pp. 13-16.

[26] Le, B., Vo, B., Le, Q., & Le, T. (2015). Enhancing the mining top-rank-k

frequent patterns. Proc. of IEEE internationnal conf on System, Man,

Cybernetics (SMC), pp. 2008-2012

[27] Le, T., & Vo, B. (2015). An N-list-based algorithm for mining frequent closed

patterns. Expert Systems with Applications, 42(19), pp. 6648-6657.

[28] Lee, Y. C., Hong, P. T., & Chen C, H. (2010). Mining Generalized

Association Rules with Quantitative Data under Multiple Support Constraints,

Computational Collective Intelligence. Technologies and Applications Lecture

Notes in Computer Science, 6422, pp. 224-231.

[29] Lin, W. C., Lan, C. G., & Hong, P. T. (2015). Mining hight utility itemsets for

transaction deletion in a dynamic databases. Intelligence Databases Analys,

pp. 43-55.

[30] Liu, B., Hsu, W., & Ma, Y. (1999). Mining association rules with multiple

mining supports. Proc. of International Conf on Knowdelge Discovery and

Data Mining, pp. 337-341.

[31] Louie, E., & Lin, T. (2000). Finding Association Rules Using Fast Bit

Computation: Machine-Oriented Modeling. Foundations of intelligent system

International Symposium, ISMIS , pp. 497-505.

[32] Ramkumar, G. D., Ranka, S., & Tsur, S. (1998). Weighted Association Rules:

Model and Algorithm. Proc. of conference on Knowledge Discovery and Data

Mining - KDD, pp. 1-13.

106

[33] Song, W., Yang, B., & Xu, Z. (2008). Index-BitTableFI: An improve

algorithm for mining frequent itemsets. Knowledge - Based System, 21(6), pp.

507-513.

[34] Tao, F., Murtagh, F., & Farid, M. (2003). Weighted Association Rules mining

using weighted support and signifocance framework. Proc. of conference on

ACM SIGKDD, pp. 661-666.

[35] Tseng, M. C., & Lin, W. Y. (2007). Efficient mining of generalized

association rules with non-uniform minimum support. Data & Knowledge

Engineering, 66(1), pp. 41-64.

[36] Vo, B., & Le, B. (2009). Fast Algorithm for Mining Generalized Association

Rules. International Journal of Database and Application, 2(3), pp. 1-12.

[37] Vo, B., Coenen, F., & Le, B. (2013). A new method for mining Frequent

Weighted Itemsets base on WIT-trees. Expert systems with Applications,

40(4), pp. 1256-1264.

[38] Vo, B., Hong, P. T., & Le, B. (2012). DBV-Miner: A Dynamic Bit - Vector

approach for fast mining frequent close itemsets. Expert Systems with

Applications, 39(8), pp. 7196-7206.

[39] Vo, B., Le, B., & Jason, J. J. (2012). A Tree-based Approach for Mining

Frequent Weighted Utility Itemsets. Computational Collective Intelligence

Tecnologies and Applications, 7653, pp. 114-123.

[40] Vo, B., Le, T., Coenen, F., & Hong, P. T. (2016). Mining frequent itemsets

using the N-list and subsume concepts. International Journal of Machine

Learning and Cybernetics, 7(2), pp 253-265

[41] Vo, B., Nguyen, Y., & Nguyen, D. (2013). Mining frequent weighted closed

itemsets. Proc. of Conf on Advanced Computational Methods for Knowledge

Engineering, pp. 379-390.

[42] Wang, W., Yang, J., & Yu, P. (2000). Efficient mining of weighted

association rules (WAR). Proc. of the conference on ACM SIGKDD

Knowledge Discovery and Data Mining, pp. 270-274.

107

[43] Yang, J. K., Hong, P. T., Lan, C. G., & Chen, M. Y. (2014). A two phase

approach

for mining weighted partial periodic pattern. Engineering

Applications of Artificial Intelligence, 30(4), pp. 225-234.

[44] Yun, U., & Eunchul, Y. (2014). An efficient approach for mining weighted

approximate closed

frequent patterns considering noise constraints.

International Journal of Uncertainty Fuzziness and Knowledge-Based Systems

22(6), pp. 879-912.

[45] Yun, U., & Leggett, J. J. (2005). WFIM: Weighted Frequent Itemset Mining

with a weight range and a minimum weight. In: Proceedings of SIAM

International Conference on Data Mining, pp. 636-640.

[46] Yun, U., & Leggett, J. J. (2006). WSpan: Weighted Sequential pattern mining

in large sequence databases. Pro. of IEEE International Conference on

Intelligent Systems, pp. 512-517.

[47] Yun, U., & Pyun, G. (2015). Efficient mining of robust closed weighted

sequential patterns without information loss. International Journal on

Artificial Intelligence Tools, 24(1), pp. 1-28.

[48] Yun, U., Lee, G., & Ryu, H. K. (2014). Mining maximal frequent patterns by

considering weight conditions over data streams. Knowl.-Based Syst. 55, pp.

49-65.

[49] Zaki, M. J. (2000). Scalable algorithms for association mining. IEEE

transactions on Knowledge and Data Engineering, 12(3), pp. 372-390.

[50] Zaki, M. J., & Gouda, K. (2003). Fast vertical mining using Diffset. Proc. of

the ninth ACM SIGKDD International conf on Knowledge Discovery and

Data Mining, pp. 327-335.

108