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

Luận văn khai phá tập mục thường xuyên có trọng số

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.29 MB, 86 trang )

B ộ• GIÁO DỤC VÀ ĐÀO
TẠO




TRƯỜNG ĐẠI HỌC s ư PHẠM HÀ NỘI 2








===£0lũ3o8===

NGUYỄN VĂN PHÓNG

KHAI PHÁ TẬP MỤC THƯỜNG XUYÊN
CÓ TRỌNG SỐ

LUÂN
VĂN THAC
SĨ MÁY TÍNH



HÀ NỘI, 2015



B ộ GIÁO DỤC VÀ ĐÀO TẠO






TRƯỜNG ĐẠI
HỌC
s ư PHẠM
HÀ NỘI



• 2
===sofflca===

NGUYỄN VĂN PHÓNG

KHAI PHÁ TẬP MỤC THƯỜNG XUYÊN
CÓ TRỌNG SỐ


Chuyên ngành: Khoa học máy tính
Mã số: 60 48 01 01

LUÂN
VĂN THAC
SĨ MÁY TÍNH



Người hướng dẫn khoa học: TS. NGUYỄN LONG GIANG

HÀ NỘI, 2015


LỜI CẢM ƠN

Để hoàn thành luận văn này tôi đã nhận được sự giúp đỡ tận tình của
thầy hướng dẫn khoa học, của các thầy cô trường Đại học Sư phạm Hà Nội 2.
Tôi xin chân thành cảm ơn các thầy cô trường Đại học Sư phạm Hà Nội 2 đã
tạo điều kiện học tập, nghiên cứu và giúp đỡ tôi rất nhiều trong quá trình làm
luận văn. Đặc biệt tôi xin cảm ơn thầy TS Nguyễn Long Giang ở Viện Công
Nghệ Thông Tin đã tận tình hướng dẫn, chỉ bảo tôi trong suốt quá trình học
tập, nghiên cứu đề tài và giúp đỡ tôi hoàn thành bản luận văn này.

Vĩnh Phúc, ngày 01 tháng 10 năm 2015
Hoc viên

Nguyễn Văn Phóng


LỜI CAM ĐOAN

Tôi xin cam đoan đây là kết quả nghiên cứu của tôi dưới sự hướng dẫn
khoa học của TS Nguyễn Long Giang.
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.

Hoc viên


Nguyễn Văn Phóng


MỤC LỤC

MỤC LỤC..........................................................................................................i
Danh mục các ký hiệu, các chữ viết tắt............................................................... iii
Danh mục các bảng............................................................................................ iv
Danh mục các hình.............................................................................................. V
MỞ ĐÀU.......................................................................................................... 1
Chương 1: TỔNG QUAN VỀ KHAI PHÁ TẬP MỤC THƯỜNG XUYÊN . 4
1.1. Các khái niệm cơ bản................................................................................4
1.1.1. Cơ sở dữ liệu giao tác.............................................................................4
1.1.2. Tập mục thường xuyên và luật kết hợp................................................... 6
1.1.3. Các tính chất cơ bản của tập mục thường xuyên.....................................7
1.1.4. Bài toán khai phá luật kết hợp................................................................. 7
1.2. Một số thuật toán cơ bản khai phá tập mục thường xuyên....................... 8
1.2.1. Thuật toán Apiioii................................................................................... 9
1.2.2. Thuật toán FP-growth............................................................................14
1.3. Kết luận.................................................................................................. 21
Chmmgo 2: KHAI PHÁ TẬP
MỤC
THƯỜNG XUYÊN CÓ TRỌNG
SỐ ...22



2.1. Thuật toán MINWAL theo tiếp cận Aprioii............................................ 22
2.1.1. Các khái niệm cơ bản............................................................................ 22

2.1.2. Thuật toán MINWAL............................................................................ 25
2.1.3. Ví dụ minh họa...................................................................................... 28
2.2. Thuật toán WFIM theo tiếp cận FP-Growth.......................................... 50
2.2.1. Các khái niệm cơ bản.............................................................................51
2.2.2. Thuật toán WFIM...................................................................................55
2.2.3. Ví dụ minh họa...................................................................................... 56
2.3. THUẬT TOÁN FSM.............................................................................60


ii

2.3.1. Cơ sở lý thuyết của thuật toán FSM....................................................... 60
2.3.2. Thuật toán FSM...................................................................................... 61
2.3.3. Nhận xét thuật toán FSM....................................................................... 63
2.4. Kết luận......................................................................................................64
Chương 3: THỬ NGHIỆM VÀ ĐÁNH GIÁ CÁC THUẬT TOÁN............... 65
3.1. Chuẩn bị số liệu thử nghiệm......................................................................66
3.2. Kết quả thử nghiệm và đánh giá các thuật toán........................................ 66
3.2.1. Đánh giá thuật toán WFIM vói thuật toán FP-Growth.......................... 66
3.2.2. Đánh giá các thuật toán WFIM, FP-Growth và MINWAL................... 68
KẾT LUẬN..................................................................................................... 71
TÀI LIỆU THAM KHẢO..............................................................................72
PHỤ LỤC


DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT
TV • Ã




Ký hiệu, chữ viết tắt Diên giải
CSDL

Cơ sở dữ liệu

TID

Transction Identifcation

w

Tập các trọng sô của các mục

L

Tập tât cả các mục thường xuyên

Ck

Tập cấc k-tập mục ứng viên

Lk

Tập các k-tập mục thường xuyên

SCịX)

Sô đêm hô trợ của các tập mục X

WFIk


Tập các k-tập mục thường xuyên có trọng sô

WFI

Tập tất cả các tập mục thường xuyên có trọng sô

MaxW

Trọng sô có giá trị lớn nhầt trong CSDL giao tác

MinW

Trọng sô có giá trị nhỏ nhât trong tập mục điêu
kiện

min_weight

Ngưỡng trọng sô tôi thiêu

min_sup

Ngưỡng hô trợ tôi thiêu

support

Độ hô trợ của các tập mục

conf


Độ tin cậy

minconf

Độ tin cậy cực tiêu

BFS

Breadth First Search

DFS

Depth First Search

WFIM

Weighted Frequent Itemset Mining


Danh mục các bảng
Bảng 1.1. Biểu diễn ngang của cơ sở dữ liệu giao tác..................................... 4
Bảng 1.2. Biểu diễn dọc của cơ sở dữ liệu giao tác.......................................... 5
Bảng 1.3. Ma trận giao tác của cơ sở dữ liệu bảng 1 .1 ................................... 5
Bảng 1.4. CSDL giao tác minh họa thực hiện thuật toán Apriori...................12
Bảng 1.5. CSDL giao tác minh họa cho thuật toán FP- growth......................15
Bảng 2.1. CSDL giao tác.................................................................................24
Bảng 2.2. Trọng sổ của các mục.....................................................................24
Bảng 2.3. CSDL giao tác D ............................................................................. 28
Bảng 2.4. Trọng sổ của các mục..................................................................... 29
Bảng 2.5. CSDL giao tấc................................................................................. 51

Bảng 2.6. Ví dụ các mục với các khoảng trọng sổ khác nhau.......................52
Bảng 2.7. Tập các tập mục thường xuyên với các khoảng trọng sổ khác nhau
....................................................................................................................... 54
Bảng 2.8. Mục thường xuyên có trọng số (sắp xếp tăng dần theo trọng số).. 57


Danh mục các hình
Hình 1.2. Cây FP-tree được xây dựng dần khi thêm các giao tác tỉ, t2, t3. .. 16
Hình 1.3. Cây FP-tree của CSDL DB trong bảng........................................17
Hình 1.4. FP-tree phụ thuộc của m ...............................................................19
Hình 1.5. Các FP-tree phụ thuộc của am, cm và cam..................................20
Hình 2.1. Cây FP-Tree tổng quát của thuật toán FP-Tree...........................57
Hình 2.2. Cây FP-Tree con với tiền tổ {r}....................................................59
Hình 3.1. Sổ lượng tập mục thường xuyên của thuật toán WFIM so với FPGrowth (tập dữ liệu Connect).........................................................................67
Hình 3.2. Thời gian thực hiện của thuật toán WFIM so với FP-Growth (tập
dữ liệu Connect)..............................................................................................67
Hình 3.3. Số lượng tập mục thường xuyên của các thuật toán FP-Growth,
WFIM và MINWAL (tập dữ liệu Connect) ...................................................... 69
Hình 3.4. Thời gian thực hiện của các thuật toán FP-Growth, WFIM và
MINWAL (tập dữ liệu Connect)......................................................................70


1

MỞ ĐẦU
1. Lý do chọn đề tài
Khai phá luật kết họp được giói thiệu bởi Agrawal [4] vào năm 1994 khi
phân tích cơ sở dữ liệu bán hàng của siêu thị, phân tích sở thích mua của khách
hàng bằng cách tìm ra những mặt hàng khác nhau được khách hàng mua cùng
trong một lần mua. Những thông tin như vậy sẽ giúp người quản lý kinh doanh

