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

Bài tiểu luận môn Công nghệ tri thức MỘT SỐ THUẬT TOÁN KHAI THÁC

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 (913.32 KB, 26 trang )

ĐẠI HỌC QUỐC GIA TP. HỒ CHÍ MINH
ĐẠI HỌC CÔNG NGHỆ THÔNG TIN





CHUYÊN ĐỀ
CÔNG NGHỆ TRI THỨC VÀ ỨNG DỤNG

BÀI THU HOẠCH
MỘT SỐ THUẬT TOÁN KHAI THÁC
TẬP PHỔ BIẾN VÀ LUẬT KẾT HỢP




GIẢNG VIÊN HƯỚNG DẪN
GS. TSKH. HOÀNG KIẾM

HỌC VIÊN THỰC HIỆN
LÊ CUNG TƯỞNG (CH1101152)





Hồ Chí Minh, 5/2012

P a g e | 1


Mục lục
Mục lục 1
1. Giới thiệu tổng quan 2
1.1. Khai thác dữ liệu 2
1.2. Một số khái niệm 2
1.2.1. Cơ sở dữ liệu giao dịch 2
1.2.2. Tập phổ biến 3
1.2.3. Luật kết hợp 3
1.2.4. Bài toán khai thác tập phổ biến và luật kết hợp 4
2. Các thuật toán tìm tập phổ biến 5
2.1. Thuật toán Apriori 5
2.1.1. Ý tưởng thuật toán 5
2.1.2. Thuật toán 5
2.1.3. Ví dụ minh họa 7
2.1.4. Hạn chế của thuật toán Apriori 8
2.2. Thuật toán FP-tree 8
2.2.1. Giới thiệu 8
2.2.2. Mô tả 9
2.2.3. Nhận xét 9
2.2.4. Thuật toán 10
2.2.5. Ví dụ minh họa 11
2.3. Thuật toán FP-growth 12
2.3.1. Giới thiệu 12
2.3.2. Thuật toán 13
2.3.3. Ví dụ minh họa 14
2.4. Thuật toán FP-growth* 14
2.4.1. Giới thiệu 14
2.4.2. Thuật toán 16
2.4.3. Ví dụ minh họa 17
2.4.4. Nhận xét 17

3. Các thuật toán khai thác luật kết hợp truyền thống 18
3.1. Sinh luật kết hợp dựa vào quan hệ cha con 18
3.1.1. Thuật toán sinh luật từ tập phổ biến 18
3.1.2. Minh họa 19
3.2. Sinh luật kết hợp dựa vào bảng băm 20
3.2.1. Thuật toán 21
3.2.2. Minh họa 21
4. Thực nghiệm 23
Kết luận 24
Tài liệu tham khảo 25
P a g e | 2

1. Giới thiệu tổng quan
1.1. Khai thác dữ liệu
Chúng ta đang sống trong thời đại bùng nổ thông tin. Thông tin được lưu trữ
với khối lượng khổng lồ. Điều này đòi hỏi phải có những cơ sở lý thuyết trợ giúp cho
con người trong việc rút trích ra các tri thức từ khối lượng dữ liệu này. Lĩnh vực khai
phá tri thức và khai thác dữ liệu được hình thành và phát triển nhằm đáp ứng nhu cầu
này.
Hiện nay, lĩnh vực khai thác dữ liệu có 3 bài toán chính được đề cập nhiều
nhất, đó là: Khai thác luật kết hợp, phân lớp và gom nhóm dữ liệu. Các bài toán này
nhằm đáp ứng cho việc khai thác dữ liệu văn bản, khai thác dữ liệu không gian, thời
gian, khai thác dữ liệu Web,
Khai thác luật phân lớp là tìm ra các qui luật để từ đó dự đoán nhãn của các
mẫu chưa biết trước lớp. Một số cách tiếp cận hiện nay như cây quyết định, ILA, phân
lớp dựa vào luật kết hợp,
Gom nhóm là gom các đối tượng “tương tự” nhau về cùng một nhóm. Một số
phương pháp điển hình như phân hoạch, phân cấp, gom nhóm dựa trên mật độ,
Khai thác luật kết hợp là tìm ra các mối quan hệ giữa các item với nhau. Vế
phải của luật kết hợp có thể chứa một hay nhiều item. Vì vậy, độ phức tạp của bài

toán khai thác luật kết hợp lớn hơn nhiều so với bài toán khai thác luật phân lớp. Đã
có khá nhiều thuật toán được phát triển nhằm làm tăng hiệu quả khai thác luật kết hợp
như: Các thuật toán phát triển từ Apriori, các thuật toán phát triển từ FP-tree, các
thuật toán phát triển từ IT-tree,
Có thể nói, cùng với sự phát triển mạnh mẽ của công nghệ thông tin và truyền
thông thì ngành khai thác dữ liệu cũng đóng một vai trò không nhỏ trong việc khai
thác và phân tích dữ liệu nhằm làm tăng tính hiệu quả cho người sử dụng chúng.
1.2. Một số khái niệm
1.2.1. Cơ sở dữ liệu giao dịch
Cơ sở dữ liệu (CSDL) giao dịch  gồm một bộ đôi {, } trong đó  =
{
1
, 
2
,  , 

} là tập tất cả các item và  = {
1
, 
2
,  , 

} là một tập các giao dịch. Bài
thu hoạch dùng một CSDL trong bảng 1.1 làm ví dụ xuyên suốt các phần.
P a g e | 3

Bảng 1.1. Cơ sở dữ liệu mẫu
Giao tác
Danh mục
1

A, C, T, W
2
C, D, W
3
A, C, T, W
4
A, C, D, W
5
A, C, D, T, W
6
C, D, T
1.2.2. Tập phổ biến
Độ phổ biến: Cho CSDL giao dịch  và một itemset   . Độ phổ biến của
 trong , kí hiệu (), là số giao dịch mà X xuất hiện trong D.
Ví dụ: Xét CSDL của bảng 1.1, ta có () = 4 vì A chứa trong 4 giao dịch
1345, () = 2 vì AD chứa trong các giao dịch 45.
Tập phổ biến:    được gọi là phổ biến nếu ()   (với
minSupCount là giá trị do người dùng chỉ định).
Ví dụ: Xét CSDL của bảng 1.1 với  = 3 thì A là tập phổ biến vì
() = 4   nhưng AD không phải là tập phổ biến vì () =
2 < .
Mộ số tính chất của tập phổ biến
- Mọi tập con của một tập phổ biến cũng phổ biến. Nghĩa là   , nếu
()   thì ()  .
- Mọi tập cha của một tập không phổ biến cũng không phổ biến. Nghĩa là
  , nếu () <  thì () < .
