Tải bản đầy đủ (.pdf) (32 trang)

CLOSET +:Nghiên cứu chiến lược tốt nhất để khai thác tập phổ biến đóng

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.38 MB, 32 trang )

ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
KHOA CÔNG NGHỆ THÔNG TIN

ĐOÀN MINH KHUÊ - 1512005

ĐỒ ÁN MÔN HỌC
DATAMINING

ĐỀ TÀI:
CLOSET+: Nghiên cứu chiến lược tốt nhất
để khai thác tập phổ biến đóng
DỰA TRÊN TÀI LIỆU:
CLOSET+: Searching for the Best Strategies for Mining
Frequent Closed Itemsets
Jianyong Wang - Jiawei Han - Jian Pei

TP.HCM – 2/2016


MỤC LỤC
CHƯƠNG 1: KHÁI NIỆM VÀ CÁC VẤN ĐỀ LIÊN QUAN ................... 1
1.1. Khái niệm tập phổ biến đóng .......................................................... 1
1.2. Các vấn đề liên quan ........................................................................ 2
CHƯƠNG 2: CHIẾN LƯỢC KHAI THÁC TẬP PHỔ BIẾN ĐÓNG ...... 3
2.1. Tìm kiếm BFS so với DFS .................................................................. 3
2.2. Định dạng theo chiều ngang so với định dạng theo chiều dọc .......... 4
2.3. Kỹ thuật nén dữ liệu ........................................................................... 4
2.4. Kỹ thuật loại bỏ để khai thác tập phổ biến đóng .............................. 5
CHƯƠNG 3: CLOSET+: MỘT PHƯƠNG PHÁP HIỆU QUẢ CHO ...... 7
KHAI THÁC TẬP PHỎ BIẾN ĐÓNG ....................................................... 7


3.1. Tổng quan về CLOSET+ ................................................................... 7
3.2. Phương pháp chiếu cây lai ................................................................. 7
3.2.1. Phép chiếu cây thực từ dưới lên................................................... 7
3.2.2. Chiếu cây ảo từ trên xuống .......................................................... 9
3.3. Kỹ thuật item skipping ..................................................................... 12
3.4. Tính hiệu quả của Kiểm tra Subset ................................................. 13
3.4.1. Kiểm tra subset bằng cây kết quả .............................................. 13
3.4.2. Cây kết quả gồm 2 cấp chỉ mục ................................................. 14
3.4.3. Kiểm tra subset bằng cây FP ..................................................... 15
3.5. Thuật toán CLOSET+ ...................................................................... 17
CHƯƠNG 4: ĐÁNH GIÁ HIỆU SUẤT .................................................... 18
4.1. Môi trường thử nghiệm và tập dữ liệu ............................................ 18
4.2. Kết quả thực nghiệm ........................................................................ 20
4.3. Kiểm tra khả năng mở rộng ............................................................. 24
CHƯƠNG 5: KẾT LUẬN .......................................................................... 26
TÀI LIỆU THAM KHẢO.......................................................................... 27

2


BẢNG CHÚ GIẢI BẢNG BIỂU
Bảng 1 – Cơ sở dữ liệu giao dịch TDB ....................................................................... 1
Bảng 2 - Đặc điểm Dataset........................................................................................ 18
Bảng 3 - Số tập phổ biến đóng với ngưỡng hỗ trợ tương đối ................................... 19

BẢNG CHÚ GIẢI HÌ NH VẼ

Hình 1 – Các thiết lập của tập phổ biến đóng và cây FP ............................................ 3
Hình 2 - Chiếu thực từ dưới lên .................................................................................. 8
Hình 3 - Chiếu ảo từ trên xuống................................................................................ 10

Hình 4 - Chiếu ảo từ trên xuống cho f: 4 .................................................................. 12
Hình 5 - Cây kết quả có 2 cấp chỉ mục ..................................................................... 14
Hình 6 - Thời gian thực thi (mushroom) ................................................................... 19
Hình 7 - Thời gian thực thi (gazelle)......................................................................... 19
Hình 8 - Hiệu suất thời gian thực thi (bộ dữ liệu connect) ....................................... 20
Hình 9 - Sử dụng bộ nhớ (bộ dữ liệu connect).......................................................... 20
Hình 10 - Hiệu suất thời gian thực thi (pumsb *) ..................................................... 21
Hình 11 - Sử dụng bộ nhớ (Pumsb *) ....................................................................... 21
Hình 12 - Hiệu suất thực thi (mushroom) ................................................................. 22
Hình 13 - Sử dụng bộ nhớ (mushroom) .................................................................... 22
Hình 14 - Hiệu suất thời gian thực thi (gazelle) ........................................................ 22
Hình 15 - Sử dụng bộ nhớ (gazelle) .......................................................................... 22
Hình 16 - Hiệu suất theo thời gian chạy (retail-chain).............................................. 23
Hình 17 - Sử dụng bộ nhớ (retail-chain) ................................................................... 23
Hình 18 - Hiệu suất thời gian chạy (big-market) ...................................................... 24
Hình 19 - Sử dụng bộ nhớ (big-market) .................................................................... 24
Hình 20 - Kiểm tra khả năng mở rộng (T10I4DxP1k).............................................. 25
Hình 21 - Kiểm tra khả năng mở rộng (T10I4D100kPx).......................................... 25

BẢNG CHÚ GIẢI THUẬT NGỮ VÀ CÁC KÍ HIỆU
1

Tiế ng Anh
Closed Association Rules Mining

Tiế ng Viêṭ
Kí hiệu
Khai thác luật kết hợp đóng CHARM

2


Transaction Database

Cơ sở dữ liệu giao dịch

TDB

3

Minimum support

Độ hỗ trợ cực tiểu

minSup

4

Depth-first search

Tìm kiếm theo chiều sâu

DFS

5

Breadth-first search

Tìm kiếm theo chiều rộng

BFS


6

Database

Cơ sở dữ liệu

CSDL

7

Frequent Closes Itemset

Tập các tập phổ biến đóng

FCI

STT

3