tiếp thị chọn lọc và thu xếp không gian bày hàng hợp lý hơn, giúp cho kinh
doanh hiệu quả hơn. Bài toán khai phá luật kết hợp bao gồm hai bài toán con.
Bài toán thứ nhất là tìm các tập mục thường xuyên (Frequent itemset) thỏa mãn
ngưỡng hồ trợ tối thiểu cho trước, bài toán thứ hai là sinh ra các luật kết hợp
(Association rule) thỏa mãn ngưỡng tin cậy cho trước từ tập mục thường xuyên
tìm được. Mọi khó khăn của bài toán khai phá luật kết hợp tập trung ở bài toán
thứ nhất, đó là khai phá tất cả các tập mục thường xuyên thỏa mãn ngưỡng độ
hỗ trợ cho trước, và các nghiên cứu về khai phá luật kết hợp phần lớn tập trung
vào bài toán khai phá tập mục thường xuyên.
Kể từ khi Agrawal đề xuất, khai phá tập mục thường xuyên đã thu hút
được sự quan tâm của nhiều nhà nghiên cứu, đã có hàng trăm kết quả nghiên
cứu được công bố giới thiệu các thuật toán mới hay đề xuất các giải pháp nâng
cao hiệu quả các thuật toán đã có. Tập mục thường xuyên đã có vai trò quan
trọng trong nhiều ứng dụng thực tế như quản lý quan hệ khách hàng, nâng cao
hiệu quả của thương mại điện tử, trong lĩnh vực sinh tin học, phân tích cấu trúc
Protein và DNA, mở rộng truy vấn, hỗ trợ tư vấn tuyển sinh trong đào tạo, phát
hiện xâm nhập mạng...
Bài toán khai phá luật kết hợp kinh điển do Agrawal và các cộng sự đề
xuất [4] được gọi là bài toán khai phá luật kết hợp nhị phân vì giá trị của mỗi
mục dữ liệu trong một giao tác là 0 hoặc 1, tức là chỉ quan tâm mục dữ liệu có
xuất hiện trong giao tác hay không. Do đó, nó chỉ mang ngữ nghĩa thống kê,


2

không phản ánh được vai trò khác nhau của các thuộc tính cũng như đặc tính
dữ liệu vốn có của chúng trong cơ sở dữ liệu.
Để đáp ứng yêu cầu của thực tiễn, bài toán khai phá tập mục thường
xuyên đã có nhiều cách thức mở rộng và ứng dụng. Một trong những hướng
mở rộng quan trọng là xem xét mức độ quan trọng khác nhau của các mục dữ

liệu bằng cách gán cho mỗi mục dữ liệu một giá trị được gọi là trọng số [5,10].
Số lượng của tập mục hoặc giá trị của tập mục là các trọng số được các nhà
nghiên cứu quan tâm vì chứng có nhiều ứng dụng trong thực tiễn. Ví dụ, vói
bài toán bán hàng trong siêu thị, trọng số của tập mục có thể là số lượng mặt
hàng đã bán hoặc đơn giá (giá trị) của mặt hàng đã bán. Khi đó, bài toán khai
phá luật kết họp kinh điển trở thành bài toán khai phá luật kết hợp có trọng số.
Như đã trình bày ở trên, khai phá luật kết hợp có trọng số là hướng nghiên
cứu quan trọng trong khai phá dữ liệu và học máy, có ý nghĩa khoa học và thực
tiễn cao. Do đó, tôi chọn đề tài “Khai phá tập mục thường xuyên có trọng số”
2. Mục đích nghiên cứu
Nắm bắt được kiến thức tổng quan về các phương pháp khai phá tập mục
thường xuyên kinh điển và một số phương pháp khai phá tập mục thường
xuyên có trọng số, trên cơ sở đó cài đặt, thử nghiệm và đánh giá các thuật toán
trên các bộ số liệu mẫu.
3. Nhiệm vụ nghiên cứu
Là các cơ sở dữ liệu mẫu (cơ sở dữ liệu giao tác).
4. Đối tượng và phạm vỉ nghiên cứu
Tìm hiểu và thử nghiệm các thuật toán khai phá tập mục thường xuyên có
trọng số trên cơ sở dữ liệu giao tác.
5. Những đóng góp mói của đề tài
Trình bày được hai thuật toán khai phá tập mục thường xuyên có trọng
số: thuật toán MINWAL dựa trên thuật toán Apriori và thuật toán WFIM dựa


3

trên thuật toán FP-Growth. Tổng hợp các kết quả nghiên cứu về khai phá luật
kết hợp có trọng số.
6. Phương pháp nghiên cứu
Luận văn là nghiên cứu lý thuyết và nghiên cứu thực nghiệm, v ề nghiên

cứu lý thuyết: tìm hiểu các khái niệm, các thuật toán đã công bố về khai phá
tập mục thường xuyên có trọng số. v ề nghiên cứu thực nghiệm, luận văn thực
hiện cài đặt các thuật toán, chạy thử nghiệm và đánh giá kết quả thực hiện các
thuật toán.
7. Bố cục luận văn
Luận văn được chia làm 3 chương.
Chương 1: trình bày tổng quan về bài toán khai phá tập mục thường
xuyên, bao gồm các khai niệm cơ bản và hai thuật toán kinh điển: thuật toán
nhị phân Apriori và thuật toán sử dụng cấu trúc cây FP-Growth.
Chương 2: trình bày hai thuật toán khai phá tập mục thường xuyên có
trọng số: thuật toán MINWAL dựa trên thuật toán Apriori và thuật toán
WFIM dựa trên thuật toán FP-Growth.
Chương 3: trình bày phần cài đặt, thử nghiệm và đánh giá thuật toán trên
Ai

Ị 1 Ạ 1


1* A



một sô bộ dữ liệu mâu.


4