1.2.3. Luật kết hợp
Luật kết hợp: là biểu thức có dạng 
,



\ (  ) , trong đó  = ()
được gọi là độ phổ biến của luật và  = ()/() được gọi là độ tin cậy của luật.
Tập tất cả các luật kết hợp từ CSDL  thỏa    và  
 được gọi là tập luật kết hợp truyền thống.
Một số tính chất của luật kết hợp
P a g e | 4

- Nếu    là luật kết hợp truyền thống thì      \  cũng là luật kết
hợp truyền thống   .
- Nếu    là luật kết hợp truyền thống thì    \  cũng là luật kết hợp
truyền thống   .
- Nếu    không là luật kết hợp thì  \      cũng không là luật kết
hợp   .
1.2.4. Bài toán khai thác tập phổ biến và luật kết hợp
Nhiệm vụ chính của khai thác luật kết hợp bao gồm 2 bước như sau: (1) tìm tất
cả các tập phổ biến. (2) phát sinh các luật kết hợp tin cậy từ tập phổ biến.
Bước 1 (tìm tập phổ biến): bước này đòi hỏi nhiều thao tác tính toán và xuất
nhập dữ liệu. Xét bảng 1.1, trình bày một CSDL với 6 giao tác {1, 2, 3, 4, 5, 6} mang 5
danh mục {, , , , } khác nhau. Bài toán đòi hỏi trình bày tất cả các tập phổ biến
với độ hỗ trợ tối thiểu () là 33% (2). Dễ dàng tìm được tập hợp các tập phổ
biến như trong bảng sau với CDT, ACTW và ACDW là các tập phổ biến tối đại
(chúng không là một tập con của bất kỳ tập phổ biến nào).
Độ tin cậy
Các tập danh mục phổ biến
100%
C
83%
W, CW
67%

A, D, T, AC, AW, CD, CT, ACW
50%
AT, DW, TW, ACT, ATW,
CDW, CTW, ACTW
33%
AD, DT, CDT, ACD, ADW,
ACDW
Bước 2 (phát sinh luật kết hợp): bước này là một bước đơn giản hơn. Luật
kết hợp được được tạo ra từ tất cả các tập phổ biến X tìm thấy ở bước 1 thỏa mãn điều
kiện   .
Ví dụ, từ một tập phổ biến ACW có thể tạo 6 luật là:   : 1.0;   :
0.67;   : 0.8;   : 1.0;   : 1.0 và   : 0.8.
P a g e | 5

2. Các thuật toán tìm tập phổ biến
2.1. Thuật toán Apriori
2.1.1. Ý tưởng thuật toán
Thuật toán khai thác các tập phổ biến bằng cách thực hiện nhiều lần duyệt
CSDL. Duyệt lần thứ nhất để tính độ phổ biến của các 1-itemset và xác định các item
phổ biến từ chúng, nghĩa là độ phổ biến thỏa ngưỡng phổ biến tối thiểu. Trong các lần
duyệt sau, thuật toán sẽ kết hợp các itemset phổ biến đã tìm được trong lần duyệt
trước để tìm các tập ứng viên. Sau đó tính độ phổ biến thực sự của các tập ứng viên
này nhằm xác định itemset nào trong các tập ứng viên là tập phổ biến thực sự. Các
itemset này trở thành các hạt giống cho lần duyệt tiếp theo. Quá trình này thực hiện
cho đến khi không còn một tập phổ biến mới nào nữa được sinh ra.
Thuật toán Apriori sinh ra các tập ứng viên trong một lần duyệt bằng cách chỉ
sử dụng các tập phổ biến đã được khai thác trong lần duyệt trước mà không cần quan
tâm đến các giao dịch trong cơ sở dữ liệu. Các ứng viên k-itemset được sinh ra bằng
cách kết hợp các tập phổ biến thuộc (k-1)-itemset. Thuật toán Apriori tỉa ứng viên
bằng cách loại bỏ các ứng viên có chứa tập con không phải là tập phổ biến.

Qui ước: Giả sử các item trong mỗi giao dịch được lưu giữ theo thứ tự từ điển.


là tập các k-itemset phổ biến. 

là tập các ứng viên có k-itemset. Mỗi phần tử của


và 

có 2 thành phần: itemset và độ phổ biến tương ứng.
2.1.2. Thuật toán
Gồm 2 bước: bước kết hợp và bước tỉa các ứng viên.
Bước kết hợp: Bước này nhằm tìm tập 

bằng việc kết hợp các tập phổ biến
trong 
1

với nhau. Kết quả là tập các ứng viên 

. Hai tập phổ biến 
1
và 
2
thuộc

1
sẽ được kết hợp với nhau nếu chúng thỏa đều kiện sau: (
1

[1] = 
2
[1]) 
(
1
[2] = 
2
[2]) . . . (
1
[  2] = 
2
[  2])  (
1
[  1] = 
2
[  1])
Kết quả sẽ là itemset: 
1
[1] 
1
[1]. . . 
1
[  2] 
1
[  1] 
2
[  1]
P a g e | 6

Bước tỉa: Ta có 


là tập chứa 

, nghĩa là thuật toán cần lọc các tập từ 

để
tạo ra 

. Bước này sẽ loại bỏ các itemset   

nếu  tồn tại tập con (k-1)-itemset
không có trong 
1
.
Đoạn mã giả sau đây trình bày thuật toán Apriori: 
1
chứa các 1-itemset thỏa
 (dòng 1), từ dòng 2 đến dòng 6 là quá trình lặp đi lặp lại của việc sinh
ứng viên và đếm độ phổ biến của các ứng viên bằng cách xét chúng với các giao dịch
trong CSDL. Việc sinh ứng viên (hàm Apriori-gen) sử dụng tính chất apriori để tỉa
các ứng viên (dòng 14 – 15), việc sinh các ứng viên từ 
1

và 
2
phải thỏa mãn 
1
và 
2


có cùng tiền tố là (k-2)-itemset (dòng 12 – 13).
Đầu vào: Cơ sở dữ liệu giao dịch D và ngưỡng độ phổ biến minSupCount.
Kết quả: FI chứa danh sách các tập phổ biến trong D thỏa minSupCount.
1. _1 = {     ()  }
2. for (k = 2; 
1
 ; k++) do
3. 


= Apriori_gen(
1
)
4. for each    do
5. for each 

 

do
6. if 

  then 

.count++
7. 