TÓM TẮT ĐỒ ÁN
Khai thác tập phổ biến đóng cung cấp các kết quả đầy đủ để phân tích mô
hình phổ biến. Các nghiên cứu mở rộng đã đề xuất rất nhiều chiến lược khác nhau
để khai thác tập phổ biến đóng có hiệu quả, chẳng hạn như tìm kiếm theo chiều
rộng với tìm kiếm theo chiều sâu, định dạng dọc so với định dạng ngang, cấu trúc
cây với các cấu trúc dữ liệu khác, duyệt theo cây từ trên xuống so với từ dưới lên,
phép chiếu ảo so với chiếu thực của cơ sở dữ liệu có điều kiện …
Hầu hết các thuật toán khai thác mô hình phổ biến được nghiên cứu đều khai

thác trên toàn bộ các tập phổ biến, như là Apriori, FP-growth, H-mine, và OP. Các
thuật toán này có thể có hiệu suất tốt khi ngưỡng hỗ trợ cao và không gian mẫu thưa
thớt. Tuy nhiên, khi các ngưỡng hỗ trợ giảm, số lượng các tập phổ biến tăng lên
đáng kể thì hiệu suất của các thuật toán xấu đi nhanh chóng bởi vì sinh ra một số
lượng lớn các mẫu trong quá trình phân tích. Hơn nữa, hiệu quả của việc khai thác
toàn bộ các tập hợp bị giảm đi bởi vì nó tạo ra nhiều mô hình dư thừa. Một ví dụ
đơn giản là trong một cơ sở dữ liệu chỉ có một giao dịch có chiều dài 100, nó sẽ tạo
ra 2100 - 1 tập phổ biến nếu minSup được thiết lập là 1.
Trong vài năm gần đây, các nghiên cứu mở rộng đã đề xuất nhiều thuật toán
cho khai thác tập phổ biến đóng, chẳng hạn như A-close, CLOSET, MAFIA và
CHARM. Tuy nhiên, chưa có sự so sánh và đánh giá những ưu và khuyết điểm của
các chiến lược tìm kiếm trên và làm thế nào chúng ta có thể chọn và tích hợp các
chiến lược tốt nhất để đạt được hiệu suất cao hơn trong các trường hợp tổng quát.
Trong bài báo này, để giải quyết các vấn đề còn hạn chế trên đây thì các tác
giả J.Wang, J.Han, J.Pei đưa ra chiến lược nghiên cứu và phát triển được một thuật
toán, đó là thuật toán CLOSET+. CLOSET+ tích hợp những ưu điểm của các chiến
lược đề xuất trước đó và đạt được một vài hiệu quả như một số thuật toán được phát
triển gần đây. Trên hết, hiệu suất toàn diện của thuật toán được thể hiện rõ nét nhất
qua một số kết quả thực nghiệm trên các tập dữ liệu tổng hợp và thực tế để cho thấy
những ưu điểm của CLOSET+ vượt qua so với các thuật toán khai thác dữ liệu tồn

4


tại hiện nay, bao gồm CLOSET, CHARM và OP, về mặt thời gian thực thi, sử dụng
bộ nhớ và khả năng mở rộng.
Bố cu ̣c của báo cáo đươ ̣c chia làm các chương như sau:
Chương 1: Trình bày lại định nghĩa về khai thác tập phổ biến đóng và các vấn đề
liên quan khác.
Chương 2: Trình bày tổng quan các chiến lược tìm kiếm chính và các ưu nhược

điểm của chúng.
Chương 3: Trình bày về thuật toán CLOSET+.
Chương 4: Đánh giá hiệu xuất của thuật toán CLOSET+ so với một vài thuật toán
phát triển gần đây.
Chương 5: Đưa ra kế t luâ ̣n và nêu nhữ ng hướng phát triể n trong tương lai.

5


CHƯƠNG 1: KHÁI NIỆM VÀ CÁC VẤN ĐỀ LIÊN QUAN

1.1.

Khái niệm tập phổ biến đóng
TDB (Transaction Database) là một tập hợp các giao dịch, tại mỗi giao dịch,

ký hiệu là một {tid, X}, chứa một bộ các item (ví dụ, X) và được kết hợp với một
tid giao dịch duy nhất. Cho I = {i1, i2,. . . , in} là các item riêng biệt xuất hiện trong
TDB. Một itemset Y là một tập con khác rỗng của I và được gọi là một l-itemset
nếu nó có chứa các item l. Một itemset {x1,. . . , xl} cũng được ký hiệu là x1,. . . ,
xl. Một giao dịch {tid, X} được cho là chứa itemset Y nếu Y ⊂ X. Số lượng giao
dịch trong TDB chứa itemset Y được gọi là độ hỗ trợ của tập phổ biến Y, ký hiệu là
sup(Y). Cho một ngưỡng hỗ trợ tối thiểu, minSup, một itemset Y là phổ biến nếu
sup(Y) ≥ minSup.
Định nghĩa 1 (Tập phổ biến đóng): Một tập Y là một tập phổ biến đóng nếu
nó là phổ biến và không tồn tại tập cha Y’⊃ Y và sup(Y’) = sup(Y).
Ví dụ 1: Hai cột đầu tiên trong Bảng 1 thể hiện một TDB. Giả sử minSup =
2, chúng ta có thể tìm kiếm và sắp xếp danh sách các item phổ biến theo độ hỗ trợ
giảm dần. Danh sách item đã được sắp xếp được gọi là f_list. Trong ví dụ này f_list
= {f: 4, c: 4, a: 3, b: 3, m: 3, p: 3}. Các item phổ biến trong mỗi giao dịch đều được

sắp xếp theo f_list và hiển thị trong cột thứ ba của bảng 1. Tập fc là một tập phổ
biến gồm 2 item với độ hỗ trợ là 3, nhưng nó không phải là tập đóng, bởi vì có một
tập cha fcam mà độ hỗ trợ cũng là 3. Vậy fcam là một tập phổ biến đóng.
Tid
100
200
300
400
500

Tập các items
a, c, f, m, p
a, c, d, f, m, p
a, b, c, f, g, m
b, f, i
b, c, n, p

Danh sách sắp xếp theo độ hỗ trợ
f, c, a, m, p
f, c, a, m, p
f, c, a, b, m
f, b
c, b, p

Bảng 1: Cơ sở dữ liệu giao dịch TDB

1


1.2.


Các vấn đề liên quan
Giải thuật tiêu biểu cho khai thác tập phổ biến đóng bao gồm A-close,