Chương 1: TỔNG QUAN VỀ KHAI PHÁ TẬP MỤC THƯỜNG XUYÊN
Chương này trình bày một số khái niệm cơ bản trong khai phá luật kết hợp
trong [4] và hai thuật toán khai phá tập mục thường xuyên kinh điển: thuật toán

Apriori [4] và thuật toán FP-Growth [6].
1.1. Các khái niêm cơ bản
1.1.1. Ctf sở dữ liệu giao tác
Định nghĩa 1.1. Cho tập các mục (item) J = {ipi2,...,in}. Một giao tác
(transaction) T là một tập con của I, Tœ I. Cơ sở dữ liệu giao tác là một tập
các giao tác DB = \Tx,T2,...,Tm}. Mỗi giao tác được gán một định danh TID.
Một tập mục con X ç I , gồm к mục phân biệt được gọi là một k-tập mục.
Giao tác T gọi là chứa tập mục X nếu X ŒT .
Biểu diễn cơ sở dữ liệu giao tác', cơ sở dữ liệu giao tác thường được biểu
diễn ở dạng biểu diễn ngang, biểu diễn dọc và biểu diễn bởi ma trận giao tác.
Biểu diễn ngang: Cơ sở dữ liệu là một danh sách các giao tác. Mỗi giao tác
có một định danh TID và một danh sách các mục dữ liệu trong giao tác đó.
Ví dụ 1.1. Bảng 1.1 sau đây biểu diễn ngang của cơ sở dữ liệu giao tác.
Bảng 1.1. Biểu diễn ngang của cơ sở dữ liệu giao tác
TID
TI
T2
T3
T4
T5
T6
T7
T8
T9
T10
TU

Mục dữ liệu
B, c, D
B, c, D

A .B .D
c, D, F
C.D
A.C
A. B. C. F
А. С
А, В, Е
А, Е
А, В, С


5

Biểu diễn dọc: Cơ sở dữ liệu là một danh sách các mục dữ liệu, mỗi mục dữ
liệu có một danh sách tất cả các định danh của các giao tác chứa mục dữ liệu
này.
Bảng 1.2. Biểu diễn dọc của cơ sở dữ liệu giao tác
Định danh giao tác

Mục dữ liệu

А
T3, T6, T7, T8, T9, T10, TU
В
Tl, T2, T3, T7, T9, T ll
Tl, T2, T4, T5, T6, T7, T8, TU
С
D
Tl, T2, T3, T4, T5
E

T9, T10
F
T4, T7
Ma trận giao tác'. Cơ sở dữ liệu giao tác DB = ịTẢ,T2,...,Tm) trên tập các mục
(item) I =

} được biểu diễn bởi ma trận nhị phân M = (mpq)mxn, ở đó:
íI 1 khi i4 ePТ

Ịo khi iqỂTp
Ví dụ 1.2. Cơ sở dữ liệu bảng 1.1 biểu diễn ở dạng ma trận giao tác là:
Bảng 1.3. Ma trận giao tác của cơ sở dữ liệu bảng 1.1
TID

A

В

с

D

E

F

TI

0


1

1

1

0

0

T2

0

1

1

1

0

0

T3

1

1


0

1

0

0

T4

0

0

1

1

0

1

T5

0

0

1


1

0

0

T6

1

0

1

0

0

0

T7

1

1

1

0


0

1

T8

0

1

1
0

0

0
0

0
1

0
0

T10

1
1
1


0

0

1

0

TU

1

1

1

0

0

0

T9


6

1.1.2. Tập mục thường xuyên và luật kết họp
Định nghĩa 1.2. Cho tập mục X ç / . Ta gọi độ hỗ trợ (Support) của X trong
cơ sở dữ liệu giao tác DB, ký hiệu sup(X), là tỷ lệ phần trăm các giao tác chứa

X giao
■ *tác
■' *trong

n u .tức
' 1là:
' sup(X)
, v . _=\J---------—
{ T &DB ị—
T------^X}\ 1
X trên tông sôẤcác
DB,
\DB\
Ta có: 0 < sup(X) < 1 vói mọi tập mụcX ÇZ/.
Định nghĩa 1.3. Cho tập mục I ç / v à ngưỡng hỗ trợ tối thiểu (minimum
support) minsup e [0,1] (được xác định trước bởi người sử dụng). X được gọi
là tập mục thường xuyên (frequent itemset hoặc large itemset) với độ hỗ trợ
tối thiểu minsup nếu sup(X) > minsup, ngược lại X gọi là tập mục không
thường xuyên.
Định nghĩa 1.4. Một luật kết hợp là một biểu thức dạng X —>Y, trong đó X
và Y là các tập con của /, X n Y= 0 ; X gọi là tiền đề, Y gọi là kết luận của
luật. Luật kết hợp có hai thông số quan trọng là độ hỗ trợ và độ tin cậy.
Định nghĩa 1.5. Độ hỗ trợ (Support) của một luật kết hợp X - > y , ký hiệu là
sup(X —>7), là độ hỗ trợ của tập mục X u F , supfx ~^Y)= supfX uF).
Như vậy độ hồ trợ của luật kết hợp X -^ Y chính là xác suất P(XuY) của sự
xuất hiện đồng thòi của X và Y trong một giao tác.
Ta có: 0 < sup(X ^>Y) < 1.
Định nghĩa 1.6. Độ tin cậy (Confidence) của một luật X —>Y, ký hiệu
conf(X —>F), là tỷ lệ phần trăm giữa số giao tác chứa X u 7 và số giao tác
chứa X trong cơ sở dữ liệu DB.