= {

 



| c
k
.count  minSupCount}
8. FI = 

L
k
Apriori_gen(L
k-1
)
9. C
k
= 
10. for each 
1
 
1
do
11. for each 
2
 
1
do
12. if (
1
[1] = 
2
[1])  (
1

[2] = 
2
[2]) . . . (
1
[  2] = 
2
[  2]) 
(
1
[  1] = 
2
[  1]) then
13. c = l
1
 l
2
//bước kết hợp l
1
và l
2
sinh ra ứng viên c
14. if Has_infrequent_subset(c, L
k-1
) = False then
15. Add c into C
k

16.return C
k
Has_infrequent_subset(c, L

k-1
)
17. for each (k-1)-itemset s  c do
18. if s  L
k-1
then
19. return True
P a g e | 7

20. return False
2.1.3. Ví dụ minh họa
Xét CSDL mẫu ở bảng 1.1, tất cả các tập phổ biến có độ phổ biến thỏa
minSupCount = 3 (50% số giao dịch) như sau:
CSDL
TID
Nội dung
1
A, C, T, W
2
C, D, W
3
A, C, T, W
4
A, C, D, W
5
A, C, D, T, W
6
C, D, T

L

1

Item

D
4
W
5
A
4
C
6
T
4

C
2

Itemset

AC
4
AD
2
AT
3
AW
4
CD
4

CT
4
CW
5
DT
2
DW
3
TW
3

L
2

Itemset

AC
4
AT
3
AW
4
CD
4
CT
4
CW
5
DW
3

TW
3


C
3

Itemset

ACT
3
ACW
4
ATW
3
CDW
3
CTW
3

L
3

Itemset

ACT
3
ACW
4
ATW

3
CDW
3
CTW
3

CDT không tồn tại trong C
3
vì DT không là tập phổ biến.
C
4

Itemset

ACTW
3

L
4

Itemset

ACTW
3

Từ L
3
, chỉ có ACT và ACW có cùng tiền tố (là AC) nên kết hợp được với
nhau tạo thành ACTW. Xét ACTW, tất cả các tập phổ biến con của ACTW có 3-
itemset đều phổ biến. Vì vậy, ACTW là một ứng viên cần tính độ phổ biến. Cuối

cùng, do L4 chỉ có là tập phổ biến nên C
5
= L
5
= , thuật toán dừng.
P a g e | 8

Ta có danh sách các tập phổ biến được trình bày trong bảng sau:
STT
Tập phổ biến

1
D
4
2
T
4
3
A
4
4
W
5
5
C
6
6
DW
3
7

CD
4
8
AT
3
9
TW
3
10
CT
4
11
AW
4
12
AC
4
13
CW
5
14
CDW
3
15
ATW
3
16
ACT
3
17

CTW
3
18
ACW
4
19
ACTW
3
2.1.4. Hạn chế của thuật toán Apriori
Chi phí lớn cho việc phát sinh các tập ứng viên. Ví dụ: Nếu có 10
4
item phổ
biến thì thuật toán Apriori sẽ cần sinh ra hơn 10
7
các ứng viên 2-itemset.
Lặp lại nhiều lần duyệt CSDL: Số lần duyệt CSDL của thuật toán Apriori bằng
độ dài của mẫu phổ biến dài nhất tìm được. Thuật toán Apriori chỉ thích hợp cho các
CSDL thưa (mật độ trùng lặp của các item trên các giao dịch ít), đối với các CSDL
đặc (mật độ trùng lặp của các item trên các giao dịch nhiều) thì thuật toán thực hiện
kém hiệu quả.
2.2. Thuật toán FP-tree
2.2.1. Giới thiệu
Để khắc phục điểm yếu của các dựa trên thuật toán Apriori là phải duyệt cơ sở
liệu nhiều lần và phải kiểm tra một lượng lớn các ứng viên dẫn đến tốc độ thực thi của
thuật toán không hiệu quả, tác giả J. Han và các đồng sự đã đề xuất ra cấu trúc FP-
tree. Vì thông qua cấu trúc FP-tree, một CSDL được nén lại và chỉ thông tin liên hệ
với khai thác được giữ lại làm cho việc khai thác dữ liệu có hiệu quả hơn. Bên cạnh
P a g e | 9

cấu trúc FP-tree, tác giả cũng giới thiệu kỹ thuật để duyệt FP-tree và cách xác định

các tập phổ biến.
Cấu trúc FP-tree có nhiều thuận lợi trong khai thác tập phổ biến. Trước hết,
FP-tree thường có một tỉ lệ nén cao trong khi biểu diễn tập CSDL bởi vì:
- Các danh mục không phổ biến được xác định trong lần duyệt CSDL đầu tiên
sẽ không được sử dụng trong cấu trúc cây.
- Một tập hợp của các giao tác dùng chung tập con của các danh mục giống
nhau có thể chia sẻ chung phần đầu đường dẫn từ gốc trong một FP-tree và tỉ lệ nén
cao dẫn đến tính hiệu quả khi thao tác trực tiếp trên FP-tree.
- Cấu trúc dữ liệu này cho phép thực hiện chiến lược tìm kiếm theo chiều sâu
và sử dụng mô hình chia để trị vì đây là những kỹ thuật khá hiệu quả.
Quan trọng hơn cả, FP-tree chứa tất cả các thông tin cần thiết để khai thác tập
phổ biến và tính hoàn thiện của nó có thể đảm bảo tính đúng đắn của thuật toán dựa
trên FP-tree.
2.2.2. Mô tả
Cấu trúc FP-tree là cấu trúc cây với một số đặc điểm sau:
- Cây có một nút cha đánh nhãn là “null” và những cây con nối với nút cha
này là những thành phần chung của nhiều giao tác được nén lại với nhau trên các
nhánh cây. Ngoài ra còn có một bảng tiêu đề các danh mục đơn phổ biến.
- Mỗi nút trong nhánh của cây có ba trường dữ liệu: mã danh mục, số đếm,
con trỏ liên kết. Mã danh mục tương ứng với danh mục mà nút này đại diện, số đếm là
số giao tác có chứa chung phần danh mục này và con trỏ liên kết dùng để liên kết 2
nút đại diện chung một mã danh mục ở hai nhánh cây khác nhau. Giá trị của trường
con trỏ liên kết có thể mang giá trị rỗng khi là nút cuối cùng trong chuỗi liên kết.
- Mỗi phần tử trong bảng tiêu đề các danh mục đơn phổ biến gồm 2 trường:
mã danh mục và con trỏ liên kết đến đầu nút của chuỗi liên kết các nút cùng đại diện
chung cho một danh mục.
2.2.3. Nhận xét
Những lợi ích có được khi sử dụng cấu trúc FP-tree:
P a g e | 10