CLOSET, MAFIA và CHARM.
A-close áp dụng tìm kiếm theo chiều rộng để tìm ra mô hình phổ biến đóng.
Trong bộ dữ liệu dày đặc hoặc bộ dữ liệu với các mẫu dài, duyệt theo chiều rộng có
thể gặp phải khó khăn vì có thể có nhiều ứng cử viên và cần phải quét các cơ sở dữ
liệu nhiều lần.
CLOSET là mở rộng của thuật toán FP-growth, trong đó xây dựng một cây
FP và đệ quy có điều kiện cây FP từ dưới lên. Mặc dù CLOSET sử dụng một số kỹ
thuật tối ưu hóa để nâng cao hiệu quả hoạt động khai thác, hiệu quả của nó vẫn chưa
cao trong bộ dữ liệu thưa thớt hoặc khi ngưỡng hỗ trợ thấp.
Thuật toán CHARM là một thuật toán thực hiện duyệt trên cả không gian tập
phổ biến và không gian tập định danh. Thuật toán tránh được việc tính toán để tìm
ra tất cả các tập con có thể có của tập phổ biến đóng rồi mới tìm tập phổ biến đóng.
CHARM cho thấy hiệu suất tốt hơn so với A-close, Pascal, MAFIA, và CLOSET
trong nhiều bộ dữ liệu dày đặc.

2


CHƯƠNG 2: CHIẾN LƯỢC KHAI THÁC TẬP PHỔ BIẾN ĐÓNG
Trong phần này sẽ trình bày một cái nhìn tổng quan về các chiến lược khai
thác tập phổ biến như BFS, DFS, cây FP,..., và phân tích ưu và nhược điểm của
chúng.
Một nguyên tắc cần thiết cho khai thác tập phổ biến theo Apriori là: "Mỗi tập
con của một tập phổ biến phải phổ biến". Theo đó, mỗi tập phổ biến bao gồm các
item phổ biến.
Cho một tập phổ biến F, tập đầy đủ các tập phổ biến có hơn 2 F phần tử. Hình 1(a)

chỉ ra những thành phần của một tập phổ biến đóng:

Hình 1: Các thành phần của tập phổ biến đóng và cây FP.

2.1. Tìm kiếm BFS so với DFS
Phương pháp BFS sử dụng các tập phổ biến ở cấp hiện tại với chiều dài k để
tạo ra các ứng viên ở cấp tiếp theo với chiều dài k+1, và quét database mới là cần
thiết để đếm độ hỗ trợ của các ứng viên với chiều dài k+1. Bởi vì quét database quá
nhiều lần nên nó không thích hợp để khai thác mô hình dài.
Ngược lại, phương pháp DFS chỉ tìm kiếm trong các cây con của một tập
hợp khi tập đó là tập phổ biến. Khi các tập phổ biến trở nên dài hơn, DFS thu nhỏ
không gian tìm kiếm một cách nhanh chóng. Kết quả là, phương pháp DFS thường
tốt hơn BFS trong khai thác dữ liệu dài.

3


2.2. Định dạng theo chiều ngang so với định dạng theo chiều dọc
Định dạng theo chiều dọc: một tid-list được giữ cho từng item, tid-list có thể
lớn đối với bộ dữ liệu dày đặt. Để tìm các tập phổ biến, cần phải tìm giao của các
tid-list với nhau (rất tốn chi phí), và với mỗi tập giao tìm được thì chỉ có một tập
phổ biến.
Định dạng theo chiều ngang: mỗi giao dịch được ghi nhận như là một danh
sách các item. Chúng đòi hỏi ít không gian, và với mỗi lần quét cơ sở dữ liệu, chúng
tìm thấy nhiều tập phổ biến cục bộ mà có thể được sử dụng để phát triển các tập tiền
tố để tạo tập phổ biến.

2.3. Kỹ thuật nén dữ liệu
Một cơ sở dữ liệu giao dịch thường là rất lớn. Nếu một cơ sở dữ liệu có thể
được nén và chỉ các thông tin liên quan đến việc khai thác được giữ, khai thác có

thể có hiệu quả. Cây FP và Diffset là hai ví dụ điển hình. Cây FP của một TDB là
một cây tiền tố của danh sách các item phổ biến trong các giao dịch. Ý tưởng này có
thể được minh họa trong ví dụ sau.
Ví dụ 2: Cây FP được xây dựng như sau: Quét các cơ sở dữ liệu một lần để tìm ra
bộ các item phổ biến và sắp xếp chúng với độ hỗ trợ giảm dần để có được f_list
(xem Ví dụ 1). Để chèn một giao dịch vào cây FP, các item không phổ biến được
xóa và hạng mục còn lại trong các giao dịch đều được sắp xếp theo thứ tự của f_list,
tức là, các mục ít phổ biến nhất là ở lá, và các item với độ hỗ trợ cao hơn ở một cấp
cao hơn trong cây FP. Hình 1 (b) cho thấy cây FP.
Cấu trúc cây FP có một số lợi thế trong khai thác tập phổ biến. Trước hết,
cây FP thường có một tỉ lệ nén cao trong khi biểu diễn tập CSDL bởi vì:
- Những danh mục không đủ độ phổ biến được loại ngay từ đầu, vì vậy việc
tìm tập phổ biến chỉ thao tác trên một số lượng danh mục nhỏ hơn nhiều so
với toàn bộ các danh mục.
- Nhiều giao dịch sẽ được nén chung trong cây FP-tree và việc này giúp giảm
bớt khá nhiều thao tác trong quá trình xác định độ phổ biến của tập danh
mục.

4


- Cấu trúc FP-tree cho phép thực hiện tìm kiếm theo chiều sâu và áp dụng mô
hình chia để trị khá hiệu quả.
Diffset là một thuật nén các tid-set hiệu quả cho phương pháp áp dụng các
định dạng dữ liệu theo chiều dọc. Đối với một thuật toán định dạng theo chiều dọc
giống như CHARM, tính toán hỗ trợ đòi hỏi các nút giao nhau trên tidsets, khi tidset
quá lớn, không chỉ các tidsets tiêu tốn nhiều bộ nhớ, những tập giao của các tidset
cũng gây tốn bộ nhớ. Để tránh điều đó, CHARM phát triển một kỹ thuật Diffset chỉ
giữ lại sự khác biệt của các tid và các tập ứng viên khi nó sản sinh ra tập phổ biến.