coif( X ^ r ) = SUp(Xwy)
sup(X)
Độ tin cậy của luật kết hợp X - ^ Y chính là xác suất có điều kiện p (7/X):


7

\ { T e D B \ X ç T A Y ç T } \ J { T e D B \ X u Y ç T } \ = sap(Xu Y)
\{T e DB Ì X çT}\
~ \{T GDB IX ç T}| ~ sup(Z)
vàtacô 0 < conf(X ->y) < 1.
Các luật thoả mãn cả hai ngưỡng độ hồ trợ tối thiểu (minsup) và độ tin
cậy tối thiểu (minconf),
tức thỏa mãn supfx —>y ) > minsup và conf(X -» У) > minconf , được gọi là
luật kết hợp mạnh.
1.1.3. Các tính chất Ctf bản của tập mục thường xuyên
Cho cơ sở dữ liệu giao tác DB và ngưỡng độ hỗ trợ tối thiểu minsup. Các tập
mục thường xuyên có các tính chất sau:
(1) Neu X, Y là các tập mục và X ŒY thì sup(X) > sup(7).
(2) Nếu một tập mục là không thường xuyên thì mọi tập cha của nó cũng
không thường xuyên.
(3) Nếu một tập mục là thường xuyên thì mọi tập con khác rỗng của nó
cũng là tập mục thường xuyên.
Tính chất (3) được gọi là tính chất Apriori, tính chất này là cơ sở để rút
gọn không gian tìm kiếm các tập mục thường xuyên.
1.1.4. Bài toán khai phá luật kết họp
Cho cơ sở dữ liệu giao tác DB, ngưỡng độ hỗ trợ tối thiểu minsup và
ngưỡng độ tin cậy tối thiểu minconf.
Yêu cầu: Tìm tất cả các luật kết hợp X ^ Y trên cơ sở dữ liệu DB sao
cho sup(X —»У ) > minsup và conf(X —


> minconf.

Bài toán khai phá luật kết hợp này được gọi là bài toán cơ bản hay bài
toán nhị phân, vì ở đây giá trị của mục dữ liệu trong cơ sở dữ liệu là 0 hoặc 1
(xuất hiện hay không xuất hiện).
Bài toán khai phá luật kết hợp được chia thành hai bài toán con. Bài toán
thứ nhất là tìm tất cả các tập mục thỏa mãn độ hỗ trợ tối thiểu cho trước, tức


8

là tìm tất cả các tập mục thường xuyên. Bài toán thứ hai là sinh ra các luật kết
hợp từ các tập mục thường xuyên đã tìm được thỏa mãn độ tin cậy tối thiểu
cho trước.
Bài toán thứ hai được giải quyết như sau: giả sử đã tìm được X là tập mục
thường xuyên, ta sinh ra các luật kết hợp bằng cách tìm v y c X , kiểm tra độ
tin cậy của luật X \ Y ~^>Y có thỏa mãn độ tin cậy tối thiểu không. Bài toán thứ
hai này đơn giản, mọi khó khăn nằm ở bài toán thứ nhất, hầu hết các nghiên
cứu về luật kết hợp đều tập trung giải quyết bài toán thứ nhất là tìm các tập
mục thường xuyên.
Phần tiếp theo sau đây sẽ trình bày chi tiết về khai phá tập mục thường xuyên.
1.2. Một số thuật toán cơ bản khai phá tập mục thường xuyên
Các nghiên cứu về khai phá tập mục thường xuyên tập trung vào tìm các
thuật toán mới hoặc đề xuất giải pháp nâng cao hiệu quả các thuật toán đã có.
Phần này sẽ trình bày khái quát các kỹ thuật chính để khai phá tập mục
thường xuyên.
Bài toán khai phá tập mục thường xuyên có thể chia thành hai bài toán
nhỏ: tìm các tập mục ứng viên và tìm các tập mục thường xuyên. Tập mục
ứng viên là tập mục mà ta hy vọng nó là tập mục thường xuyên, phải tính độ

hỗ trợ của nó để kiểm tra. Tập mục thường xuyên là tập mục có độ hỗ trợ lớn
hơn hoặc bằng ngưỡng hỗ trợ tối thiểu cho trước. Đã có rất nhiều thuật toán
tìm tập mục thường xuyên được công bố, ta có thể phân chúng theo hai tiêu
chí sau:
- Phương pháp duyệt qua không gian tìm kiếm.
- Phương pháp xác định độ hồ trợ của tập mục.
Phương pháp duyệt qua không gian tìm kiếm được phân làm hai cách:
duyệt theo chiều rộng (Breadth First Search - BFS) và duyệt theo chiều sâu
(Depth First Search - DFS).


9

Duyệt theo chiều rộng là duyệt qua cơ sở dữ liệu gốc để tính độ hỗ trợ
của tất cả các tập mục ứng viên có (k-1) mục trước khi tính độ hồ trợ của các
tập mục ứng viên có к mục. Với cơ sở dữ liệu có n mục dữ liệu, lần lặp thứ к
phải kiểm tra đô hỗ trơ của tất cả c k
n = ----—----tâp muc ứng viên có к mue.
к\(п-к)\
Duyệt theo chiều sâu là duyệt qua cơ sở dữ liệu đã được chuyển đổi
thành cấu trúc cây, quá trình duyệt gọi đệ quy theo chiều sâu của cây.
Với cơ sở dữ liệu có n mục dữ liệu, không gian tìm kiếm có tất cả 2" tập
con, rõ ràng đây là bài toán NP khó, do vậy cần phải có phương pháp duyệt
thích hợp, tỉa nhanh các tập ứng viên.
Phần tiếp sau mô tả chi tiết nội dung hai thuật toán tiêu biểu và là cơ sở
để trình bày các thuật toán khai phá luật kết hợp có trọng số. Thuật toán
Apriori điển hình cho phương pháp sinh ra các tập mục ứng viên và kiểm tra
độ hỗ trợ của chúng; Thuật toán FP-growth đại diện cho phương pháp không
sinh ra tập mục ứng viên, cơ sở dữ liệu được nén lên cấu trúc cây, sau đó khai
phá bằng cách phát triển dần các mẫu trên cây này.

1.2.1. Thuật toán Aprỉorỉ
Aprioii là thuật toán khai phá tập mục thường xuyên do R. Agrawal và
R. Srikant đề xuất vào năm 1993 [4]. Ý tưởng của thuật toán Apriori còn là
nền tảng cho việc phát triển nhiều thuật toán khai phá tập mục thường xuyên
khác về sau.
Ý tưởng chính của thuật toán như sau: sinh ra các tập mục ứng viên từ
các tập mục thường xuyên ở bước trước, sử dụng kỹ thuật “tỉa” để bỏ đi
những tập mục ứng viên không thoả mãn ngưỡng hỗ trợ cho trước. Cơ sở của
kỹ thuật này là tính chất Apriori: Bất kỳ tập con nào của tập mục thường
xuyên cũng phải là tập mục thường xuyên. Vì vậy các tập mục ứng viên gồm
к mục có thể được sinh ra bằng cách kết nối các tập mục thường xuyên có (k-


10

1) mục và loại bỏ tập mục ứng viên nếu nó có chứa bất kỳ một tập con nào

không phải là thường xuyên.
Giả sử các mục dữ liệu trong mồi giao tác được lưu theo trật tự từ điển.
Thuật toán sử dụng các ký hiệu sau đây:
Tập к

Chức năng

mue


Tập các k-tập mục thường xuyên (với độ hô trợ tôi thiêu

Lk


mỉnsup). Mỗi phần tử của tập này có 2 trường:
Tập mục (itemsets)
Độ hỗ trợ (count)
Tập các k-tập mục ứng viên (các tập mục thường xuyên

ck

tiềm năng). Mỗi phần tử của tập này có 2 trường:
Tập mục (itemsets)
Độ hỗ trợ (count)

Thuật toán duyệt cơ sở dữ liệu nhiêu lân. Mỗi lân duyệt, thuật toán thực
hiện hai bước: bước kết nổi và bước tỉa. Trong lần lặp thứ k, thuật toán nối
hai (k-l)-tập mục để sinh ra k-tập mục, sử dụng tính chất Apriori để tỉa các
tập ứng viên. Bước nối và bước tỉa như sau:
Bước kết nối (tìm Ck): Tập các k-tập mục ứng viên

ckđược sinh ra bởi

việc kết nối Lk_i vói chính nó. Hai tập mục li và Ỉ2 của Lk_i được nối nếu
chúng có (k-2) mục dữ liệu đầu bằng nhau, mục dữ liệu thứ (k-1) của li nhỏ
hơn của 12:
(li[l] = 12[1])

A

(li[2] = 12[2]) л ...л (li[k-2] = l2[k-2])

A


(li[k-l] <

l2[k-l])
Dạng của tập mục nhận được bởi nối li và 12là:
№ - 1].