- Với cấu trúc dữ liệu FP-tree, chỉ cần quan tâm đến những danh mục thực sự
có tham gia tạo nên các tập danh mục phổ biến. Vì vậy sẽ giúp giảm bớt những thao
tác thừa đối với những danh mục chắc chắn không tham gia vào xây dựng các tập
danh mục phổ biến. Việc xác định những danh mục phổ biến này chỉ cần thông qua
một lần duyệt toàn bộ CSDL.
- Toàn bộ những thông tin của CSDL cần cho quá trình khai thác đều được lưu
trữ trong cấu trúc cây với tỉ lệ nén cao. Điều này giúp cho quá trình khai thác không
phải duyệt đi duyệt lại trên toàn bộ CSDL lớn.
- Những giao tác chứa chung các danh mục có thể được gộp chung tối đa với
nhau bằng cách sắp xếp chúng theo thứ tự phổ biến và tích lũy vào trong một số đếm.
- Thuận lợi cho quá trình duyệt theo chiều sâu và theo mô hình chia để trị trên
cấu trúc FP-tree.
2.2.4. Thuật toán
Duyệt toàn bộ CSDL và xác định thứ tự của các danh mục giảm dần theo độ
phổ biến và được đưa vào trong _. Dựa vào ngưỡng phổ biến người dùng đưa
vào sẽ xác định những danh mục nào được tạo trong FP-tree và sắp xếp các danh mục
trong từng giao tác theo thứ tự trong _. Sau đó tạo FP-tree bằng cách lần lượt xét
từng giao tác trong CSDL đã được sắp xếp lại và loại bỏ những danh mục không đạt
ngưỡng phổ biến.
Hàm createFPtree()
Đầu vào: cơ sở dữ liệu các giao dịch  và ngưỡng phổ biến 
Đầu ra: cấu trúc dữ liệu FP-tree của CSDL các giao dịch .
Bước 1: Duyệt toàn bộ  và tính độ phổ biến của từng danh mục. Sau đó xác định
những danh mục có độ phổ biến lớn hơn ngưỡng phổ biến  và sắp xếp giảm
dần theo độ phổ biến vào trong _.
Bước 2: Tạo FP-tree chỉ có một nút gốc được gán nhãn là “null”, ký hiệu root.
Bước 3: Với mỗi giao tác trong  được thể hiện như sau: chọn và sắp xếp những
danh mục phổ biến theo thứ tự trong _. Giao dịch đang xét được ký hiệu như sau
[|] gồm 2 phần  là phần tử danh mục đầu tiên và  là phần danh mục còn
lại bên phải của giao tác (không kể những danh mục không thỏa ngưỡng phổ biến).

Gọi hàm _([|], ).
P a g e | 11

Hàm insert_tree([|], root).
Bước 1: Kiểm tra nếu tồn tại nút con được trỏ trực tiếp từ Node và được gán nhãn là
.    (hay .    = .   ) thì tăng chỉ số đếm
của nút con child lên 1. Nếu không tồn tại thì tạo một nút con mới, khởi tạo chỉ số
đếm của nút con này là 1; sau đó tạo các liên kết của nút con này với Node và ngược
lại, liên kết với nút có cùng item-name.
Bước 2: Kiểm tra nếu  chưa rỗng thì gọi hàm _(, ).
2.2.5. Ví dụ minh họa
Minh họa cho quá trình xây dựng FP-tree bằng cách xây dựng cây tương ứng
với CSDL trong bảng 1.1 để tìm tập phổ biến thỏa ngưỡng  = 2.
Với lần đầu tiên duyệt cơ sở dữ liêu: Độ phổ biến của các danh mục đơn
được xác định và sắp xếp theo thứ tự giảm dần.
STT
Mã danh mục
Độ phổ biến
1
C
6
2
W
5
3
A
4
4
D
4

5
T
4
Với lần thứ hai duyệt cơ sở dữ liêu: Thứ tự của các danh mục trong từng
giao tác được sắp xếp theo thứ tự đối với CSDL trong bảng 1.1.
STT
Nội dung thao tác
Nội dung thao tác sau khi
sắp xếp theo thứ tự mới
1
ACTW
CWAT
2
CDW
CWD
3
ACTW
CWAT
4
ACDW
CWAD
5
ACDTW
CWADT
6
CDT
CDT
Cấu trúc FP-tree ứng với minsup = 2:

P a g e | 12


C
6

W
5

A
4

D
4

T
4






2.3. Thuật toán FP-growth
2.3.1. Giới thiệu
Sau khi xây dựng được cấu trúc FP-tree cho toàn bộ CSDL chỉ gồm những
danh mục đơn thỏa ngưỡng phổ biến, cần phải có một cách duyệt cây để tìm ra những
tập phổ biến thỏa ngưỡng phổ biến minsup. Hiệu quả của quá trình khai thác phụ
thuộc nhiều vào phương pháp duyệt FP-tree này. Vì vậy, phương pháp duyệt phải
thỏa mãn những yêu cầu sau:
- Đảm bảo kết quả tập phổ biến là đầy đủ.
- Không tạo lại những tập phổ biến trùng nhau.

- Không tạo những tập phổ biến không thỏa mãn ngưỡng phổ biến minsup.
Nhận thấy các tính chất sau có trên cấu trúc FP-tree sẽ giúp cho quá trình phát
sinh tập phổ biến một cách hiệu quả hơn:
- Đối với bất kỳ tập phổ biến nào có chứa danh mục đơn  đều có thể xác định
được thông qua con trỏ liên kết của các nút cùng đại diện chung cho danh mục  này.
Chuỗi nút liên kết này bắt đầu bằng con trỏ của một phần tử trong bảng tiêu đề tập
danh mục đơn phổ biến tương ứng với danh mục đơn .
- Nếu chọn một nút bất kỳ trên cây làm nút để chiếu thì các nút cha của nút
đang chiếu đều có giá trị tích lũy bằng với giá trị tích lũy của nút đang chiếu.
- Giả sử một tập danh mục được chọn  có độ phổ biến thỏa ngưỡng ,
vậy để bổ sung thêm danh mục mới  vào tập phổ biến này thì danh mục mới thêm
W:5
C:6
D:1
D:1
A:4
T:1
D:2
T:2
T:1
Root
P a g e | 13