2.4. Kỹ thuật loại bỏ để khai thác tập phổ biến đóng
Bổ đề 2.1. (Item merging) Giả sử X là một tập phổ biến và tất cả các giao
dịch Trans có chứa tập danh mục X, đồng thời mọi giao dịch này cũng chứa tập
danh mục Y ≠ ∅ với Y ∩ X = ∅ và không tồn tại tập Y’ tương tự như Y với Y ⊂ Y’
(có nghĩa là Y là tập lớn nhất có thể có). Thì có thể kết luận là tập X ∪ Y là một tập
phổ biến đóng có sup (X ∪ Y) =⏐Trans⏐; và những tập phổ biến chứa X mà không
chứa Y thì không thể là tập phổ biến đóng.
Ví dụ 3: Trong ví dụ hiển thị trong Bảng 1, cơ sở điều kiện cho tập tiền tố fc:
3 là {(a, m, p), (a, m, p), (a, b, m)} (mục d và g là không phổ biến và bị loại), từ đó
chúng ta có thể thấy mỗi giao dịch của nó chứa itemset am nhưng không có tập cha
của am. Itemset am có thể được sáp nhập với fc để tạo thành một tập phổ biến
fcam: 3, và ta không cần phải khai thác tập phổ biến đóng chứa fc nhưng không
chứa am.
Bổ đề 2.2 (sub-itemset pruning): Xét X là tập phổ biến. Nếu X là một tập
hợp con của một tập phổ biến đóng Y và sup (X) = sup (Y) thì X và tất cả các tập
con của X không thể là một tập phổ biến đóng và do đó có thể được loại bỏ.
Ví dụ 4: Nhiều thuật toán khai thác mô hình phổ biến theo các mô hình chia
để trị. Trong ví dụ hình 1(b), một mô hình chia để trị từ trên xuống theo thứ tự f_list
thể hiện trong Ví dụ 1 (ngược lại, một mô hình chia để trị từ dưới lên sẽ làm theo
thứ tự ngược lại của f_list): (1) khai thác mẫu có chứa mục f, (2) khai thác các mẫu
có chứa mục c nhưng không có f, (3) khai thác các mô hình có chứa một item nhưng

5


không có f cũng không c, ..., Và cuối cùng là khai thác các mô hình chỉ chứa p. Tại
một số điểm mà chúng ta muốn khai thác các mô hình với tiền tố ca: 3, chúng ta sẽ
tìm thấy rằng ca:3 là một tập hợp con riêng của tập phổ biến đóng fcam: 3 đã tìm
thấy với cùng độ hỗ trợ, ta có thể dừng khai thác các mô hình đóng với tiền tố ca: 3.


6


CHƯƠNG 3: CLOSET+: MỘT PHƯƠNG PHÁP HIỆU QUẢ CHO
KHAI THÁC TẬP PHỎ BIẾN ĐÓNG
Trong phần này sẽ trình bày một thuật toán khai thác tập phổ biến đóng mới,
CLOSET+, bằng cách tích hợp một số chiến lược tìm kiếm và phát triển một vài cái
mới.

3.1. Tổng quan về CLOSET+
CLOSET+ được xậy dựng dựa theo mô hình chia để trị và tìm kiếm theo
chiều sâu. Nó sử dụng kỹ thuật nén cây FP.
Tìm kiếm theo chiều sâu và chiều ngang dựa trên phương pháp CLOSET+ sẽ
tính toán các item phổ biến cục bộ của một tiền tố nào đó bằng cách xây dựng và
quét projected database của nó. Do đó, phương pháp “chiếu cây lai” (hybrid treeprojection) được giới thiệu để giảm không gian tìm kiếm hiệu quả hơn.
Bên cạnh việc áp dụng các phương pháp “trộn item” (item merging) và
phương pháp “loại bỏ tập item con” (sub-itemset pruning) nêu trên, còn sử dụng các
kỹ thuật “item skipping” để giảm không gian tìm kiếm và tăng tốc độ khai thác.
Ngoài ra, CLOSET+ còn được thiết kế theo “sơ đồ kiểm tra subnet” (subsetchecking scheme): là sự kết hợp của “chỉ mục 2 cấp” (2-level hash-indexed) dựa
trên phương pháp cây kết quả và “chiếu ảo” (pseudo-projection) dựa trên phương
pháp kiểm tra hướng lên, giúp tiết kiệm bộ nhớ và đẩy mạnh việc kiểm tra tập đóng
một cách đáng kể.
3.2. Phương pháp chiếu cây lai
3.2.1. Phép chiếu cây thực từ dưới lên
Đối với các bộ dữ liệu dày đặc, CLOSET+ xây dựng cây FP cục bộ và thực
hiện đệ quy từ dưới lên (tức là theo độ hỗ trợ tăng dần).
Để hỗ trợ chiếu thực cho cây FP thì mỗi cây FP có một header table có
nhiệm vụ ghi lại ID của mỗi item, số lượng của mỗi item, và một con trỏ liên kết tất
cả các nút với cùng itemID. Cây FP ban đầu được hiển thị trong Hình 2(a).
Để xây dựng cây FP điều kiện cho tiền tố item p: 3, đầu tiên chúng ta sẽ tìm

cơ sở điều kiện của p (ký hiệu là TDB|p:3) bằng cách theo con trỏ liên kết của nút

7


“p”. Một đường đi tiền tố từ một nút Np (mà có một itemID là p và một số lượng là
Cp) lên đến nút gốc là một giao dịch hỗn hợp với độ hỗ trợ Cp cho tiền tố p. Dưới
đây TDB|p:3 bao gồm hai giao dịch hỗn hợp là: {fcam: 2} và {cb: 1}, từ đó xây
dựng được hình chiếu cây FP cho tiền tố p: 3 như Hình 2(b).

Hình 2: Chiếu thực từ dưới lên.
Sau khi hình chiếu cây FP với tiền tố p: 3 đã được dựng lên, chúng ta sẽ khai
thác các tập phổ biến đóng với tiền tố p: 3 từ cây FP chiếu này.
(1) Trước tiên, chúng ta khai thác tập đóng với tiền tố pm: 2. Bằng việc theo con trỏ
liên kết của “m” trong Hình 2 (b), chúng ta xây dựng cơ sở điều kiện của tiền tố
pm:2 là TDB|pm:2= {cfa : 2}. Theo kỹ thuật “item merging”, tiền tố pm:2 có thể
được sáp nhập với tập cfa:2 để tạo thành một tập phổ biến đóng pmcfa: 2, và chúng
ta không cần tìm tập phổ biến đóng với tiền tố pmc: 2, pmf: 2, hoặc pma: 2.