li[l] li[2] ... li[k-2] li[k-l]


11

Bước tỉa: Tập Ck chứa tập Lk, tức là tất cả các k-tập mục thường xuyên
đều thuộc tập c k. Tập c k có thể là rất lớn dẫn đến khối lượng tính toán lớn.
Thuật toán áp dụng tính chất Apriori để rút gọn tập c k. Nếu có một (k-l)-tập
mục con nào đó của k-tập mục ứng viên mà không có mặt trong Lk_i thì ứng
viên đó không thể là thường xuyên, có thể loại bỏ khỏi c k. Việc kiểm tra các
(k-l)-tập mục con có thể thực hiện nhanh bỏi duy trì một cây băm của tất cả
các tập mục thường xuyên đã tìm thấy.
Thuật toán Aprỉorỉ (tìm các tập mục thường xuyên)
Input: Cơ sở dữ liệu DB, ngưỡng độ hỗ trợ minsup
Output: Tập các tập mục thường xuyên L trong DB
Method:
(1) Tìm các 1-tập mục thường xuyên, nhận được Li;
(2)

For (k=2; Lk_# 0 ; k++) do begin

(3)


Ck = apiiori_gen(Lk_i, minsup); // Sinh tập ứng viên mới từ

(4)

For (each T gDB) do begin

Lk-1

(5)

c = subset(Ck,7); // Các tập mục ứng viên chứa trong

(6)

For (each c eC)

T

(7)

c.count++; // tăng số đếm c lên một đom vị

(8)

end;

(9)

Lk= { c e c k / c.count > mỉnsup};


(10) End;
( 11 ) L = u

;

Sinh các tập mục ứng viên của thuật toán Aprỉorỉ: hàm Apriori_gen()
Function Apriori_gen()
Input: Tập các (k-1)- tập mục thường xuyên Lk_i


12

Output: Tập các k- tập mục ứng viên c k
Method:
// Bước kết nối
(1) For (each (k-l)-tập mục li G Lk_i) do
(2)
(3)

For (each (k-l)-tập mục 12 G Lk_i) do
if (li[l] = 12[1]) and (li[2] = 12[2]) a n d .....and
(h[k-2] = l2[k-2]) and (litk-1] < 12[k-

1])

