Thực tế đã có nhiều nghiên cứu và thuật toán đã được đề xuất để khai thác tập phổ biến từ cơ sở dữ liệu, nhằm giải quyết các bài toán về khai thác tập đóng hay khai thác tập có thể xoá,
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO
Trang 2BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TP HCM
Trang 3TRƯỜNG ĐẠI HỌC CÔNG NGHỆ TP HCM
Cán bộ hướng dẫn khoa học : TS VÕ ĐÌNH BẢY
(Ghi rõ h ọ, tên, học hàm, học vị và chữ ký)
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 17 tháng 10 năm 2015
Thành phần Hội đồng đánh giá Luận văn Thạc sĩ gồm:
(Ghi rõ h ọ, tên, học hàm, học vị của Hội đồng chấm bảo vệ Luận văn Thạc sĩ)
1 GS TSKH Hoàng Văn Kiếm Chủ tịch
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
Trang 4TP HCM, ngày 01 tháng 09 năm 2015
NHI ỆM VỤ LUẬN VĂN THẠC SĨ
Họ tên học viên: Nguyễn Thị Mạnh Giới tính: Nữ
Ngày, tháng, năm sinh: 1980 Nơi sinh: Kiên Giang
Chuyên ngành: Công nghệ thông tin MSHV: 1341860045
I- Tên đề tài:
Khai thác tập có thể xóa đóng
II- Nhi ệm vụ và nội dung:
- Tập trung tìm hiểu, đánh giá và đề xuất hướng tiếp cận hiệu quả thuật toán khai
thác tập có thể xoá đóng
- Khảo sát phương pháp khai thác tập phổ biến đóng và tập có thể xoá
- Định hướng đề xuất hướng tiếp cận mới khai thác tập phổ biến có thể xoá đóng
III- Ngày giao nhi ệm vụ: Ngày 03 tháng 04 năm 2015
IV- Ngày hoàn thành nhi ệm vụ: ngày 17 tháng 9 năm 2015
V- Cán b ộ hướng dẫn: TS.VÕ ĐÌNH BẢY
CÁN B Ộ HƯỚNG DẪN KHOA QU ẢN LÝ CHUYÊN NGÀNH
PHÒNG QLKH – ĐTSĐH Độc lập – Tự do – Hạnh phúc
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
(Ký và ghi rõ h ọ tên)
Nguy ễn Thị Mạnh
Trang 6Đào tạo sau Đại học trường Đại Học Công Nghệ Thành Phố Hồ Chí Minh đã tạo
mọi điều kiện thuận lợi giúp đỡ tôi trong quá trình học tập và hoàn thành luận văn này
Đặc biệt tôi xin gửi lời cảm ơn sâu sắc tới thầy TS.Võ Đình Bảy – thầy
hướng dẫn trong suốt quá trình làm đề tài Những lời dạy, phương pháp hướng dẫn
và đặc biệt là sự tận tình hướng dẫn của thầy đã giúp cho tôi đạt những kiến thức rất
bổ ích trong quá trình học tập và thực hiện luận văn
Anh Võ Minh Quân đã nhiệt tình giúp đở, hướng dẫn tôi trong quá trình thực
hiện luận văn
Toàn thể quý thầy cô đã nhiệt tình giảng dạy và truyền đạt những kiến thức
bổ ích cho tôi trong suốt khóa học vừa qua
H ọc viên thực hiện Luận văn
(Ký và ghi rõ h ọ tên)
Nguy ễn Thị Mạnh
Trang 7TÓM TẮT
Khai thác dữ liệu đã và đang được ứng dụng rộng rãi trong rất nhiều lĩnh vực
và hiện nay đã có rất nhiều công cụ thương mại và phi thương mại triển khai các nhiệm vụ của khai thác dữ liệu Khai thác dữ liệu (data mining) là quá trình khám
phá các tri thức mới và các tri thức có ích ở dạng tiềm năng trong nguồn dữ liệu đã
có Khai thác các mô hình phổ biến hoặc tập phổ biến là một vấn đề cơ bản và cần thiết trong nhiều ứng dụng khai thác dữ liệu Các ứng dụng này bao gồm việc khám thác luật kết hợp, luật vững chắc, tương quan, các luật tuần tự, tập, mô hình đa chiều, và nhiều nhiệm vụ khám thác quan trọng khác Khai thác luật kết hợp là một
mô hình quan trọng trong khai thác dữ liệu Khai thác tập có thể xóa và khai thác
tập phổ biến đóng là một sự biến thiên thú vị của khai thác tập phổ biến, trong đó
nó cho phép các nhà quản lý xem xét cẩn thận các kế hoạch sản xuất của họ để đảm
Trang 8MỤC LỤC
MỞ ĐẦU 1
CHƯƠNG 1 TỔNG QUAN 3
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT 10
2.1 Tập phổ biến 10
2.1.1 Định nghĩa 10
2.1.2 Ví dụ 10
2.2 Khai thác tập có thể xóa 11
2.2.1 Định nghĩa 11
2.2.2 Cấu trúc dpidset 12
2.2.3 Thuật toán MEI 16
2.2.3.1 Hiệu quả của thuật toán trừ hai dpidset 16
2.2.3.2 Thuật toán trừ hai dpidset 17
2.2.3.3 Phát sinh lớp tương đương 19
2.2.3.4 Giải thuật MEI 20
2.3 Khai thác tập phổ biến đóng 25
2.3.1 Định nghĩa toán tử đóng 25
2.3.2 Định nghĩa tập phổ biến đóng 25
2.3.3 Cây tìm kiếm IT và các lớp tương đương 25
2.3.4 Thuật toán Charm 29
2.3.5 Ví vụ minh họa 39
2.4 Khai thác tập có thể xóa đóng 40
2.4.1 Định nghĩa 40
2.4.2 Thuật toán MECI 40
2.4.3 Ví dụ minh họa 42
CHƯƠNG 3 THỰC NGHIỆM VÀ ĐÁNH GIÁ 43
3.1 Môi trường và dữ liệu thực nghiệm 43
3.2 Kết quả và thời gian thực hiện 43
CHƯƠNG 4 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 49
Trang 94.1 Kết quả đạt được 49
4.2 Hạn chế 49
4.3 Hướng phát triển 50
TÀI LIỆU THAM KHẢO 51
Trang 10ECPS: Erasable closed patterns
MEI: Mining erasable itemset
MECI: Mining erasable closed itemset
FCIs: Frequent closed itemsets
DFS: Depth-first-search
Trang 11DANH MỤC CÁC BẢNG
Bảng 1.1 Số lượng EIsthu được bằng VME, MERIT, MERIT+, MEI
Bảng 2.1 CSDL ví dụ
Bảng 2.2 Chỉ số lợi nhuận G
Bảng 3.1 Đặc tính của các bộ dữ liệu được sử dụng trong thực nghiệm
Bảng 3.2 Kết quả thực nghiệm trên bộ dữ liệu Chess
Bảng 3.3 Kết quả thực nghiệm trên bộ dữ liệu Connect
Bảng 3.4 Kết quả thực nghiệm trên bộ dữ liệu Mushroom
Bảng 3.5 Số lượng EIs và ECIs trên CSDL thực nghiệm
Trang 12DANH MỤC CÁC HÌNH ẢNH
Hình 2.1 Giải thuật trừ 2 dPidset
Hình 2.2 Giải thuật phát sinh lớp tương đương
Hình 2.3 Tập 2-itemset có thể xóa của node {e}
Hình 2.4 Tập 3-itemset có thể xóa của node {ed}
Hình 2.5 Tập tất cả items có thể xóa của node {e}
Hình 2.6 Cây IT_tree bao gồm tất cả các EIs với ngưỡng 16% Hình 2.7 Thuật toán MEI
Hình 2.8.Cây IT: cây tìm kiếm itemset-tidset
Hình 2.9.Tìm các mẫu phổ biến theo chiều sâu
Hình 2.10 Tính chất cơ bản của itemset và tidset
Hình 2.11 Thuật toán Charm
Hình 2.12 Kiểm tra sự gộp nhanh
Hình 2.13 Diffset: Tiền tố P và các lớp thành viên X và Y
Hình 2.14 Cây tìm kiếm FCIs dùng diffset
Hình 2.15 Thuật toán MECI
Hình 2.16 Cây IT-tree tìm tập phổ biến đóng thỏa ngưỡng T× ξHình 3.1 Thời gian khai thác của MECI trên tập dữ liệu Chess Hình 3.2 Thời gian khai thác của MECI trên tập dữ liệu Connect Hình 3.3 Thời gian khai thác của MECI trên tập dữ liệu Mushroom
Hình 3.4 Sử dụng bộ nhớ của MECI trên tập dữ liệu Chess
Hình 3.5 Sử dụng bộ nhớ của MECI trên tập dữ liệu Connect Hình 3.6 Sử dụng bộ nhớ của MECI trên tập dữ liệu Mushroom
Trang 13M Ở ĐẦU
Khai thác dữ liệu là quá trình khám phá các tri thức mới và các tri thức có ích ở dạng tiềm ẩn trong nguồn dữ liệu đã có Trong khối cơ sở dữ liệu rộng lớn, khai thác dữ liệu là quá trình khai thác những mô hình thú vị, bao gồm các phương
thức giao nhau của trí tuệ nhân tạo, máy học và thống kê
Ngày nay với sự phát triển mạ ủa công nghệ thông tin, khai thác tập
phổ biến là một đề tài nghiên cứu cơ bản với nhiều ứng dụng trong khai thác dữ
liệu Khai thác dữ liệu đã và đang được ứng dụng rộng rãi trong rất nhiều lĩnh vực
và hiện nay đã có rất nhiều công cụ thương mại và phi thương mại triển khai các nhiệm vụ của khai thác dữ liệu Thực tế đã có nhiều nghiên cứu và thuật toán đã được đề xuất để khai thác tập phổ biến từ cơ sở dữ liệu, nhằm giải quyết các bài toán về khai thác tập đóng hay khai thác tập có thể xoá, mỗi thuật toán có ưu và khuyết điểm riêng Chẳng hạn, để khai thác tập có thể xoá, một số thuật toán đã được đề xuất như: META, VME, MERIT, MERIT+, MEI… hay đối với khai thác
tập đóng cũng có một số thuật toán đã đề xuất như: Close, Pascal, Closet, CHARM, dCHARM Tuy nhiên mỗi thuật toán chỉ giải quyết một khía cạnh nào đó, hoặc chưa giải quyết triệt để vấn đề đặt ra hay đòi hỏi môi trường thực hiện cao và thời gian thực hiện rất dài, chiếm nhiều không gian lưu trữ, thời gian xử lý và chi phí cao Hầu hết các thuật toán là biến thể của thuật toán Apriori, các thuật toán đã cho
thấy hiệu suất rất cao trong việc khai thác các tập dữ liệu Nhưng thực tế thì các thuật toán chỉ đạt hiệu suất tốt trên các bộ dữ liệu thưa thớt và các mẫu dữ liệu ngắn (như dữ liệu giỏ thị trường) và chưa thật sự đạt hiệu suất cao trên các bộ dữ liệu dày đặc với các mẫu dữ liệu dài (như viễn thông, dữ liệu điều tra dân số) Vấn đề đặt ra
là tìm các tập phổ biến trên các tập dữ liệu rộng lớn mà không tốn nhiều chi phí và
thời gian thực hiện nhưng vẫn đảm bảo được lợi nhuận và hiệu suất khai thác
Chẳng hạn, một nhà máy sản xuất nhiều sản phẩm được tạo ra từ một số mặt hàng
Mỗi sản phẩm mang lại thu nhập cho nhà máy Một nguồn tài chính là cần thiết để mua và lưu trữ tất cả các mặt hàng Tuy nhiên, trong một tình huống khủng hoảng
Trang 14tài chính, nhà máy này không có đủ tiền để mua tất cả những thứ cần thiết như bình thường Do đó cần phải tìm ra những phương pháp tốt nhất, cần lập ra một kế hoạch
sản xuất mới mà có thể không cần có một nguồi tài chính dồi dào để mua hết tất cả các mặt hàng nhưng vẫn đảm bảo không làm giảm đi lợi nhuận
Xuất phát từ những thực tế đó và những vấn đề đặt ra như trên, đề tài “khai thác tập có thể xoá đóng” với mục đích kết hợp hai vấn đề khai thác tập đóng và khai thác tập có thể xoá thành một vấn đề chung nhằm tìm các tập phổ biến trên các
tập dữ liệu rộng lớn mà không tốn nhiều chi phí và thời gian thực hiện nhưng vẫn đảm bảo được lợi nhuận và hiệu suất khai thác
Khai thác tập phổ biến có thể xóa và khai thác tập phổ biến đóng là một sự
biến thiên thú vị của khai thác tập phổ biến, trong đó nó cho phép các nhà quản lý xem xét cẩn thận các kế hoạch sản xuất của họ để đảm bảo sự ổn định củ
Trang 15
C HƯƠNG 1 TỔNG QUAN
Ngày nay, với sự phát triển tốc độ và mạnh mẽ của Internet thì ngành công nghệ thông tin đã và đang phát triển vượt bậc và trở thành một ngành tiên tiến trên
thế giới và trong nước Trong đó lĩnh vực khai thác dữ liệu là một trong những lĩnh
vực đang được quan tâm phát triển Bên cạnh các mô hình khác của lĩnh vực khai thác dữ liệu thì khai thác luật kết hợp trở nên phổ biến và có nhiều ứng dụng trên
thực tế Một trong những biến thể mới của khai thác luật kết hợp là mô hình khai thác tập phổ biến có thể xoá đóng Đây là một phương pháp mới dựa trên các mô hình đã khai thác về khai thác tập phổ biến có thể xoá và khai thác tập đóng
Dựa trên các thuật toán đã được triển khai như Close, Pascal, Closet hay VME, MERIT, MERIT+, META nhưng tốn bộ nhớ, thời gian xử lý chậm Thuật toán CHARM và MEI cải tiến thời gian khai thác, cải thiện không gian lưu trữ của
bộ nhớ và mở rộng qui mô và chiều dài của dữ liệu
Thuật toán META [13], một thuật toán dựa trên Apriori, nhằm giải quyết vấn
đề khai thác các mô hình có thể xóa Tuy nhiên, thời gian thực hiện của META khá
chậm, bởi vì nó sử dụng một cách tiếp cận là tạo ra ứng viên và cách tiếp cận này được cho là một chiến lược ngây thơ, bởi vì:
(i) META quét cơ sở dữ liệu lần đầu tiên để xác định tổng lợi nhuận của các nhà máy và xác định các thông tin liên quan đến mỗi EI tại các mức k, với k là mức tối
đa của các kết quả của EIS Ví dụ, META tìm thấy một hoặc hơn 5 tập phổ biến có
thể xóa, đó là mức tối đa của EIS Vì thế, META phải quét cơ sở dữ liệu 6 lần
(ii) Các chiến lược META sử dụng để tạo ra tập ứng viên là một chiến lược ngây thơ, trong đó nó sử dụng (k- 1)-itemset X có thể xóa và xem xét với tất cả (k- 1)-itemset có thể xóa còn lại để kết hợp và tạo ra k-itemset có thể xóa Chỉ có một số
nhỏ tập itemset trong tất cả (k- 1) –itemset có thể xóa có tiền tố giống như tiền tố
của item X mới được kết hợp với item X Ví dụ, hãy xem xét tập 2-itemset có thể xóa sau {ab, ac, ad, bc, bd, cd} META xem xét phần tử đầu tiên {ab} và kết hợp
với tất cả tập 2 itemset còn lại trong tập hợp {ac, ad, bc, bd, cd } Chỉ có tập hai
Trang 16phần tử {ac, ad} mới được kết hợp với {ab}, còn tập các phần tử {bc, bd, cd} là
thừa
Thuật toánVME [3] cũng được đề xuất để khai thác EIS VME sử dụng cấu trúc PID_List (định danh sản phẩm) Một PID_List là tập hợp các cặp <PID, Val>, trong đó PID là nhận dạng sản phẩm và Val là lợi nhuận của sản phẩm này (lợi nhuận thu được do bán sản phẩm này) Thuật toán VME được đánh giá là nhanh hơn META vì nó quét các cơ sở dữ liệu chỉ có hai lần (số lần quét cơ sở dữ liệu ít hơn nên thời gian thực thi thuật toán cũng ít hơn và nhanh hơn) Tuy nhiên thuật toán này cũng mắc phải một số khuyết điểm Một số điểm yếu liên quan với VME được chỉ ra như sau:
(i) VME quét các cơ sở dữ liệu để xác định tổng lợi nhuận của các nhà máy và sau
đó quét các cơ sở dữ liệu một lần nữa để tìm tất cả các tập phổ biến 1-erasable và PID_List của chúng Quét các cơ sở dữ liệu mất rất nhiều thời gian và bộ nhớ Nếu xem xét một cách kỹ lưỡng thì các cơ sở dữ liệu có thể được quét một lần duy nhất (ii) VME sử dụng chiến lược breadth-first-search, trong đó tất cả (k-1) -itemset có
thể xóa được sử dụng để tạo ra k-itemset có thể xóa Tuy nhiên, việc phân loại (k-1) -itemsets có thể xóa với tiền tố giống như của (k-2) -itemset có thể xóa sẽ
mất rất nhiều thời gian và thao tác
Ví dụ, tập 2-itemset có thể xóa là {ab, ac, ad, bc, bd, cd}, trong đó có ba tiền tố 1-itemset, cụ thể là {a}, {b} và {c} Thuật toán này có sự phân chia các phần tử thành các nhóm 2 –itemset có thể xóa, trong đó có các tiền tố giống như tập 1-itemset có thể xóa Trong trường hợp đặc biệt, tập 2-itemset có thể xóa được phân loại thành ba nhóm: {ab, ac, ad}, {bc, bd}, và {cd} Sau đó, thuật toán này
kết hợp các phần tử của từng nhóm để tạo ra các ứng cử viên của tập 3 –itemset
có thể xóa, đó là {abc}, {abd}, {acd}, và {bcd} Rõ ràng thời gian tiêu tốn sẽ nhiều cho việc phân chia và kết hợp các phần tử của từng nhóm
(iii) VME sử dụng các chiến lược liên minh trong đó PID_List của X là một tập con PID_List của Y, nếu X là con của Y Chiến lược này đòi hỏi tốn nhiều bộ nhớ
và các thao tác cho một số lượng lớn các EIS
Trang 17(iv) VME chứa giá trị lợi nhuận của mỗi sản phẩm (Val) trong một cặp <PID, Val>
của PID_List Điều này dẫn đến trùng lắp dữ liệu vì một cặp <PID, Val> có thể
xuất hiện trong nhiều PID_List Do đó, thuật toán này đòi hỏi rất nhiều bộ nhớ
Việc sử dụng bộ nhớ có thể được giảm bằng cách sử dụng chỉ số lợi nhuận Thuật toán MERIT [3][5] - khai thác tập có thể xóa nhanh MERIT sử dụng khái niệm NC_Set để giảm thiểu sử dụng bộ nhớ Đầu tiên, MERIT tạo ra một cây WPPC, một cấu trúc giống FP-tree, trong đó mỗi nút trên cây gồm một bộ (tập hợp)
dạng <Ni item-name, Ni.weight, Ni.childnodes, Ni.pre-order, Ni.post-order>, trong
đó:
- Ni.item-name là định danh của item
- Ni.weight là giá trị thu được kết hợp với các item
- Ni.childnodes là một tập hợp các nút con kết hợp với các item
- Ni.pre-order là số thứ tự của các nút khi cây được duyệt qua từ trên xuống
và từ trái sang phải
- Ni.post-order là số thứ tự của các nút khi cây duyệt qua từ dưới lên và từ trái sang phải
Mã (NC) của mỗi nút Ni trong cây WPPC là một bộ <Ni.pre-order, Ni.post-order,
Ni.weight> Các tập hợp mã số nút (NC_Set) là tập hợp NCs kết hợp với EIS Thuật toán này sử dụng cấu trúc NC_Set để giảm sử dụng bộ nhớ cũng như thời gian khai thác Mặc dù việc sử dụng các NC_Set cho MERIT có lợi thế hơn META nhưng
vẫn còn một số nhược điểm sau đây:
(i) MERIT sử dụng các chiến lược liên minh, theo đó NC_Set của mẫu được giả định là một tập hợp con của NC_Set của mẫu , với ⊂ Kết quả là tốn lượng bộ
nhớ lớn cho một số lượng lớn các EIS
(ii) Để xây dựng cây WPPC thì MERIT phải quét cơ sở dữ liệu ba lần.Sau đó, nó quét cây WPPC hai lần để tạo ra tập mã nút NC_Set của tập phổ biến có thể xóa Các bước trước đó tốn rất nhiều thời gian thực thi và thao tác
(iii) MERIT lưu trữ các giá trị lợi nhuận của sản phẩm trong mỗi mã nút NC của tập
mã nút NC_Set, điều này dẫn đến sự trùng lắp dữ liệu
Trang 18MERIT gây ra sự mất mát một số lượng lớn các EIS là do hai nguyên nhân chính sau:
(i) MERIT sử dụng một câu lệnh if để kiểm tra tất cả các tập con (k- 1) -itemset của k-itemset X có thể xóa được hay không để tránh việc thực hiện thủ tục
NC_Combination Tuy nhiên, MERIT s ử dụng chiến lược deep-first-search vì
thế CSDL không có đủ (k- 1) -itemset trong kết quả kiểm tra này Do đó câu lệnh
if luôn luôn sai, do đó tập tất cả k-itemset có thể xóa (k > 2) thì luôn không thể xóa Các kết quả của MERIT là như vậy, xóa được 1- itemset và xóa được 2 -itemset Khi X của NC_Set được xác định, thuật toán ngay lập tức có thể quyết
định xóa X Do đó, câu lệnh if trong thuật toán này là không cần thiết
(ii) MERIT mở rộng các lớp tương đương của ECv [k] Điều này cải thiện thời gian khai thác, nhưng không có EISnào được khai thác
Thuật toán MERIT+ [3] là một thuật toán xuất phát từ MERIT, nhưng MERIT+ có khả năng khai thác tất cả các EIS, mà không cần:
(i) Kiểm tra tất cả các tập con (k -1) – itemset của tập k-itemset X có thể xóa hay không thể xóa
(ii) Mở rộng các lớp tương đương
Thuật toán Close [14]- một thuật toán được đề xuất khai thác tập phổ biến đóng Close là một thuật toán cũng gống như thuật toán Apriori Để khai thác các
tập đóng, Close tiến hành thuật toán của mình qua hai bước chính:
(i) Close sử dụng phương pháp tìm kiếm từ dưới lên để xác định generators, tập phổ
biến nhỏ nhất được xác định chính là tập phổ biến đóng Sau khi tìm thấy các tập
phổ biến tại mức k, Close sẽ so sánh độ hỗ trợ của mỗi tập với tập con của nó ở
mức trước đó Nếu độ hỗ trợ của một itemset trùng với bât kỳ độ hỗ trợ nào của
tập con của nó, thì itemset đó không phải là một generator và nó sẽ được cắt tỉa
đi
(ii) Close tính toán tính đóng của tất cả các generator tìm thấy được ở bước trước
đó Để tính toán tính đóng của một itemset , cần phải tiến hành và kiểm tra giao tác của nó với tập con của nó Tính đóng của tất cả các generator có thể được
Trang 19tính ra ngay ở lần đầu tiên quét CSDL, ngược lại có thể sẽ phải mất nhiều thời gian và thao tác cho việc tính toán tính đóng
Thuật toán Pascal [11] là một thuật toán cải tiến từ thuật toán Close được đề
xuất cho mục đích khai thác tập phổ biến và tập đóng Pascal đưa ra một khái niệm
gọi là key pattern và cho thấy rằng các mô hình phổ biến khác có thể được suy ra từ
mô hình key pattern mà không cần phải truy xuất vào CSDL Thực nghiệm cho thấy
rằng Pascal tìm thấy được cả tập phổ biến lẫn tập đóng nhanh gấp hai lần so với Close và nhanh gấp mười lần so với Apriori Tuy rằng Pascal tìm và đưa ra được tất
cả các mẫu nhưng thực tế nó chỉ thực hiện tốt trên các mẫu có chiều dài ngắn
Thuật toán Closure[7] cũng được đề nghị để giải quyết vấn đề tìm ra tập phổ
biến đóng Closure cũng dựa trên chiến lược tìm kiếm từ dưới lên Và thực tế chứng minh rằng thuật toán này cũng chỉ khá hơn chút ít so với thuật toán Apriori
Thuật toán Closet [8] sử dụng một cấu trúc mới là FP-tree [12] Theo cấu trúc này thuật toán sẽ nén một giao dịch đại diện cho tất cả các giao dịch trên CSDL Closet sử dụng đệ quy lại chiến lược chia và chinh phục và phương pháp
tiếp cận CSDL để khai thác các mô hình dài
Thuật toán Closet + [9] là một thuật toán nâng cao của Closet với chiến lược tìm kiếm tập đóng như đã giới thiệu trước đó ở thuật toán Close
Thuật toán Mafia [10] là một thuật toán được đưa ra chủ yếu dùng cho việc khai thác tập phổ biến lớn nhất Tuy nhiên, Mafia cũng có một vài tùy chọn cho
mục đích khai thác tập đóng Mafia dựa vào hiệu quả của việc nén và dựa trên bitmap dọc tính toán tần suất
Rút kết từ các vấn đề của của các thuật toán đã được đề nghị trước đó, MEI [3] sử dụng cấu trúc dPidset để nhanh chóng xác định các thông tin về mô hình có
thể xóa MEI cho ra thời gian khai thác và sử dụng bộ nhớ tốt hơn so với các thuật toán trên, hiệu suất khai thác của MEI trên các mô hình đã được chứng minh Charm [6] sử dụng hiệu quả phương pháp tìm kiếm lai, bỏ qua nhiều cấp độ, liệt kê các tập đóng bằng cây tìm kiếm kép itemset-tidset Charm sử dụng một kỹ thuật gọi
Trang 20là diffset để giảm bộ nhớ cho các tính toán trung gian và loại bỏ các tập "không đóng”
Bảng 1.1 đưa ra số lượng các EIS thu được bằng các giải thuật VME, MERIT, MERIT+, và MEI Theo số liệu trên bảng, số lượng EIS thu được bằng MERIT nhỏ hơn so với số lượng thu được bởi VME, MERIT+, và MEI Mặc dù
hiệu quả của MERIT cao hơn, nhưng nó không hỗ trợ cho tất cả các EIS, không
giống như VME, MERIT+, và MEI hỗ trợ cho tất cả các EIs Hai thuật toán MERIT+ và MEI cho ra số lượng EIs bằng nhau, nhưng MERIT+ tiêu tốn nhiều bộ
nhớ và thời gian khai thác các EIshơn so với MEI
B ảng 1.1 Số lượng EI s thu được bằng VME, MERIT, MERIT+, MEI
Database Threshold (%) VME MERIT MERIT+ MEI
Trang 21EIsthu được từ các thuật toán này là rất lớn Khi đó, các hệ thống thông minh sử
dụng các EIs như kiến thức chung và đây sẽ là tình huống khó khăn với một số lượng lớn các EIs Trên thực tế, tập các mẫu xóa đóng (ECIs) có thể tính toán lại tập
hợp các EIs mà không làm mất thông tin Tập hợp này không có hai hoặc nhiều EIs
có cùng lợi nhuận Chúng có thể được sử dụng để khai thác các luật không dư thừa
mà không phải cắt tỉa luật bị dư thừa đi Mục đích của mô hình xóa đóng không ngoài mục đích hạn chế không gian lưu trữ, tìm kiếm và làm giảm thiểu số tập hợp
Trang 22CHƯƠNG 2 CƠ SỞ LÝ THUYẾT
2.1 T ập phổ biến [3]
2.1.1 Định nghĩa
Đặt I= {i 1 , i 2 , , i m } là tập hợp tất cả các item, là các thể hiện trừu tượng các thành phần của sản phẩm Một cơ sở dữ liệu sản phẩm được ký hiệu là DB= {P 1 , P 2 , ., P n } , trong đó Pi (1≤ i≤n) là m ột sản phẩm được trình bày dưới dạng <Items,
Val>, trong đó Items là các mặt hàng (các thành phần) cấu thành Pi và Val là lợi
nhuận mà các nhà máy có được bằng cách bán các sản phẩm Pi Một tập
X ⊆ I thì được gọi là một tập phổ biến (itemset), và một tập phổ biến (itemset) với
k item được gọi là k-itemset
Trang 23Trong cơ sở dữ liệu này, {a, b, c, d, e, f, g, h} là tập hợp các item được sử
dụng để tạo ra tất cả các sản phẩm {P 1 , P 2 , , P 11 } S ản phẩm P 1 được tạo từ hai thành phần {abc} Nhà máy thu được 2.100 ngàn USD bằng cách bán sản phẩm P 1
| {
)
(
φ
Items P
X P
k k k
Val P
X g
Lợi nhuận của itemset X là tổng lợi nhuận của các sản phẩm chứa ít nhất
một item trong tập phổ biến X
Ví dụ, đặt X = {ac} là một tập phổ biến Từ cơ sở dữ liệu ví dụ trong bảng
2.1, các sản phẩm {P1, P2, P3, P4, P6, P7, P11} bao gồm các thành phần {a}, {c}
hoặc {ac}.Vì thế, g(X)= P1.Val + P2.Val +P3.Val +P4.Val + P6.Val +P7.Val+ P11.Val
=4650 ngàn USD
Định nghĩa 2.2
Cho một ngưỡng ξ và một cơ sở dữ liệu sản phẩm DB, đặt T là tổng lợi
nhuận của nhà máy Một tập itemset X có thể xóa được nếu:
ξ
×
≤ T X
K
K
Val P
Tổng lợi nhuận (T) của các nhà máy là tổng lợi nhuận của tất cả các sản
phẩm Từ cơ sở dữ liệu cho trong bảng 2.1, ta thấy tổng lợi nhuận của nhà máy T là
5000 ngàn USD Và một itemset X được gọi là có thể xóa (EI) nếu thỏa điều kiện:
ξ
×
≤ T X
g ( )
Ví dụ, ta đặt ngưỡng là 16% (ξ = 16%) Theo định nghĩa 2.1, g ({e}) = 600 ngàn USD Item e được gọi là một EI với ξ = 16% vì g ({e}) = 600 5000* 16% =
Trang 24800 Điều này có nghĩa rằng các nhà máy không cần phải mua và lưu trữ item e Trong trường hợp đó, các nhà máy sẽ không sản xuất các sản phẩm P4, P5, P6, P7,
và P8, nhưng nó vẫn có khả năng sinh lời (lớn hơn hoặc bằng 5000* 16% = 800 ngàn USD)
Định nghĩa2.3
Đặt DB là cơ sở dữ liệu sản phẩm Một mảng được định nghĩa như là các chỉ
số về lợi nhuận:G[i] = Pi.Val
Trong đó Pi DB, 1
Theo Định nghĩa 2.3, lợi nhuận của sản phẩm Pi là giá trị của phần tử ở vị trí
i trong chỉ số lợi nhuận G Đối với cơ sở dữ liệu trong bảng 2.1, chỉ số lợi nhuận G
sẽ được thể hiện trong bảng 2.2
( X p A p
Định nghĩa 2.5(Lợi nhuận của một tập phổ biến dựa trên pidset)
Cho X là một tập phổ biến Lợi nhuận của X ký hiệu là g (X) được tính như sau:
∑
∈
=
) (
] [ )
(
X p
P K
k G X
g
Trang 25Trong đó G [k] là phần tử ở vị trí k của G
Ví d ụ 2.1:
Cho CSDL trong bảng 2.1, pidset của {a} là {1,2,3} bởi vì P 1 , P 2 và P 3 bao
gồm thành phần {a} Tương tự, pidset của {b} là {1,2,4,5,10} Theo định nghĩa 2.4,
piset của itemsetX ={ab} là p(X) = p({a}) p({b}) = {1,2,3} {1,2,4,5,10} =
{1,2,3,4,5,10} L ợi nhuận của X là g(X) = G[1] + G[2] + G[3] + G[4] + G[5] +
G[10] = 4450 ngàn USD Theo định nghĩa 2.2, X là không thể xóa được với ngưỡng ξ =16% bởi vì g(X) > T ξ = 5000 16% = 800 ngàn USD
Định lý 2.1 Đặt X là tập k-itemset và B là tập 1-itemset Giả sử rằng pidset của X là
p(X) và pidset của B là p(B) Khiđó:
) ( ) ( )
Ch ứng minh: Định lý đã được chứng minh trong [3]
Định lý 2.2 Cho XA và XB là hai tập phổ biến có cùng tiền tố X Giả sửp(XA) và
p(XB) là pidset c ủa XA và XB tương ứng Pidset của XAB được tính như sau:
) ( ) ( ) ( XAB p XB p XA
Ch ứng minh: Định lý đã được chứng minh trong [3]
Ví d ụ 2.2:
Cho ví dụ về CSDL trong bảng 2.1, XA= {ab},với p(XA) = {1,2,3,4,5,10} và
XB ={ac}, v ới p(XB)= {1,2,3,4,6,7,11} Theo định lý 2.2 thì pidset của item XAB là
p(XAB)=p(XBA) = p(XA) p(XB) = {1,2,3,4,5,10} {1,2,3,4,6,7,11} = {1,2,3,4,5,6,7,10,11}
Định nghĩa 2.6(dPidset)
Đặt XA và XB là hai tập phổ biến với cùng tiền tố X pidset của XA được ký
hiệu là p(XA) và pidset của XB được ký hiệu là p(XB) dPidset của các pidsetp(XA)
và p(XB), ký hi ệu là dP(XAB), được định nghĩa như sau:
) (
\ ) ( ) ( XAB p XB p XA
Theo định nghĩa 2.6, dPidset của pidsetp(XA) và p(XB) là bộ định danh sản phẩm
chỉ tồn tại trên p(XB)
Trang 26Ví d ụ2.3
XA ={ab} v ới p(XA) ={ 1,2,3,4,5,10} và XB = {ac} với p(XB)
={1,2,3,4,6,7,11} D ựa trên định nghĩa 2.6, dPidset của XAB là dP(XAB) =
p(XB)\p(XA) = {1,2,3,4,6,7,11} \ { 1,2,3,4,5,10} ={6,7,11} Chú ý rằng, nếu đảo
ngược thứ tự của XA và XB sẽ cho một kết quả khác Do đó dP{XBA) =
Theo ví dụ 2.2, p(XAB) = p({abc}) = {1,2,3,4,5,6,7,10,11) Theo ví dụ 2.3,
dP(XAB) = dP({abc}) = {6,7,11} T ừ kết quả này, dP(XAB) ={6,7,11} ⊂p(XAB)
={1,2,3,4,5,6,7,10,11}
Với tập itemset XY, định lý 2.3 cho thấy rằng số lượng các phần tử trong
dPidset của XY luôn ít hơn so với số phần tử trong pidset của XY Vì vậy, sử dụng
dPidset luôn tốt hơn so với sử dụng pidset vì thuật toán dPidset sẽ:
(1) sử dụng ít bộ nhớ
(2) đòi hỏi thời gian khai thác ít hơn do số phần tử ít hơn
Định lý 2.4 Đặt XA và XB là hai tập phổ biến có cùng tiền tố X Giả sử rằng dP(XA)
và dP(XB) là dPidset tương ứng của XA và XB dPidset của XAB được tính như sau:
) (
\ ) ( )
(1) Theo định lý 2.1, p(XA) = p(X) p(A) = {1,2,3,4,5,10} và p(XB) = p(X) p(B)
={1,2,3,4,6,7,11} D ựa vào định lý 2.6, dPidset của XAB là dP(XAB) =
p(XB)\p(XA) = {1,2,3,4,6,7,11}\{1,2,3,4,5,10} = {6,7,11}
Trang 27(2) Theo định nghĩa 2.6, dP(XA) = p(A)\p(X) = {4,5,10} và dP(XB) = p(B)\p(X)
={4,6,7,11} D ựa theo định lý 2.4, dPidset của XAB là dP(XAB) =
dP(XB)\dP(XA) = {4,6,7,11}\{4,5,10} = {6,7,11}
Từ (1) và (2), dPidset của XAB là dP(XAB) = {6,7,11}
Định lý 2.5 Cho XAB là một tập phổ biến Lợi nhuận của XAB được xác định dựa
vào XA như sau:
][)
()
(
XAB dP
P K
k G XA
g XAB
g
Trong đó g(XA) là lợi nhuận của X và G[k] là phần tử tại vị trí k của G
Ch ứng minh: Định lý đã được chứng minh trong [3]
Ví d ụ 2.6:
Theo ví dụ 2.1, XA ={ab} với p(XA)= {ab} = {1,2,3,4,5,10} và XB ={ac} với
p(XB) ={1,2,3,4,6,7,11}
Áp dụng định nghĩa 2.5 thì lợi nhuận g(XA) = 4450 và g(XB) =4650
(1) Dựa vào định lý 2.2, p(XAB) = {1,2,3,4,5,6,7,10,11} Ví thế lợi nhuận của XAB
là g(XAB) = 4850 ngàn USD
(2) Theo định nghĩa 2.6, dP(XAB) = p(XB) \ p(XA) = {1,2,3,4,6,7,11} \
{1,2,3,4,5,10} ={6,7,11} Vì v ậy lợi nhuận của XAB dựa trên định lý 2.5 như
sau:
4850100
2001004450]
11[]7[]6[4450)
(
)
(
) (
=+++
=+
++
+
∈
G G
G XA
g
XAB
g
XAB dP
P K
Theo (1) và (2), lợi nhuận của XAB là 4850 ngàn USD
Định lý 2.6 Gọi A và B là hai tập 1-itemset có thể xóa Giả sử rằng pidset của
chúng là p(A) và p(B) N ếu |p(A)| > |p(B)|, thì:
Trang 28(2) dP(BA) = p(A)\p(B) = {1,2,3}\{1,2,3,4,5,10} = {3}
Từ (1) và (2) ta thấy, kích thước của dP(AB) thì lớn hơn so với dP(BA)
Định lý 2.7 Đặt XA và XB là hai tập k-itemset có thể xóa với dPidset tương ứng là
dP(XA) và dP(XB) N ếu |dP(XA)| > |dP(XB)|, thì:
2.2.3 Thu ật toán MEI
Theo định lý 2.4 và 2.5 cho thấy thuật toán MEI lưu trữ dPidset của k-itemset
có thể xóa (k 2) và dễ dàng xác định được lợi nhuận của k-itemset có thể xóa MEI quét các cơ sở dữ liệu để tạo ra 1-itemset có thể xóa và pidset của chúng Sau
đó, MEI kết hợp tất cả tập 1-itemset có thể xóa lại với nhau để tạo ra tập 2-itemset
và dPidset của chúng theo định nghĩa 2.6 Từ tập k-itemset (k 2), MEI sử dụng định lý 2.4 để xác định dPidset và sử dụng định lý 2.5 để tính toán lợi nhuận
2.2.3.1 Hi ệu quả của thuật toán trừ hai dPidset
Từ định lý 2.6 cho thấy rằng việc trừ pidset d 2 cho pidset d 1với |d 1 | > |d 2 | thì
luôn luôn tốt hơn trong việc sử dụng bộ nhớ và thời gian khai thác so với cách làm
ngược lại (trừ pidset d 1 cho pidset d 2 với |d 1 | < |d 2 |) Vì vậy, việc sắp xếp tập itemset có thể xóa theo thứ tự giảm dần về kích thước pidset của chúng trước khi
1-kết hợp chúng lại với nhau sẽ cải tiến thuật toán rất nhiều Từ những phân tích trên, MEI sắp xếp tập 1 –itemset có thể xóa theo thứ tự giảm dần kích thước pidset
Và từ định lý 2.7, ta thấy rằng khi trừ dPidset d 2 cho dPidset d 1với |d 1 | > |d 2 |
thì luôn luôn tốt hơn về cách sử dụng bộ nhớ so chiều ngược lại Như vậy, sắp xếp
Trang 29k-itemset có thể xóa với k>1 theo thứ tự giảm dần của kích thước dPidset đã giúp thuật toán tối ưu hóa việc sử dụng bộ nhớ Tuy nhiên, định lý 2.6 lại sắp xếp 1-itemset có thể xóa theo thứ tự giảm dần của kích thước pidset Do đó, trong hầu hết các trường hợp, các dPidset của k-itemset có thể xóa với k>1 là ngẫu nhiên được
sắp xếp Trong những trường hợp này, sự sắp xếp làm tăng thời gian khai thác Vì
thế, MEI không sắp xếp k-itemset có thể xóa với k>1
Do đó, trong các phương pháp thông thường, khi trừ dPidset d 2 có n phần
tử cho dPidset d 1 với m phần tử, thì thuật toán chỉ xem xét tất cả phần tử trong d 2 bất
chấp nó tồn tại trong d 1 Do đó, độ phức tạp của phương pháp này là
O(n x m) Sau khi có d 3 với k phần tử, thuật toán phải quét tất cả các phần tử trong
d 3để xác định lợi nhuận của một tập phổ biến Do đó sự phức tạp của thuật toán này
là O(n x m +k) Đối với CSDL ví dụ ở trên thì thời gian khai thác của thuật toán không đáng kể Tuy nhiên, thời gian khai thác này sẽ là rất lớn đối với các cơ sở dữ
liệu lớn Vì vậy, cần có một phương pháp hiệu quả để trừ hai dPidset là cần thiết
Trong quá trình quét các cơ sở dữ liệu, MEI tìm thấy pidset 1-itemset có
thể xóa, được sắp xếp theo thứ tự tăng dần của các định danh sản phẩm Ví dụ, pidset của {a} là {1, 2, 3}
2.2.3.2 Thu ật toán trừ hai dPidset
Ý tưởng của thuật toán:
(i) Trước tiên, thuật toán đặt:
i=0 là ch ỉ số của phần tử đầu tiên trong d 1
j=0 là ch ỉ số của phần tử đầu tiên trong d 2 ;
d 3 =∅ là dPidset kết quả của thuật toán này;
Gain=0 là lợi của d 3
(ii) Thuật toán sử dụng vòng lặp while với điều kiện c <|d 1 | và m< |d 2 |
Nếu các điều kiện trên được thỏa mãn, thuật toán sẽ so sánh các phần tử ở vị trí thứ i trong d 1ký hiệu là d 1 [i] và các ph ần tử tại vị trí thứ j trong d 2 ký hiệu là
d 2 [j] Sự so sánh này có ba khả năng như sau:
Trang 30- Nếu d 1 [i]<d 2 [j] , thì d 1 [i] b ị bỏ qua bởi vì nó thuộc về d 1 Phần tử tiếp theo
ở vị trí (i+1) trong d 1 được kiểm tra
- Nếu d 1 [i] = d 2 [j], thì d 1 [i] và d 2 [j] được bỏ qua vì chúng thuộc d 1 Kế tiếp, các phần tử tiếp theo ở vị trí (i+1) trong d 1 và các phần tử tiếp theo ở vị trí (j+1) trong d 2 được kiểm tra
- Nếu trường hợp (1) và (2) không thỏa, có nghĩa là d 2 [j] không tồn tại
trong d 1 Ví thế, thuật toán thêm d 2 [j] vào d 3 Đồng thời, thuật toán cập nhật Gain =
Gain + G[d 2 [j]] Sau đó, trong vòng lặp while, các phần tử ở vị trí (j+1) trong d 2
được kiểm tra
Đến cuối của vòng lặp while, nếu d2 vẫn còn phần tử chưa được xem xét,
có nghĩa là các phần tử không tồn tại trong d 1 Trong tình huống này, thuật toán nối các phần tử ở vị trí j trong d 2 vào d 3 và cập nhật lợi nhuận Gain = Gain + G[d 2 [j]],
với j<|d 2 | Dựa trên những phân tích trên, thuật toán trừ hai dPidset được gọi
Sub_dPidsets được thể hiện trong hình 2.1
Mô t ả thuật toán:
Đầu vào: dPidset d1, d2 và chỉ số lợi nhuận G
ả: dPidset d3 và lợi nhuận của d3 Gain
Trang 31Hình 2.1 gi ải thuật trừ 2 dPidset [3]
2.2.3.3 Phát sinh l ớp tương đương
Định nghĩa 2.7
Đặt XA và XB là 2 tập k-itemset có tiền tố X giống nhau Phép toán ex-or tạo
ra (k-1)-itemset được định nghĩa như sau:
XB XA
XAB = ⊕
Procedure Sub_dPidsets
Input: dPidset d1, d2 and index of gain G
Output: dPidset d3 and its gain (Gain)
Trang 32Dựa vào công thức như trên, thuật toán phát sinh lớp tương đương được gọi
là Expand_E được thể hiện trong hình 2.2
XAB = ⊕ =
2.2.3.4 Gi ải thuậtMEI
Ý tưởng của thuật toán
Trước hết, MEI sẽ quét qua CSDL sản phẩm một lần để xác định tổng lợi nhuận của nhà máy (T), các chỉ số về lợi nhuận (G), và tập 1-itemset có thể xóa với pidset của chúng Sau đó, thuật toán sử dụng chiến lược chia-và-chinh phục với tập 1-itemset có thể xóa đã được đề cập ở trên cho đến khi thu được tất cả EIS (hình 2.7)
Mô t ả thuật toán
MEI thực hiện trên CSDL cho ở bảng 1 với ngưỡng là 16%(ξ = 16 %)
Thuật toán thực hiện với 4 bước chính:
(1) MEI quét DB để xác định T = 5000 ngàn USD, là tổng lợi nhuận của nhà máy;
G là chỉ số về lợi nhuận; và 1–itemset xóa được {d, e, f, g, h} với pidset của
Trang 33(2) Tập 1-itemset xóa được được sắp xếp thứ tự giảm dần của kích thước pidset của chúng Sau khi sắp xếp, thứ tự mới của 1-itemset xóa được là {e, f, d, h, g}
Hình 2.3 T ập 2-itemset có thể xóa của node {e}[3]
Hình 2.4 T ập 3-itemset có thể xóa của node {ed}[3]