8


(2) Thứ hai, chúng ta sẽ không tìm tập đóng với tiền tố pa: 2. Bởi vì pa: 2 là một tập
con riêng của tập đã được khai thác pmafc: 2 với độ hỗ trợ bằng nhau, theo phương
pháp “sub-itemset pruning”, không cần khai thác tập đóng với tiền tố pa: 2.
(3) Tương tự như vậy, tiền tố pf: 2 có thể không được sử dụng để khai thác bất kỳ
một tập đóng nào.
(4) Cuối cùng, chúng ta sẽ không khai thác tập phổ biến với tiền tố pc: 3, bởi theo
con trỏ liên kết item c của Hình 2(b), có thể thấy cơ sở điều kiện của nó là rỗng,
chúng ta chỉ cần xuất tiền tố pc: 3 như một ứng viên cho tập phổ biến đóng. Cho

đến bây giờ tất cả các tập phổ biến đóng cho tiền tố p: 3 đã được khai thác.
Tương tự như vậy, chúng ta có thể xây dựng phép chiều thực cây FP cục bộ từ cây
FP toàn cục và khai thác tập phổ biến đóng từ chúng bằng cách đệ quy với các tiền
tố m: 3, b: 3, a: 3, c: 4, và f: 4 tương ứng, các hình chiếu cây FP cục bộ đó được
hiển thị trong Hình2 (c) - (f) (cây FP cho tiền tố f: 4 là rỗng và không được hiển
thị).
3.2.2. Chiếu cây ảo từ trên xuống
Chiếu ảo cây FP từ trên xuống được sử dụng cho các tập dữ liệu thưa
thớt. Không giống như chiếu thực cây FP từ dưới lên, chiếu ảo được thực hiện theo
thứ tự ngược f_list (tức là theo độ hỗ trợ giảm dần).
Chiếu ảo từ trên xuống cũng sử dụng một header table để ghi lại đầy đủ
thông tin như tên các item phổ biến cục bộ, số lượng của chúng và các liên kết trỏ
đến các nút trên cây FP để xác định các cây con cho một tập tiền tố nhất định.
Dựa vào ví dụ trên, phương pháp chiếu ảo từ trên xuống được minh họa như
sau. Hình 3(a) cho thấy cây FP toàn cục và trạng thái header table toàn cục. Ban đầu
chỉ có các nút con (ví dụ, các nút f: 4 và c: 1) liên kết trực tiếp với nút gốc từ header
table toàn cục. Bởi vì chúng ta xây dựng cây FP theo trật tự f_list (độ hỗ trợ giảm
dần), tất cả các giao dịch dự kiến có chứa item f có thể được tìm thấy trong cây con
nằm dưới nút f: 4 (đó là đa giác trong Hình 3 (a)).
Bằng cách đi theo các con trỏ liên kết của item f trong header table toàn cục
của Hình 3 (a), chúng ta có thể xác định vị trí các cây con dưới nút f: 4. Các item

9


phổ biến cục bộ có thể được tìm thấy bằng cách quét cây con này và được sử dụng
để xây dựng header table cho tiền tố f: 4, như thể hiện trong Hình 4 (a). Ở đây chỉ
có các nút con trực thuộc nút f: 4 được liên kết từ header table Hf: 4. Dựa trên header
table Hf: 4, chúng ta có thể khai thác các tập phổ biến với tiền tố f.


Hình 3: Chiếu ảo từ trên xuống.
Trước tiên, chúng ta sẽ khai thác tập phổ biến đóng có chứa fc: 3. Bằng cách
quét các cây con dưới nút c: 3 trong Hình 4 (a), chúng ta có thể tìm thấy các item
phổ biến cục bộ và xây dựng header table cho tiền tố fc: 3, như trong Hình 4
(b). Item a và m có độ hỗ trợ tương tự như các tiền tố fc: 3, theo kỹ thuật “item
merging”, chúng có thể được sáp nhập với fc: 3 để tạo thành một tiền tố mới fcam:
3 (và nó còn là một tập phổ biến đóng) và ta sẽ không cần phải khai thác tập đóng
với tiền tố fca: 3 hay fcm: 3. Mặc dù fca: 3 không thể được sử dụng như một tiền tố
để phát triển các tập đóng nữa, ta vẫn cần phải đi theo con trỏ liên kết của item a để
tìm tất cả các nút con trực thuộc dưới nút a: 3 và làm cho chúng liên kết từ header

10


table Hfc:3. Bởi vì item b là không phải là phổ biến trong Hfc: 3 nên nút b: 1 dưới nút
a:3 không cần phải được liên kết từ Hfc: 3, thay vào đó, nút con của nó m: 1 sẽ được
liên kết từ Hfc: 3. Header table mới Hfc: 3 với con trỏ liên kết đã được điều chỉnh
được thể hiện trong Hình 4 (c). Tương tự như vậy, chúng ta không cần phải khai
thác tập đóng với tiền tố fcm: 3, nhưng các nút con ở dưới các nút m: 2 và m: 1 nên
được liên kết từ Hfc: 3, như thể hiện trong Hình 4 (d). Khi ta khai thác của tập đóng
với tiền tố fcamp: 2, ta tìm thấy những cây con dưới nút p: 2 là rỗng, ta sẽ xuất
fcamp: 2 như là một ứng cử viên tập phổ biến đóng và dừng khai thác tập phổ biến
đóng với tiền tố fc: 3.
Thứ hai, sau khi a: 3 là con của nút c: 3 (xem hình 4 (a).) đã được liên kết từ
Hf: 4, ta có thể khai thác tập phổ biến đóng với tiền tố fa: 3 nhưng không có
c. Tương tự, chúng ta có thể khai thác tập đóng với tiền tố fb nhưng không có c và
a, với fm nhưng không có c, a và b, và chỉ với fp.
Như minh họa trong ví dụ trên, chúng ta cần phải làm hai bước trong quá
trình khai thác tập phổ biến đóng cho một tiền tố nhất định:
(1) Tìm cây con của nó bằng cách đi theo con trỏ liên kết và khai thác đệ quy những