then

(4)

ck<- {li[l], h[2], ... Utk-^litk-l] l2[k-l]};

// kết nạp k-tập mục mới vào Cỵ

II Bước tỉa
(5) For (each CịeCk) do
(6)

If exist (s c Cị) and (sếLk.i) then

(7)

delete Ci from c k;

(8) Return c k;
Ví dụ minh hoạ thuật toán Aprỉorỉ:
Ta minh họa thực hiện thuật toán Apriori trên cơ sở dữ liệu trong bảng
1.4 vói minsup=50%, tức xuất hiện ít nhất 2 lần.
Bảng 1.4. CSDL giao tác minh họa thực hiện thuật toán Apriori

TID

Các muc dữ liêu

TOI

A, c, D

T02

B, c, E


T03

A, B, c, E

T04

B, E






13

- Duyet CSDL lan thii nhat: tinh do ho trg cho cac 1-tap muc dugc ket
qua nhu sau:

Ci

1-tap muc
{A}

Li

Count
2

{B}
{C}

{D}

3
3
1

{E}

3

£>
L oai bo cac 1-tap m uc co
cou n t < 2

1-tap muc
{A}
{B}
{C}
{E}

Count
2
3
3
3

Ket n6i Li voi Li dugc C2:
2-tap muc
{A ,B }
{A,C}

{A,E}
{B,C}
{B, E}
{C, E}

- Duyet CSDL lan thii 2: tinh do ho trg cho cac 2-tap muc.
C2
2-tap muc
{A, B}
{A, C}
{A, E}
{B,C}

Count
1
2
1
2

{B, E}
{C, E}

3
2

u

--------------------L oai bo cac 2-tap m uc c 0
cou n t < 2


Ket n6i L2voi L2 dugc C3:

2-tap muc
{A, C}
{B,C}

Count
2
2

{B, E}
{C, E}

3
2

q
3-tap muc
{B, C, E}

Duvet CSDL lan thii 3: tinh do ho tra cho cac 3-tap muc.
'C3
.
.
.
.
3-tap muc
{B, C, E}

Count

2

L oai bo cac 3-tap m uc co
cou n t < 2

3-tap muc
{B, C, E}

Count
2


14

Nối L3 với L3 được 1-4=0 , thuật toán dừng.
Các tập mục thường xuyên tìm được theo thuật toán Aprioii là:
L=L, u L2u L3 = IA, B, c, E, AC, BC, BE, CE, BCEj

Nhận xét: Thuật toán duyệt cơ sở dữ liệu nhiều lần, số lần duyệt bằng
độ dài của tập mục thường xuyên dài nhất tìm được.
1.2.2. Thuật toán FP-growth
Thuật toán Apriori gặp phải hai chi phí lớn:
- Chi phí sinh ra số lượng khổng lồ các tập ứng viên. Giả sử ban đầu có
104 mục thường xuyên có độ dài băng 1 thì quá trình kết nối sẽ tạo ra 107 các

tập mục có độ dài bằng 2 (chính xác là 104(104- l)/2 tập mục). Rõ ràng một
tập mục có độ dài k thì phải cần đến ít nhất 2k - 1 tập mục dự tuyển trước đó.
Một nhược điểm khác nữa là giải thuật Apriori phải kiểm tra tập dữ liệu nhiều
lần, dẫn tói chi phí lớn khi kích thước các tập mục tăng lên. Nếu tập mục có
độ dài k được sinh ra thì cần phải kiểm tra tập dữ liệu k+1 lần.