vào phải có độ phổ biến thỏa ngưỡng  trong ngữ cảnh các giao tác có chứa tập
danh mục . Và độ phổ biến của tập danh mục mới (  ) cũng chính là độ phổ
biến của danh mục mới này trong ngữ cảnh các giao tác có chứa tập danh mục .
- Nếu FP-tree  chỉ có một đường đơn  thì toàn bộ các tập phổ biến được
phát sinh từ  đều là những tổ hợp giữa các phần tử thuộc đường đơn  và độ phổ
biến của từng tổ hợp chính là giá trị tích lũy nhỏ nhất của những phần tử tham gia vào
trong tổ hợp. Phương pháp duyệt cây của thuật toán FPgrowth là duyệt theo chiều sâu

và dựa trên mô hình chia để trị vì vậy hoàn toàn đảm bảo được ba yêu cầu của một
phương pháp duyệt hiệu quả.
2.3.2. Thuật toán
Hàm gen-FreqItemsets()
Đầu vào: CSDL các giao tác  và ngưỡng phổ biến .
Đầu ra: Tập hợp các tập phổ biến thỏa ngưỡng phổ biến .
Bước 1: 

= createFPtree(, ).
Bước 2: FPgrowth(

).
Hàm FPgrowth(T, prefix, ):
Bước 1: Nếu FP-tree  chỉ có một nhánh đơn  thì chỉ cần tạo ra những tập
phổ biến kết hợp giữa prefix và các tổ hợp của những danh mục trong  và độ phổ
biến bằng với số đếm nhỏ nhất của những nút tham gia vào tổ hợp. Sau khi phát sinh
xong, thì kết thúc hàm.
Bước 2: Ngược lại, lần lượt xét từng danh mục  trong bảng tiêu đề các tập
phổ biến đơn của FP-tree  và phát sinh tập phổ biến  = (  ) có độ
phổ biến bằng với ().
Bước 2.1: Duyệt FP-tree  lần thứ nhất từ chuỗi các nút đại diện cho danh
mục  bắt đầu bằng con trỏ liên kết của phần tử  trong bảng tiêu đề các tập phổ biến
đơn và hướng lên nút gốc. Sau khi duyệt xong, thì có được bảng tiêu đề tập phổ biến
của , ký hiệu là 

.
P a g e | 14

Bước 2.2: Duyệt FP-tree  lần thứ hai từ chuỗi các nút đại diện cho danh mục
 bắt đầu bằng con trỏ liên kết của phần tử  trong bảng tiêu đề các tập phổ biến đơn

và hướng lên nút gốc. Sau khi duyệt xong mỗi nhánh, dùng các nhánh này để xây
dựng FP-tree cục bộ của tập phổ biến , ký hiệu là 

.
Bước 2.3: Nếu 

  thì gọi hàm FPgrowth(

).
2.3.3. Ví dụ minh họa
Minh họa cho quá trình duyệt và tìm tập phổ biến trên cấu trúc dữ liệu FP-tree
bằng cách thực hiện thuật toán FPgrowth với CSDL trong bảng 1.1 để phát sinh
những tập phổ biến thỏa ngưỡng  = 2.
Cấu trúc FP-tree toàn cục:
C
6

W
5

A
4

D
4

T
4







2.4. Thuật toán FP-growth*
2.4.1. Giới thiệu
Công việc chính trong phương pháp FP-growth là việc duyệt FP-tree và xây
dựng các FP-tree cục bộ mới sau khi FP-tree toàn cục được xây dựng từ CSDL gốc.
Kết qủa thực nghiệm cho thấy khoảng 80% thời gian của CPU được dùng để duyệt
các FP-tree cục bộ. Vì thế để có thể tăng tốc cho thuật toán, cần phải cải tiến theo
hướng giảm thời gian duyệt cây. Điều này có thể đạt được bằng việc sử dụng một cấu
trúc dữ liệu bổ sung đơn giản.
Với mỗi danh mục  trong phần bảng tiêu đề của FP-tree cục bộ 

, hai lần
duyệt 

được yêu cầu để xây dựng FP-tree cục bộ 
{}
mới. Lần duyệt đầu tiên tìm
W:5
ff5
C:6
D:1
D:1
A:4
T:1
D:2
T:2
T:1

root
P a g e | 15

ra tất cả danh mục phổ biến trong mẫu điều kiện cơ sở của   {} và khởi tạo FP-tree

{}
bằng việc xây dựng bảng tiêu đề của nó 
{}
. Lần duyệt thứ hai xây dựng FP-
tree 
{}
mới hoàn chỉnh. Có thể bỏ qua lần duyệt đầu của 

bằng việc xây dựng
mảng 

trong khi xây dựng 

.
Ví dụ tiếp theo sẽ giải thích ý tưởng này. Trong bảng 1.1, giả sử rằng độ hỗ trợ
tối thiểu  = 2. Sau lần duyệt đầu tiên CSDL gốc, sắp xếp thứ tự các danh
mục phổ biến như sau: C:6, W:5, A:4, D:4, T:4. Thứ tự sắp xếp này cũng là thứ tự sắp
xếp của các danh mục trong bảng tiêu đề của 

. Trong lần duyệt thứ hai của CSDL,
xây dựng 

và một mảng 

. Mảng này sẽ lưu số lần đếm của tập 2 danh mục. Lúc

đầu, tất cả các ô trong mảng được khởi tạo là 0.
C
W
A
T
4



3
5


2
4
4

2
4
3
3


C
W
A
2


1

3

1
3
3

D C W A
D C W
(a) 


(b) 
{}

Trong 

, mỗi ô là một số đếm của tập 2 danh mục. Ô 

[C,W] là số đếm
của tập CW, ô 

[C,A] là số đếm của tập CA và tương tự như thế. Trong lần duyệt
số hai xây dựng 

, các danh mục trong  được sắp xếp căn cứ theo thứ tự trong bảng
tiêu đề của 

. Khi chèn  vào trong 

tại cùng thời điểm 


[C,W] được tăng 1 nếu
CW được chứa trong . Lấy ví dụ, đối với giao tác đầu tiên là ACTW được lấy ra và
sắp thứ tự là C, W, A, T. Tập danh mục này được chèn vào trong 

như thường và tại
cùng thời điểm này thì 

[C,W], 

[C,A], 

[C,T], 

[W,A], 

[W,T], 

[A,T]
tất cả tăng lên 1. Sau lần duyệt thứ hai, mảng 

