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

Luận văn thạc sĩ 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.28 MB, 86 trang )

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

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








===80 O c&===

NGUYỄN VĂN PHÓNG

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

LUẬN VĂN THẠC 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
===#0 EO08===



NGUYỄN VĂN PHÓNG

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


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

LUẬN VĂN THẠC 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
Học 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 ưong 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.

Học viên

Nguyễn Văn Phóng


MUC
LUC



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............................................................................................... Y
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 Apriori.................................................................................... 9
1.2.2. Thuật toán FP-growth............................................................................ 14
1.3. Kết luận......................................................................................................21
ChươngO 2: KHAI
MỤC THƯỜNG XUYÊN CÓ TRỌNG
SỐ ...22
a PHÁ TẬP
«

2.1. Thuật toán MINWAL theo tiếp cận Apriori.............................................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 WFTM, FP-Growth và MINWAL...................68
KẾT LUẬN.......................................................................................................71


TÀI LIỆU THAM KHẢO...............................................................................72
PHỤ LỤC


DANH MUC
CÁC KÝ HIÊU,

« 7 CÁC CHỮ VIẾT TẮT
l\lA •7•
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

mỉn_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 Aprìorì................... 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 muc 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 ti, 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
ưọ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á tri của mỗi
mục dữ liệu ưong 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 ưò 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 ttọ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á tn của tập mục là các ttọng số được các nhà
nghiên cứu quan tâm vì chúng có nhiều ứng dụng ưong thực tiễn. Ví dụ, vói
bài toán bán hàng trong siêu thị, ưọ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 ưở 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ó ttọ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 vi 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ó ữọ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 ưê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
một số bộ dữ liệu mẫu.


4

Chưoug 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. Cơ sở dữ liệu giao tác
Định nghĩa 1.1. Cho tập các mục (item) I = {iv i2,...,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 = {Tv T2,...,Tm}. Mỗi giao tác được gán một định danh TID.
Một tập mục con X c / , 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ụcX nếu X c ỉ ,
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 T/D và một danh sách các mục dữ liệu ừong 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
T ll

Mục dữ liệu
B, c, D
B .C .D
A .B .D
c, D, F

C,D

А. С
А. В. С. F
A, С
A, В, E
A. E
A, В, С


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

Mục dữ liệu

Định danh giao tác

А
T3, T6, T7, T8, T9, T10, T ll
В
Tl, T2, T3, T7, T9, T ll
С
Tl, T2, T4, T5, T6, T7, T8, T ll
D
Tl, T2, T3, T4, T5
E
T9, T10
F
T4, T7
Ma trận gùio tác: Cơ sở dữ liệu giao tác DB = [T1,T2,...,T } trên tập các mục
(item) I =

} được biểu diễn bởi ma trận nhị phân M = (тщ)тхп, ở đó:
ílk h i i e r


[O k h ii ' t T ,

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 в
TI 0 1

T2 0 1
T3 1 1
T4 0 0
T5 0 0
T6 1 0
T7 1 1
T8 1 0
T9 1 1
T10 1 0
Tll 1 1

с
1
1
0
1
1
1
1
1
0
0
1

D E F
1 0 0
1 0 0
1 0 0
1 0 1
1 0 0

0 0 0
0 0 1
0 0 0
0 1 0
0 1 0
0 0 0


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 c l . 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 A
.
, ,
|{reDÆ ir^ X } !
X trên tông sô các giao tác trong DB, tức là: sup(X) = J-------——--------- L
\DB\
Ta có: 0 < sup(X) < 1 với mọi tập mục X c / .
Định nghĩa 1.3. Cho tập mục X Œ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 mỉnsup nếu sup(X) > mìnsup, 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 I, 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ỗ ượ (Support) của một luật kết hợp X -» Y , ký hiệu là
sup(X —>Y ), là độ hỗ trợ của tập mục X u Y , sup(X —>Y)= sup(X u Y).
Như vậy độ hỗ trợ của luật kết hợp X

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 —» ỵ) < 1.
Định nghĩa 1.6. Độ tin cậy (Confidence) của một luật X

Y , ký hiệu

conf(X —>y), là tỷ lệ phần trăm giữa số giao tác chứa X u y và số giao tác
chứa X trong cơ sở dữ liệu DB.
c o n f ( Z ^ y ) = SUp(Z^ ỵ)
supQO
Độ 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(Y/X):