- Lặp nhiều lần duyệt cơ sở dữ liệu, số lần duyệt cơ sở dữ liệu của thuật
toán Apriori bằng độ dài của tập mục thường xuyên dài nhất tìm được. Thuật
toán Aprioii chỉ thích hợp cho các cơ sở dữ liệu thưa (sparse), với các cơ sở
dữ liệu dày (dense) thì thuật toán thực hiện kém hiệu quả.
Để khắc phục nhược điểm trên của thuật toán Apriori, J. Han, J Pei, Y.
Yin và R. Mao đề xuất thuật toán FP-growth [6]. Thuật toán FP-growth được
xây dựng vói 3 kỹ thuật chính:
(1) Nén dữ liệu thích hợp vào một cấu trúc cây gọi là cây FP-tree. Chỉ có
các 1-tập mục ( 1-item) ở trong cây và các nút của cây được sắp xếp để các nút
xuất hiện thường xuyên hơn có thể dễ dàng chia sẻ vói các nút xuất hiện ít hơn.
(2) Thực hiện phương pháp khai phá phát triển (growth) từng đoạn dựa
trên cây FP-tree gọi là phương pháp FP-growth.
(3) Kỹ thuật tìm kiếm được dùng ở đây là dựa vào sự phân chia, “chia
để trị”, phân rã nhiệm vụ khai phá thành các nhiệm vụ nhỏ hơn.


15

Thuật toán FP-growth do nén toàn bộ cơ sở dữ liệu lên một cấu trúc dữ
liệu nhỏ hơn là cây FP-tree nên tránh được việc duyệt nhiều lần cơ sở dữ liệu
(thuật toán chỉ duyệt cơ sở dữ liệu 2 lần). Tiếp theo thuật toán khai phá cây
bằng cách phát triển dần các mẫu mà không sinh các tập mục ứng viên, do đó
tránh được khối lượng tính toán lớn. Phương pháp FP- growth đã chứng tỏ
được tính hiệu quả của nó và có thể thực hiện khai phá cho cả các mẫu ngắn
và dài, nhanh hơn thuật toán Apriori, luôn chỉ cần duyệt CSDL 2 lần.
Thuật toán FP- growth thực hiện như sau:
Đầu tiên, thuật toán duyệt CSDL lần thứ nhất để tính độ hỗ trợ của từng
mục (đếm số lần xuất hiện của từng mục).
Tiếp đến, những mục không đủ độ hỗ trợ bị loại. Các mục còn lại được
sắp theo thứ tự giảm dần của độ hỗ trợ (cũng tức là giảm dần theo số lần xuất

hiện trong CSDL), ta nhận được danh sách L các mục đã sắp.
Duyệt CSDL lần thứ hai, với mồi giao tác T, loại các mục không đủ độ
hồ trợ, các mục còn lại theo thứ tự giống như xuất hiện trong L (tức là thứ tự
giảm dần theo độ hỗ trợ) được cất vào cây FP-tree.
Phần tiếp theo thuật toán khai phá tìm các mẫu thường xuyên trên cây
FP- tree đã xây dựng mà không cần duyệt lại CSDL nữa.
Để hiểu phương pháp này làm việc thế nào, ta xét khai phá CSDL giao
tác DB sau với độ hỗ trợ tối thiểu minsup = 3/5.
Bảng 1.5. CSDL giao tác minh họa cho thuật toán FP- growth
TID

Các mục dữ liệu

Các mục thường xuyên đã săp xêp

TI

a, c, d, f, g, i, m, p

f , c, a, m, p

T2

a, b, c, f, 1, m, 0

f, c , a, b, m

T3

b ,f,h ,j, 0


f,b

T4

b, c, k, p, s

c, b,p

T5

a, c, e, f, 1, m, n, p

f, c, a, m, p


16

Bước 1: Duyệt CSDL, đểm số lần xuất hiện của từng mục, loại các mục
không đủ độ hỗ trợ.
Bước 2: sắp các mục đủ độ hỗ trợ theo thứ tự giảm dần của độ hỗ trợ,
ta nhận được danh sách L sau:
Mục

Sô lần xuât hiện

f
с
b
m


4
4
3
3
3
Bước 3: Duyệt CSDL lẩn thứ 3 và xây dựng cây FP-tree Cây FP-tree
được xây dựng như sau:
Khởi tạo cây T, gốc của cây có nhãn null.
Khi duyệt CSDL lần thứ hai với mỗi giao tác loại các mục không thường
xuyên, các mục còn lạỉ sắp theo thứ tự giảm dần của số lần xuất hiện, Quá
trình xây dựng cây như hình 1.1 sau:

Hình 1.2. Cây FP-tree được xây dựng dần khi thêm cấc giao tác tiy t2, ì3.


×