lưu số đếm của tất cả các cặp danh
mục phổ biến như nhìn thấy trong bảng (a).
Bước kế tiếp, phương pháp FP-growth* được gọi để khai thác tập phổ biến
đối với mỗi danh mục trong bảng tiêu đề của 

. Tuy nhiên, đối với mỗi danh mục 
ngoại trừ việc duyệt 

theo danh sách liên kết bắt đầu tại  để lấy tất cả tập phổ biến

trong cây cục bộ của danh mục i, 

đưa ra tất cả tập phổ biến cho . Lấy ví dụ, bằng
việc kiểm tra dòng thứ 4 trong bảng cho 

thì các danh mục phổ biến C, W, A trong
cây cục bộ của danh mục T có thể thu được. Sắp xếp chúng căn cứ theo số đếm của
P a g e | 16

chúng là: C, W, A. Vì thế, đối với mỗi danh mục i trong 

mảng 

làm cho lần
duyệt đầu tiên của 

là không cần thiết và 
{}
có thể được khởi tạo trực tiếp từ 

.
Đối với trường hợp tương tự, từ FP-tree cục bộ 

khi xây dựng FP-tree cục
bộ mới 
{}
với mỗi danh mục  thì một mảng 
{}
được tính. Trong suốt quá trình
xây dựng FP-tree mới 

{}
, mảng 
{}
được cập nhật. Lấy ví dụ trong hình, các ô
của mảng 
{}
được thể hiện như trong bảng (b). Mảng này được xây dựng như sau:
từ mảng 

, cho thấy rằng các danh mục phổ biến trong cây cục bộ của danh mục {T}
thì theo thứ tự C, W, A. Con trỏ liên kết của T từ nút đầu tiên lấy CWA: 3 vì thế nó
được chèn như (C: 3, W: 3, A: 3) vào trong FP-tree mới 
{}
. Cùng lúc đó, 
{}
[C,W],

{}
[C,A] và 
{}
[W,A] được tăng thêm bằng 3. Và quá trình này tiếp diễn tương ứng
đến khi xây dựng xong cây 
{}
và mảng 
{}
đã sẵn sàng để đƣợc sử dụng cho việc
xây dựng FP-tree trong mức tiếp theo. Việc xây dựng các mảng và FP-tree tiếp diễn
đến khi phương pháp FP-growth* dừng.
Dựa vào ý tưởng được thảo luận như trên, định nghĩa một biến của cấu trúc
FP-tree ngoài những danh mục đã được biết trước thì một FP-tree có một thuộc tính là

mảng để lưu mảng tương ứng.
Phân tích kích thước của một mảng. Giả sử số lượng của danh mục phổ biến
trong FP-tree đầu tiên là  thì kích thước của mảng liên quan là

 = (  1
1
=1
)/
2. Từ đây, có thể thấy rằng FP-tree cục bộ được xây dựng từ FP-tree ban đầu có ít
danh mục phổ biến hơn vì thế kích thước của mảng liên quan giảm. Tại bất kỳ thời
điểm nào vì một mảng là một phần của một FP-tree nên khi không gian cho FP-tree
được giải phóng thì không gian cho mảng củng được giải phóng.
2.4.2. Thuật toán
Diễn giải hàm FPgrowth*():
Bước 1: Nếu FP-tree chỉ có một nhánh đơn P thì chỉ cần tạo ra những tập phổ
biến kết hợp giữa  và các tổ hợp của những danh mục trong P và độ phổ biến
bằng với số đếm nhỏ nhất của những nút tham gia vào tổ hợp. Sau khi phát sinh xong,
thì kết thúc hàm.
P a g e | 17

Bước 2: Ngược lại, lần lượt xét từng danh mục  trong bảng tiêu đề các tập
phổ biến đơn của FP-tree và tạo ra tập phổ biến  = (  ) có độ phổ
biến là ().
Bước 2.1: có được bảng tiêu đề tập phổ biến của prefix, ký hiệu là 
prefix
, từ
mảng 
prefix i
theo dòng hay cột của danh mục .
Bước 2.2: Duyệt FP-tree lần thứ nhất từ chuỗi các nút đại diện cho danh mục 

bắt đầu bằng con trỏ liên kết trong bảng tiêu đề các tập phổ biến đơn và hướng lên nút
gốc. Sau khi duyệt xong mỗi nhánh, dùng các nhánh này để xây dựng cây cục bộ của
tập phổ biến , ký hiệu là 
prefix
.
Bước 2.3: Nếu 
prefix
  thì FPgrowth*(
prefix
).
Cài đặt hàm FPgrowth*():
Input: Một FP-tree T.
Output: Tập hợp đầy đủ các tập phổ biến tƣơng ứng của FP-tree T.
Procedure FP-growth*(T)
1. if  là cây đơn nhánh  then
2. for each nhánh con  của 
3. output   .base với số đếm count = min count của các nút trong Y.
4. else
5. for each  in T.header
6. output Y = T.base  {i} với số đếm i.count
7. if T.array is not NULL
8. Xây dựng bảng tiêu đề của tập  là 

từ T.array;
9. else
10. Xây dựng bảng tiêu đề của tập  là 

từ FP-tree ;
11. Xây dựng FP-tree cục bộ của tập  là 


và mảng của nó là 

;
12. if 

≠  gọi đệ quy hàm FPgrowth*(

).
2.4.3. Ví dụ minh họa
2.4.4. Nhận xét
Kỹ thuật mảng làm việc rất tốt đặc biệt khi tập dữ liệu mỏng. FP-tree cho tập
dữ liệu mỏng và các FP-tree được xây dựng sẽ lớn và nhiều nhánh, liên quan đến sự
P a g e | 18

thật là chúng không phải chia sẻ nhiều tiêu đề thông dụng. Các mảng lưu thời gian
duyệt cho tất cả các danh mục và FP-tree mức tiếp theo có thể được khởi tạo trực tiếp.
Trong trường hợp này, thời gian được tiết kiệm bằng việc loại bỏ lần duyệt đầu tiên
thì tốt hơn nhiều thời gian cần thiết để tính trong mảng liên hệ.
Tuy nhiên, khi một tập dữ liệu là dày, FP-tree thì gọn hơn. Đối với mỗi danh
mục trong một FP-tree nén, việc duyệt thì rất nhanh, trong khi việc đếm trong mảng
liên hệ có thể tốn nhiều thời gian hơn. Trong trường hợp này, việc gom đếm có thể
không là một ý kiến hay.
Đối với FP-tree của tập dữ liệu mỏng, mức đầu tiên của FP-tree thì luôn luôn
là FP-tree cục bộ. Vì thế có thể mong đợi thời gian duyệt đối với các danh mục đầu
tiên trong bảng tiêu đề sẽ ngắn, vì thế các ô cho những danh mục đầu tiên này là
không cần thiết trong mảng.
Chú ý rằng tập dữ liệu thay đổi theo độ sâu của việc duyệt. Mục đích để ước
lượng một tập dữ liệu là mỏng hay dày, trong quá trình xây dựng mỗi FP-tree tính số
lượng các nút trong mỗi mức của cây. Dựa trên kinh nghiệm thực tế, cho thấy rằng
nếu 1/4 phần trên của cây lưu nhỏ hơn 15% của tổng số lượng các nút thì thường liên

