Luận văn nhằm tìm hiểu cấu trúc Node-set và áp dụng trong khai thác tập phổ biến trên cơ sở dữ liệu tăng trưởng... 3- Phạm vi nghiên cứu đề tài Vì tầm quan trọng của một số ứng dụng kha
Trang 1-
LÊ MINH TÂM
KHAI THÁC MẪU PHỔ BIẾN TRÊN CƠ SỞ
DỮ LIỆU TĂNG TRƯỞNG SỬ DỤNG
Trang 2LÊ MINH TÂM
KHAI THÁC MẪU PHỔ BIẾN TRÊN CƠ SỞ
DỮ LIỆU TĂNG TRƯỞNG SỬ DỤNG
Trang 3CÔNG TRÌNH ĐƯỢC HOÀN THÀNH TẠI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TP HCM
Cán bộ hướng dẫn khoa học: PGS.TS VÕ ĐÌNH BẢY
Luận văn Thạc sĩ được bảo vệ tại Trường Đại học Công nghệ TP HCM ngày 24 tháng 4 năm 2017
Thành phần Hội đồng đánh giá Luận văn Thạc sĩ gồm:
Xác nhận của Chủ tịch Hội đồng đánh giá Luận sau khi Luận văn đã được sửa chữa (nếu có)
Chủ tịch Hội đồng đánh giá LV
TS CAO TÙNG ANH
Trang 4NHIỆM VỤ LUẬN VĂN THẠC SĨ
Họ tên học viên: Lê Minh Tâm Giới tính: Nữ Ngày, tháng, năm sinh: 26/ 09/ 1988 Nơi sinh: TP HCM Chuyên ngành: Công nghệ Thông tin MSHV:1541860024
I- Tên đề tài:
Khai thác mẫu phổ biến trên cơ sở dữ liệu tăng trưởng sử dụng cấu trúc Node-set
II- Nhiệm vụ và nội dung:
Tìm hiểu cơ sở lý thuyết thuật toán Apriori, FP-Growth, PPV, Prepost, FIN, Prelarge-Tree
Cải tiến thuật toán Prelarge-Tree dựa vào cấu trúc Node-set và thuật toán FIN
III- Ngày giao nhiệm vụ:
IV- Ngày hoàn thành nhiệm vụ: 31/ 03/ 2017
V- Cán bộ hướng dẫn: PGS.TS VÕ ĐÌNH BẢY
CÁN BỘ HƯỚNG DẪN KHOA QUẢN LÝ CHUYÊN NGÀNH
Trang 5LỜI CAM ĐOAN
Tôi xin cam đoan đây là công trình nghiên cứu của riêng tôi Các số liệu, kết quả nêu trong Luận văn là trung thực và chƣa từng đƣợc ai công bố trong bất kỳ công trình nào khác
Tôi xin cam đoan rằng mọi sự giúp đỡ cho việc thực hiện luận văn này
đã đƣợc cảm ơn và các thông tin trích dẫn trong Luận văn đã đƣợc chỉ rõ nguồn gốc
Học viên thực hiện luận văn
Lê Minh Tâm
Trang 6Xin chân thành cảm ơn Thầy hướng dẫn PGS Võ Đình Bảy đã tận tình, chu đáo hướng dẫn tôi thực hiện khoá luận này
Mặc dù đã có nhiều cố gắng để thực hiện đề tài một cách hoàn chỉnh nhất Song do buổi đầu làm quen với công tác nghiên cứu khoa học, tiếp cận với thực tế sàn xuất cũng như hạn chế về kiến thực và kinh nghiệm nên không thể tránh khỏi những thiếu sót nhất định mà bản thân chưa thấy được Tôi rất mong được sự góp ý của quý Thầy, Cô để khoá luận được hoàn chỉnh hơn
Tôi xin chân thành cảm ơn
Lê Minh Tâm
Trang 7TÓM TẮT
Ngành công nghiệp công nghệ thông tin ngày càng phát triển, đòi hỏi lượng thông tin lưu trữ ngày càng cao Khả năng ứng dụng khai thác dữ liệu nhằm phát hiện các quy luật thông tin trong lượng dữ liệu khổng lồ, giúp đưa ra những quyết định đúng đắn mang lại cơ hội phát triển mạnh mẽ cho các doanh nghiệp
Mặc dù đã có nhiều thuật toán khai thác dữ liệu như Approri (Agrawal & Srikant,1994), Eclat (Zaki, 2000), FP-Growth (Han và các đồng sự, 2000) nhưng chưa hiệu quả và phù hợp với lượng lớn dữ liệu hiện nay Gần đây, Node-list (Deng & Wang, 2010) và N-list (Deng, Wang, & Jiang, 2012) là hai cấu trúc dữ liệu được sử dụng phổ biến, nó được chứng minh là rất hiệu quả trong việc khai thác tập phổ biến Vấn đề chính đặt ra đối với những cấu trúc này là, cả hai thuật toán đều phải mã hóa cho từng nút một của PPC-Tree với mã pre-order và post-order Đây là nguyên nhân gây tốn bộ nhớ vá bất tiện trong quá trình khai thác tập phổ biến Vì vậy, cấu trúc Node-set (Deng & Lv, 2014) hiệu quả hơn cho việc khai thác tập phổ biến Node-set chỉ yêu cầu pre-order hoặc post-order cho mỗi nút, chính điều này giúp cho Node-set tiết kiệm một nửa bộ nhớ so với Node-list và N-list
Luận văn nhằm tìm hiểu cấu trúc Node-set và áp dụng trong khai thác tập phổ biến trên cơ sở dữ liệu tăng trưởng
Trang 8ABSTRACT
The IT industry is growing, demanding an increasing amount of information The ability to utilize data mining to detect information rules in huge amounts of data helps to make the right decisions that provide a strong opportunity for business growth
Although many data mining algorithms, such as Approri (Agrawal & Srikant, 1994), Eclat (Zaki, 2000), FP-Growth (Han et al., 2000), are not efficient and consistent with large amounts of data Current data Recently, Node-list (Deng & Wang, 2010) and N-list (Deng, Wang, & Jiang, 2012) are two commonly used data structures, which have proved to be very effective in stating Popular file pool The main problem with these constructs is that both algorithms must encode each node of the PPC-Tree with pre-order and post-order code This is the cause of memory loss inconvenient patch during the common file exploit Therefore, the Node-set (Deng & Lv, 2014) structure is more efficient for common file mining Node-sets only require pre-order or post-order for each node, which in turn allows Node-sets to save half the memory compared to Node-lists and N-lists
The thesis aims to investigate the Node-set structure and apply in the popular file
mining on the incremental database
Trang 9MỤC LỤC
MỞ ĐẦU 1
1- Nhu cầu thực tiễn 1
2- Mục tiêu đề tài 1
3- Phạm vi nghiên cứu đề tài 1
4- Bố cục đề tài 2
CHƯƠNG 1- TỔNG QUAN VỀ ĐỀ TÀI 4
I- giới thiệu về khai thác dữ liệu 4
1- Dữ liệu là gì? 4
2- Khai thác dữ liệu là gì? 4
3- Quy trình phát hiện tri thức và khai thác dữ liệu 5
4- Các k thuật khai thác dữ liệu 7
CHƯƠNG 2- CƠ SỞ LÝ THUYẾT 8
I- KHAI THÁC DỮ LIỆU 8
1- Khai thác luật kết hợp 8
2- Khai thác tập phổ biến 8
II- Các thuật toán khai thác tập phổ biến 10
1- Khai thác tập phổ biến sử dụng thuật toán Apriori 10
2- Khai thác tập phổ biến sử dụng thuật toán FP-growth 14
3- Khai thác tập phổ biến sử dụng thuật toán PPV 18
4- Khai thác tập phổ biến sử dụng thuật toán PrePost 25
5- Tìm hiểu cấu trúc POC-Tree, Node-set và thuật tóan FIN 33
CHƯƠNG 3 - ỨNG DỤNG NODE-SET TRONG KHAI THÁC TẬP PHỔ BIẾN TRÊN CƠ SỞ DỮ LIỆU TĂNG TRƯỞNG 46
I- Giới thiệu 46
II- Khai thác tập phổ biến trên cơ sở dữ liệu tăng Trưởng 46
1- Thuật toán Prelarge-itemset 47
2- Thuật toán cập nhật Incremental_FIN 48
Trang 103- Ví dụ minh họa 52
CHƯƠNG 4- KẾT QỦA THỰC NGHIỆM 59
I- Môi trường thực nghiệm 59
II- Dữ liệu thực nghiệm 59
III- So sánh thời gian khai thác 59
1- Khai thác dữ liệu Mushroom 60
2- Khai thác dữ liệu T40l10D100K 61
3- Khai thác dữ liệu Connect 62
CHƯƠNG 5- KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 63
I- Điểm mạnh 63
II- Điểm yếu 63
1- Hiệu quả của đề tài 63
2- Hướng phát triển trong tương lai 63
Trang 12DANH MỤC CÁC BẢNG
Bảng 2 1: CSDL các giao dịch 8
Bảng 2 2: Độ phổ biến của các tập 1-mục 10
Bảng 3 1: Cơ sở dự liệu ban đầu 52
Bảng 3 2: Ba giao dịch mới 53
Bảng 3.3: Số lƣợng của tất cả các tập trong giao dịch mới 55
Bảng 3.4: Vùng của các tập trong giao dịch mới 55
Bảng 3.5: Ba phân vùng của tập trong các giao dịch mới 56
Bảng 4.1: Đặc điểm của các cơ sở dữ liệu thực nghiệm 59
Trang 13DANH MỤC CÁC BIỂU ĐỒ, ĐỒ THỊ, SƠ ĐỒ, HÌNH ẢNH
Hình 1.1: Quy trình phát triển tri thức và khai thác dữ liệu 5
Hình 2.1: Bước 1 và 2 của thuật toán Apriori tìm tập phổ biến 1-mục 12
Hình 2.2: Bước 3 và 4 của thuật toán Apriori tìm tập phổ biến 2-mục 12
Hình 2.3: Bước 5 và 6 của thuật toán Apriori tìm tập phổ biến 3-mục 13
Hình 2.4: Bước 7 và 8 của thuật toán Apriori tìm tập phổ biến 4-mục 13
Hình 2.5: Bước 9 và 10 của thuật toán Apriori tìm tập phổ biến 5-mục 13
Hình 2.6: Tập phổ biến 1-mục 17
Hình 2.7: Cây FP-tree cho CSDL bảng 2.1 17
Hình 2.8: Cây PPC-Tree cho CSDL của bảng 2.1 19
Hình 2.9: Node-list của tập phổ biến 20
Hình 2.10: Node-list của bc 21
Hình 2.11: Node-list của bce 22
Hình 2.12: Minh hoạ khởi dựng PPC-tree 25
Hình 2.13: Tập phổ biến của N-list 26
Hình 2.14: N-list của bf 28
Hình 2 15: N-list của bcf 33
Hình 2.16: POC-tree sau khi chạy thuật toán 2.11 theo dữ liệu của bảng 2.1 35
Hình 2.17: Chỉ ra các Node-set của tất cả tập phổ biến 36
Hình 2.18: Node-set của bf 37
Hình 2.19: Node-set của bcf 38
Hình 2.20: Một ví dụ về cây liệt kê 40
Hình 3.1: Chín trường hợp khi thêm giao dịch mới vào CSDL đã tồn tại 47
Hình 3.2: Tập phổ biến và gần phổ biến của CSDL bảng 3.1 52
Hình 3.3: POC- tree được xây dựng 54
Hình 3.4: Kết quả cuối cùng của Prelarge tree 57
Hình 4.1: Tổng thời gian khai thác và số lượng tập phổ biến khi thêm 10% dữ liệu với ngưỡng =0.1, =0.05 60
Trang 14Hình 4.2: Tổng thời gian khai thác và số lƣợng tập phổ biến khi thêm 10 lần dữ liệu
có =0.05, =0.02 61Hình 4.3: Tổng thời gian khai thác và số lƣợng tập phổ biến khi thêm 10 lần dữ liệu
có =0.8, =0.7 62
Trang 15MỞ ĐẦU 1- Nhu cầu thực tiễn
Những tổ chức có thể khai thác dữ liệu và thông tin để hỗ trợ việc đưa ra những quyết định chiến lược trong thế giới số hiện nay sẽ có thể đổi mới doanh nghiệp và dẫn đầu trong ngành của họ
Việc giải phóng thông tin kịp thời có thể được sử dụng để mang lại sự thấu hiểu, kinh nghiệm và những quyết định sáng suốt hơn, giúp các công ty sáng tạo với tốc độ chưa từng có
Các tổ chức thành công sẽ tạo ra sự khác biệt bằng cách cung cấp trải nghiệm khách hàng mang tính nhất quán, an toàn, có thể tùy biến và có khả năng mở rộng Họ sẽ đạt được kết quả kinh doanh thực sự thông qua khả năng nâng cao hiệu suất hoạt động, lòng trung thành của khách hàng và tốc độ tăng trưởng
Khi công nghệ thông tin đóng vai trò cốt lõi để hỗ trợ mọi ứng dụng đang phục vụ khách hàng, các công ty có thể tối ưu hóa và bảo vệ cơ sở hạ tầng trung tâm dữ liệu nhằm cung cấp hiệu năng và chức năng khai thác dữ liệu để cải thiện hoạt động tương tác với khách hàng Giúp các chủ doanh nghiệp đưa ra những quyết định hiệu quả hơn và theo kịp được những xu thế và sở thích mới
Vấn đề đặt ra, làm sao giải quyết các vấn đề này nhằm giảm chi phí, tốn k m cho các nhà cung cấp dịch vụ; tối ưu hơn nhằm tăng doanh số, doanh thu cho các tổ chức, cá nhân
2- Mục tiêu đề tài
Nghiên cứu cơ sở lý thuyết các k thuật khai thác dữ liệu tăng trưởng Cụ thể là đưa
ra giải pháp cải tiến thuật toán khai thác dữ liệu tăng trưởng
3- Phạm vi nghiên cứu đề tài
Vì tầm quan trọng của một số ứng dụng khai thác dữ liệu tăng trưởng, nhiều thuật toán đã được đề xuất trong lĩnh vực khai thác trong nhiều năm qua, hầu hết các thuật toán đều tập trung giảm bớt thời gian khai thác nhưng vẫn đưa ra kết quả chính xác nhất
Luận văn này tập trung nghiên cứu các giải pháp cho bài toán khai thác dữ liệu tăng trưởng Luận văn khảo sát các cấu trúc dữ liệu và thuật toán đã có từ trước Việc khảo sát
Trang 16nhằm mục đích cải tiến các giải pháp đã có và hướng nghiên cứu trong lĩnh vực này Luận văn cũng đưa ra phân tích so sánh kết quả thực hiện của nhiều k thuật khai thác tăng trưởng đã có và thảo luận các khía cạnh về mặt lý thuyết của lĩnh vực này, sau đó ứng dụng các kết quả đã chứng minh vào khai thác dữ liệu tăng trưởng
Dựa trên một số công trình nghiên cứu trong lĩnh vực khai thác dữ liệu tang trưởng
đã công bố trong những năm gần đây, từ đó luận văn trình bày:
- Phương pháp khai thác dữ liệu tăng trưởng Nghiên cứu cấu trúc dữ liệu
và thuật toán khai thác dữ liệu tăng trưởng, tiêu biểu cấu trúc Node-set và thuật toán FIN
- Kết hợp cấu trúc dữ liệu Node-set Node-set với thông tin giao dịch vào thuật toán FIN Sau đó có thể áp dụng trực tiếp vào quá trình khai thác dữ liệu tang trưởng một cách hiệu quả hơn
- Xây dựng tập cơ sở dữ liệu thực nghiệm, so sánh các kết quả đạt được và đánh giá hiệu quả của ứng dụng đề xuất về thời gian, bộ nhớ
4- Bố cục đề tài
Chương 1: Giới thiệu tổng quan
Chương 2: Cơ sở lý thuyết
Chương 3: Ứng dụng Node-set trong khai thác tập phổ biến trên cơ sở dữ liệu tăng trưởng
Chương 4: Thực nghiệm và đánh giá
Chương 5: Kết luận và hướng phát triển
Luận văn trình bày trong 5 chương Chương một trình bày tổng quan về CSDL tăng trưởng Chương này cung cấp một cái nhìn chung nhất về lĩnh vực khai thác dữ liệu CSDL tăng trưởng
Chương hai trình bày cơ sở lý thuyết về khai thác dữ liệu đã được phát triển Trong
đó, luận văn mô tả sơ lượt thuật toán Apriori, FP-Growth, PPV, PrePost là các thuật toán
cơ bản làm cơ sở để phát triển các thuật toán sau này
Chương ba trình bày chi tiết cấu trúc dữ liệu Node-set, thuật toán FIN và áp dụng chúng trong khai thác dữ liệu tăng trưởng
Trang 17Luận văn trình bày tổng quan về khai thác dữ liệu tăng trưởng, lý do vì sao chọn cấu trúc Node-set, thuật toán FIN vào thuật toán khai thác dữ liệu tăng trưởng
Chương bốn trình bày những kết quả thực nghiệm và nhận x t
Chương năm trình bày kết luận và hướng phát triển trong tương lai
Trang 18CHƯƠNG 1- TỔNG QUAN VỀ ĐỀ TÀI I- GIỚI THIỆU VỀ KHAI THÁC DỮ LIỆU
1- Dữ liệu là gì?
Những năng gần đây, nhu cầu lưu trữ dữ liệu ngày càng cao Các công ty muốn phát triển đón đầu thị hiếu phải nắm rõ được nhu cầu và sở thích khách hàng Đơn cử như trang eBay, Amazon hoặc những trang tương tự, trang này cũng sẽ đưa ra những sản phẩm gợi ý tiếp theo cho bạn, ví dụ khi xem điện thoại, nó sẽ gợi ý cho bạn mua thêm ốp lưng, pin dự phòng; hoặc khi mua áo thun thì sẽ có thêm gợi ý quần jean, dây nịt, v.v Vì vậy, nghiên cứu được sở thích, thói quen của khách hàng cũng gián tiếp giúp doanh nghiệp bán được nhiều hàng hóa hơn
Vậy những thông tin về thói quen, sở thích này có được từ đâu? Chính là từ lượng
dữ liệu khổng lồ mà các doanh nghiệp thu thập trong lúc khách hàng gh thăm và tương tác với trang web của mình Chỉ cần doanh nghiệp biết khai thác một cách có hiệu quả dữ liệu thì nó không chỉ giúp tăng lợi nhuận cho chính họ mà còn tăng trải nghiệm mua sắm của người dùng, chúng ta có thể tiết kiệm thời gian hơn nhờ những lời gợi ý so với việc phải tự mình tìm kiếm Tuy nhiên dữ liệu ngày một lớn thời gian khai thác ngày càng dài, tốc độ ngày càng chậm ảnh hưởng đến hiệu quả trong quá trình sử dụng
Khai thác dữ liệu được xem như là một công nghệ tri thức giúp khai thác những thông tin hữu ích từ những kho dữ liệu được tích trữ trong suốt quá trình hoạt động của một công ty, tổ chức nào đó
Trang 19Khai thác dữ liệu được gọi là khám phá tri thức trong cơ sở dữ liệu Đây là tiến trình của khám phá những mẫu hay tri thức có ích từ nguồn dữ liệu, như là cơ sở dữ liệu, văn bản, ảnh, Web, v.v Các mẫu phải có giá trị, có khả năng hữu ích và dễ hiểu Khai thác dữ liệu là một lĩnh vực đa ngành liên quan đến máy học, thống kê, cơ sở dữ liệu, trí tuệ nhân tạo, thu thập thông tin, và mô phỏng trực quan
Đ nh n h 1 1: Khai thác dữ liệu là một tập hợp các k thuật được sử dụng để tự
động khai thác và tìm ra các mối quan hệ lẫn nhau của dữ liệu trong một tập hợp dữ liệu khổng lồ và phức tạp, đồng thời cũng tìm ra các mẫu tiềm ẩn trong tập dữ liệu đó
3- Quy trình phát hiện t i thức v h i th c ữ iệu
Khai thác dữ liệu là một bước trong bảy bước của quá trình KDD (Knowleadge Discovery in Database) và KDD được xem như các quá trình khác nhau theo thứ tự sau:
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, v.v
Gôm ữ iệu (Gathering): tập hợp dữ liệu là bước đầu tiên trong quá trình
khai thác 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
dữ liệu đã được chọn
các mẫu
các tri thức
dữ liệu đã được làm sạch
Hình 1.1: Quy trình phát triển tri thức và khai thác dữ liệu
Trang 20 T ch ọc ữ iệu (Selection): ở 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 đó, trích chọn dữ liệu từ những kho dữ liệu và sau đó chuyển đổi về dạng thích hợp cho quá trình khai thác tri thức Quá trình 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 Ví dụ chọn ra những thông tin duyệt web của người dùng được lưu tại Web log mà những thông tin đó cho biết được người dùng đã xem một sản phẩm cụ thể nào chứ không phải là người dùng đã thao tác khác (xem hoặc lưu hình ảnh; truy cập trang không tồn tại; v.v )
ạch, tiền v chu n t ước ữ iệu (Cleaning, Pre-processing and Preparation): giai đoan thứ ba nà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 thác 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ẽ, logic 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ụ: trong Web log, cần loại bỏ các liên kết mà người dùng truy cập mà không tồn tại 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, không có giá trị Bở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
Chu ển đổi ữ iệu (Transformation): tiếp theo là giai đoạn chuyển đổi dữ
liệu, dữ liệu đưa ra có thể sử dụng và điều khiển được bởi việc tổ chức lại nó Dữ liệu đã được chuyển đổi phù hợp với mục đích khai thác
h i th c ữ iệu (Data mining): đây là công đoạn quan trọng và tốn nhiều
chi phí nhất của quá trình khai thác tri thức Xác định nhiệm vụ khai thác dữ liệu và lựa chọn k thuật khai thác để thực hiện khai thác, phát sinh tập mẫu Các mẫu này
là nguồn tri thức thô Trong công đoạn này, có thể cần sự tương tác của người dùng
để điều chỉnh và rút ra các thông tin cần thiết nhất Các tri thức nhận được có thể được lưu lại và sử dụng lại
Diễn iải v đ nh i t uả ẫu Int t ti n Ev u ti n Result): đây là giai đoạn cuối trong quá trình khai thác dữ liệu Ở giai đoạn này, các
Trang 21mẫu dữ liệu được chiết xuất ra bởi phần mềm khai thác dữ liệu Không phải bất cứ mẫu dữ liệu nào cũng đều hữu ích, đôi khi nó còn bị sai lệch Vì vậy, cần phải ưu tiên những tiêu chuẩn đánh giá để chiết xuất ra các tri thức (Knowledge)
Quá trình khai thác tri thức không chỉ là một quá trình tuần tự từ bước đầu tiên đến bước cuối cùng mà là một quá trình lặp và quay lui lại các bước đã qua Trong khai thác tri thức thì có thể cần có sự tương tác của con người để điều chỉnh rút trích dữ liệu cần thiết
4- C c thuật h i th c ữ iệu
Khai thác dữ liệu được chia nhỏ thành một số hướng chính như sau:
M tả h i niệm (concept description): thiên về mô tả, tổng hợp và tóm tắt
khái niệm Ví dụ: tóm tắt văn bản
Luật t h ci ti n u là dạng luật biểu diễn tri thứ ở dạng khá
đơn giản Ví dụ: “60 nam giới vào siêu thị nếu mua bia thì có tới 80 trong số họ
sẽ mua thêm thịt bò khô” Luật kết hợp được ứng dụng nhiều trong lĩnh vực kính doanh, y học, tin-sinh, tài chính thị trường chứng khoán, v.v
Ph n ớ v ự đ n c i ic ti n icti n xếp một đối tượng vào
một trong những lớp đã biết trước Ví dụ: phân lớp vùng địa lý theo dữ liệu thời tiết Hướng tiếp cận này thường sử dụng một số k thuật của machine learning như cây quyết định (decision tree), mạng nơron nhân tạo (neural network), v.v Người ta còn gọi phân lớp là học có giám sát (học có thầy)
Ph n cụ c u t in xếp các đối tượng theo từng cụm (số lượng cũng
như tên của cụm chưa được biết trước Người ta còn gọi phân cụm là học không giám sát (học không thầy)
: tương tự như khai thác luật kết hợp nhưng có thêm tính thứ
tự và tính thời gian Hướng tiếp cận này được ứng dụng nhiều trong lĩnh vực tài chính và thị trường chứng khoán vì nó có tính dự báo cao
Trang 22CHƯƠNG 2- CƠ SỞ LÝ THUYẾT I- KHAI THÁC DỮ LIỆU
1- Khai thác luật t h
Khai thác luật kết hợp trong CSDL là một trong các chức năng chính của khai thác
dữ liệu, là tìm ra các mối quan hệ giữa các đối tượng trong khối lượng dữ liệu lớn
Khai thác dữ liệu để tìm luật kết hợp gồm 2 giai đoạn:
- Khai thác tập phổ biến
- Sinh luật kết hợp từ các tập phổ biến tìm được
Khai thác tập phổ biến là bài toán rất quan trọng vì nó là giai đoạn đầu tiên trong khai thác luật kết hợp
2- Khai thác tập phổ bi n
Bài toán khai thác tập phổ biến là tìm kiếm các hạng mục, phần tử (itemset) có độ
phổ biến (support) thỏa mãn ngưỡng phổ biến tối thiểu (minSupp) được cho trước tùy vào
yêu cầu của người sử dụng Nói đơn giản hơn là tìm các phần tử mục, có số lần xuất hiện
lớn hơn hoặc bằng một con số minSupp cho trước
Ví dụ 2.1: lọc ra các mặt hàng xuất hiện từ 40 trong các giao dịch bán trở lên trong cửa hàng Trong đó, độ phổ biến (support) của mỗi mặt hàng là số lần bán mặt hàng
đó và minSupp = 40%
Cho một cơ sở dữ liệu D là các giao dịch, mỗi giao dịch có mã ID duy nhất và liệt
kê các mục có trong giao dịch đó Tập hợp tất cả các mục kí hiệu là I = {i1, i2, , im} Gọi
X = {i1, i2, , ik} với X I là một tập k-mục nếu nó chứa k mục Các giao dịch và mục
ở đây có thể hiểu là giao dịch bán hàng và các mặt hàng bán trong mỗi giao dịch (xem bảng 2.1)
Trang 23Trong đó I = {a, b, c, d, e, f, g, h} {a}, {b}, {c}, v.v là các mặt hàng (mục) {c}
là mục xuất hiện trong các giao dịch có mã ID là 1, 2, 3, 5 Tập 1- mục là { a, b, c, d, e, f, g, }; tập 2-mục gồm {ab, ac,, ae, af, ag, bc, bd, be, bf, bg, cd, ce, cf, cg, de, df, ef}; tập 3-mục gồm {abc, abe,,, ace, agc, bce, bcd, bcf, bde, bdf, bef, cde, cdf, cde, cdf, cef; tương tự ta có tập 4-mục, 5-mục, v.v
2.1- Các khái niệ c ản
Item (phần tử, mục)
- Các phần tử, mục đang được quan tâm
- I={I1,I2, ,Im}:tập tất cả m mục có thể có trong tập dữ liệu
Trang 24Ví dụ 2.2: Cho minSupp = 40% (40*5/100 = 2) Tập phổ biến 1-mục của giao dịch
D trong bảng 2.1 là {a, b, c, e, f} vì có độ phổ biến ≥ minSupp Tương tự, tập phổ biến
2-mục là {ac, bc, be, bf, ce}, tập phổ biến 3- mục là {bce}
II- CÁC THUẬT TOÁN KHAI THÁC TẬP PHỔ BIẾN
1- Khai thác tập phổ bi n s dụng thuật toán Apriori
Thuật toán Apriori được đề xuất bởi Agrawal năm 1994 3 Mục đích là để tìm mối liên hệ giữa các mặt hàng (danh mục) được bán trong siêu thị Thuật toán dựa trên tính chất:
- “Mọi tập con của tập phổ biến đều phổ biến, nghĩa là ∀X Y, nếu (Y) ≥
minSupp thì (X) ≥ minSupp”
- “Mọi tập cha của tập không phổ biến đều không phổ biến, nghĩa là ∀Y ⊇ X
nếu (X) < minSupp thì (Y) < minSupp”
Trang 25Thuật t n 2 1: Thuật toán Aprori
Đầu v :CSDL giao dịch D và ngƣỡng phổ biến minSupp
Đầu : FIs chứa tất cả các tập phổ biến của D
Trang 28Nhận xét:
Thuật toán Apriori đơn giản, dễ hiểu Tuy nhiên, mặt hạn chế của thuật toán là phải
qu t CSDL nhiều lần Nếu CSDL có tập k-mục phổ biến thì phải qu t ít nhất k lần Điều này làm Apriori tốn rất nhiều thời gian nếu CSDL lớn
2- Khai thác tập phổ bi n s dụng thuật toán FP-growth
Thuật toán FP-Growth là một phương pháp khác cho việc xác định các tập mục phổ biến Tương phản với những thuật toán Apriori, sử dụng cơ chế sinh-kiểm tra (sinh ra các tập mục cần x t, và kiểm tra xem mỗi tập mục có phải là phổ biến) phương pháp tăng trưởng mẫu (pattern-growth) nhận được itemsets phổ biến trực tiếp từ CSDL mà không mất chi phí cho việc sinh và kiểm tra độ lớn của các ứng viên
Đ nh n h 2 1(FP-tree): Cấu trúc FP-tree được định nghĩa như sau
- FP-tree bao gồm một nhãn root là “null”, tập các cây tiền tố là con của root,
và một bảng tập phổ biến
- Mỗi nút của cây tiền tố gồm ba trường dữ liệu: item-name, count và link, ở đây item-name được khai báo là mục đại diện cho nút, count là số lượng giao dịch đại diện cho đường dẫn điến nút này, và node-link là nút kế tiếp trong FP-tree
node-có cùng item-name, hay null nếu không node-có.
- Mỗi mục trong bảng frequent-header gồm hai trường dữ liệu, (1) name và node-link đứng đầu (một con trỏ chỉ đến nút đầu tiên mang theo item-name
item-trong FP-tree)
Trang 29Thuật t n 2.2: FP-tree
Đầu v Cơ sơ dữ liệu giao dịch DB, ngƣỡng minSupp
Đầu Cây FP-Tree
Duyệt D lần đầu để thu đƣợc tập F gồm các frequent item và support count của chúng Sắp xếp các item trong F theo trật tự giảm dần của support count ta đƣợc danh sách L
Tạo nút gốc R và gán nhãn “null”
Tạo bảng Header có |F| dòng và đặt tất cả các node –link chỉ đến null
For each giao tác T D { Duyệt D lần 2
- Chọn các item phổ biến của T đƣa vào P;
- Sắp các item trong P theo trật tự L;
- Call Insert_Tree(P, R); }
Hàm Insert_Tree(string[p|P],Tree T){
Trong đó p là mục đầu tiên của dãy và P là phần còn lại của dãy
If cây T có nút con N mà N.Item name = p
Trang 30If Tree chỉ chứa một đường dẫn đơn P then {
For mỗi tổ hợp của các nút trong đường dẫn P Do {
Sinh mẫu p= ∪ v i support_count( p) = mức hỗ trợ nhỏ nhất của
các nút trong
F=F∪ p }else{
for mỗi ai trong header của tree do
Sinh mẫu = ai ∪ support_count( ) = ai support_count
F= F∪
Xây dựng cơ sơ mẫu có điều kiện của Xây dựng FP tree có điều kiện của
if ∅ then Call FP_ Growth ( , ) }
}
Trang 31Ví dụ 2.4: X t cơ sở dữ liệu mẫu nhƣ trên bảng 2.1 Với minSupp= 40% (40*5/100
e:3 c:3
{}
f:1
f:2 a:1
a:1
Trang 32Chiếu trên f sinh ra các tập phổ biến là: {f:3, ef:2, cf: 2, bf:3, bcef: 2 }
Chiếu trên e sinh ra các tập phổ biến là: {e:3, be:3, ce:3, bce:3}
Chiếu trên c sinh ra các tập phổ biến là: {c:3, cb:3}
Chiếu trên b ta được {∅} ⇒ tập phổ biến: {b:4}
- Ưu điểm của FP-Growth
Trong thực tế thuật toán FP-Growth chỉ cần đọc file hai lần, trái ngược với Apriori đọc file cho mỗi lần lặp
Một lợi ích khác FP-Growth loại bỏ việc tính toán cho các cặp đã được đếm, điều làm cho tiến trình xử lý rất nặng, bởi vì FP-Growth sử dụng cấu trúc FP-Tree
Thuật toán FP-Growth được lưu trữ nhỏ gọn trong bộ nhớ của dữ liệu
- Tắt nghẽn trong FP-Growth
Vấn đề lớn nhất là sự phụ thuộc lẫn nhau của các cơ sở dữ liệu Vấn đề phụ thuộc lẫn nhau là các thuật toán song song vẫn cần được chia sẽ, tạo nên tắc nghẽn trong quá trình chia sẽ bộ nhớ
3- Khai thác tập phổ bi n s dụng thuật toán PPV
Đ nh n h 2.2: PPC-Tree là một cấu trúc cây
- Nó bao gồm một nhãn root là “null”, một tập hợp mục của các nhánh tiếp theo là con của root
- Mỗi nút có 5 trường thông tin: item-name, count, childreNodet-list, order, and post-order item-name là tập phổ biến đại diện cho nút count là số lượng giao dịch được thực hiện bằng cách đi qua các nút này childreNode-list là tất cả các con của nút pre-order là thứ tự hàng trước của nút post-order là thứ tự kế tiếp của
pre-nút
Đ nh n h 2.3: PP-code
Đối với mỗi nút N trong PPC-tree, chúng ta gọi < (N.pre-order, N.post-order): N.count > là PP-code của N
Đ nh n h 2.4: Mối quan hệ cha-con của PP-codes
Cho 2 PP-codes X1 and X2, X1 là cha của X2 if khi và chỉ khi nút được đại diện bởi X1 cha của nút đại diện bởi X2
Trang 33Đ nh n h 2.5: Node-list của tập phổ biến
Đối với PPC-tree, Node-list của tập phổ biến là một dãy tất cả các PP-code của nút được khai báo theo mục trong PPC-tree PP-codes được sắp xếp trong suốt quá trình truy cập
Thuật t n 2.4: PPC-tree
Đầu v Một cơ sở dữ liệu giao dịch và ngưỡng hỗ trợ tối thiểu minSupp
Đầu PPC-tree, F1 (tập phổ biến 1-patterns)
Hàm: Construct-PPC-tree(DB, minSupp) {
Bước 1: Duyệt dữ liệu lần đầu tìm ra tập phổ biến 1-patterns (danh mục tập
phổ biến) F1 and mức hỗ trợ của chúng Sắp xếp F1 theo mức hỗ trợ giảm dần là I f,
là danh sách tập phổ biến đã được sắp xếp
Bước 2: Tạo root của PPC-tree, PPT, và có nhãn là “null” Duyệt DB lần nữa Mỗi lần lặp giao dịch T trong DB, sắp xếp lại tập phổ biến trong danh sách của I f
và sau đó thêm nó vào PPC-tree
Bước 3: Duyệt PPC-tree phát sinh pre-order Duyệt PPC-tree lần nữa phát sinh post-order.}
Ví dụ 2.5: X t cơ sở dữ liệu như trong bảng 2.1 Với minSupp= 40% (40*5/100 =
2) Ta thực hiện các bước sau
b:4 c:1
a:1
e:3 c:3 Root
Trang 34Hình 2.9: Node-list c a t p ph bi n
Đ nh n h 2.6: Node-list được định nghĩa như sau
Cho hai tập phổ biến khác nhau i1 and i2, Node-list tương ứng của chúng là {<(x11,
y11): z11>, <(x12, y12): z12>, , <(x 1m , y 1m ): z 1m >} and {<(x21, y21): z21>, <(x22, y22): z22>, ,
<(x 2n , y 2n ): z 2n >} Node-list của 2-pattern i1i2 là một dãy PP-codes được sắp xếp tăng dần
theo pre-order và được phát sinh bởi điểm giao nhau Node-list của i1 và i2, theo quy định sau:
Đối với bất kỳ <(x 1p , y 1p ): z 1p> ∈ Node-list của i1 (1≤p≤m) và <(x 2q , y 2q ): z 2q> ∈
Node-list của i2 (1≤q≤n), if <(x 1p , y 1p ): z 1p > là cha của <(x 2q , y 2q ): z 2q >, thì <(x 2q , y 2q ): z 2q> ∈
Node-list của i1i2
Cho ví dụ, trong hình 2.8, Node-list của b is {<(3,7): 4>} và Node-list của c là
{<(1,1): 1>, <(4,5): 3>} Qua định nghĩa 3.5, chỉ có PP-code <(4,5): 3> là đáp ứng các
quy tắc kết hợp Vì vậy Node-list của bc là {<(4,5): 3>} như trong hình 2.9
Trang 35Hình 2.10: Node-list c a bc
Đ nh n h 2.7: Node-list được định nghĩa như sau
Cho P = i1 i2 i (k-2) i x i y là một mẫu (k ≥ 3), và Node-list của P1 = i1 i2 i (k-2) i x là {<(x P11,
y P11 ): z P11 >, <(x P12 , y P12 ): z P12>, , <(x P1m , y P1m ): z P1m >}, Node-list của P2 = i1 i2 i (k-2) i y is
{<(x P21 , y P21 ): z P21 >, <(x P22 , y P22 ): z P22 >, , <(x P2n , y P2n ): z P2n >} Node-list của P là một dãt của PP-codes được sắp xếp tăng dần theo pre-order và được phát sinh bởi điểm giao nhau giữa Node-list của P1 và P2, theo quy định sau:
Đối vơi bất kì <(x P1r , y P1r ): z P1r> ∈ Node-list của P1 (1≤r≤m) và <(x P2s , y P2s ): z P2s> ∈
Node-list của P2 (1≤s≤n), nếu <(x P1r , y P1r ): z P1r > là cha của <(x P2s , y P2s ): z P2s >, thì <(x P2s , y P2s):
z P2s> ∈ Node-list của P
Cho ví dụ, Node-list của bc là {<(4,5): 3>} được chỉ ra trong hình 2.9, vì vậy chỉ có một nút trong hình 2.9, item-name của nút là c và một trong số các cha của nút c có item- name là b Vì vậy mức hỗ trợ của bc là 3
Hình 2.10 chỉ ra phương thức phát sinh Node-list của bce bởi điểm giao nhau giữa Node-list của bc và Node-list của be
< (1,1):1 >
< (3,7):4 >
{b}
< (4,5): 3> {c}
Trang 37Thuật t n 2.5(code-intersection)
Đầu vào: NL1 and NL2, là Node-list của hai k- patterns. Đầu The Node-list của (k+1)-pattern.
Hàm: code-intersection(NL1, NL2)
int i = 0; điểm bắt đầu của NL1.
int j = 0; điểm bắt đầu của NL2
while (i < NL1.size() && j < NL2.size()) {
Trang 38Thuật t n 2.6: PPV
Đầu v ngưỡng minSupp, tập phổ biến 1-patterns của chúng Node-list
Đầu ra: Tập hợp các mẫu phổ biến
l = p.i1, p.i2, ,p.i k-1 ,q.i k-1 ; ứng cử viên k-pattern
If all k-1 subsets l of are in L k-1 {
l.Node-list= code-intersection(p.Node-list, q.Node-list);
- Ưu điểm của thuật toán PPV sử dụng Node-list
Cấu trúc Node-list nhỏ gọn hơn Tidset hay Diffset Khi các giao dịch các nút có chung tiền tố của PPC-Tree
Mối quan hệ cha – con là bước giao nhau cơ bản được thêm vào Node-list, điều
nay rất hiệu quả khi xác nhận mã pre-post của nút
Trang 394- Khai thác tập phổ bi n s dụng thuật toán PrePost
Đ nh n h 2.8: Tập phổ biến N-list
Cho PPC-tree, tập phổ biến của N-list là một dãy các tập đƣợc khai báo PP-code theo nút trong PPC-tree PP-codes đƣợc sắp xếp tăng dần theo giá trị pre-order của chúng
Mỗi PP-code trong N-list đƣợc khai báo ⟨(x, y) : z⟩, ở đây x là pre-order, y là
post-order and z là count N-list của tập phổ biến đƣợc khai báo là <( ): >,
<( ): >, …<( ): > Hình 2.11 chỉ ra tập phổ biến của N-list
Ví dụ 2.6: X t cơ sở dữ liệu mẫu nhƣ trên bảng 2.1 Với minSupp= 40% (40*5/100
= 2) ta có:
Hình 2.12: Minh hoạ khởi dựng PPC-tree
b:4 c:1
a:1
e:3 c:3 Root