cây con để tìm tất cả tập phổ biến đóng của nó
(2) Sau đó, điều chỉnh lại con trỏ, tức là, tất cả các nút con của nó nên được liên kết
từ head table. Hình 3 (b), Hình 3 (c), và Hình 3 (d) cho thấy việc điều chỉnh liên kết
của header table toàn cục H sau khi tập đóng có tiền tố f: 4, c: 4, và a: 3 tương ứng
được khai thác. Và các đa giác liền mạch là thể hiện hình chiếu của cây FP với tiền
tố c:4, a:3 và b:3 tương ứng.

11


Hình 4: Chiếu ảo từ trên xuống cho f: 4.

3.3. Kỹ thuật item skipping
Vì CLOSET+ tìm kiếm theo chiều sâu, ở mỗi cấp, sẽ có một tập tiền tố X kết
hợp với một header table và một hình chiếu cây FP. Theo tính chất Apriori, một
item phổ biến cục bộ trong header table của X cũng phải xuất hiện trong header
table có cấp cao hơn. Nếu một item phổ biến cục bộ có độ hỗ trợ giống nhau ở
nhiều hơn một header table khác cấp độ, chúng ta có thể sử dụng bổ đề 3.1 để giảm
không gian tìm kiếm.
Bổ đề 3.1. (Item skipping) Nếu một item phổ biến cục bộ có độ hỗ trợ bằng nhau
trong một số header table ở các mức khác nhau, có thể loại bỏ nó tại header table có
mức độ cao hơn một cách an toàn.
Phương pháp loại bỏ này có thể được sử dụng trong cả hai phép chiếu thực
từ dưới lên và chiếu ảo từ trên xuống. Ví dụ, trong Hình 2 (c), có item a phổ biến
cục bộ với độ hỗ trợ bằng 3 của tiền tố m: 3. Và item a cũng xuất hiện trong header
table toàn cục (xem Hình 2 (a)) với cùng hỗ trợ, item a có thể được loại bỏ từ
header table toàn cục một cách an toàn. Tương tự như vậy, từ Hình 4, chúng ta biết

12



rằng các item a, m, và p trong Hfc: 3 có độ hỗ trợ giống như những item đó ở trong
Hf: 4, nên các item này có thể được loại bỏ một cách an toàn từ H f: 4.

3.4. Tính hiệu quả của Kiểm tra Subset
Khi chúng ta có được một tập tiền tố phổ biến mới, chúng ta cần phải làm hai
loại kiểm tra tập đóng: superset-checking kiểm tra tập phổ biến mới này có phải là
tập cha của một số tập ứng viên đóng với cùng độ hỗ trợ, trong khi subset-checking
kiểm tra tập phổ biến mới được tìm thấy có là một tập con của một ứng viên tập phổ
biến đóng đã tìm thấy với cùng độ hỗ trợ không?
Bởi vì cả hai phép chiếu thực từ dưới lên và chiếu ảo từ trên xuống dựa trên
framework chia để trị và tìm kiếm theo chiều sâu, theo định lý sau thì CLOSET+
chỉ cần làm subset-checking để đảm bảo một itemset mới tìm thấy là tập đóng.
Định lý 3.1 (Kiểm tra Subset- subset-checking) Dựa trên framework chia để trị và
sử dụng phương pháp item merging được giới thiệu trong bổ đề 2.1, một tập phổ
biến được tìm thấy bởi CLOSET+ phải là tập đóng nếu nó không thể gộp vào với
bất kỳ tập phổ biến đóng nào khác đã được tìm thấy trước đó.
Từ định lý 3.1, ta biết rằng một tập phổ biến vừa mới được tìm thấy không
thể gộp vào với bất kỳ tập phổ biến nào tìm thấy sau đó. Như vậy, nếu nó không thể
gộp vào với bất kỳ tập đóng nào tìm thấy trước đó, nó phải là tập đóng. Để trợ giúp
“subset-checking”, có hai kỹ thuật hiệu quả: “cây kết quả có hai cấp chỉ mục” (Twolevel hash-indexed result tree) và “chiếu ảo dựa vào kiểm tra hướng lên” (Pseudoprojection based upward checking).
3.4.1. Kiểm tra subset bằng cây kết quả
Giống như cây FP, chúng ta có thể lưu trữ tất cả các tập phổ biến đóng trong
một “cây kết quả nén” và sử dụng cây kết quả đó để kiểm tra cả superset và subset.
Ở đây chúng ta sẽ sử dụng “cây kết quả nén” để thực hiện “kiểm tra subset” để
đảm bảo một tập mới vừa tìm thấy là tập đóng và chỉ khi nó đóng chúng ta mới có
thể chèn nó vào cây kết quả.

13



Bây giờ chúng ta cần phải xem xét làm thế nào để “kiểm tra subset” hiệu quả
dựa trên cây kết quả. Trong CLOSET +, ta cố gắng khai thác một vài đặc trưng của
tập đóng để giảm không gian tìm kiếm. Nếu tập phổ biến hiện tại S c có thể được
gộp với một tập phổ biến đóng Sa đã tìm thấy trước đó, chúng phải có các mối quan
hệ sau đây: (1) Sc và Sa có cùng độ hỗ trợ; (2) độ dài của Sc nhỏ hơn so với Sa; và
(3) tất cả các item trong Sc phải được chứa trong Sa.

Hình 5: Cây kết quả có 2 cấp chỉ mục

3.4.2. Cây kết quả gồm 2 cấp chỉ mục
Sử dụng heuristic, ta có thể cải thiện cấu trúc của cây kết quả.
Cây kết quả là cấu trúc dữ liệu dùng để lưu trữ các tập phổ biến đóng, nó bao
gồm 2 cấp chỉ mục:
- Một là tên item theo thứ tự trong f-list.
- Hai là độ hỗ trợ của item, căn cứ trên độ hỗ trợ lớn nhất của item đó trong
các tập phổ biến đóng tham gia vào cây.
Chèn tập đóng vào cây kết quả: ta chèn từng tập đóng vào cây kết quả theo
thứ tự f_list, và tại mỗi nút ta ghi nhận chiều dài đường đi của từ nút này đến
nút gốc.