hệ với tập dữ liệu dày. Ngược lại, tập dữ liệu có thể là mỏng.
Nếu tập dữ liệu xuất hiện là dày, không tính mảng cho mức tiếp theo của FP-
tree. Ngược lại, tính mảng cho mỗi FP-tree trong mức tiếp theo nhưng các ô cho nhiều
danh mục đầu tiên trong bảng tiêu đề của nó không được tạo lập.
3. Các thuật toán khai thác luật kết hợp truyền thống
3.1. Sinh luật kết hợp dựa vào quan hệ cha con
Dựa vào tính chất của tập phổ biến, ta có tất cả các tập con của itemset X đều
xuất hiện trong tập phổ biến nên chỉ cần tìm tập con của X trong tập phổ biến. Mặt
khác, nếu sắp xếp tập tập phổ biến theo chiều tăng dần của k-itemset thì rõ ràng tập
con của X chỉ xuất hiện trước X. Như vậy ta có thuật toán để sinh tất cả các luật kết
hợp không trùng nhau được trình bày bên dưới.
3.1.1. Thuật toán sinh luật từ tập phổ biến
Thuật toán trong bên dưới mô tả quá trình sinh tập luật từ danh sách các tập
phổ biến. Thuật toán đầu tiên sắp xếp các tập phổ biến theo chiều tăng dần của độ dài
P a g e | 19

(dòng 1). Sau đó thuật toán xét mỗi tập phổ biến  (

) với các phần tử (

) đứng
trước nó (dòng 2 – 4), nếu X là con của Y (dòng 5) thì tính độ tin cậy của luật sinh ra
từ X đến Y (dòng 6), nếu độ tin cậy của luật thỏa ngưỡng độ tin cậy tối thiểu
() thì thêm luật    \  vào tập luật (dòng 7 – 8).
Đầu vào: FI chứa tất cả các tập phổ biến của CSDL và ngưỡng tin cậy minConf
Kết quả: tập tất cả các luật kết hợp thỏa minConf
EXTRACT_AR(FI, minConf)
1. SORT_ITEMSET(FI) // sắp xếp tập FI tăng theo k-itemset
2. AR = 
3. for earch 


  vi




> 1 
4. for earch 

  vi j >  
5. if 

 

then // 

con 

theo nghĩa tập hợp con
6.  = (

)/(

)
7. if    then
8. AR = AR  {

 

\ 


(




, )}
9. return AR
3.1.2. Minh họa
Với  = 3 và  = 80%. Ta có tập luật kết quả được
trình bày trong bảng sau.
STT
Tập phổ
biến

Các tập phổ
biến con
Các luật có thể có
Các luật thỏa
minConf
1
D
4

Các item này không có tập con nên không
sinh ra luật nào.
2
T
4


3
A
4

4
W
5

5
C
6

6
DW
3
D, W

3,3/4




, 
3,3/5







7
CD
4
C, D

4,4/4




, 
4,4/6






4,4/4





8
AT
3
A, T

3,3/4





, 
3,3/4






9
TW
3
T, W

3,3/4




, 
3,3/5







10
CT
4
C, T

4,4/6




, 
4,4/4






4,4/4





11
AW
4
A, W

4,4/4





, 
4,4/5






4,4/4






4,4/5





12
AC
4
A, C


4,4/4




, 
4,4/5






4,4/4





P a g e | 20

13
CW
5
C, W

5,5/6





, 
5,5/5






5,5/6






5,5/5





14
CDW
3
C, D, W,
CD, CW,
DW

3,3/6





, 
3,3/4




,

3,3/5




, 
3,3/4




,

3,3/5





, 
3,3/3






3,3/3





15
ATW
3
A, T, W,
AT, AW,
TW

3,3/4




, 
3,3/4





,

3,3/5




, 
3,3/3




,

3,3/4




, 
3,3/3







3,3/3




,

3,3/3





16
ACT
3
A, C, T,
AC, AT, CT

3,3/4




, 
3,3/6





,

3,3/4




, 
3,3/4




,

3,3/3




, 
3,3/4






3,3/3






17
CTW
3
C, T, W,
CT, CW,
TW

3,3/6




, 
3,3/4




,

3,3/5




, 

3,3/4




,

3,3/5




, 
3,3/3






3,3/3





18
ACW
4
A, C, W,

AC, AW,
CW

4,4/4




, 
4,4/6




,

4,4/5




, 
4,4/4




,

4,4/4





, 
4,4/5






4,4/4




,

4,4/5




,

4,4/4





,

4,4/4




,

4,4/5





19
ACTW
3
A, C, T, W,
AC, AT,
AW, CT,
CW, TW,
ACT,
ACW,
ATW, CTW

3,3/4





, 
3,3/6




,

3,3/4




, 
3,3/5




,

3,3/4




, 
3,3/3





,

3,3/4




, 
3,3/4




,

3,3/5




, 
3,3/3





,

3,3/3




, 
3,3/4




,

3,3/3




, 
3,3/3






3,3/3





,

3,3/3




,

3,3/3




,

3,3/3




,

3,3/3






Có tất cả 60 luật trong đó có 22 luật thỏa minConf = 80%.
3.2. Sinh luật kết hợp dựa vào bảng băm
Thuật toán xét quan hệ cha – con ở trên tốn nhiều thời gian khi số lượng tập
phổ biến lớn. Gọi  là số tập phổ biến thì thuật toán phải xét mỗi tập phổ biến với tất
cả các tập phổ biến đứng sau nó. Vì vậy, độ phức tạp của thuật toán sẽ là (2)
(không xét độ phức tạp của việc kiểm tra 

có là con của 

hay không). Một cách tiếp
cận đơn giản hơn là dựa vào tính chất apriori: Mọi tập con của một tập phổ biến cũng
phổ biến. Vì vậy, với mỗi tập phổ biến , chúng ta tìm tất cả các tập con khác rỗng 
P a g e | 21

