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

Luận văn khai phá luật kết hợp trên dữ liệu dãy

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 (784.06 KB, 64 trang )

B ô GIÁO DUC VÀ ĐÀO TAO






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








= = = 8 D ÍIIg8 = = =

LÊ THỊ THU HÀ

KHAI PHÁ LUẬT KẾT HỢP
TRÊN D ữ LIÊU DÃY
Chuyên ngành: Khoa 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
Bằng sự kính trọng và lòng biết ơn sâu sắc, em xin trân thành cảm ơn T.s
Nguyễn Long Giang, người đã tận tình hướng dẫn và giúp đỡ em trong suốt quá
trình nghiên cứu và hoàn thành luận văn này.
Em xin trân thành cảm ơn các thầy cô trong khoa Công nghệ thông tin,
phòng Sau đại học Trường Đại học Sư phạm Hà Nội 2, các thầy cô trực tiếp giảng
dạy trong toàn khóa học đã truyền thụ những kiến thức quý báu và tạo điều kiện
thuận lợi cho em trong suốt quá trình học tập và nghiên cứu tại trường
Trong quá trình nghiên cứu, hoàn thiện luận văn khó tránh khỏi những thiếu
sót. Rất mong nhận được sự góp ý của Quý thầy cô và bạn bè đồng nghiệp quan tâm
đến luận văn này.
Vĩnh Phúc, ngày 06 tháng 12 năm 2015

Học viên

Lê Thị Thu Hà


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.

Học viên

Lê Thị Thu Hà



MỤC LỤC
LỜI CẢM ƠN
LỜI CAM ĐOAN
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. Thuật toán A priori.................................................................................................. 8
1.3. Thuật toán FP-Growth.......................................................................................... 12
1.4. Tập mục thường xuyên có trọng số trên cơ sở dữ liệu giao tác........................19
1.5. Kết luận chương 1..................................................................................................21
CHƯƠNG 2: KHAI PHÁ MÂU DÃY THƯỜNG XUYÊN CÓ TRỌNG SỐ..........23
2.1. Bài toán khai phá mẫu dãy thường xuyên với trọng số chuẩn h ó a ................. 24
2.1.1. Các khái niệm cơ b ả n ....................................................................................24
2.1.2. Cơ sở toán học cho bài toán khai phá mẫu dãy thường xuyên với trọng số
chuẩn h ó a ...................................................................................................................25
2.1.3. Ví dụ minh họa

28


ii


2.2. Thuật toán khai phá mẫu dãy thường xuyên với trọng số chuẩn hóa
(WprefixSpan).............................................................................................................. 35
2.2.1. Mô tả thuật toán W prefixSpan ...................................................................... 35
2.2.2. Độ phức tạp thuật toán W prefỉxSpan ........................................................... 36
2.3. Kết luận chương 2 ................................................................................................. 37
CHƯƠNG 3: THỬ NGHIỆM VÀ ĐÁNH GIÁ CÁC THUẬT TO Á N ..................... 38
3.1. Công cụ thử nghiệm ............................................................................................38
3.2. Số liệu thử nghiệm ..............................................................................................38
3.3. Môi trường thử nghiệm.......................................................................................39
3.4. Ket quả thử nghiệm và đánh giá các thuật to á n .............................................. 39
3.4.1. So sánh thời gian thực hiện của thuật toán PreíixSpan và WPrefixSpan 39
3.4.2. So sánh số mẫu dãy thường xuyên của thuật toán PrefixSpan và
W PrefixSpan............................................................................................................. 40
3.4.3. So sánh bộ nhớ sử dụng của thuật toán PrefixSpan và WPrefixSpan .... 40
3.4.4. So sánh độ dài mẫu dãy thường xuyên của thuật toán PreíixSpan và
W PrefixSpan..............................................................................................................41
3.5. Kết luận chương 3 .................................................................................................. 41
KẾT LUẬN....................................................................................................................... 43
TÀI LIỆU THAM KHẢO................................................................................................44
PHỤ LỤC