Hàm CheckSubset_ResultTree ( )
INPUT: Cây kết quả RTree lưu trữ tập phổ biến đóng, tập phổ biến X
OUTPUT: Kết luận tập X có phải là tập phổ biến đóng hay không
Các bước thực hiện:

14


Bước 1: Chọn item cuối cùng trong tập item của X, xác định vị trí xuất hiện của nó

trên cây và xem nút nào trên cây có độ hỗ trợ trùng với sup(X).
Bước 2: Xác định nút trên cây và duyệt dần về gốc để kiểm tra xem tất cả các item
trong X có lần lượt xuất hiện hết trong cây hay không?
Bước 3: Nếu không hết, kết luận X là tập phổ biến đóng và phải bổ sung vào cây
RTree. Ngược lại thì không phải là tập phổ biến đóng.

Hình 1 (a) Tập phổ biến đóng
Ví dụ 5. Dựa vào tìm kiếm theo chiều sâu, tập đóng thể hiện trong hình 1(a) sẽ
được khai thác và chèn vào cây kết quả theo thứ tự sau: f: 4, fcam: 3, fcamp: 2, fb:
2, c: 4, cb: 2, cp: 3, và b: 3. Hình 5 mô tả tình trạng của cây kết quả sau khi chèn
tập đóng c: 4. Với mỗi nút cần lưu lại itemId, độ hỗ trợ, và chiều dài (liên quan đến
nút gốc) tương ứng. Điểm khác nhau với cấu trúc cây FP, khi bổ sung tập phổ biến
đóng mới vào cây bằng cách lần lượt thêm nút vào trong cây, nếu nút đã có thì lấy
độ hỗ trợ có giá trị lớn nhất thay vì tính tổng độ hỗ trợ.
Tại trạng thái thể hiện trong hình 5, ta có thể có được sau đó một tập phổ
biến ca:3. Bằng việc sử dụng itemID a và độ hỗ trợ là 3 và theo sau liên kết tương
ứng, ta sẽ tìm thấy nút nhãn là “a:3,3” có chiều dài 3 lớn hơn 2, sau đó ta kiểm tra
nếu tập phổ biến ca:3 có thể được gộp vào bởi đường đi từ nút “a:3,3” đến gốc (có
cùng độ hỗ trợ là 3 và chiều dài nhỏ hơn). Không may nó không thể vượt qua việc
kiểm tra này và sẽ không được chèn vào cây kết quả.
3.4.3. Kiểm tra subset bằng cây FP

15


Mặc dù cây kết quả có thể nén các tập đóng rất nhiều, nó vẫn tiêu thụ nhiều
bộ nhớ và cũng không phải hiệu quả không gian với bộ dữ liệu thưa thớt. Như
chúng ta đã biết, cây FP toàn cục có đầy đủ thông tin về toàn bộ tập phổ biến đóng,
do đó ta có thể dùng cây FP toàn cục để kiếm tra một tập phổ biến mới vừa tìm
được là đóng. Trong cách này, ta không cần bổ sung bất kỷ bộ nhớ nào để lưu tập

đóng đã được khai thác trước đó và một lần một tập item mới tìm được được kiểm
tra, nó sẽ được lưu trực tiếp vào một file kết quả F.
Vậy làm thế nào để kiểm tra subset dựa trên cây FP. Như chúng ta đã biết,
trong phép chiếu ảo từ trên xuống, với một tập tiền tố X thì tất cả các nút và prefix
path tương ứng của chúng w.r.t có thể được truy tìm bằng cách đi theo sau con trỏ
liên kết của nó được ghi lại trong header table. Có thể sử dụng bổ đề 3.2 sau để
đánh giá liệu một tập phổ biến vừa mới được tìm thấy có là tập đóng.
Bổ đề 3.2: Nếu tồn tại một item có thứ tự nhỏ hơn thứ tự lớn nhất trong tập item
đang chiếu đồng thời item này xuất hiện trong mọi giao dịch chứa tập item đang
chiếu thì kết luận tập item đang chiếu không thể là tập phổ biến đóng.

Hàm CheckSubset_FPtree( )
INPUT: Cây FP-Tree toàn cục, tập phổ biến X
OUTPUT: Kết luận tập X có phải là tập phổ biến đóng hay không
Các bước thực hiện:
Bước 1: Gán max = thứ tự lớn nhất trong số các item trong X theo f-list
Bước 2: Duyệt lần lượt các giao dịch Ti có chứa tập phổ biến X dựa trên cây FPtree và ghi nhận những item có thứ tự nhỏ hơn max theo f-list thì tích lũy độ hỗ trợ
của item đó.
Bước 3: Nếu có item nào ở bước 2 có độ hỗ trợ bằng sup(X) thì X không phải tập
phổ biến đóng. Ngược lại X là tập đóng.

16


Ở đây, ta sẽ sử dụng một vài ví dụ để minh hoạ “kiểm tra subset” (subsetchecking). Giả sử có tập tiền tố X=c:4, ta có thể định vị trí nút c:1 và c:3 bằng cách
theo con trỏ liên kết của item c như hình 3(b) và tìm thấy duy nhất một item f, xuất
hiện trong đường đi tiền tố đến gốc của tập item tiền tố c:4 và f chỉ xuất hiện cùng
lúc 3 lần với tập tiền tố c:4. Hơn nữa, không có item phổ biến cục bộ nào của tập
tiền tố c:4 có độ hỗ trợ là 4 cả, thế nên c:4 là tập đóng và sẽ được lưu trong file kết
quả F. Dùng phương pháp này, ta có thể dễ dàng luận ra rằng tiền tố am:3 không

phải là tập đóng, bởi vì trong đường đi tiền tố của nút m:2 và m:1 tiến về gốc, có hai
item khác là f và c cùng xuất hiện với am 3 lần.

