Đã có khá nhiều thuật toán được phát triển nhằm làm tăng hiệu quả khai thác tập phổ biến và tập phổ biến đóng: các thuật toán phát triển từ Apriori, các thuật toán phát triển từ FP-tree,
Trang 1ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
CHUYÊN ĐỀ
KHAI PHÁ DỮ LIỆU VÀ NHÀ KHO DỮ LIỆU
BÀI THU HOẠCH
KHAI THÁC TẬP PHỔ BIẾN ĐÓNG
SỬ DỤNG CẤU TRÚC IT-TREE
GIẢNG VIÊN GIẢNG DẠY
PGS TS ĐỖ PHÚC
HỌC VIÊN THỰC HIỆN
LÊ CUNG TƯỞNG (CH1101152)
Hồ Chí Minh, 11/2012
Trang 2Mục lục
Mục lục 1
Lời mở đầu 2
1 Kiến thức cơ bản 3
1.1 Cơ sở dữ liệu giao dịch 3
1.2 Tập phổ biến 3
1.3 Luật kết hợp 4
1.4 Bài toán khai thác tập phổ biến và luật kết hợp 4
2 Khai thác tập phổ biến đóng 5
2.1 Cấu trúc IT-tree (Itemset Tidset – tree) và các lớp tương đương 5
2.2 Thuật toán Eclat 6
2.2.1 Thuật toán 6
2.2.2 Minh hoạ thuật toán Eclat 6
2.2.3 Nhận xét 7
2.3 Một số định nghĩa và tính chất 9
2.3.1 Toán tử đóng 9
2.3.2 Tập phổ biến đóng 9
2.3.3 Các tính chất của IT-Pair 10
2.4 Thuật toán CHARM 10
2.4.1 Giới thiệu 10
2.4.2 Thuật toán 11
2.4.3 Minh hoạ 13
2.4.4 Kiểm tra gộp nhanh 14
3 Cài đặt thuật toán CHARM 15
3.1 Cấu trúc tệp tin dữ liệu 15
3.2 Chức năng 15
3.3 Hướng dẫn sử dụng 15
Kết luận 16
Tài liệu tham khảo 17
Trang 3Lời mở đầu
Chúng ta đang sống trong thời đại bùng nổ Công nghệ Thông tin với khối lượng thông tin khổng lồ Điều này đòi hỏi con người phải tìm kiếm phương pháp rút trích
ra các tri thức từ khối lượng dữ liệu này Lĩnh vực khai phá tri thức và khai thác dữ liệu được hình thành và phát triển nhằm đáp ứng nhu cầu này
Hiện nay, lĩnh vực khai thác dữ liệu có 3 bài toán chính được đề cập nhiều nhất: (1) khai thác luật kết hợp, (2) phân lớp và (3) gom nhóm dữ liệu Các bài toán này nhằm đáp ứng cho việc khai thác dữ liệu văn bản, khai thác dữ liệu không gian, thời gian, khai thác dữ liệu Web
Khai thác luật kết hợp là tìm ra các mối quan hệ giữa các item với nhau Vế phải của luật kết hợp có thể chứa một hay nhiều item Vì vậy, độ phức tạp của bài toán khai thác luật kết hợp rất lớn Muốn khai thác luật kết hợp, trước tiên phải khai thác được tập phổ biến Đã có khá nhiều thuật toán được phát triển nhằm làm tăng hiệu quả khai thác tập phổ biến và tập phổ biến đóng: các thuật toán phát triển từ Apriori, các thuật toán phát triển từ FP-tree, các thuật toán phát triển từ IT-tree
Trong bài thu hoạch này, tôi tập trung tìm hiểu thuật toán CHARM [5] đề suất bởi Zaki cùng cộng sự để khai thác tập phổ biến đóng dựa trên cấu trúc IT-tree Ngoài ra, tôi có sử dụng cách hiểu, ví dụ minh họa và một số cải tiến của TS Võ Đình Bảy trong luận án Tiến Sĩ [6] cho thuật toán CHARM Tôi đã tiến hành cài đặt thuật toán CHARM trên môi trường Visual Studio 2005 để minh họa cho những gì tôi tìm hiểu trong bài thu hoạch này
Trang 41 Kiến thức cơ bản
1.1 Cơ sở dữ liệu giao dịch
Cơ sở dữ liệu (CSDL) giao dịch gồm một bộ đôi trong đó là tập các item và là tập các giao dịch Cơ sở dữ liệu (CSDL) trong
Bảng 1 được lấy làm ví dụ cho toàn bộ bài viết
Bảng 1 Cơ sở dữ liệu mẫu
1.2 Tập phổ biến
Độ phổ biến: Cho CSDL giao dịch và một itemset Độ phổ biến của trong
, kí hiệu , là số giao dịch mà X xuất hiện trong D
Ví dụ: Xét CSDL của Bảng 1, ta có vì A chứa trong 4 giao dịch 1345,
vì AD chứa trong các giao dịch 45
Tập phổ biến: được gọi là phổ biến nếu (với
là giá trị do người dùng chỉ định)
Ví dụ: Xét CSDL của Bảng 1 với thì A là tập phổ biến vì
nhưng AD không phải là tập phổ biến vì
Tính chất
- Mọi tập con của một tập phổ biến cũng phổ biến: , nếu thì
- Mọi tập cha của một tập không phổ biến cũng không phổ biến: , nếu thì
Trang 51.3 Luật kết hợp
Luật kết hợp: là biểu thức có dạng , trong đó được gọi
là độ phổ biến của luật và được gọi là độ tin cậy của luật
Tập các luật kết hợp từ CSDL thỏa và được gọi là tập luật kết hợp truyền thống
Một số tính chất của luật kết hợp
- Nếu là luật kết hợp truyền thống thì cũng là luật kết hợp truyền thống
- Nếu là luật kết hợp truyền thống thì cũng là luật kết hợp truyền thống
- Nếu không là luật kết hợp thì cũng không là luật kết hợp
1.4 Bài toán khai thác tập phổ biến và luật kết hợp
Khai thác luật kết hợp bao gồm 2 bước như sau:
Bước 1 (tìm tập phổ biến): tìm tất cả các tập phổ biến với độ hỗ trợ lớn hơn độ
hỗ trợ tối thiểu ( ) Đặt , chúng ta tìm được tập hợp các tập
phổ biến thỏa điều kiện như trong Bảng 2 Trong đó CDT, ACTW và ACDW là các
tập phổ biến tối đại (không là một tập con của bất kỳ tập phổ biến nào khác)
Bảng 2 Tập hợp các tập danh mục phổ biến
Độ tin cậy Các tập danh mục phổ biến
67% A, D, T, AC, AW, CD, CT, ACW 50% AT, DW, TW, ACT, ATW, CDW, CTW, ACTW 33% AD, DT, CDT, ACD, ADW, ACDW
Bước 2 (phát sinh luật kết hợp): Luật kết hợp được được tạo ra từ các tập phổ
biến tìm thấy ở bước 1 thỏa mãn
Ví dụ: từ một tập phổ biến ACW có thể tạo 6 luật là: : 1.0; : 0.67; : 0.8; : 1.0; : 1.0 và : 0.8
Trang 62 Khai thác tập phổ biến đóng
2.1 Cấu trúc IT-tree (Itemset Tidset – tree) và các lớp tương
đương
Cho tập các item và , hàm chứa phần tử đầu của và một quan hệ tương đương dựa vào tiền tố trên các itemset được định nghĩa như sau:
Nói cách khác, hai itemset thuộc cùng một lớp tương đương khi và chỉ khi chúng
có chung phần tử đầu phổ biến Xét cây IT-tree như Hình 1, mỗi nút đại diện cho
một cặp Itemset-Tidset là một lớp tiền tố Tất cả các nút con của nút X thuộc về lớp tương đương của nút X bởi vì chúng có chung tiền tố X
Hình 1 Cây IT-tree và các lớp tương đương
Lớp tương đương ký hiệu là: , trong đó là nút cha và mỗi
là một item, đại diện cho nút Ví dụ nút gốc của cây IT-tree tương ứng với , nút trái cùng của nút gốc là lớp chứa tất cả các itemset chứa là tiền tố
Việc tạo ra các nút con của một nút trong một lớp tương đương được thực hiện bằng cách kết hợp với các nút đứng sau nó trong cùng một lớp tương đương Quá trình này sẽ được tiếp tục thực hiện đệ qui đối với các lớp tương đương mới cho đến khi không còn lớp tương đương nào được tạo ra
Trang 72.2 Thuật toán Eclat
Eclat ( )
1
2 ENUMERATE_FREQUENT ([ ])
ENUMERATE_FREQUENT ( )
1 for all do
2 [ ] = { }
3 for all , with j>i do
5
6 If then
8 ENUMERATE_FREQUENT ([ ])
Hình 2 Thuật toán khai thác tập phổ biến thỏa ngưỡng
Đầu tiên, thuật toán Eclat [1, 2, 3] khởi tạo lớp tương đương rỗng ([ ]) chứa các nút chứa các 1-itemset phổ biến ( ) Sau đó thuật toán gọi thủ
tục ENUMERATE_FREQUENT với đầu vào là lớp tương đương rỗng Thủ tục này
sẽ tính của các cặp với và Nếu thì thêm nút vào lớp tương đương Sau đó, gọi đệ
qui thủ tục ENUMERATE_FREQUENT để sinh ra các lớp tương đương con cho
đến khi không sinh được lớp tương đương nào nữa
Xét CSDL ở Bảng 1 với , ta có cây tìm kiếm minh họa cho quá trình khai thác tập phổ biến như trong Hình 3
Trang 8Hình 3 Cây tìm kiếm tập FI thỏa ngưỡng
Xét nút và , hai nút này sẽ tạo ra nút mới là , do nên AC là tập phổ biến và nút sẽ được thêm vào lớp tương đương Xét A với D, do nên AD không là tập phổ biến Tiếp tục xét các nút còn lại, ta có lớp tương đương với các nút
Thuật toán gọi đệ qui thủ tục ENUMERATE_FREQUENT với đầu vào là lớp
tương đương , tiếp tục xét mỗi nút trong với các nút đứng sau nó để hình thành nên các lớp tương đương mới như , v.v
Cây tìm kiếm IT-tree luôn lệch trái do:
(1) Ứng với mỗi lớp tương đương ta cần xét với mọi (j > i) do đó i càng nhỏ thì số lượng j càng lớn
(2) Khi thì phần giao nhau giữa với các phần tử của các lớp tương đương khác thường sẽ lớn hơn phần giao của với các lớp tương đương còn lại
Trang 9Để cải thiện (2) ta chỉ cần sắp xếp các trong lớp tương đương theo độ phổ biến tăng dần, khi đó cây IT-tree sẽ ít lệch trái hơn
Eclat_SORT ( )
1 [ ] = { }
2 ENUMERATE_FREQUENT_SORT ([ ])
ENUMERATE_FREQUENT_SORT ([ ])
1 SORT_SUPPORT ( )
2 for all do
3
4 for all with j > i do
Hình 4 Thuật toán khai thác tập phổ biến thỏa ngưỡng có sắp xếp
Cây tìm kiếm IT-tree sử dụng phương pháp sắp xếp được thể hiện ở Hình 5 ít
lệch trái hơn so với cây tìm kiếm IT-Tree sử dụng phương pháp thông thường thể hiện
trong Hình 3 Cây IT-Tree này có số itemset phát sinh không thỏa ngưỡng
ít hơn, thời gian tính toán giảm và quá trình tìm kiếm ít tốn không gian bộ nhớ hơn Các nút con sinh ra trên cùng một mức của một nút cha nào đó thường đã thỏa điều kiện sắp tăng theo độ phổ biến nên ta chỉ cần sắp xếp ở mức 1 của cây, các mức còn lại không cần sắp xếp bởi vì chúng sẽ thừa hưởng kết quả từ mức trước đó Vì thế chúng ta chỉ cần sắp xếp ở mức 1 của cây và không cần sắp xếp
ở mỗi lần gọi đệ qui
Trang 10Hình 5 Cây tìm kiếm tập FI thỏa ngưỡng có sắp xếp
2.3 Một số định nghĩa và tính chất
Cho và ánh xạ với Ánh xạ c được gọi là
toán tử đóng
Ví dụ: Xét cơ sở dữ liệu được cho trong Bảng 1 ta có:
và
Toán tử đóng được định nghĩa như trên luôn thỏa các tính chất sau [4]:
1 Tính mở rộng
2 Tính đơn điệu: Nếu thì
3 Tính luỹ đẳng
Cho , được gọi là tập đóng khi và chỉ khi Tập vừa phổ biến vừa
là tập đóng được gọi là tập phổ biến đóng
Ví dụ: Xét cơ sở dữ liệu được cho trong Bảng 1 ta có:
nên không phải là tập đóng Tương tự, nên là tập đóng
Trang 112.3.3 Các tính chất của IT-Pair
Cho và là hai thành viên tuỳ ý của lớp tương đương Ta có
4 tính chất sau [5]:
1 Nếu thì
2 Nếu thì nhưng
3 Nếu thì nhưng
4 Nếu và thì
Hình 6 Các tính chất của IT-pair 2.4 Thuật toán CHARM 2.4.1 Giới thiệu Thuật toán CHARM là thuật toán khai thác tập phổ biến đóng được cải tiến từ thuật toán khai thác tập phổ biến Eclat và dựa vào các tính chất của IT-pair Ý tưởng như sau: Cho 2 tập phổ biến , nếu thì và sẽ thuộc về cùng tập phổ biến đóng có tiền tố là Như vậy ta không cần xét bất cứ tập cha nào của cả lẫn ngoài Quá trình tiếp tục khám phá đệ qui bằng cách tiếp tục xét các tập cha của
Trang 122.4.2 Thuật toán
CHARM ( )
1
2 CHARM_EXTEND ([ ], C = { })
3 Return C
CHARM_EXTEND ([ ], C)
1 for each in do
2 And
3 For each in với j > i do
4 And
5 CHARM_PROPERTY ( )
CHARM_PROPERTY ( )
1 if then
2 if then
5 elseif then // tính chất 2
7 elseif then // tính chất 3
10 else // tính chất 4
Hình 7 Thuật toán khai thác tập phổ biến đóng thỏa ngưỡng
Định nghĩa thứ tự : Ánh xạ là một đơn ánh từ tập các itemset sang
số nguyên Với bất kỳ 2 itemset và , ta nói rằng khi và chỉ khi Hàm định nghĩa một thứ tự tổng thể trên tập tất cả các itemset Ví dụ: nếu chỉ thứ tự từ điển thì AC ≤ AC do
Trang 13Thuật toán CHARM sử dụng 4 tính chất cơ bản của IT-pair để khám phá nhanh các tập phổ biến đóng Giả sử hiện tại chúng ta đang xử lý nút trong đó
là một lớp tiền tố, gọi là một itemset của thì mỗi thành viên của là một cặp IT-pair
Thuật toán bắt đầu bằng việc khởi tạo các lớp tiền tố , các nút được xét là các l-itemset phổ biến và Tidset của chúng Giả sử các phần tử trong được sắp xếp theo thứ tự Việc tính toán chính là thực thi thủ tục
CHARM_EXTEND để trả về tập các itemset phổ biến đóng C
CHARM_EXTEND xem xét mỗi kết hợp của IT-pair xuất hiện trong Thuật
toán sẽ kết hợp mỗi IT-pair với mỗi IT-pair khác đứng sau nó theo thứ tự Mỗi sinh ra một tiền tố mới thành lớp rỗng Dòng 7 của thủ tục này, hai IT-pair được kết hợp để sinh ra một cặp mới , trong đó
và Dòng 8 kiểm tra tính chất của IT-pair bằng các gọi thủ tục
CHARM_PROPERTY Thủ tục này thay đổi lớp hiện hành bằng cách xóa đi các
IT-pair đã được gọp vào cặp khác Nó cũng thêm vào IT-pair mới trong lớp mới
và có thể thay đổi tiền tố trong trường hợp thỏa tính chất 1 hoặc 2 Sau đó thêm itemset vào tập itemset phổ biến đóng C với điều kiện không bị gộp bởi bất kỳ tập đóng nào được tìm thấy trước đó Khi tất cả các đã được xử lý, thuật toán sẽ khám phá đệ qui các lớp tương đương mới theo chiều sâu
Tái sắp xếp tự động các phần tử: theo thuật toán, nếu và thỏa tính chất 1 hoặc tính chất 2 thì ta sẽ không thêm nút mới vào cây tìm kiếm Với tính chất 1, bao đóng (sử dụng toán tử đóng) của hai itemset là bằng nhau, vì vậy chúng ta có thể loại
bỏ từ và thay thế Với tính chất 2, chúng ta có thể thay thế Trong cả hai trường hợp trên, chúng ta không thêm bất cứ một lớp mới nào Vì vậy, càng xảy ra trường hợp 1 và 2 nhiều thì càng ít mức tìm kiếm được thực thi Ngược lại, trường hợp 3 và 4 phải thêm vào nút mới đòi hỏi thêm mức xử lý trên cây IT
Vì chúng ta muốn (tính chất 1) hoặc (tính chất 2) nên chúng ta cần sắp xếp các itemset tăng dần theo độ phổ biến Tại nút gốc chúng ta sắp xếp các item tăng dần theo độ phổ biến của chúng Với các mức còn lại, mỗi phần tử
Trang 14được thêm vào theo thứ tự đã sắp xếp theo độ phổ biến của mỗi lớp mới (dòng 19
và 21) Vì vậy việc tái sắp xếp được thực hiện đệ qui tại mỗi nút trên cây
Hình 8 Cây IT-tree tìm tập phổ biến đóng thỏa ngưỡng
Quá trình khai thác FCI thỏa ngưỡng phổ biến trên IT-tree được
thể hiện ở Hình 8 Đầu tiên, lớp tương đương được sắp xếp tăng dần
của độ phổ biến [ ] = {D, T, A, W, C} Khi , nó kết hợp lần lượt với các , do và nên nó không được sinh ra Do DW là một nút mới Tiếp tục kết hợp D với C, do nên thoả tính chất 2 Thay
D bởi DC Quá trình tiếp tục khai thác đệ qui theo chiều sâu để tìm các tập phổ biến
đóng Mức tìm kiếm trong trường hợp khai thác FCI (Hình 8) giảm đáng kể so với khai thác FI (Hình 1), điều này dẫn đến không gian bộ nhớ yêu cầu sẽ nhỏ hơn
Để minh họa tính chất 1, xét nút TCA 135 với nút TCW 135: Do t(TCA) = t(TCW) = 135 nên cả TCA lẫn TCW đều không là tập đóng Xóa nút TCW 135 khỏi lớp tương đương [TC] và thay nút TCA 135 thành TCAW 135
Bảng 3 Danh sách các FCI của CSDL Bảng 1 với (theo thứ tự khám phá đệ qui)