của nó và sinh luật    \  nếu độ tin cậy của luật này thỏa . Vấn đề
đặt ra là làm thế nào xác định được độ phổ biến của ? Chúng ta có thể sử dụng bảng
băm để giải quyết vấn đề này. Cụ thể như sau: Khi khai thác các tập phổ biến, chúng
ta băm các tập này với khóa là tổng các item có trong tập phổ biến tương ứng và vì
vậy, có thể dễ dàng tìm được độ phổ biến của các tập phổ biến với độ phức tạp nhỏ.
3.2.1. Thuật toán
Ý tưởng chính của thuật toán như sau: Với mỗi tập phổ biến , gọi thủ tục
GENERATE_AR_HASH(Y). Thủ tục này xác định tất cả các tập con khác rỗng của
 (dòng 5) và chứa vào tập hợp , tất cả các itemset thuộc  đều là tập phổ biến
theo tính chất apriori. Sau đó, với mỗi tập phổ biến   , thuật toán xác định độ
phổ biến của nó dựa vào bảng băm với khóa là tổng các khóa của các item thuộc X
(dòng 7). Kế tiếp, nó tính độ tin cậy của luật (dòng 8), nếu độ tin cậy thỏa
 thì bổ sung luật    \  vào tập luật (dòng 9-10). Cuối cùng, thuật toán
trả về tập luật được sinh ra (dòng 4).

Đầu vào: FI chứa tất cả các tập phổ biến của CSDL và ngưỡng tin cậy minConf
Kết quả: tập tất cả các luật kết hợp thỏa minConf
EXTRACT_AR_HASH(FI, minConf)
1. AR = 
2. for each   FI với || > 1 do
3. GENERATE_AR_HASH()
4. return AR
GENERATE_AR_HASH()
5. SS = all subsets of  // SS không chứa tập rỗng và 
6. for each    do
7. Get the () based on hash table with key is sum of items in 
8. conf = (

)/(

)
9. if    then
10. AR = AR  {   \  (



, )}
3.2.2. Minh họa
Xét các tập phổ biến đã được khai thác trong bảng sau với  = 80%,
ta có các bảng băm và khóa của các giá trị tương ứng được trình bày trong bảng sau.
Trong đó: A được ánh xạ là 1, C là 2, D là 3, T là 4 và W là 5.
P a g e | 22




Xét tập phổ biến ACW với các tập con là {A, C, W, AC, AW, CW}:
- Xét A: Do khóa của A là 1 và |A| = 1 nên tra trên bảng băm số 1 với khóa là
1 ta được độ phổ biến là 4 (dòng có STT = 3). Do conf(  ) = 4/4, luật này có
   nên được thêm vào AR.
- Xét C: Do khóa của C là 2 và |C| = 1 nên tra trên bảng băm số 1 với khóa là 2
ta được độ phổ biến là 6 (dòng có STT = 5). Do conf(  ) = 4/6, luật này có
conf < minConf nên không thêm luật này vào AR.
- Xét W: Do khóa của W là 5 và |W| = 1 nên tra trên bảng băm số 1 với khóa
là 5 ta được độ phổ biến là 5 (dòng có STT = 4). Do conf(  ) = 4/5, luật này
có    nên được thêm vào AR.
- Xét AC: Do khóa của AC là 3 và |AC| = 2 nên tra trên bảng băm số 2 với
khóa là 3 ta được độ phổ biến là 4 (dòng có STT = 12). Vì vậy, conf(  ) =
4/4, luật này có    nên thêm luật này vào AR.
- Xét AW: Do khóa của AW là 6 và |AW| = 2 nên tra trên bảng băm số 2 với
khóa là 6 ta được độ phổ biến là 4 (dòng có STT = 11). Vì vậy, conf(  ) =
4/4, luật này có    nên thêm luật này vào AR.
Bảng băm
STT
Tập phổ biến

Khóa
1
1
D
4
3
2
T
4
4

3
A
4
1
4
W
5
5
5
C
6
2
2
6
DW
3
8
7
CD
4
5
8
AT
3
5
9
TW
3
9
10

CT
4
6
11
AW
4
6
12
AC
4
3
13
CW
5
7
3
14
CDW
3
10
15
ATW
3
10
16
ACT
3
7
17
CTW

3
11
18
ACW
4
8
4
19
ACTW
3
12
P a g e | 23

- Xét CW: Do khóa của CW là 7 và |CW| = 2 nên tra trên bảng băm số 2 với
khóa là 6 ta được độ phổ biến là 5 (dòng có STT = 13). Vì vậy, conf(  ) = 4/5,
luật này có    nên thêm luật này vào AR.
Xét tương tự cho các tập phổ biến còn lại.
4. Thực nghiệm
Người dùng nhập các giao dịch (giữa các giao dịch không có bất kỳ ký tự
nào), các items có trong giao dịch, minSup và minConf như hình vẽ. Sau khi nhập
xong, người dùng chọn nút “Process” để tiến hành tính toán. Sau khi tính toán xong,
chương trình sẽ hiển thị kết quả ngay bên dưới.


P a g e | 24

Kết luận
Bài toán tìm các luật kết hợp (association rule) là bài toán khó, có độ phức tạp
cao. Khi ứng dụng trong thực tế với cơ sở dữ liệu lớn (như dữ liệu bán hàng của siêu
thị), giải thuật gốc áp dụng nguyên lý Apriori vẫn còn một số hạn chế không cho ra

lời giải trong một thời gian và không gian nhớ trong hợp lý.
Bài thu hoạch chỉ dừng lại ở mức trình bày và xây dựng chương trình demo
của một số thuật toán cơ bản để khai thác tập phổ biến và luật kết hợp. Đã có rất nhiều
công trình nghiên cứu thành công trong bài toán khai thác khai thác tập phổ biến và
luật kết hợp. Do đó, mở ra rất nhiều thách thức và cơ hội trong lĩnh vực khai thác dữ
liệu.
Ngoài bài toán khai thác tập phổ biến và luật kết hợp đã trình bày ở trên, thì
học viên đang quan tâm đến bài toán khai thác khai phá chuỗi (sequence mining) ứng
dụng trong Semantic Web để xây dựng các hệ thống khuyến nghị (recommender
systems).
Học viên Lê Cung Tưởng xin chân thành cảm ơn GS. TSKH Hoàng Văn Kiếm
đã tận tình truyền đạt các kiến thức bổ ích trong chuyên đề Công nghệ Tri thức và
Ứng dụng.
02/06/2012
Lê Cung Tưởng


×