7

F ( Y Ị X ) _ \ { T e DB\ X ^ T A Y ^ T } \ _ \{TeDB IX u F c r}| _ sup(X u Y)
\ { T z D B \ x cT}|
~~ \{T z D B \ X ^T}\ ~ sup(Z)
v àtacó 0 < conf(Z ->Y) < 1.
Các luật thoả mãn cả hai ngưỡng độ hỗ trợ tối thiểu (imỉnsup) và độ tin
cậy tối thiểu (minconý),
tức thỏa mãn sup(X —» y ) > minsup và conf(X ->Y) > minconf , được gọi là
luật kết hợp mạnh.

1.1.3. Các tính chất cơ 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ỗ ữợ tối thiểu minsup. Các tập
mục thường xuyên có các tính chất sau:
(1) Nếu X, Y là các tập mục và X c 7 thì sup(X) > sup(Y).
(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 mìnsup và
ngưỡng độ tin cậy tối thiểu minconf.
Yêu cầu: lì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

) > mỉnsup và conf(X —>Y) > 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ỗ ữợ 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 V7 d 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ỗ ừợ 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 Fừst 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ỗ ừợ
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ả С* = ---- —----tâp muc ứng viên có к mue.
k\ (n-k)\
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ó ừọ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-growül đạ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 Apriori
Apriori 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ỗ ữợ 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 ậpk
Chức năng

muc


Tập các k-tập mục thường xuyên (với độ hô trợ tôi thiêu
minsup). Mỗi phàn tử của tập này có 2 trường:
Lk

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ỗ ữợ (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 c k): 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

di[2] = 12[2])

a

...a

(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à 12 là:
l2[k-l].

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


11

Bước tìà: Tập c k 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 Ck- 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 ữong Lk_! 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 ữa 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 Apriori (tìm các tập mục thường xuyên)
Input: Cơ sở dữ liệu DB, ngưỡng độ hỗ ữợ 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 = apriori_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 e C )

T

(7)

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

(8)

end;

(9)

Lk= { c eC k /c.count >minsup};

(10) End;
(11) I ^ 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_!


12

Output: Tập các k- tập mục ứng viên Ck

Method:
// Bước kết nổi
(1) For (each (k-l)-tập mục li e Lk_i) do
(2)

(3)

For (each (k-l)-tập mục 12 e Lk_i) do

if (li[l] = 12[1]) and (li[2] = 12[2]) an d.....and
(li[k-2] = l2[k-2]) and (l,[k-l] < 12[k-

1])
then

ck<- {li[l], li[2], ... ỉdk-lUdk-l] l2[k-l]};

(4)

// kết nạp k-tập mục mới vào Ck
// Bước tỉa
(5) For (each CjsCk) do
(6)

If exist (s c: Ci) and (sếLk_i) then

(7)

delete Ci from c k;


(8) Return c k;
Ví dụ minh hoạ thuật toán Apriori:
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 mỉnsup=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 Aprìorì
TID

Các muc
• dữ liêu


T01

A, c, D

T02

B,C,E

T03
T04

A, B,

c, E

B, E


13


- Duyet CSDL l§n thu nhit: tinh do h6 trg cho cac 1-tap muc dugc kit
qua nhu sau:

Ci

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

Count
2
3
3
1
3

"I
1---------------------

u^Loai bo cac 1 -tap muc c 0
count < 2

1-tap myc
{A}
{B}
{C}

{E}

Count
2
3
3
3

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

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

Count
1
2

1
2
3
2

u
----------------------------------------- ^
Loai bo cac 2-tap muc c 0
count < 2

K6t n6i L2 voi L2 dugc C3:

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

Count
2
2
3
2

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

- Duvet CSDL lan thu 3: tinh do ho trg cho cac 3-tap muc.
C3

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

Count
2

Loai bo cac 3-tap m uc co
count < 2

3-tap myc
{B, C, E}

Count
2


14

Nối L3 với L3 được L4= 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 Apriori là:
L=Lj u L 2u L 3 = {a, B, c , E, AC, BC, b e, c e , BCE}

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 ữa 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 Apriori 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
để tri”, 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-ừee 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 đó
ừá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 ừê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, o

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
4
4
с
b
3
m
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-ữee
đượ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ại 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 khỉ thêm các giao tác tỉ, t2, t3.


×