3.5. Thuật toán CLOSET+
Bằng cách kết hợp các kỹ thuật ở trên, chúng ta suy ra thuật toán
CLOSET+như sau:
Đầu vào: Cơ sở dữ liệu giao dịch TDB và ngưỡng hỗ trợ minSup.
Đầu ra: Tập các tập phổ biến đóng FCI
Các bước thực hiện:
Bước 1: Quét TDB một lần để tìm các item phổ biến toàn cục và sắp xếp chúng
theo thứ tự giảm dần độ hỗ trợ. Danh sách các item phổ biến được sắp xếp tạo thành
f_list.
Bước 2: Quét TDB và xây dựng cây FP sử dụng f_list.
Lưu ý: Trong quá trình xây dựng cây, tính số lượng trung bình của một nút cây FP.
Sau khi cây đã được xây dựng, đánh giá các tập dữ liệu là dày đặc hay thưa thớt
theo số lượng trung bình của một nút cây FP: với tập dữ liệu dày đặc, chọn phương
pháp chiếu cây thực từ dưới lên; trong khi đối với tập dữ liệu thưa thớt, sử dụng
phương pháp chiếu cây ảo từ trên xuống. Khởi tạo các header table toàn cục tùy
theo phương pháp chiếu được chọn.
Bước 3: Với mô hình chia để trị và tìm kiếm theo chiều sâu, khai thác tập phổ biến
đóng từ cây FP theo cách từ trên xuống cho bộ dữ liệu thưa thớt hoặc từ dưới lên
cho bộ dữ liệu dày đặc. Trong suốt quá trình khai thác, sử dụng các kỹ thuật item
merging, item skipping, và sub-itemset pruning để giảm không gian tìm kiếm. Với

17


mỗi tập phổ biến đóng ứng viên, sử dụng các phương pháp lập cây kết quả cho bộ
dữ liệu dày đặc hoặc kiểm tra bằng cây FP cho bộ dữ liệu thưa thớt để làm kiểm tra
tính đóng.

Bước 4: Dừng khi tất cả các item trong header table toàn cục được khai thác. Các
tập đầy đủ của tập phổ biến đóng có thể được tìm thấy từ cây kết quả hoặc file F.

CHƯƠNG 4: ĐÁNH GIÁ HIỆU SUẤT
4.1. Môi trường thử nghiệm và tập dữ liệu
Trong phần này sẽ đánh giá CLOSET+ so với ba thuật toán OP, CHARM và
CLOSET. Tất cả thí nghiệm được thực hiện trên máy IBM ThinkPad R31 với bộ
nhớ là 384 MB và được cài đặt Windows XP.
Có sáu bộ dữ liệu thực tế để đánh giá hiệu suất và sử dụng bộ nhớ, một số bộ
dữ liệu nhân tạo để kiểm tra khả năng mở rộng bằng cách thay đổi kích thước cơ sở
dữ liệu và số lượng các mặt hàng riêng biệt. Các đặc tính của các tập dữ liệu được
hiển thị trong Bảng 2 (cột cuối cùng là chiều dài trung bình và lớn nhất của giao
dịch).
Tập dữ liệu thực tế: Trong sáu bộ dữ liệu thực tế có ba bộ là dày đặc và ba bộ
là thưa thớt (xem sự phân bố của các tập phổ biến đóng theo ngưỡng hỗ trợ trong
Bảng 3). Các bộ dữ liệu connect có chứa thông tin trạng thái trò chơi, bộ dữ liệu
mushroom có chứa các đặc điểm của các loài nấm khác nhau, pumsb* chứa dữ liệu
điều tra dân số.

Bảng 2: Đặc điểm Dataset
Bộ dữ liệu gazelle có chứa dữ liệu click-stream từ Gazelle.com. Hai bộ dữ
liệu khác, retail-chain và big-market là các bộ dữ liệu giao dịch bán lẻ khác nhau.

18


Tập dữ liệu nhân tạo: Các bộ dữ liệu tổng hợp được tạo bởi bộ tạo dữ liệu
của IBM, với chiều dài trung bình của một giao dịch là 10 và chiều dài trung bình
một tập phổ biến là 4. Để kiểm tra khả năng mở rộng với kích thước cơ bản, ta tạo
ra hàng loạt bộ dữ liệu T10I4DxP1k bằng cách thay đổi số lượng các giao dịch từ

200K đến 1400K và sửa số lượng các mặt hàng đặc biệt tại 1k. Để kiểm tra khả
năng mở rộng về số lượng các mặt hàng riêng biệt, các bộ dữ liệu T10I4D100kPx
được tạo bằng cách sửa chữa số giao dịch tại 100k và thiết lập số lượng các mặt
hàng đặc biệt tại 4333, 13.845, 24.550, 29.169 (tạo ra bằng cách thiết lập tham số
nitems tương ứng bằng 5k, 25k, 125k, 625k).

Bảng 3: Số tập phổ biến đóng với ngưỡng hỗ trợ tương đối.

Hình 6. Thời gian thực thi (mushroom).

19

Hình 7. Thời gian thực thi (gazelle).


4.2. Kết quả thực nghiệm
Thí nghiệm trên cho thấy rằng do tạo ra một số lượng lớn các tập phổ biến,
ngay cả thuật toán khai thác tập phổ biến tốt nhất như OP cũng không thể cạnh
tranh với CLOSET+. Hình 6 và hình 7 hiển thị các kết quả thực nghiệm cho bộ dữ
liệu mushroom và gazelle.
Như chúng ta có thể nhìn thấy trong hình 6, đối với bộ dữ liệu dày đặc như
mushroom, CLOSET+ luôn luôn nhanh hơn so với OP và khi ngưỡng hỗ trợ giảm,
CLOSET+ vẫn nhanh hơn OP. Đối với các bộ dữ liệu thưa thớt như gazelle (xem
hình 7), khi độ hỗ trợ cao sẽ không có quá nhiều tập phổ biến, và do chi phí phát
sinh bằng cách kiểm tra tập đóng trong CLOSET+, OP nhanh hơn một chút so với
CLOSET+. Nhưng một khi ngưỡng hỗ trợ được hạ xuống đến một điểm nhất định,
sẽ có sự gia tăng bùng nổ về số lượng các tập phổ biến (ví dụ, với độ hỗ trợ 0,05%,
một ngưỡng hỗ trợ không quá thấp cho một tập dữ liệu thưa thớt như gazelle, tập
phổ biến đóng dài nhất có chiều dài là 45, suy ra có 2 45 - 1 tập phổ biến có thể được
tạo ra), sử dụng phương pháp loại bỏ sẽ làm cho CLOSET+ nhanh hơn so với OP.


Hình 8. Hiệu suất thời gian thực thi

Hình 9: Sử dụng bộ nhớ (bộ dữ liệu

(bộ dữ liệu connect).

connect).

20


×