DANH MUC
CÁC KÝ HIÊU,

« 7 CÁC CHỮ VIÉT TẮT

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


DANH MUC 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............................... 10
Bảng 1.5. CSDL giao tác minh họa cho thuật toán FP- growth.................................. 13
Bảng 1.6. CSDL giao tác................................................................................................. 21
Bảng 1.7. Trọng số của các m ục.....................................................................................21
Bảng 2.1. Cơ sở dữ liệu dãy s .........................................................................................28
Bảng 2.2. Giá trị trọng số các mục dữ liệu.................................................................... 28
Bảng 2.3. Cơ sở dữ liệu điều kiện với tiền tố

< a> ............................................. 31

Bảng 2.4. Cơ sở dữ liệu điều kiện với tiền tố

< aa> .......................................... 32

Bảng 2.5. Cơ sở dữ liệu điều kiện với tiền tố

<a(ab)>...................................... 33



V

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...............14
Hình 1.3. Cây FP-tree của CSDL DB trong b ảng.......................................................15
Hình 1.4. FP-tree phụ thuộc của m ............................................................................... 17
Hình 1.5. Các FP-tree phụ thuộc của am, cm và c am ................................................ 18
Hình 3.1. Thời gian thực hiện của thuật toán PreíixSpan và WprefixSpan.............39
Hình 3.2. Số mẫu dãy thường xuyên của thuật toán PrefixSpan và WprefixSpan ..40
Hình 3.3. Bộ nhớ sử dụng của thuật toán PrefixSpan và W prefixSpan................... 40
Hình 3.4. Độ dài mẫu dãy thường xuyên của thuật toán PrefixSpan và WprefixSpan
........................................................................................................................................... 41


1

MỞ ĐẦU
1. Lý do chọn đề tài
Khai phá luật kết hợp (Mining association rules) là bài toán quan trọng trong
lĩnh vực khai phá dữ liệu. Khai phá luật kết hợp được giới thiệu bởi Agrawal [2] 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
Bài toán khai phá tập mục thường xuyên do Agrawal và các cộng sự đề xuất [2]
được gọi là bài toán khai phá tập mục thường xuyên nhị phân vì giá toi 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 đó, bài toán này chỉ mang ngữ nghĩa thống kê, 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 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
một giá trị được gọi là trọng số (số lượng hoặc giá trị của tập mục). 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ố
[3]. Hướng mở rộng tiếp theo đang thu hút sự quan tâm của các nhà nghiên cứu là
khai phá luật kết hợp trên dãy dữ liệu, còn gọi là dữ liệu dãy (sequence). Khi đó, bài
toán khai phá tập mục thường xuyên trở thành bài toán khai phá các mẫu dãy thường


2

xuyên (Mining sequential patterns) và bài toán khai phá luật kết hợp truyền thống trở
thành bài toán khai phá luật kết hợp dãy [5, 6, 7, 8, 9]. Khai phá luật kết hợp dãy có
ứng dụng trong thực tiễn cao vì trong thực tế tồn tại khá phổ biến các dãy dữ liệu
như: dãy dữ liệu mua sắm của khách hàng, dãy dữ liệu mô tả nhật ký truy cập
Website...
Như đã trình bày ở trên, hướng nghiên cứu mở rộng khai phá luật kết hợp trên
dữ liệu dãy có ý nghĩa khoa học và thực tiễn cao. Do đó, tôi chọn đề tài “Khai phá
luật kết hợp trên dữ liệu dãy”.
2. Mục đích nghiên cứu

Nắm bắt được kiến thức tổng quan về bài toán khai phá luật luật kết hợp kinh
điển và hướng nghiên cứu mở rộng khai phá luật kết hợp có trọng số trên dữ liệu dãy.
Trên cơ sở đó cài đặt, thử nghiệm, đánh giá thuật toán trên các bộ số liệu mẫu.
3.Nhỉệm vụ nghiên cứu
Nắm bắt được các khái niệm cơ bản và các thuật toán khai phá luật kết hợp
kinh điển như Apriori, FP-Growth.
Tìm hiểu và thử nghiệm 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 dãy, gọi là khai phá mẫu dãy thường xuyên có trọng số.
4.

