Để đánh giá hiệu quả của các thuật toán Eclat và các biến thể chúng tôi sử dụng 10 bộ cơ sở dữ liệu giao tác với các đặc tính khác nhau số lượng giao tác, số lượng mục dữ liệu quan tâm,
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC NHA TRANG
Trang 2LỜI CAM ĐOAN
Tôi xin cam đoan mọi kết quả của đề tài: “Nghiên cứu thuật toán khai phá tập
phổ biến Eclat và các biến thể” là công trình nghiên cứu của cá nhân tôi và chưa từng
được công bố trong bất kỳ công trình khoa học nào khác cho tới thời điểm này
Nha Trang, ngày 18 tháng 10 năm 2019
Tác giả luận văn
Nguyễn Thị Hương Lý
Trang 3LỜI CẢM ƠN
Trước hết, tôi muốn gửi lời cảm ơn đến quý phòng ban trong trường Đại học Nha Trang, các thầy cô giáo tham gia giảng dạy khóa cao học của chúng tôi và trong Khoa Công nghệ Thông tin trường Đại học Nha Trang Đặc biệt, tôi xin gửi lời cảm ơn sâu sắc đến thầy TS Nguyễn Đức Thuần - người đã dành nhiều thời gian định hướng, hướng dẫn và tư vấn giúp tôi hoàn thành luận văn
Tiếp đến, tôi xin cảm ơn gia đình, bạn bè và đồng nghiệp đã luôn ủng hộ, động viên để tôi nghiên cứu, thực nghiệm và hoàn thành luận văn
Trong quá trình làm luận văn, bản thân tôi đã cố gắng tập trung tìm hiểu, nghiên cứu thêm nhiều tài liệu liên quan, tuy nhiên luận văn có thể còn những thiếu sót nhất định Tôi rất mong được nhận sự góp ý của các Thầy Cô giáo và bạn bè, đồng nghiệp về luận văn và các kết quả nghiên cứu
Tôi xin chân thành cảm ơn!
Nha Trang, ngày 18 tháng 10 năm 2019
Tác giả luận văn
Nguyễn Thị Hương Lý
Trang 4MỤC LỤC
Lời cam đoan iii
Lời cảm ơn iv
Mục lục v
Danh mục chữ viết tắt vii
Danh mục bảng viii
Danh mục hình ix
Danh mục biểu đồ x
Trích yếu luận văn xi
Mở đầu 1
Chương 1 KHAI PHÁ DỮ LIỆU VÀ KHAI PHÁ TẬP PHỔ BIẾN 2
1.1 Khai phá dữ liệu 2
1.1.1 Khái niệm Khai phá dữ liệu 2
1.1.2 Kiến trúc điển hình của một hệ thống khai phá dữ liệu 4
1.1.3 Một số kỹ thuật khai phá dữ liệu 5
1.2 Ứng dụng của khai phá dữ liệu 6
1.3 Một số khó khăn trong khai phá dữ liệu 6
1.4 Khai phá Luật kết hợp 7
1.4.1 Giới thiệu và các khái niệm cơ bản 7
1.4.2 Các phương pháp khai phá tập phổ biến và luật kết hợp 10
1.5 Dàn các tập mục dữ liệu 11
1.6 Thuật toán vét cạn khai phá tập phổ biến 12
1.7 Thuật toán Apriori 13
1.8 Thuật toán FP-Growth 16
1.8.1 Thuật toán sinh cây FP-Tree từ CSDL giao tác 16
1.8.2 Thuật toán FP-Growth 19
Kết luận chương 1 20
Chương 2 THUẬT TOÁN ECLAT VÀ CÁC BIẾN THỂ 21
2.1 Giới thiệu 21
2.2 Biều diễn dữ liệu theo chiều ngang và theo chiều dọc 21
2.3 Thuật toán Eclat 23
2.3.1 Sinh tập ứng viên 23
2.3.2 Tính toán độ hỗ trợ 26
2.3.2 Mã giả thuật toán Eclat 27
Trang 52.4 Thuật toán dEclat 28
2.5 Thuật toán PostDiffset 31
2.6 Thuật toán BI-Eclat 32
Kết luận chương 2 35
Chương 3 KẾT QUẢ VÀ HƯỚNG PHÁT TRIỂN 36
3.1 Cài đặt chương trình và thực nghiệm 36
3.2 Thực nghiệm và đánh giá 37
3.2.1 CSDL Chess 37
3.2.2 CSDL Connect 39
3.2.3 CSDL Mushrom 40
3.2.4 CSDL Accidents 42
3.2.5 CSDL T40I10D100K 44
3.2.6 CSDL Pumb 45
3.2.7 CSDL T10I4D100K 47
3.2.8 CSDL PUMSB_STAR 49
3.2.9 CSDL Retail 50
3.2.10 CSDL Kosarak 52
Kết luận chương 3 53
Tài liệu tham khảo 56 Phụ lục
Trang 6R_supp : Relative support (Độ hỗ trợ tương đối)
𝔽 : Frequent itemset (Tập mục phổ biến)
Min_supp : min support (Độ hỗ trợ tối thiểu do người dùng tự định nghĩa)
Conf : Confidient (Độ tin cậy)
Min_conf : Min confidient (Ngưỡng tin cậy tối thiểu)
BFS : Breadth – first search (Tìm kiếm theo chiều rộng)
DFS : Depth – first search (Tìm kiếm theo chiều sâu)
FP-Tree : Frequent Pattern Tree (Cấu trúc cây FP-tree)
FP-Growth : Frequent Pattern Growth (Thuật toán phát triển mẫu phổ biến)
Tid : Transaction Identifer (Mã giao tác)
Tid set : Transaction Indentifer set (Tập mã giao tác)
FIM : Frequent Itemset Mining (Khai phá tập phổ biến)
Trang 7DANH MỤC BẢNG
Bảng 1.1 Ví dụ về một cơ sở dữ liệu giao tác 8 Bảng 3.1 Thông tin về các CSDL thực nghiệm 36
Trang 8DANH MỤC HÌNH
Hình 1.1 Quá trình phát hiện tri thức và khai phá dữ liệu 3
Hình 1.2 Kiến trúc điển hình của một hệ thống khai phá dữ liệu 5
Hình 1.3 Minh họa dàn 12
Hình 2.1 Ví dụ biểu diễn theo chiều ngang (trái) và chiều dọc (phải) 22
Hình 2.2 Cây tìm kiếm của item cơ sở {a,b,c,d,e} 26
Hình 2.3 Minh họa khai tác tập thường xuyên với thuật toán Eclat 28
Hình 2.4 Minh họa tính diffset 29
Hình 2.5 Minh họa thuật toán dEclat 31
Hình 3.1 Giao diện chương trình 36
Hình 3.2 Thống kê kết quả các lần thực nghiệm trên CSDL Chess 37
Hình 3.3 Thống kê kết quả các lần thực nghiệm trên CSDL Connect 39
Hình 3.4.Thống kê kết quả các lần thực nghiệm trên CSDL Mushrom 41
Hình 3.5 Thống kê kết quả các lần thực nghiệm trên CSDL Accidents 43
Hình 3.6 Thống kê kết quả các lần thực nghiệm trên CSDL T40I10D100K 44
Hình 3.7 Thống kê kết quả các lần thực nghiệm trên CSDL Pumb 46
Hình 3.8 Thống kê kết quả các lần thực nghiệm trên CSDL T10I4D100K 48
Hình 3.9 Thống kê kết quả các lần thực nghiệm trên CSDL Pumsb_star 49
Hình 3.10 Thống kê kết quả các lần thực nghiệm trên CSDL Retail 51
Hình 3.11 Thống kê kết quả các lần thực nghiệm trên CSDL Kosarak 52
Trang 9DANH MỤC BIỂU ĐỒ
Biểu đồ 3.1 So sánh thời gian thực hiện của các thuật toán trên CDSL Chess 38
Biểu đồ 3.2 So sánh bộ nhớ sử dụng của các thuật toán trên CDSL Chess 38
Biểu đồ 3.3 So sánh thời gian thực hiện của các thuật toán trên CDSL Connect 40
Biểu đồ 3.4 So sánh bộ nhớ sử dụng của các thuật toán trên CDSL Connect 40
Biểu đồ 3.5 So sánh thời gian thực hiện của các thuật toán trên CDSL Mushrom 41
Biểu đồ 3.6 So sánh bộ nhớ sử dụng của các thuật toán trên CDSL Mushrom 42
Biểu đồ 3.7 So sánh thời gian thực hiện của các thuật toán trên CDSL Accidents 42
Biểu đồ 3.8 So sánh bộ nhớ sử dụng của các thuật toán trên CDSL Accidents 43
Biểu đồ 3.9 So sánh thời gian thực hiện của các thuật toán trên CDSL T40I10D100K 45
Biểu đồ 3.10 So sánh bộ nhớ sử dụng của các thuật toán trên CDSL T40I10D100K 45 Biểu đồ 3.11 So sánh thời gian thực hiện của các thuật toán trên CDSL Pumsb 46
Biểu đồ 3.12 So sánh bộ nhớ sử dụng của các thuật toán trên CDSL Pumb 47
Biểu đồ 3.13 So sánh thời gian thực hiện của các thuật toán trên CDSL T10I4D100K 47
Biểu đồ 3.14 So sánh bộ nhớ sử dụng của các thuật toán trên CDSL T10I4D100K 48
Biểu đồ 3.15 So sánh thời gian thực hiện của các thuật toán trên CDSL Pumsb_star 50 Biểu đồ 3.16 So sánh bộ nhớ sử dụng của các thuật toán trên CDSL Pumsb_star 50
Biểu đồ 3.17 So sánh thời gian thực hiện của các thuật toán trên CDSL Retail 51
Biểu đồ 3.18 So sánh bộ nhớ sử dụng của các thuật toán trên CDSL Retail 52
Biểu đồ 3.19 So sánh thời gian thực hiện của các thuật toán trên CDSL Kosarak 53
Biểu đồ 3.20 So sánh bộ nhớ sử dụng của các thuật toán trên CDSL Kosarak 53
Trang 10TRÍCH YẾU LUẬN VĂN
Trong khai phá dữ liệu, phát hiện luật kết hợp là một trong các kỹ thuật nhằm tìm
ra các tri thức tiềm ẩn trong kho dữ liệu lớn Khai phá tập phổ biến là bài toán quan
trọng nhất trong khai phá luật kết hợp Có nhiều thuật toán khai phá tập phổ biến đã ra
đời, các thuật toán này có các ưu nhược điểm khác nhau Luận văn này, chúng tôi trình
bày kết quả nghiên cứu và đánh giá thuật toán khai phá tập phổ biến Eclat và các biến
thể Luận văn sử dụng phương pháp phân tích tổng hợp nhằm phân tích, tổng hợp các
bài báo liên quan đến lĩnh vực nghiên cứu, cài đặt, thử nghiệm và đán giá hiệu quả của
các thuật toán
Để đánh giá hiệu quả của các thuật toán Eclat và các biến thể chúng tôi sử dụng 10
bộ cơ sở dữ liệu giao tác với các đặc tính khác nhau (số lượng giao tác, số lượng mục
dữ liệu quan tâm, thưa, dày) được lấy trên trang http://fimi.uantwerpen.be/data [23]
Những bộ này gồm: Chess, connect, mushroom, accidents, T40I10D100K, pumsb,
T10I4D100K, pumsb_star, retail và kosarak
Với mỗi bộ, tùy theo đặc tính của nó mà chúng tôi chọn thử nghiệm độ hỗ trợ khác
nhau Các thử nghiệm được thực hiện lần lượt trên các CSDL có mức độ thưa dần Các
bộ CSDL có đặc điểm khác nhau Kết quả thực nghiệm cho thấy Eclat và BI-Eclat hoạt
động tốt với cơ sở dữ liệu thưa, dEclat và postDiffset hoạt động tốt với cơ sở dữ liệu
dày
Từ khóa: BI-Eclat; Eclat; dEclat; Khai phá tập phổ biến; postDiffset.
Trang 11MỞ ĐẦU
Khai phá dữ liệu là một lĩnh vực quan trọng của ngành Công nghệ thông tin Đây
là lĩnh vực đã thu hút đông đảo các nhà khoa học trên thế giới và trong nước tham gia nghiên cứu Khai phá tập phổ biến trong cơ sở dữ liệu lớn là một kỹ thuật quan trọng của khai phá dữ liệu Ra đời vào năm 1993, xuất phát từ nhu cầu khai phá luật kết hợp trong các cơ sở dữ liệu giao tác của các siêu thị, ngày nay khai phá tập phổ biến còn được sử dụng như là một công cụ hiệu quả để phát hiện các phụ thuộc hàm, các luật kết hợp đa mức,
Khai phá tập phổ biến gặp khó khăn khi xử lý cơ sở dữ liệu lớn Rất nhiều kết quả nghiên cứu đã được công bố nhưng vấn đề khai phá tập phổ biến vẫn được coi là bài toán khó
Eclat là một thuật toán khai phá tập phổ biến được đề xuất bởi tác giả zaki năm
2000 Về cơ bản Eclat là thuật toán tìm kiếm theo chiều sâu cũng như thuật toán Growth Eclat chỉ quét cơ sở dữ liệu một lần và nó sinh các tập mục ứng viên k mục dữ liệu bằng cách tính giao của hai tập mục ứng viên k-1 mục dữ liệu nên sử dụng ít không gian nhớ Tuy nhiên, Eclat cũng gặp phải trở ngại với cơ sở dữ liệu mà mỗi giao tác có nhiều hạng mục (item)
PF-Với mục đích hiểu sâu vào lĩnh vực khai phá tập phổ biến này, cùng với đó là sự
gợi ý định hướng nghiên cứu của TS Nguyễn Đức Thuần Tôi chọn đề tài “Nghiên cứu
thuật toán khai phá tập phổ biến Eclat và các biến thể”
Luận văn chia làm 3 chương:
Chương 1 Tổng quan về khai phá tập phổ biến: Giới thiệu tổng quan về khai phá
tập phổ biến Phân loại được hai giải thuật khai phá tập phổ biến theo chiều rộng (Apriori) và chiều sâu (Eclat), từ đó chỉ ra được Eclat hay ở chỗ nào và tầm quan trọng của nó Sau đó sẽ đi điểm qua các thuật toán khai phá tập phổ biến như Apriori, FP-Growth và Eclat
Chương 2 Thuật toán Eclat và các biến thể: phân tích thuật toán Eclat, các thuật
toán Eclat biến thể như dEclat, PostDiffset, BI-Eclat
Chương 3 Kết quả và hướng phát triển: Cài đặt, thực nghiệm và so sánh hiệu năng
của Eclat và các biến thể
Trang 12CHƯƠNG 1 KHAI PHÁ DỮ LIỆU VÀ KHAI PHÁ TẬP PHỔ BIẾN
1.1 Khai phá dữ liệu
1.1.1 Khái niệm Khai phá dữ liệu
Khai phá dữ liệu (Data Mining) ra đời vào những năm cuối của thập kỷ 1980, nó
là quá trình khám phá thông tin ẩn được tìm thấy trong các cơ sở dữ liệu Khai phá dữ liệu là một bước quan trọng trong quá trình khám phá tri thức từ cơ sở dữ liệu, các tri thức này hỗ trợ trong việc ra quyết định trong lĩnh vực ngân hàng, kinh doanh và khoa học, …
Giáo sư Tom Mitchell [1] đã đưa ra định nghĩa của Khai phá dữ liệu như sau:
“Khai phá dữ liệu là việc sử dụng dữ liệu lịch sử để khám phá những qui tắc và cải thiện những quyết định trong tương lai” Với một cách tiếp cận ứng dụng hơn, Tiến sĩ Fayyad [2] đã phát biểu: “Khai phá dữ liệu, thường được xem là việc khám phá tri thức trong các cơ sở dữ liệu, là một quá trình trích xuất những thông tin ẩn, trước đây chưa biết và
có khả năng hữu ích, dưới dạng các qui luật, ràng buộc, qui tắc trong cơ sở dữ liệu.” hay nói cách khác “Khai phá dữ liệu – Data Mining là tiến trình khám phá tri thức tiềm ẩn trong các cơ sở dữ liệu Cụ thể hơn, đó là tiến trình trích lọc, sản sinh những tri thức hoặc các mẫu tiềm ẩn, chưa biết nhưng hữu ích từ cơ sở dữ liệu lớn” [3]
Nói tóm lại, Khai phá dữ liệu là một quá trình học tri thức mới từ những dữ liệu
đã thu thập được [4] - [5]
Chức năng khai phá dữ liệu gồm có gộp nhóm, phân nhóm, dự báo, dự đoán và phân tích các liên kết Năm 1989, Fayyad, Smyth và Piatestsky-Shapiro đã dùng khái
niệm Phát hiện tri thức từ cơ sở dữ liệu (Knowledge Discovery in Database-KDD),
trong đó, khai phá dữ liệu là một giai đoạn rất quan trọng trong toàn bộ quá trình, nó sử dụng các kỹ thuật để tìm ra các mẫu được quan tâm từ dữ liệu Có thể coi khai phá dữ liệu là cốt lõi của quá trình phát hiện tri thức
Quá trình khai phá dữ liệu sẽ tiến hành qua 6 giai đoạn như hình 1.1 ở trang bên:
Trang 13Hình 1.1 Quá trình phát hiện tri thức và khai phá dữ liệu
Bắt đầu của quá trình là kho dữ liệu thô và kết thúc với tri thức được chiết xuất
ra Về lý thuyết thì có vẻ rất đơn giản nhưng thực sự đây là một quá trình rất khó khăn gặp phải rất nhiều vướng mắc như: quản lý các tập dữ liệu, phải lặp đi lặp lại toàn bộ quá trình
Gom dữ liệu: Tập hợp dữ liệu là bước đầu tiên trong quá trình khai phá dữ liệu
Đây là bước được khai thác trong một cơ sở dữ liệu, một kho dữ liệu và thậm chí các dữ liệu từ các nguồn ứng dụng Web
Lựa chọn dữ liệu: Ở giai đoạn này dữ liệu được lựa chọn hoặc phân chia theo một
số tiêu chuẩn nào đó, ví dụ chọn tất cả những người có tuổi đời từ 25 – 35 và có trình
độ đại học
Làm sạch, tiền xử lý và chuẩn bị trước dữ liệu: Đây là giai đoạn hay bị sao lãng,
nhưng thực tế nó là một bước rất quan trọng trong quá trình khai phá dữ liệu Một số lỗi thường mắc phải trong khi gom dữ liệu là tính không đủ chặt chẽ, logíc Vì vậy, dữ liệu thường chứa các giá trị vô nghĩa và không có khả năng kết nối dữ liệu Ví dụ: năm sinh = 300 Giai đoạn này sẽ tiến hành xử lý những dạng dữ liệu không chặt chẽ nói trên Những dữ liệu dạng này được xem như thông tin dư thừa và không có ý nghĩa sử dụng
Trang 14Bởi vậy, đây là một quá trình rất quan trọng vì dữ liệu này nếu không được “làm sạch - tiền xử lý - chuẩn bị trước” thì sẽ gây nên những kết quả sai lệch nghiêm trọng Quá trình này bao gồm cả việc xử lý với dữ liệu nhiễu (noisy data), dữ liệu không đầy đủ (incomplete data), v.v
Chuyển đổi dữ liệu: Các dữ liệu được chuyển đổi sang các dạng phù hợp cho quá
trình xử lý
Phát hiện và trích mẫu dữ liệu: Đây là một trong các bước quan trọng nhất, ở
công đoạn này nhiều phương pháp khác nhau đã được dùng để trích ra các mẫu từ dữ liệu Thuật toán thường dùng là nguyên tắc phân loại, nguyên tắc kết hợp hoặc các mô hình dữ liệu tuần tự, …
Đánh giá kết quả mẫu: Ở đây các mẫu dữ liệu được trích xuất ra bởi phần mềm
khai thác dữ liệu Cần chú ý rằng, không phải bất cứ mẫu dữ liệu nào cũng đều có giá trị sử dụng, đôi khi nó còn bị sai lệch Do đó, cần phải quan tâm hơn đến những tiêu chuẩn đánh giá để tìm ra các tri thức
1.1.2 Kiến trúc điển hình của một hệ thống khai phá dữ liệu
Từ mô tả chi tiết các giai đoạn trong quá trình khai phá dữ liệu có thể biểu diễn một kiến trúc điển hình của một hệ thống khai phá dữ liệu một cách trực quan như hình 1.2
Máy chủ cơ sở dữ liệu: có trách nhiệm lấy dữ liệu phù hợp dựa trên những yêu cầu khai phá của người sử dụng
Cơ sở tri thức: Đây là miền tri thức được dùng để tìm kiếm hay đánh giá độ quan trọng của các hình mẫu kết quả
Máy khai phá dữ liệu: Một hệ thống khai phá dữ liệu cần phải có một tập các module chức năng để thực hiện công việc, chẳng hạn như đặc trưng hóa, kết hợp, phân lớp, phân cụm, phân tích sự tiến hoá…
Module đánh giá mẫu: Thành phần này sẽ tương tác với các module khai phá dữ liệu để tập trung vào việc quét không gian tìm kiếm để tìm các mẫu đáng được quan tâm Đôi khi có thể module đánh giá mẫu được tích hợp cùng với module khai phá tùy theo sự cài đặt của thuật toán khai phá được sử dụng
Trang 15Giao diện tương tác người sử dụng: Thông qua màn hình giao tiếp này, người sử dụng tương tác với hệ thống bằng cách đưa ra các yêu cầu khai phá hay một nhiệm vụ, cung cấp thông tin trợ giúp cho việc tìm kiếm và thực hiện khai phá thăm dò trên các kết quả khai phá trung gian
Hình 1.2 Kiến trúc điển hình của một hệ thống khai phá dữ liệu
1.1.3 Một số kỹ thuật khai phá dữ liệu
Các kĩ thuật khai phá dữ liệu thường được chia thành 2 nhóm chính [6] là kỹ thuật khai phá dữ liệu mô tả và kỹ thuật khai phá dữ liệu dự đoán
Kĩ thuật khai phá dữ liệu mô tả: có nhiệm vụ mô tả về các tính chất hoặc các đặc tính chung của dữ liệu trong CSDL hiện có Các kĩ thuật này gồm có: phân cụm
(clustering), tóm tắt (summarization), trực quan hóa (visualization), phân tích sự phát triển và độ lệch (Evolution and deviation analysis), phát hiện luật kết hợp (association
rules),
Kĩ thuật khai phá dữ liệu dự đoán: có nhiệm vụ đưa ra các dự đoán dựa vào các
suy diễn trên dữ liệu hiện thời Các kĩ thuật này gồm có: phân lớp (classification), hồi quy (regression),
Trang 161.2 Ứng dụng của khai phá dữ liệu
Khai phá dữ liệu được vận dụng trong nhiều lĩnh vực khác nhau nhằm khai thác nguồn dữ liệu phong phú được lưu trữ trong các hệ thống thông tin Tùy theo bản chất của từng lĩnh vực, việc vận dụng khai phá dữ liệu có những cách tiếp cận khác nhau Ngân hàng: Xây dựng mô hình dự báo rủi ro tín dụng Tìm kiếm tri thức, quy luật của thị trường chứng khoán và đầu tư bất động sản
Thương mại điện tử: Tìm hiểu, định hướng thúc đẩy, giao tiếp với khách hàng Phân tích hành vi mua sắm trên mạng và cho biết thông tin tiếp thị phù hợp với nhiều loại khách hàng
Marketing: Phân tích nhu cầu khách hàng dựa trên mẫu dữ liệu mua bán hàng
từ đó xác định chiến lược kinh doanh, quảng cáo, kế hoạch sản xuất, … Khai phá dữ liệu cũng được vận dụng hiệu quả để giải quyết các bài toán phức tạp trong các ngành đòi hỏi kỹ thuật cao như tìm kiếm mỏ dầu từ ảnh viễn thám, cảnh báo hỏng hóc trong các hệ thống sản xuất, … Các kỹ thuật Khai phá dữ liệu đã được áp dụng thành công trong việc dự đoán tải sử dụng điện năng cho các công ty cung cấp điện, lưu lượng viễn thông cho các công ty điện thoại, mức độ tiêu thụ sản phẩm cho các nhà sản xuất, giá trị của sản phẩm trên thị trường cho các công ty tài chính, …
Ngoài ra, Khai phá dữ liệu còn được áp dụng cho các vấn đề xã hội như phân tích các kết quả phòng chống và điều trị một số loại bệnh, phân tích tác hại của ma tuý, phát hiện tội phạm hay tăng cường an ninh xã hội, Việc vận dụng thành công đã mang lại những hiệu quả thiết thực cho các hoạt động diễn ra hàng ngày trong đời sống
1.3 Một số khó khăn trong khai phá dữ liệu
- Cơ sở dữ liệu lớn: Các tập dữ liệu cần xử lý trong khai phá dữ liệu thường có
kích thước cực kỳ lớn về cả số lượng các bản ghi và số lượng các thuộc tính Trong thực
tế, kích thước của các tập dữ liệu trong khai phá dữ liệu thường ở mức tera-byte Với kích thước như thế, thời gian xử lý thường rất dài Mặc dù kích thước bộ nhớ trong của máy tính đã gia tăng đáng kể trong thời gian gần đây, việc gia tăng này cũng không thể đáp ứng kịp với việc tăng kích thước dữ liệu Vì vậy, việc vận dụng các kỹ thuật xác suất, lấy mẫu, đệm, song song, … vào các giải thuật để tạo ra các phiên bản phù hợp với yêu cầu của khai phá dữ liệu trở nên ngày càng quan trọng
Trang 17- Dữ liệu thiếu và nhiễu: Mức độ nhiễu cao trong dữ liệu điều này dẫn đến việc dự
đoán thiếu chính xác
- Vấn đề “quá phù hợp” (Overfitting): Khi thuật toán khai phá tìm kiếm với các
tham số tốt nhất cho một mô hình đặc biệt và một giới hạn của tập dữ liệu Mô hình đó
có thể “Quá phù hợp” trên tập dữ liệu đó nhưng lại thi hành không chính xác trên tập
dữ liệu kiểm tra
- Sự thay đổi của dữ liệu và tri thức: Dữ liệu là không tĩnh, dữ liệu thay đổi nhanh
chóng có thể dẫn đến những tri thức đã khai phá trước đây trở nên không còn phù hợp thậm chí là vô giá trị
- Đánh giá các mẫu dữ liệu tìm được: Nhiều mẫu phát hiện không thực sự hữu ích
với người sử dụng và thách thức với các hệ khai phá dữ liệu
- Làm việc với các dữ liệu quan hệ phức tạp: Do các hệ cơ sở dữ liệu quan hệ được
sử dụng rộng rãi nên vấn đề làm tốt với các hệ cơ sở dữ liệu này là vấn đề cần quan tâm đối với các hệ khai phá dữ liệu
- Khai phá thông tin trong các hệ cơ sở dữ liệu hỗn hợp và hệ thống thông tin toàn cầu: Với sự ra đời của mạng máy tính, dữ liệu có thể được thu thập từ nhiều nguồn khác
nhau với định dạng khác nhau với số lượng rất lớn Việc phát hiện tri thức từ các dạng
dữ liệu hỗn hợp này là một thách thức đối với khai phá dữ liệu
1.4 Khai phá Luật kết hợp
1.4.1 Giới thiệu và các khái niệm cơ bản
Mục đích của bài toán phát hiện luật kết hợp là tìm ra mối quan hệ giữa những tập mục dữ liệu trong các CSDL lớn và các mối quan hệ này là có ích trong hỗ trợ quyết định Luật kết hợp là dạng khá đơn giản chỉ ra các hạng mục hay cùng xuất hiện trong các giao tác Tìm các luật kết hợp mang nhiều thông tin từ cơ sở dữ liệu giao tác là một trong những hướng tiếp cận chính của lĩnh vực khai phá dữ liệu Ví dụ, trong CSDL siêu thị, việc phát hiện được quan hệ “78% số khách hàng mua sữa và đường cũng mua bơ”
sẽ rất có ích cho kinh doanh, chẳng hạn quyết định số lượng nhập các mặt hàng này hoặc
bố trí chúng tại các ngăn hàng liền kề nhau, hay trong CSDL dân số, quan hệ “60% người lao động ở độ tuổi trung niên có thu nhập thấp hơn mức bình quân” sẽ rất có ích cho việc điều chỉnh chính sách thu nhập [7] [8] [9]
Trang 18Khái niệm luật kết hợp và phát hiện luật kết hợp được Rakesh Agrawal và các cộng
sự đề xuất lần đầu tiên vào năm 1993 [8], nhằm phát hiện các mẫu có giá trị trong CSDL giao tác tại siêu thị [10] Dưới đây là các khái niệm cơ bản:
- Mục dữ liệu (item): phần tử, mẫu, đối tượng đang được quan tâm
Ví dụ 1.1: Đối tượng được quan tâm: Sữa, Trứng, Bánh mì, đường, …
- Tập hạng mục (itemset): Giả sử 𝕀 = {𝑖1, 𝑖2, … , 𝑖𝑛} là một tập hữu hạn, mỗi phần tử 𝑖𝑘 là một hạng mục Một tập 𝑋 ⊆ 𝕀 được gọi là một tập hạng mục, nếu
𝑋 có 𝑘 mục (𝑘 ≤ 𝑛), tức |𝑋| = 𝑘 thì 𝑋 được gọi là 𝑘 − 𝑖𝑡𝑒𝑚𝑠𝑒𝑡
Ví dụ 1.2: Tập các mặt hàng thực phẩm trong siêu thị 𝕀 = {𝑠ữ𝑎, 𝑡𝑟ứ𝑛𝑔,𝑏á𝑛ℎ 𝑚ì, đườ𝑛𝑔, 𝑚ậ𝑡 𝑜𝑛𝑔, 𝑚ứ𝑡, 𝑏ơ, 𝑡ℎị𝑡 𝑏ò, 𝑔𝑖á , … }, 𝑋 = {𝐵á𝑛ℎ 𝑚ì, 𝐵ơ, 𝑆ữ𝑎} là một tập 3 − 𝑖𝑡𝑒𝑚𝑠𝑒𝑡
- Giao tác (Transaction): Lần thực hiện tương tác với hệ thống (ví dụ: giao tác
“khách hàng mua hàng”), thể hiện bởi tập 𝑻 gồm các mục dữ liệu được giao
tác
- Cơ sở dữ liệu giao tác (Transaction Database): Cơ sở dữ liệu gồm 𝑚 giao
tác, có thể ký hiệu như sau: 𝔻 = {𝑇1, 𝑇2, … 𝑇𝑚}, mỗi giao tác 𝑇𝑖 ∈ 𝔻 là một tập mục dữ liệu, tức là 𝑇𝑖 ⊆ 𝕀 Mỗi giao tác có một định danh duy nhất (Transaction
Identifier - Tid)
Ví dụ 1.3: Tập tất cả các mục: 𝕀 = {𝐴, 𝐵, 𝐶, 𝐷, 𝐸} Cơ sở dữ liệu giao tác: 𝔻 ={𝑇1, 𝑇2, 𝑇3 , 𝑇4, 𝑇5, 𝑇6}, cụ thể
Bảng 1.1 Ví dụ về một cơ sở dữ liệu giao tác
Trang 19- Độ hỗ trợ (support) của tập mục: Cho tập mục 𝑋 ⊆ 𝕀, độ hỗ trợ của 𝑋, ký hiệu
là 𝑠𝑢𝑝𝑝(𝑋, 𝔻) là số lượng giao tác trong 𝔻 có chứa 𝑋
- Độ hỗ trợ tương đối (Relative support) của tập mục: độ hỗ trợ tương đối của
𝑋, ký hiệu là 𝑅_𝑠𝑢𝑝𝑝(𝑋, 𝔻) là tỉ lệ số giao tác trong 𝔻 có chứa 𝑋 với số giao tác của 𝔻
𝑅_𝑠𝑢𝑝𝑝(𝑋, 𝔻) = 𝑠𝑢𝑝𝑝(𝑋, 𝔻)
|𝔻|
(có thể coi Độ hỗ trợ tương đối chỉ mức độ “phổ biến xảy ra” của mẫu)
- Tập phổ biến (Frequent itemset): Một tập mục 𝑋 được gọi là tập phổ biến trong 𝔻 nếu độ hỗ trợ của 𝑋 lớn hơn hoặc bằng ngưỡng hỗ trợ tối thiểu – gọi
là min_supp (được định nghĩa trước bởi người dùng) ngược lại thì 𝑋 được gọi
là tập không phổ biến (small itemset)
Ví dụ 1.4: Cho cơ sở dữ liệu giao tác như bảng 1.1, min_supp =3, ký hiệu 𝔽 là tập tất cả các tập phổ biến, 𝔽𝑘 là tập tất cả các tập phổ biến độ dài 𝑘, khi này ta có:
✓ 𝔽 = {
𝐴, 𝐵, 𝐶, 𝐷, 𝐸,
𝐴𝐵, 𝐴𝐷, 𝐴𝐸, 𝐵𝐶, 𝐵𝐷, 𝐵𝐸, 𝐶𝐸, 𝐷𝐸,𝐴𝐵𝐷, 𝐴𝐵𝐸, 𝐴𝐷𝐸, 𝐵𝐶𝐸, 𝐵𝐷𝐸,
- Sự kết hợp (Association) và Luật kết hợp (association rule):
o Sự kết hợp: các mục dữ liệu cùng xuất hiện với nhau trong một hay nhiều
giao dịch Thể hiện mối liên hệ giữa các mục dữ liệu / các tập mục dữ liệu
o Luật kết hợp: qui tắc kết hợp có điều kiện giữa các tập mục dữ liệu, thể hiện mối liên hệ (có điều kiện) giữa chúng Một luật kết hợp là một công thức có dạng 𝑋 → 𝑌 trong đó 𝑋, 𝑌 là itemset (𝑋 ⊂ 𝕀, 𝑌 ⊂ 𝕀) thỏa 𝑋 ∩ 𝑌 =
∅, 𝑋 được gọi là tiền đề và 𝑌 được gọi là hệ quả của luật
Trang 20- Độ hỗ trợ của luật kết hợp: Độ hỗ trợ của một luật 𝑋 → 𝑌 xác định trên giao
tác 𝑇, ký hiệu là 𝑠𝑢𝑝𝑝(𝑋 → 𝑌, 𝔻) là khả năng mà tập giao tác 𝑇 hỗ trợ cho các thuộc tính trong cả 𝑋 và 𝑌
- Luật kết hợp hợp lệ: Một luật kết hợp hợp lệ là một luật kết hợp mà với cặp
hệ số 𝑚𝑖𝑛_𝑠𝑢𝑝𝑝, 𝑚𝑖𝑛_𝑐𝑜𝑛𝑓 do người dùng cho trước: 0 ≤ 𝑚𝑖𝑛_𝑠𝑢𝑝𝑝 ≤ 1 và
0 ≤ 𝑚𝑖𝑛_𝑐𝑜𝑛𝑓 ≤ 1 thì luật phải thỏa các điều kiện sau:
𝑠𝑢𝑝𝑝(𝑋 → 𝑌, 𝔻) ≥ min _sup và 𝑐𝑜𝑛𝑓(𝐵𝐶 → 𝐸, 𝔻) ≥ min _𝑐𝑜𝑛𝑓
Chú ý: Trong một số tài liệu, các tác giả biểu diễn độ hỗ trợ, độ tin cậy theo tỉ lệ
phần trăm
1.4.2 Các phương pháp khai phá tập phổ biến và luật kết hợp
Bài toán khai phá luật kết hợp trên một cơ sở dữ liệu được chia thành hai bài toán nhỏ như sau:
Bài toán 1: Khai phá tất cả các tập mục phổ biến từ cơ sở dữ liệu 𝔻 với ngưỡng
hỗ trợ tối thiểu min_supp
Bài toán 2: Sinh tất cả các luật mạnh từ các tập phổ biến được khai phá ở bài toán
1 với ngưỡng tin cậy tối thiểu min_conf, Luật mạnh là luật đáp ứng ràng buộc về độ hỗ
trợ và độ tin cậy
Trang 21Trong 2 bài toán này, bài toán 1 có độ phức tạp tính toán cao hơn và thường chiếm phần lớn thời gian khai phá luật kết hợp Với 𝑛 mục dữ liệu quan tâm, có tối đa 2𝑛− 1 tập con (không kêt tập rỗng) có thể là luật kết hợp phổ biến, vì vậy thuật toán yêu cần cần duyệt hết không gian tìm kiếm (dàn các tập mục dữ liệu) này để tìm ra các luật Ví
dụ với 𝕀 = {𝑖1, 𝑖2, … , 𝑖100}, chúng ta có 2100 − 1 ≈ 1,27 ∗ 1030 tập con, việc duyệt hết
số lượng tập con này rõ ràng là rất tốn thời gian Vì vậy đã có nhiều nghiên cứu và thuật toán ra đời nhằm giải quyết bài toán này theo cách hiệu quả nhất
Có nhiều thuật toán để khai phá tập phổ biến như: Vét cạn, Apriori, FP-Growth, Eclat, Ngoài ra phát hiện luật kết hợp dựa vào lý thuyết tập thô (rough set), tập mờ (fuzzy set) cho dữ liệu không đầy đủ cũng là hướng nghiên cứu được nhiều tác giả quan tâm [11] Mục tiếp sau sẽ giới thiệu khái quát một số thuật toán và các vấn đề liên quan
1.5 Dàn các tập mục dữ liệu
Cho tập các mục dữ liệu 𝕀 = {𝑖1, 𝑖2, … , 𝑖𝑛}, với tập hợp này chúng ta có 2|𝕀| = 2𝑛tập mục (bao gồm cả tập rỗng) Các tập mục được kết nối với nhau thành một dàn các tập mục (itemset lattice), trong đó tập mục 𝑋 và 𝑌 được nối với nhau trên dàn nếu và chỉ nếu 𝑋 là tập con trực tiếp của 𝑌, nghĩa là 𝑋 ⊆ 𝑌 và |𝑌| = |𝑋| + 1 Dàn các tập mục cho biết quan hệ giữa tất cả các tập mục con có thể có của 𝕀 Một số tài liệu coi đây là không gian tìm kiếm tập phổ biến
Ví dụ, với tập các mục 𝕀 = {𝐴, 𝐵, 𝐶, 𝐷, 𝐸}, chúng ta có dàn bao gồm 25=32 tập mục bao gồm cả tập rỗng và chính nó
Trang 22Duyệt theo chiều sâu là duyệt xong các tập ứng viên liên quan với một tập mục phổ biến mới chuyển sang xem xét đối với tập mục phổ biến cùng kích thước khác Hai thuật toán điển hình theo cách tiếp cận này là: FP-Growth [13] , Eclat [14]
1.6 Thuật toán vét cạn khai phá tập phổ biến
Thuật toán tiếp cận theo hướng xem mỗi nút 𝑋 trên dàn là ứng viên cho một tập mục phổ biến, sau đó tính toán độ hỗ trợ của mỗi ứng viên bởi việc duyệt qua tất cả các giao tác trong CSDL Có thể mã hóa thuật toán theo mã giả như sau:
Trang 23- Độ phức tạp vào ra (I/O complexity) cũng là 𝑂(2| 𝕀 |) quét cơ sở dữ liệu giao dịch
- Phải duyệt hết toàn bộ không gian các tập mục trên dàn
- Kiểm tra rất nhiều ứng viên không có tiểm năng là tập phổ biến
1.7 Thuật toán Apriori
Thuật toán do Agrawal đề nghị năm 1994 [12], ý tưởng của thuật toán dựa và tính chất Apriori (dùng tri thức biết trước prior knowlegde về đặc điểm của các tập mục phổ biến) để quyết định việc có kiểm tra tiếp ứng viên (𝑘 + 1) − 𝑖𝑡𝑒𝑚𝑠𝑒𝑡 hay không nhằm loại bỏ sớm các ứng viên không tiềm năng Các ứng viên (𝑘 + 1) − 𝑖𝑡𝑒𝑚𝑠𝑒𝑡 có độ hỗ trợ ≥ min _𝑠𝑢𝑝𝑝 phải được sinh ra từ các 𝑘 − 𝑖𝑡𝑒𝑚𝑠𝑒𝑡 có độ hỗ trợ ≥ min _𝑠𝑢𝑝𝑝 Tích chất Apriori được phát biểu như sau [11]:
- Mọi tập con của một tập phổ biến đều phổ biến, nghĩa là:
∀ 𝑌 ⊆ 𝑋, nếu 𝑠𝑢𝑝𝑝(𝑋) ≥ min _𝑠𝑢𝑝𝑝 ⇒ 𝑠𝑢𝑝𝑝(𝑌) ≥ min _𝑠𝑢𝑝𝑝
1: procedure BRU TE F O RCE(𝔻 = {𝑇1, 𝑇2, … , 𝑇𝑚}, 𝕀 = {𝑥1, 𝑥2, … , 𝑥𝑛}, 𝑚𝑖𝑛𝑠𝑢𝑝)
2: Khởi tạo tập các tập phổ biến: 𝔽 ← ∅;
1: porcedure COMP UTE S UP PORT((𝑋, 𝔻 = {𝑇1, 𝑇2, … , 𝑇𝑚})
2: Khởi tạo: sup(𝑋, 𝔻) ← 0;
Trang 24- Mọi tập mẹ của tập không phổ biến đều không phổ biến, nghĩa là:
∀ 𝑌 ⊇ 𝑋, nếu 𝑠𝑢𝑝𝑝(𝑋) ≤ min _𝑠𝑢𝑝𝑝 ⇒ 𝑠𝑢𝑝𝑝(𝑌) ≤ min _𝑠𝑢𝑝𝑝
Mã giả thuật toán Apriori cụ thể như sau:
1: procedure A PRIORI(𝔻 = {𝑇1, 𝑇2, … , 𝑇𝑚}, 𝕀 = {𝑥1, 𝑥2, … , 𝑥𝑛}, 𝑚𝑖𝑛𝑠𝑢𝑝) 2: Khởi tạo tập các tập phổ biến: 𝔽 ← ∅;
1: for all transaction 𝑡 ∈ 𝔻 do
4: 𝐿1 = {𝑖|𝑖 𝑐𝑜𝑢𝑛𝑡 ≥ 𝑚𝑖𝑛𝑠𝑢𝑝};
Trang 25Nhận xét:
- Thuật toán có ưu điểm và nhờ vào các tính chất Apriori để cắt tỉa nhiều nhánh trên dàn giảm bớt đáng kể việc sinh các tập mục ứng viên và kiểm tra tính phổ biến của các tập ứng viên đó
- Tuy vậy, thuật toán vẫn còn sinh ra một số lượng lớn các tập ứng viên Ví dụ nếu
có 104 tập mục phổ biến gồm 1 mục dữ diệu (1-itemsets), thuật toán cần sinh ra hơn 107 tập ứng viên có 2 mục dữ liệu (2-itemsets)
- Và cần quét cơ sở dữ liệu nhiều lần để tính độ hỗ trợ của các tập ứng viên trong quá trình thực hiện thuật toán
1: procedure A PRIORIGEN (𝔽(𝑘−1))
2: Khởi tạo tập các mục ứng viên: ℂ(𝑘) ← ∅;
1: procedure H ASINFREQUENTSUBSET(𝐶, 𝔽(𝑘−1))
Trang 261.8 Thuật toán FP-Growth
Để khắc phục những chi phí lớn của thuật toán Apriori, Jiawei Han và các cộng sự [13] đã đề xuất thuật toán FP-Growth để tìm tập phổ biến mà không cần sinh ứng viên
từ các tập phổ biến trước bằng cách sử dụng 3 kỹ thuật theo Thuần N.Đ [11] mô tả dưới đây
Thứ nhất, thuật toán sử dụng cấu trúc cây mẫu phổ biến FP-Tree để nén dữ liệu Những nút trên cây là các mục có độ dài là 1, được gán nhãn bởi tên mục và được sắp xếp theo tần xuất xuất hiện của các mục
Thứ hai, khai phá từng đoạn mẫu dựa trên FP-Tree, bắt đầu từ mẫu phổ biến có kích thước là 1 và chỉ kiểm tra trên cơ sở mẫu điều kiện (conditional pattern base), khởi tạo FP-Tree của mẫu điều kiện sau đó thực hiện khai phá đệ qui trên cây này Mẫu kết quả nhận được qua việc kết nối mẫu hậu tố với mẫu mới được sinh ra từ FP-Tree điều kiện
Thứ ba, dùng kỹ thuật tìm kiếm dựa trên phân hoạch không gian tìm kiếm và chia
để trị, chia nhiệm vụ khai phá thành những nhiệm vụ nhỏ hơn và giới hạn lại các mẫu làm giảm không gian tìm kiếm
1.8.1 Thuật toán sinh cây FP-Tree từ CSDL giao tác
Cấu trúc dữ liệu FP-Tree:
- Mỗi nút trên cây được gán nhãn là một mục
- Các nút con của một nút đại diện cho các mục khác nhau
- Mỗi nút cũng lưu thông tin về độ hỗ trợ của tập mục bao gồm tất cả các mục trên đường đi từ nút gốc đến nó
- Có một bảng để lưu tất cả các mục và con trỏ để liên kết tất cả các vị trí xuất hiện của mỗi mục trong cây
Trang 27Minh họa xây dựng cây FP-Tree:
- Cho tập tất cả các mục: 𝕀 = {𝐴, 𝐵, 𝐶, 𝐷, 𝐸}
- Cho cơ sở dữ liệu giao tác: 𝔻 = {𝑇1, 𝑇2, 𝑇3 , 𝑇4, 𝑇5, 𝑇6}, cụ thể
Trang 28Định danh giao tác Tập mục dữ liệu
Bước 2, Sinh cây
Nhận xét một số đặc điểm của FP-Tree
- Chỉ cần quét CSDL 𝔻 2 lần để xây dựng cây FP-Tree (𝕋)
- Cây FP-Tree là một dạng biểu diễn cô đọng (compressed) của 𝔻
- Cây FP-Tree càng nhỏ gọn càng tốt
Trang 29- Các mục càng phổ biến (có độ hỗ trợ cao) càng nằm phía gần gốc cây
- Tất cả các tập phổ biến có thể được khai phá trực tiếp từ cây FP-Tree 𝕋 thay vì CSDL 𝔻
1.8.2 Thuật toán FP-Growth
Thuật toán FP-Growth hoạt động với đầu vào là cây FP-Tree (𝕋) của 𝔻, ngưỡng
hỗ trợ tối thiểu 𝑚𝑖𝑛𝑠𝑢𝑝, tập tiền tố 𝑃 và tập phổ biến kết quả 𝔽 Thuật toán được cài đặt
đệ qui dạng mã giả như sau
Nhận xét: Với việc sử dụng cấu trúc FP-Tree, thuật toán FP-Growth hiệu quả nhờ
3 điểm mấu chốt sau [11]:
- Một CSDL lớn đã được nén lại với độ tập trung cao, chỉ cần 2 lần quét CSDL
- Phương pháp khai phá dựa trên FP-Tree sử dụng phương pháp tăng trưởng đoạn mẫu để tránh chi phí trong việc sinh một lượng lớn tập các ứng viên
- Phương pháp dựa trên kỹ thuật phân đoạn, chia để trị Việc khai phá các mẫu phổ biến đã được giới hạn trong cơ sở mẫu điều kiện, điều này giúp giảm không gian tìm kiếm
Trang 30Tuy vậy, thuật toán cũng có một số nhược điểm như: Thuật toán cài đặt phức tạp hơn so với Apriori, khi CSDL lớn: FP-Tree lớn và khó lưu vừa trong bộ nhớ
KẾT LUẬN CHƯƠNG 1
Nội dung chương 1 đã giới thiệu tổng quan các vấn đề về khai phá dữ liệu, với trọng tâm là kỹ thuật khai phá dữ liệu luật kết hợp Bài toán con quan trọng nhất trong khai phá luật kết hợp phổ biến là khai phá tập phổ biến Vấn đề với bài toán khai phá tập phổ biến là không gian tìm kiếm rất lớn khi mà lượng mục dữ liệu quan tâm lớn dần
Do vậy, đã có rất nhiều nghiên cứu khác nhau nhằm tìm ra phương pháp khai phá tập phổ biến một cách hiệu quả, điển hình với 3 thuật toán là Vét cạn, Apriori và FP-Growth Thuật toán vét cạn thuộc loại thuật toán cơ bản nhất, nhưng cũng có nhiều nhược điểm nhất, và cũng từ đây các thuật toán khác nhau ra đời Thuật toán vét cạn và Apriori rất tốn chi chí cho việc tính toán độ hỗ trợ khi mà phải quét CSDL rất nhiều lần, trong khi đó thuật toán FP-Growth chỉ tốn 2 lần cho việc quét CSDL Thuật toán vét cạn là thuật toán đầu tiên và hầu như không được sử dụng, 2 thuật toán Apriori và FP-Growh
có những ưu điểm khác nhau tùy vào đặc tính của CSDL (thưa, dày) và ngưỡng độ hỗ trợ Apriori sử dụng nhiều bộ nhớ hơn cho quá trình sinh ứng viên, trong khi FP-Growth không tốn bộ nhớ trong phần này do không sinh ứng viên Apriori dễ dàng cài đặt và phù hợp với cả CSDL thưa/dày, trong khi FP-Growth phức tạp khi đặt hơn và phù hợp với các CSDL có số lượng giao tác trung bình và lớn [15]
Thuật toán Apriori và FP-Growth đều sử dụng CSDL biểu diễn theo chiều ngang, điều này gây tốn thời gian khi tính toán độ hỗ trợ do phải quét lại CSDL Một thuật toán khác sử dụng CSDL biểu diễn theo chiều dọc là Eclat, cũng đạt được những kết quả tốt [16]
Chương tiếp theo của Luận văn sẽ trình bày kết quả tìm hiểu về giải thuật Elcat và các biến thể của Eclat và cố gắng đưa ra các giải pháp khai phá tập thường xuyên phù hợp hơn với từng đặc điểm của CSDL giao tác
Trang 31
CHƯƠNG 2 THUẬT TOÁN ECLAT VÀ CÁC BIẾN THỂ
2.1 Giới thiệu
Thuật toán Eclat (Equivalence class clustering) lần đầu tiên được giới thiệu bởi Zakj (1997) [14] cùng với 5 thuật toán khác là ClusterApr, MaxEclat, Clique, MaxClique, TopDown ứng dụng trong khai phá hiệu quả các luật kết hợp
Eclat sử dụng kỹ thuật phân cụm lớp tương đương để chia không gian tìm kiếm ban đầu (original lattice) thành các không gian tìm kiếm nhỏ hơn (sub-lattice), cùng với chiến lược duyệt dàn theo kiểu bottom-up để tìm ra các tập mục phổ biến Eclat sử dụng định dạng dữ liệu được biểu diễn theo chiều dọc, quét cơ sở dữ liệu một lần duy nhất nhằm giảm thiểu các truy cập vào thiết bị lưu trữ dữ liệu qua đó nâng cao hiệu quả thuật toán Thuật toán đã cho thấy tính hiệu quả hơn so với các thuật toán Apriori [14] Các mục dưới đây, chúng tôi sẽ trình bày các nội dung liên quan đến thuật toán Eclat và các biến thể cùng với các ví dụ minh họa
2.2 Biều diễn dữ liệu theo chiều ngang và theo chiều dọc
Để tính toán độ hỗ trợ của tập ứng ứng viên có thể là một tập phổ biến khi duyệt dàn, chúng ta cần phải đi vào từng giao tác trong CSDL để kiểm tra xem nó có chứa ứng viên hay không Do CSDL giao tác thường có kích thước rất lớn nên không thể luôn lưu trữ chúng trong bộ nhớ chính, hơn nữa để kiểm tra xem một giao tác có chứa một tập mục hay không cũng là một nhiệm vụ không tầm thường Vì vậy một kỹ thuật quan trọng trong các thuật toán khai phá tập phổ biến là việc biểu diễn CSDL giao tác sao cho quá trình tính toán độ hỗ trợ được dễ dàng Có 2 kỹ thuật mà các thuật toán thường sử dụng để biểu diễn CSDL giao tác đó là: biểu diễn theo chiều ngang (horizontal layout)
và biểu diễn theo chiều dọc (vertical layout), gọi tắt là CSDL theo chiều ngang và theo chiều dọc
Trong biểu diễn theo chiều ngang, mỗi giao tác 𝑇𝑘 được biểu diễn dưới dạng
𝑇𝑘: (𝑇𝑖𝑑, 𝕏), trong đó 𝑇𝑖𝑑 là định danh giao tác, 𝕏 là tập các mục xuất hiện trong giao tác đó
Trong biểu diễn theo chiều dọc, mỗi mục 𝑖𝑘 ⊆ 𝕀 (trong đó 𝕀 là tập tất cả các mục được quan tâm) được biểu diễn dạng 𝑖𝑘: {𝑖𝑘, 𝑡(𝑖𝑘)}, trong đó 𝑡(𝑖𝑘) là định danh các giao
Trang 32tác có chứa 𝑖𝑘 Nói cách khác, mỗi mục dữ liệu được biểu diễn bởi một tập các định danh giao tác có chứa nó (gọi là 𝑇𝑖𝑑𝑠𝑒𝑡)
Ví dụ 2.1: Biểu diễn theo chiều ngang và dọc cho CSDL ban đầu: Cho 𝕀 =
{𝒂, 𝒃, 𝒄, 𝒅, 𝒆}
Hình 2.1 Ví dụ biểu diễn theo chiều ngang (trái) và chiều dọc (phải)
Để tính toán độ hỗ trợ của một tập mục 𝕏 trong biểu diễn theo chiều ngang, ta phải duyệt qua tất cả các giao tác để kiểm tra xem giao tác đó có chứa nó không Do đó số lượng giao tác trong CSDL và kích thước của mỗi giao tác ảnh hưởng đến thời gian ở bước tính toán độ hỗ trợ Dễ thấy trên hình 2.1, để tính độ hỗ trợ của tập mục {𝑎} cần duyệt qua lần lượt 10 giao tác, tại mỗi giao tác thực hiện kiểm tra xem có chứa 𝑎 hay không rồi mới quyết định tăng biến đếm độ hỗ trợ, 𝑠𝑢𝑝(𝑎) = 7
Khi sử dụng biểu diễn theo chiều dọc, độ hỗ trợ của một tập mục chính là kích thước của 𝑇𝑖𝑑𝑠𝑒𝑡 của nó Với ví dụ trên hình 2.1, để tính độ hỗ trợ của tập mục {𝑎} chỉ cần xem kích thước của 𝑡𝑖𝑑𝑠𝑒𝑡 của {𝑎}
Cụ thể, để tính toán độ hỗ trợ của một tập mục 𝕏 trong biểu diễn theo chiều dọc, trước hết cần tính 𝑇𝑖𝑑𝑠𝑒𝑡 của 𝕏
Ký hiệu 𝑡(𝕏) là tập chứa định danh các giao tác chứa 𝕏 𝑌 và 𝑍 là 2 tập con của 𝕏 (𝑌 ⋃ 𝑍 = 𝕏), khi đó ta có công thức sau:
𝑡(𝕏) = 𝑡(𝑌 ⋃ 𝑍) = 𝑡(𝑌) ⋂ 𝑡(𝑍) (2.1)
sup(𝕏) = |𝑡(𝕏)| (2.2)
Trang 33Trong các thuật toán sử dụng biểu diễn theo chiều dọc, các 2 − 𝑖𝑡𝑒𝑚𝑠𝑒𝑡 được tạo
ra từ CSDL giao tác ban đầu (1 − 𝑖𝑡𝑒𝑚𝑠𝑒𝑡), sau đó 𝑘 − 𝑖𝑡𝑒𝑚𝑠𝑒𝑡 tiếp theo được tạo ra bởi các (𝑘 − 1) − 𝑖𝑡𝑒𝑚𝑠𝑒𝑡 Khi kích thước của các 𝑖𝑡𝑒𝑚𝑠𝑒𝑡 tăng thì kích thước của 𝑇𝑖𝑑𝑠𝑒𝑡 cũng tăng theo, vậy nên việc sử dụng biểu diễn theo chiều dọc giúp tính toán độ
hỗ trợ nhanh hơn và sử dụng ít bộ nhớ hơn so với việc sử dụng biểu diễn theo chiều ngang [15] [16]
2.3 Thuật toán Eclat
Eclat dựa trên hai bước chính: sinh tập ứng viên và cắt tỉa Trong bước sinh ứng viên, mỗi ứng viên 𝑘 − 𝑖𝑡𝑒𝑚𝑠𝑒𝑡 được sinh từ hai (𝑘 – 1) − 𝑖𝑡𝑒𝑚𝑠𝑒𝑡 phổ biến và sau
đó tính toán độ hỗ trợ của nó Việc cắt tỉa được thực hiện thông qua việc xét độ hỗ trợ Nếu độ hỗ trợ của ứng viên đang xét nhỏ hơn ngưỡng tối thiểu, thì nó sẽ bị loại bỏ, ngược lại ứng viên đang xét là tập mục phổ biến và được sử dụng để sinh ra (𝑘 + 1) −𝑖𝑡𝑒𝑚𝑠𝑒𝑡𝑠
Eclat sử dụng dữ liệu theo chiều dọc, nên việc tính toán độ hỗ trợ tương đối dễ dàng Việc sinh tập ứng viên là việc tìm kiếm trong cây tìm kiếm (trong dàn) Eclat sử dụng chiến lược tìm kiếm theo chiều sâu (DFS) bắt đầu với các 1 − 𝑖𝑡𝑒𝑚𝑠𝑒𝑡 phổ biến Sau đó 2 − 𝑖𝑡𝑒𝑚𝑠𝑒𝑡𝑠 phổ biến sẽ đạt được từ 1 − 𝑖𝑡𝑒𝑚𝑠𝑒𝑡𝑠, 3 − 𝑖𝑡𝑒𝑚𝑠𝑒𝑡𝑠 đạt được từ
2 − 𝑖𝑡𝑒𝑚𝑠𝑒𝑡𝑠 và tương tự
2.3.1 Sinh tập ứng viên
Một 𝑘 − 𝑖𝑡𝑒𝑚𝑠𝑒𝑡 được sinh ra bởi phép hợp của hai (𝑘 − 1) − 𝑖𝑡𝑒𝑚𝑠𝑒𝑡𝑠 có chung (𝑘 − 2) mục dữ liệu, hai (𝑘 − 1) − 𝑖𝑡𝑒𝑚𝑠𝑒𝑡𝑠 gọi là các 𝑖𝑡𝑒𝑚𝑠𝑒𝑡 cha của 𝑘 −𝑖𝑡𝑒𝑚𝑠𝑒𝑡
Ví dụ 2.2: {𝑎𝑏𝑐} = {𝒂𝑏} ∪ {𝒂𝑐}, {𝑎𝑏} và {𝑎𝑐} là cha của {𝑎𝑏𝑐}
Để tránh việc sinh ra các tập mục dữ liệu trùng lắp, các (𝑘 − 1) − 𝑖𝑡𝑒𝑚𝑠𝑒𝑡𝑠 sẽ được sắp xếp theo một thứ tự nào đó (ví dụ: sắp xếp tăng dần)
Để sinh ra tất cả 𝑘 − 𝑖𝑡𝑒𝑚𝑠𝑒𝑡𝑠 có thể từ một tập các (𝑘 − 1) − 𝑖𝑡𝑒𝑚𝑠𝑒𝑡𝑠 có chung (𝑘 − 2) mục dữ liệu, ta chỉ cần thực hiện phép hợp của một (𝑘 − 1) − 𝑖𝑡𝑒𝑚𝑠𝑒𝑡 với tất
cả (𝑘 − 1) − 𝑖𝑡𝑒𝑚𝑠𝑒𝑡𝑠 đứng sau nó, và quá trình này thực hiện cho tất cả (𝑘 − 1) −𝑖𝑡𝑒𝑚𝑠𝑒𝑡𝑠 trừ (𝑘 − 1) − 𝑖𝑡𝑒𝑚𝑠𝑒𝑡 cuối cùng
Trang 34Ví dụ 2.3: giả sử có các tập 1 − 𝑖𝑡𝑒𝑚𝑠𝑒𝑡𝑠 gồm {𝑎}, {𝑏}, {𝑐}, {𝑑}, đầu tiên ta thực hiện sắp xếp tập này theo thứ tự tăng dần theo từ điển Tiếp đến, để sinh ra tất cả 2 −𝑖𝑡𝑒𝑚𝑠𝑒𝑡𝑠 ta thực hiện phép hợp {𝑎} với {𝑏}, {𝑐}, {𝑑}, {𝑒} được {𝑎𝑏}, {𝑎𝑐}, {𝑎𝑑}, {𝑎𝑒}, sau đó hợp {𝑏} với {𝑐}, {𝑑}, {𝑒} được {𝑏𝑐},{𝑏𝑑},{𝑏𝑒} Tương tự chúng ta thực hiện cho {𝑐} và {𝑑}, chúng ta được tất cả 2 − 𝑖𝑡𝑒𝑚𝑠𝑒𝑡𝑠 {𝑎𝑏}, {𝑎𝑐}, {𝑎𝑑}, {𝑎𝑒}, {𝑏𝑐}, {𝑏𝑑}, {𝑏𝑒}, {𝑐𝑑}, {𝑐𝑒}, {𝑑𝑒} Tiếp tục, để sinh 3 − 𝑖𝑡𝑒𝑚𝑠𝑒𝑡𝑠 từ các 2−𝑖𝑡𝑒𝑚𝑠𝑒𝑡𝑠 trên, trước hết ta chia các tập mục này thành các nhóm ở đó các tập mục có chung 1 mục dữ liệu, sau đó trong mỗi nhóm, chúng ta thực hiện phép hợp để sinh 3 − 𝑖𝑡𝑒𝑚𝑠𝑒𝑡𝑠 Ví dụ, nhóm một: ({𝒂𝑏}, {𝒂𝑐}, {𝒂𝑑}, {𝒂𝑒}) có chung {𝑎}, nhóm 2: ({𝒃𝑐}, {𝒃𝑑}, {𝒃𝑒}) có chung {𝑏}, nhóm 3: ({𝒄𝑑}, {𝒄𝑒}) có chung {𝑐}, nhóm cuối ({𝒅𝑒} ) có chung {𝑑} Các nhóm này dẫn tới một định nghĩa về lớp tương đương và tiền tố lớp tương đương dưới đây
Định nghĩa 2.1 Lớp tương đương (Equivalence Class) và Tiền tố (Prefix):
Lớp tương đương của 𝑘 − 𝑖𝑡𝑒𝑚𝑠𝑒𝑡𝑠 trong một cây tìm kiếm là một tập gồm tất cả
𝑘 − 𝑖𝑡𝑒𝑚𝑠𝑒𝑡 có (𝑘 − 1) mục dữ liệu chung (𝑘 − 1) mục chung này được gọi là tiền tố của lớp tương đương
Ký hiệu lớp tương đương 𝐸 = {(𝑖1, 𝑡(𝑃 ∪ 𝑖1)), … , (𝑖𝑘, 𝑡(𝑃 ∪ 𝑖𝑘)) | 𝑃} trong
𝑖1 , … , 𝑖𝑘 ∉ 𝑃 là các mục phân biệt của các 𝑖𝑡𝑒𝑚𝑠𝑒𝑡 và 𝑃 là tiền tố của lớp tương đương Trong biểu diễn này, mỗi 𝑖𝑡𝑒𝑚 được kèm theo 𝑡𝑖𝑑𝑠𝑒𝑡 của nó
Ví dụ 2.4: Tiếp theo ví dụ 2.2, cho các 2 − 𝑖𝑡𝑒𝑚𝑠𝑒𝑡𝑠 {𝑎𝑏}, {𝑎𝑐}, {𝑎𝑑}, {𝑎𝑒} ,{𝑏𝑐}, {𝑏𝑑}, {𝑏𝑒}, {𝑐𝑑}, {𝑐𝑒}, {𝑑𝑒} Khi này ta có các lớp tương đương của 2 − 𝑖𝑡𝑒𝑚𝑠𝑒𝑡𝑠 và tiền tố của lớp tương đương đó lần lượt như sau:
Trang 35Ví dụ 2.5: Tạo các 3 − 𝑖𝑡𝑒𝑚𝑠𝑒𝑡𝑠 từ các lớp tương đương và tiền tố của 2 −𝑖𝑡𝑒𝑚𝑠𝑒𝑡𝑠 theo như ví dụ 2.3: Đối với lớp 𝐸1, nối các 𝑖𝑡𝑒𝑚𝑠𝑒𝑡 của nó ta được {𝑏𝑐}, {𝑏𝑑}, {𝑏𝑒}, thêm tiền tố 𝑃1 = {𝑎} ta được các 3 − 𝑖𝑡𝑒𝑚𝑠𝑒𝑡 là {𝑎𝑏𝑐}, {𝑎𝑏𝑑}, {𝑎𝑏𝑒} Thực hiện tương tự đối với các lớp 𝐸2, 𝐸3, 𝐸4
Trong quá trình xử lý này, chúng ta cũng tạo ra 𝑡𝑖𝑑𝑠𝑒𝑡 của 𝑖𝑡𝑒𝑚𝑠𝑒𝑡 mới bởi phép giao của 2 𝑡𝑖𝑑𝑠𝑒𝑡 tương ứng với hai mục phân biệt (theo công thức 2.1) Có thể thấy rằng việc kết hợp hai 𝑖𝑡𝑒𝑚𝑠𝑒𝑡 để tạo ra một 𝑖𝑡𝑒𝑚𝑠𝑒𝑡 mới và việc tính toán độ hỗ trợ trở nên đơn giản Ở đây ta chỉ quan tâm nhiều đến phép giao của các 𝑡𝑖𝑑𝑠𝑒𝑡
Từ định nghĩa, chúng ta có thể thấy rằng 𝑖𝑡𝑒𝑚 cơ sở với 1 − 𝑖𝑡𝑒𝑚𝑠𝑒𝑡 là một lớp tương đương với tiền tố 𝑃 = { } và lớp tương đương này bằng với cơ sở dữ liệu dọc ban đầu Cho trước một tiền tố, chúng ta chỉ có một lớp tương đương duy nhất
Cho một lớp tương đương 𝐸 = {(𝑖1, 𝑡(𝑃 ∪ 𝑖1)), … , (𝑖𝑘, 𝑡(𝑃 ∪ 𝑖𝑘)) | 𝑃} nếu ta xem tập {𝑖1, … , 𝑖𝑘} là một 𝑖𝑡𝑒𝑚 cơ sở, chúng ta sẽ có một cây các 𝑖𝑡𝑒𝑚𝑠𝑒𝑡 thông qua item cơ sở này, và nếu chúng ta thêm tiền tố 𝑃 vào tất các các 𝑖𝑡𝑒𝑚𝑠𝑒𝑡 trong cây mới này, chúng ta sẽ có một tập tất cả các các itemset có chung tiền tố 𝑃 trong cây tìm kiếm thông qua 𝑖𝑡𝑒𝑚 cơ sở B (còn gọi là cây tìm kiếm ban đầu) Nói cách khác, từ lớp tương đương này chúng ta có thể sinh ra một tập tất cả các itemset có chung tiền tố 𝑃 và tập này tạo thành một cây con của cây tìm kiếm ban đầu
Eclat bắt đầu với tiền tố 𝑃 = { } và cây tìm kiếm bắt đầu ban đầu Để chia cây tìm kiếm đầu tiên, chọn tiền tố 𝑃 = {𝑎}, tạo ra lớp tương đương tương ứng và thực hiện khai phá tập phổ biến trong cây con có tất cả các 𝑖𝑡𝑒𝑚𝑠𝑒𝑡 chứa {𝑎}, trong nhánh cây con này, chia thành hai cây con nữa bằng cách chọn tiền tố 𝑃 = {𝑎𝑏}: cây con đầu tiên bao gồm tất cả itemset chứa {𝑎𝑏}, cây còn lại gồm tất cả các itemset chứa {𝑎} nhưng không chứa {𝑏}, và quá trình này được thực hiện đệ quy cho đến khi tất các các 𝑖𝑡𝑒𝑚𝑠𝑒𝑡 của cây tìm kiếm ban đầu được xem xét
Cây tìm kiếm của một item cơ sở {𝑎, 𝑏, 𝑐, 𝑑, 𝑒} được biểu diễn như hình 2.2 trang bên:
Trang 36Hình 2.2 Cây tìm kiếm của item cơ sở {a,b,c,d,e}
Theo chiến lược tìm kiếm theo chiều sâu của Eclat, chúng ta sẽ lấy tiền tố 𝑃 = {𝑎}
và sinh ra lớp tương đương với các itemset {𝑎𝑏, 𝑎𝑐, 𝑎𝑑, 𝑎𝑒}, chúng là các 2 − 𝑖𝑡𝑒𝑚𝑠𝑒𝑡 đều có chung {𝑎} Trong cây con này, chúng ta lấy tiền tố 𝑃 = {𝑎𝑏} và lớp tương đương
sẽ bao gồm các itemset {𝑎𝑏𝑐, 𝑎𝑏𝑑, 𝑎𝑏𝑒} Chúng ta có thể thấy rằng mỗi nút trong cây là một tiền tố của một lớp tương đương với những 𝑖𝑡𝑒𝑚𝑠𝑒𝑡 ngay dưới nó
Có thể thấy rằng Eclat không khai thác triệt để tính chất Apriori, “Mọi tập mẹ của tập không phổ biến đều không phổ biến, tức là ∀ 𝑌 ⊇ 𝑋, nếu 𝑠𝑢𝑝𝑝(𝑋) ≤ min _𝑠𝑢𝑝𝑝 ⇒𝑠𝑢𝑝𝑝(𝑌) ≤ min _𝑠𝑢𝑝𝑝 Ví dụ, itemset {𝑎𝑏𝑐} vẫn được sinh ra ngay cả khi {𝑏𝑐} không thường xuyên bởi vì tại thời điểm sinh ra {𝑎𝑏𝑐}, chúng ta không biết {𝑏𝑐} có thường xuyên hay không vì itemset {𝑏𝑐} chưa được xem xét trong thủ tục tìm kiếm theo chiều sâu
Trang 37Như công thức 2.1, có thể thấy rằng công việc chính của Eclat là phép giao giữa các 𝑡𝑖𝑑𝑠𝑒𝑡, do đó kích thước của các 𝑡𝑖𝑑𝑠𝑒𝑡 là một trong những yếu tố chính ảnh hưởng đến thời gian thực thi và dung lượng bộ nhớ mà Eclat sử dụng Các 𝑡𝑖𝑑𝑠𝑒𝑡 càng lớn thì càng cần nhiều thời gian và bộ nhớ để khai thác tất cả các tập thường phổ biến
2.3.2 Mã giả thuật toán Eclat
Giả sử rằng CSDL giao tác ban đầu được định dạng theo chiều dọc và được biểu diễn bởi một lớp tương đương 𝐸 với tiền tố 𝑃 = { }, độ hỗ trợ tối thiểu 𝑆𝑚𝑖𝑛.
1: for all ij occuring in E do
2: 𝑃 ≔ 𝑃 ∪ 𝑖𝑗 // add 𝑖𝑗 to create a new prefix
3: init(E ′ ) //initialize a new equivalence class with the new prefix P 4: for all ik occuring in E such that k > j do
Trang 38Hình 2.3 Minh họa khai tác tập thường xuyên với thuật toán Eclat
2.4 Thuật toán dEclat
Thay vì sử dụng các 𝑡𝑖𝑑 chung của hai 𝑖𝑡𝑒𝑚𝑠𝑒𝑡 cha để biểu diễn một 𝑖𝑡𝑒𝑚𝑠𝑒𝑡 Zaki [14] đã biểu diễn một 𝑖𝑡𝑒𝑚𝑠𝑒𝑡 bởi các 𝑡𝑖𝑑 xuất hiện trong 𝑡𝑖𝑑𝑠𝑒𝑡 của tiền tố của
nó nhưng không xuất hiện trong 𝑡𝑖𝑑𝑠𝑒𝑡 của nó Tập của các 𝑡𝑖𝑑 này được gọi là 𝑑𝑖𝑓𝑓𝑠𝑒𝑡 (sự khác nhau giữa 𝑡𝑖𝑑𝑠𝑒𝑡 của 𝑖𝑡𝑒𝑚𝑠𝑒𝑡 với tiền tố (prefix) của nó) Bằng cách sử dụng 𝑑𝑖𝑓𝑓𝑠𝑒𝑡, lực lượng của các tập biểu diễn cho 𝑖𝑡𝑒𝑚𝑠𝑒𝑡 được giảm đi đáng kể và điều này làm cho việc tính phép giao nhanh hơn và sử dụng ít bộ nhớ hơn
Ví dụ 2.7: như hình 2.3 Với biểu diễn tidset, itemset {𝑎𝑐𝑑} có 2 itemset cha là {𝑎𝑐}
và {𝑎𝑑}, 𝑡({𝑎𝑐}) = {3,4,6,8}, 𝑡({𝑎𝑑} = {1,4,6,8,10}, theo công thức 2.1 ta có 𝑡({𝑎𝑐𝑑} = 𝑡({𝑎𝑐}) ∩ 𝑡({𝑎𝑑}) = {4,6,8}, lực lượng của 𝑡𝑖𝑑𝑠𝑒𝑡 này là 3 Với biểu diễn 𝑑𝑖𝑓𝑓𝑠𝑒𝑡, tiền tố của {acd} là {ac}, t({ac})={3,4,6,8}, t({acd})={4,6,8}, khi này