Đối tượng và phạm vỉ nghiên cứu
- Đổi tượng nghiên cứu : Là các cơ sở dữ liệu dãy.
- Phạm vi nghiên cứu : Nghiên cứu hướng mở rộng bài toán khai phá tập mục

thường xuyên trên dữ liệu dãy.
5. Phương pháp nghiên cứu
- 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á mẫu dẫy thường xuyên có trọng số.
- 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.
6. Cấu trúc của luận văn
Luận văn gồm: Lời mở đầu, ba chương nội dung, phần kết luận, tài liệu tham
khảo và phụ lục


3

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 Apriori [2] và thuật
toán FP-Growth [4].

Chương 2: Trình bày thuật toán khai phá mẫu dãy thường xuyên với trọng số chuẩn
hóa (WprefixSpan) dựa trên thuật toán khai phá mẫu dãy thường xuyên PreíixSpan
trong [5] bằng cách đưa vào trọng số của mẫu dãy.
Chương 3: Trình bày phàn cài đặt, thử nghiệm và đánh giá thuật toán WprefixSpan
trên 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 và hai
thuật toán khai phá tập mục thường xuyên kinh điển: thuật toán Apriori [2] và thuật
toán FP-Growth [4].
1.1. Các khái niệm Ctf 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) I —
T

j. Một giao tác (transaction)

là một tập con của 1, T œ 1. Cơ sở dữ liệu giao tác là một tập các giao tác

D B = ịTỊ,T2,...,TmY Mồi giao tác được gán một định danh TID. Một tập mục con
X çz I , gồm k 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 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 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

Mục dữ liệu

TI
B, c, D
T2
B, c, D
A, B, D
T3
T4
C ,D ,F
T5
c, D
T6
A, c
T7
A, B, c, F
T8
A, c
T9
A, B, E
T10
A, E
T ll

A, B, c
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.


5

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

A
B

T3, T6, T7, T8, T9, T10, T l l

c

T l, T2, T4, T5, T6, T7, T8, T l l

D

T l, T2, T3, T4, T5

E
F


T9, T10

Tl, T2, T3, T7, T9, T U

T4, T7

M a trận giao tác'. Cơ sở dữ liệu giao tác D B = |7[,7’2,...,7' ị trên tập các mục (item)
I =

} được biểu diễn bởi ma trận nhị phân M = (tĩipq)mx„, ở đó:
[lk h i i e T
N

[O khi i'ỊÊ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

B

c

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

1

0

1

0

0

0

T9
T10

1
1

1

0

0
0

0
0

1
1

0
0

T ll

1

1

1

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 :/. 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 trên tổng

\{T g D B i r ^ X Ị l
sô các giao tác trong DB, tức là: sup(X) = —
Ta có: 0 < sup(X) < 1 với mọi tập mục X c I.
Định nghĩa 1.3. Cho tập mục X c i v à ngưỡng hỗ trợ tối thiểu (minimum support)
m insup e [ 0 ,l] (đượ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) > m insup, 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ỗ 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 Y , sup(X —» Y) = sup(Z u 7 j .
Như vậy độ hỗ trợ của luật kết hợp X ~^>Y chính là xác suất PịXU Y) 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 {JY và số giao tác chứa
X trong cơ sở dữ liệu DB.
r,v
_ sup(X u Y )
conf(X -» Y ) =
_---- 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 (Y/X):

\ { T z D B \ X cz T a Y c z T } \ J { T z D B \ X v Y c z T } \^ sxxp (X v Y )
\{T g D B \ X ^ T } \

và ta có 0 < conf(X - ^ y ) < 1.

~

\{T g D B \ X ^ T } \

~

sup(Z)


7

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 (mỉnconý), tức thỏa mãn sup(X —» y ) > minsup
và conf(X —>Y) > m inconf , đượ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 ç F thì sup(X) > su p (y ).
(2) Neu 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) Neu 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: 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 —> Y ) > minsup và conf(X —>Y) > m in c o n f.
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 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

vy CI 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


8

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ẽ tìn h bày chi tiết về khai phá tập mục thường xuyên.
1.2. Thuật toán Aprỉorỉ
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 1994 [2]. Ý 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 k 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-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 k mục

Chức năng
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 tiềm
năng). Mồi phần tử của tập này có 2 trường:

ck

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:


9

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_! với chính nó. Hai tập mục li và 12 của Lk_! đượ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:
(litn = 12[1]) A 0i[2] = h m

A ...A

(li[k-2] = l2[k-2])

A

(litk-1] < l2[k-l])

Dạng của tập mục nhận được bởi nối lx và 12 là: lx[l] lx[2] ... li[k-2] li[k-l] l2[k-l].
Bước tỉa\ 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 c k. Neu 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_! 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 Lxỉ

(2)

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

(3)c k= apriori_gen(Lk_1, minsup)\ II Sinh tập ứng viên mới từ Lk_!
(4)

For (each T e D B ) do begin

(5)

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

(6 )

For (each c e C )
c.count++; // tăng sổ đếm c lên m ột đơn vị

(7)
(8 )

end;


(9)

Lk = { c e C k/ c. count > m ins up};

(10) End;
(1 1 ) 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()


10

Input: Tập các (k-1)- tập mục thường xuyên Lk_!
O utput: 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 lx G Lk_x) do

(2)

For (each (k-l)-tập mục 12 e Lk.j) do
if (li[l] = 12[1]) and (li[2] = 12[2]) a n d ..... and

(3)


(li[k-2] = l2[k-2]) and (li[k-l] < 12[k-l])
then

(4)

c k<- { utl], lx[2], ... lxtk-^Jitk-l] l2[k-l]};
// kết nạp k-tập mục mới vào Cỵ

II Bước tỉa
(5)
(6)

For (each CjsCk) do
If exist (s d Ci) and (s^Lk_i) then

(7)
(8)

delete

Ci

from c k;

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 Aprỉorỉ

TID

Các mục dữ liệu

T01

T03

c, D
B, c, E
A, B, c, E

T04

B, E

T02

A,

- Duyệt CSDL lần thứ nhất: tính độ hỗ trợ cho các 1-tập mục được kết quả như

sau:


11

Ci

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

Count
2
3
3
1
3

Li

Loai bo cac 1-tap muc co
count < 2

Ket noi Lx vai Lx dugc C2:

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

Count
2
3

3
3

_
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 co

Ket noi L2 vai L2 dugc C3:

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

Count
2
2
3
2

£
3-tap myc
{B, C, E}

- Duyet CSDL lan thu 3: tinh do h§ trg cho cac 3-tap muc.
C3
3-tap muc
{B, C, E}

L

Count
2

Loai bo cac 3-tap muc co
count< 2

3-tap myc
{B, C, E}

Count
2


12

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 uLjULj ={A, B, c, E, AC, BC, BE, CE, BCEj
N hậ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.3. 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 ưa 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
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 [4]. 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.
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


13

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 n hư 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ácmục cònlại được sắp

theo thứ tự giảm dần của độ hồ trợ (cũng tức là giảm dầntheo 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.
Đe 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

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ợ.


14

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
p
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ạ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 khi thêm các giao tác ti, t2, t3.

Từ tập dữ liệu ban đầu, ta xây dựng header table của cây FP như sau:


15

Hình 1.3. Cây FP-tree của CSDL DB trong bảng
Cấu trúc cây FP-tree như sau:
- Gốc của cây nhãn null, các đường đi trên cây biểu diễn item prefixs

- Các liên kết trên cây liên kết các mục xuất hiện có tên giống nhau.
- Mỗi nút (trừ nút gốc) bao gồm:
•S Tên mục (item identifier)
■S Count: số đếm
■S Node link: Liên kết đến nút tiếp theo trên cây có cùng tên.

- Bảng các đầu mục thường xuyên (header table): bắt đầu cho các liên kết.
Thủ tục thêm một dãy các mục (đã sắp giảm dần theo độ hồ trợ) của một giao
tác vào cây thực hiện đệ qui như sau:
Procedure insert_tree(string [p I P], tree có gốc T)
(Ở đó p là mục thứ nhất của dãy các mục và p là phần còn lại. Trong lần
duyệt thứ hai, với mỗi giao tác t, gọi thủ tục insert tree (t\ T), ở đó t' là nội dung
của giao tác t sau khi đã bỏ các mục không thường xuyên và sắp theo thứ tự giảm
dần của độ hỗ trợ, T là gốc của cây.)


16

Procedure insert_tree (string [p I P ] , tree có gốc T)
1. Nếu T có nút con N mà N.itemname = p thì N.count++
2. Ngược lại
3. Tạo một nút mới N;
4. N.itemname := p; thì N.count :=1;
5. Thay đổi nút liên kết cho p bao gồm N;
6. Neu p khác rỗng gọi thủ tục insert_tree(P, N);
Tìm các tâp muc thường xuyên:
Sau khi xây dựng xong FP-tree cho CSDL, việc khai phá tìm các tập mục
thường xuyên chỉ thực hiện trên FP-tree mà không cần duyệt CSDL nữa.
Thuật toán FP- growth như sau:
Bắt đầu từ dưới lên của bảng header và cây, với mỗi mục A: dùng nút liên kết

duyệt qua tất cả các nút trên cây mà xuất hiện A, với mỗi nút N mà N.itemname = A, xác
định các tập mục thường xuyên có xuất hiện A, thực hiện bằng cách chỉ cần tìm các
đường đi từ gốc tới N.
Ví dụ 1.3. Đầu tiên xét mục p, sau đó đến m, như sau:
- Mục p:
+ Có 2 đường:

- f : 4, c : 3, a : 3, m : 2, p : 2
- c : 1, b : 1, p : 1

(Tức là: fcam xuất hiện hai lần với p và cb chỉ một lần. số lần xuất hiện
của p là 2+1=3.)
+ Từ đó suy ra cơ sở mẫu phụ thuộc (conditional pattern base) của p là:
- f : 2, c : 2, a : 3, m : 2
- c : l ,b : 1
Các tập mục thương xuyên chứa p là được xác định bởi cơ sở mẫu phụ thuộc này.
+ Xây dựng đệ qui cây FP-tree cho cơ sở phụ thuộc (condition base) và tìm các
tập mục thường xuyên ở trên cây đó, sau đó thêm p vào tất cả chúng


17

Ở đây, cơ sở phụ thuộc là: - f : 2, c : 2, a : 2, m : 2
-c : l,b : 1
Trong đó chỉ có c là thường xuyên (xuất hiện 3 lần) do đó tập mục thường
xuyên tìm được là cp, tần xuất 3/5.
- Mục m:
+ Có 2 đường:

- f : 4, c : 3, a: 3, m : 2

- f : 4, c : 3, a: 3, b : 1, m : 1

(bây giờ ta bỏ qua p vì các tập mục thường xuyên chứa nó đã tìm rồi)
+ Cơ sở mẫu phụ thuộc của m là:
- f : 2, c : 2, a:

2

- f : 1, c : 1, a: l , b : 1
+ FP-tree phụ thuộc của m là chỉ có một đường:
- f : 3, c: 3, a : 3
+ Tìm theo cách đệ qui các tập mục thường xuyên trên FP-tree phụ thuộc, đầu
tiên cho a, sau đó cho c và f. Cây FP-tree phụ thuộc của m như hình 1.3 sau:

Cơ sở điều kiện của nút “m ” :

(f:2; c:2; a:2)
( f : l ; c : l ; a : l ; b:l)
Cây điều kiện của nút “m ”:
Bâng đâu mục:
M ục dữ liệu

C on trỏ
đẩu danh sách liên ket

Hình 1.4. FP-tree phụ thuộc của m


×