Tải bản đầy đủ (.doc) (23 trang)

TÌM HIỂU VÀ CÀI ĐẶT THUẬT TOÁN PHÁT SINH TẬP PHỔ BIẾN SỬ DỤNG FPGROWTH

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 (785.71 KB, 23 trang )

1
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
BÁO CÁO THU HOẠCH
MÔN KHAI PHÁ DỮ LIỆU VÀ KHO DỮ LIỆU
ĐỀ TÀI:
TÌM HIỂU VÀ CÀI ĐẶT THUẬT TOÁN
PHÁT SINH TẬP PHỔ BIẾN SỬ DỤNG
FP-GROWTH
Giảng viên: PGS.TS. ĐỖ PHÚC
Học viên: Đỗ Văn Cang
Mã số: CH1001004
Lớp: Cao học CNTTQM – Khóa 5
ThJng 09 năm 2011
2
TÌM HIỂU VÀ CÀI ĐẶT THUẬT
TOÁN PHÁT SINH TẬP PHỔ
BIẾN SỬ DỤNG FP-GROWTH
3
GIỚI THIỆU

Khai khoáng dữ liệu (Data mining) thực hiện chất lọc và tìm ra trong tập muôn
vàng thông tin trong cơ sở dữ liệu để tìm ra những tri thức đóng góp vai trò quang
trọng cho việc phân tích và ra quyết định thông minh nhất giúp nhà sản xuất và
kinh doanh giảm thiểu chi phí và gia tăng lợi nhuận trong tương lai. Một trong
những vấn đề quang trọng trong data mining là tìm ra quy luật giữa các thông tin
đó để biến chúng thành những tri thức, một trong những cách tìm ra các quy luật
này là tìm luật kết hợp – association rules. Có rất nhiều thuật toán tìm luật kết
hợp như apriori, apriori cải tiến, sử dụng hash… Các thuật toán này đóng góp vai
trò rất quang trọng cho quá trình tìm kiếm luật kết hợp. Trong hầu hết các bài toán
tìm luật kết hợp thì công đoạn phát sinh tập phổ biến là làm hao tốn nhiều tài


nguyên của máy tính nhất. Do đó để cải tiến bài toán theo cách tốt hơn, trước tiên
chúng ra hãy đặt vấn đề làm giảm chi phí cho công đoạn tìm tập phổ biến này.
Trong bài thu hoạch này chúng ta sẽ “TÌM HIỂU VÀ CÀI ĐẶT THUẬT
TOÁN PHÁT SINH TẬP PHỔ BIẾN SỬ DỤNG FP-GROWTH”. Có thể nhận
xét rằng hầu hết các thuật toán liên quan đến Tree thường cho kết quả rất tuyệt
vời, bởi vì bản thân tree nói lên phương pháp thực hiện khác thường so với các
phương pháp thông thường, đó là phân hoạch thông tin, chia để trị.
Em rất chân thành cám ơn thầy Đỗ Phúc, dạy môn học này đã cho em biết
thêm các kiến thức về khái niệm, ý nghĩa, các tài liệu và ứng dụng của môn học
này.
Trong phạm vi một bài tiểu luận, em chỉ tập trung chủ yếu vào giải thuật Fp-
Growth dựa trên Fp-Tree để tìm tập phổ biến chứ không tìm hiểu toàn bộ bài toán
luật kết hợp.
Tất cả các source codes download tại địa chỉ
/>Ngày 14 tháng 09 năm 2011
Đỗ Văn Cang
4
Mục Lục


 ! "#$
%%&'()*+
%,  (/0(1
% (2" "1
 (3*/4567" 89
,%567"$$9
,, (567" 8%
:.;<=)* (%9
>#,,
5

Nội Dung

I/ Luật kết hợp – asscociation rules
Giai đọan khám phá trong tiến trình KDD là giai đọan khó khăn và quan
trọng nhất. Data mining không là kỹ thuật đơn giản, với ý tưởng có nhiều tri thức
tiềm ẩn bên trong dữ liệu hơn là thể hiện ra bên ngoài. Với bất kỳ ứng dụng kỹ
thuật nào vào việc phát hiện ra tiềm ẩn thì kỹ thuật đó có ích, do đó các kỹ thuật
data mining là một nhóm hỗn hợp. Có một số bài toán điển hình vế data mining
sau :
• Bài toán khám phá luật kết hợp (association rules).
• Bài toán phân lọai(classification) dữ liệu.
• Bài toán gom nhóm(clustering) dữ liệu.
• Bài toán lập mô hình.
• Bài toán dự báo.
• ….
Trong đó luật kết hợp là tri thức quan trọng nhất tiềm ẩn trong CSDL.
Luật kết hợp là một trong những kỹ thuật được nghiên cứu tốt nhất cũng
như quan trọng nhất của khai mỏ dữ liệu, nó được giới thiệu lần đầu tiên vào năm
1993. Mục đích của luật kết hợp là rút ra những mối liên quan thú vị, những tập
mẫu phỏ biến, những cấu trúc kết hợp hay cấu trúc ngẫu nhiên giữa những tập hợp
Item trong các transaction database hoặc trong những kho dữ liệu. Ví dụ : Vi
khuẩn Staphylococcus aureus có trong chất dịch khí quản của bệnh nhân sẽ kháng
thuốc (lờn thuốc) Oxacillin,Clindamycin,Erythromycin ở tháng thứ 4. Với kết luận
này sẽ giúp cho viêc kiểm soát nhiễm trùng bệnh viện tốt hơn.
1.1/ Một số khJi niệm:
• Gọi I={i
1
,i
2
,…,i

n
} là tập các trường gọi là items.
• D là tập giao tác, ở đó mỗi giao tác T
i
là tập các item T
i
⊆ I.
• Ta gọi 1 giao tác T chứa X nếu X ⊆ T (Với X ⊆ I)
• Mỗi giao tác T
i
có chỉ danh là TID.
• Luật kết hợp là một mối quan hệ điều kiện giữa hai tập các hạng mục dữ
liệu X và Y theo dạng sau : Nếu X thì Y, và ký hiệu là X=>Y.
Chúng ta có luật kết hợp : X=>Y, nếu : X ⊂ I, Y ⊂ I và X ∩ Y =∅
Có hai đơn vị đo cơ bản quan trọng cho luật kết hợp là : support là s và
confidence là c.
• Độ tác động (Support): Thể hiện phạm vi ảnh hưởng của luật trên tòan
bộ CSDL.
Luật X=>Y có độ support là s nếu s% số giao tác trong D có chứa
X∪Y. Hay là :
6
Support(X=>Y) = Support(X ∪ Y)
= Card(X ∪ Y) / Card(D)% =s%
Với :
Card(X ∪ Y) tập các giao tác trên CSDL có chứa cả vế trái
lẫn vế phải của luật.
Card(D) : Tập tất cả các dòng trên CSDL.
• Độ tin cậy (Confidence) : Thể hiện độ chính xác, tính đúng đắn, hay khả
năng tin cậy của luật trong phạm vi ảnh hưởng của luật(xác định bởi độ
đo support).

Luật X=>Y có độ tin cậy là c (confidence) nếu có c% số giao tác
trong D chứa X ∪ Y so với tổng số giao tác có trong D chỉ chứa X. Khi đó
ta có :
Confidence(X=>Y) = Card(X ∪ Y) / Card(X)% = c%
Với :
Card(X ∪ Y) tập các giao tác trên CSDL có chứa cả vế trái
lẫn vế phải của luật.
Card(X) : Tổng số dòng chứa vế trái của luật trên CSDL.
 Tóm lại tìm luật kết hợp là đi tìm những luật X=>Y trong CDSL sao
cho luật thỏa những giới hạn tối thiểu support và confidence cho trước.
7
1.2/ Bài toJn tổng quJt
Bài toán tìm luật kết hợp tổng quát ta có thể thực hiện các bước cơ bản sau
Bước 1: Biến đổi CSDL thành các số
nguyên
Phân chia các giá trị của thuột tính thành
những khoảng và ứng với mỗi khoảng
liên kết nó với một giá trị nguyên dương
để dễ dàng thao tác trên các thuột tính.
Bước 2: Tìm tập phổ biến
Dựa vào dữ liệu đầu vào là tất cả các
giao tác (transactions) chứa các giá trị đã
thực hiện ở bước 1 (ví dụ danh sách các
hóa đơn chứa các mặt hàng các hóa đơn
đó) và minsupport cho trước để tìm ra
tập phổ biến lớn nhất.
Tập phổ biến là tập một hoặc nhiều danh
sách các giá trị mà có mức độ xuất hiện
đáng kể ( >= minsupport) trong các giao
tác.

Bước 3: Tìm tập kết hợp
Ứng với mỗi tập phổ biến tìm được ở
trên thực hiện việc tìm luật như sau:
• Tìm tất cả các luật R: X=>Y sao cho :
Support(R) ≥ minsup và confidence(R) ≥ minconf.
o Bước 1 : Liệt kê tất cả các tập con P của I : | P | > I.
o Bước 2 : Với mỗi tập con P, liệt kê tất cả các tập con X khác
trống của P ( X khác P ). Luật R hình thành bởi :
R : X => P\X
• Chọn các luật R thỏa ngưỡng minsup và minconf.
1.3/ Thuật toJn Apriori
Trong bài tổng quát, có thể thấy rằng bước 2/ Tìm tập phổ biến là tốn kém
nhiều chi phí nhất trong những Cơ sở dữ liệu lớn trong thực tế. Thuật toán
Apriori và một số cải tiến của nó cũng có thể nói góp phần giảm chi phí
đáng kể.
Dưới đây là phần trình bày thuật toán tìm Tập Phổ Biến tổng quát cho trong
thuật toán Apriori
8
Bước 1/ Duyệt tất cả
các giao tác
(transactions) và dựa
vào ngưỡng
minsupport để tìm ra
tập ban đầu.
Bước 2/ Giả sử tại
bước k-1, đã có
được tập phổ biến F-
1 khác rỗng. Tại
bước k, phát sinh tập
ứng viên

Ck(Candidate k-
itemset) dựa vào tổ
hợp các phần tử
trong tập F-1. Tập
kết quả chứa các giá
trị không bị trùng
lắp.
Bước 3/ Tiếp tục
cho bước k, đã có
trước tập ứng viên
Ck. Duyệt qua tất cả
các giao tác (trong
CSDL) để cập nhật
giá trị support cho
các phần tử trong
Ck, đồng thời so
sánh với minsupport
để chọn ra tập phổ
biến Fk.
Bước 4/ Nếu tập phát sinh
Fk khác rỗng thì quay lại thực hiện các bước 2 và 3 cho bước k+1…
Nếu tập phát sinh Fk là rỗng, thì tập phổ biến kết quả sẽ là tập cuối cùng trước đó.
Kết thúc quá trình.
Các thuật toán cải tiến như AprioriTID cũng dựa trên các bước cơ bản trên, nhưng
để hạn chế truy xuất vào CSDL và tăng tốc độ, thuật toán này đã thực hiện công
việc : tại mỗi bước k, ghi lại danh sách các ItemSet cho tất cả các giao tác còn
đang xét. Giá trị ghi này gọi là Set-of-ItemSets. Nhằm mục đích sử dụng cho tính
toán giá trị support ở bước sau.
9
Ngoài ra, có thể kết hợp bộ nhớ cache sử dụng dạng bit array để lưu trữ lại tất cả

các giao tác.
II/Thuật toJn tìm tập phổ biến FP-Growth
Như đã đề cập phần trên, trong thuật toán Apriori bước tìm tìm tập phổ biến là tốn
kém rất nhiều chi phí và nặng nề nhất. Do đó phải có một cách nào đó tổ chức lại
cấu trúc của các giá trị ( hạng mục – item) và các giao tác (transactions) phải tận
dụng được cấu trúc đó để tìm các giá trị support đó một cách trực tiếp từ cấu trúc
trên mà không cần phải truy xuất vào CSDL.
Một trong những cấu trúc tổ chức thực hiện để giải quyết vấn đề trên là cấu trúc
Frequent Pattern Tree (FP-Tree).
2.1/ FP-Tree
Cấu trúc FP-Tree được lưu trữ dựa trên các khái niệm sau
• Nút gốc có nhãn “null”
• Mỗi nút còn lại chứa các thông tin: item-name, count, node-link
o Item-name: Tên của phần tử đại diện cho nút
o Count: Số giao tác chứa mẫu bao gồm các item duyệt từ nút gốc đến
nút đang xét.
o Node-link: Chỉ đến nút kế tiếp trong cây hay chỉ đến null nếu nút
đang xét là nút lá
• Bảng Header có số dòng bằng số item. Mỗi dòng chứa 3 thuộc tính: item-
name, item-count, node-link.
o Item-count: Tổng số biến count của tất cả các nút chứa item đó
• Node-link: Chỉ đến nút sau cùng được tạo ra để chứa item trong cây
• Bổ sung phần tử vào tree dựa trên nguyên tắc:
o Mỗi lần bổ sung là một tập các phần tử được sắp xếp theo thứ tự ưu
tiên trong mỗi giao tác (transaction) – thứ tự ưu tiên này được quy
định lần đầu tiên trong tập phần tử trong F1 có support sắp xếp giảm
dần.
o Với một lần bổ sung, duyệt theo thứ tự các phần tử, nếu phần tử
đang xét đã tồn tại node trong tree thì lần theo node đó, ngược lại thì
bổ sung node con ngay sau node

của phần tử trước đó.
Các bước xây dựng FP-Tree
10
Buớc 1: Duyệt CSDL lần thứ nhất, lấy ra tập F1 các phần tử phổ biến và độ
support của chúng . Sắp theo thứ tự giảm dần độ support các phần tử trong tập F,
ta được tập F1.
Buớc 2: Tạo một nút gốc cho cây T và gán
nhãn là Null. Duyệt CSDL lần thứ hai, với
mỗi giao tác trong CSDL, thực hiện hai
việc sau:
- Chọn các phần tử phổ biến trong
mỗi giao tác sắp xếp support giảm
dần theo thứ tự trong tập F1. Ký
hiệu danh sách các phần tử đã sắp
xếp là [p|P], trong đó p là phần tử
đầu tiên của danh sách, P là các
phần tử còn lại.
- Gọi hàm Insert_tree([p|P],T) để
đưa các phần tử trong danh sách
vào cây T.
Xét ví dụ tạo FP-Tree dưới đây
Lần duyệt thứ nhất: Tìm các 1-frequent
itemset và sắp xếp chúng theo danh sách
với trật tự giảm dần theo tần số xuất hiện,
loại bỏ các item nhỏ hơn ngưỡng min_sup
Duyệt CSDL lần 2 để xây dựng FP-
Tree(chú ý rằng các item trong mỗi giao
tác được xử lý theo trật tự F1)

11



12
13
14
Thuật toán xây dựng FP-Tree
 Xây dựng cây FP-Tree từ CSDL giao tác
 Input:
CSDL giao tác D
Ngưỡng min-sup
 Output:
Cây FP-Tree
 Method
1. Duyệt D lần đầu để thu được tập F gồm các frequent item và support
count của chúng. Sắp xếp các item trong F theo trật tự giảm dần của
supprort count ta được danh sách F1.
2. Tạo nút gốc R và gán nhãn “null”
Tạo bảng Header có |F| dòng và đặt tất cả các node –link chỉ đến null
3. For each giao tác T D { // Duyệt D lần 2
Chọn các item phổ biến của T đưa vào P;
Sắp các item trong P theo trật tự F1;
Call Insert_Tree(P, R); }
Procedure Insert_Tree(P, R) {
1. Đặt P=[p|P-p] , với p là phần tử đầu tiên và P-p là phần còn lại
của danh sách
2. if R có một con N sao cho N.item-name = p then
3. N.count ++
4. else {
15
5. Tạo nút mới N;

6. N.count = 1;
7. N.item-name = p
8. N. parent = R
// Tạo node-link chỉ đến item, H là bảng Header
9. N.node-link = H[p].head
10. H[p].head = N
11. }
// Tăng biến count của p trong bảng header thêm 1
12. H[p].count ++;
13. If (P-p) != null then
14. Call Insert_Tree(P-p, N) ;
}
2.2/ Thuật toJn FP-Growth
Tính chất của FP-Tree
Tính chất 1: (Node-link property) Với mỗi phần tử phổ biến ai, tất cả các tập phổ
biến có chứa phần tử này có thể tìm được bằng cách dò theo các nút liên kết bắt
đầu từ ai.
Tính chất này có cơ sở trực tiếp từ cách xây dựng FP-tree. Nó cho phép dễ dàng
tìm ra tất cả các tập phổ biến có chứa a
i
bằng cách duyệt FP-tree một lần theo các
nút liên kết với a
i
.
Ví dụ: chúng ta hãy xem xét quá trình khám phá các tập phổ biến dựa trên FP-tree
dưới đây:
TID Items Bought Frequent
tems(Ordered)
100 f; a; c; d; g; i; m;p f; c; a; m; p
200 a; b; c; f; l; m; o f; c; a; b;m

300 b; f; h; j; o f; b
400 b; c; k; s; p c; b; p
500 a; f; c; e; l; p; m; n f; c; a; m; p
Table 1: A transaction database as running example
Frequent-item Header Table
Item Head of node-links
f:4
c:4
Ro
ot
f:
4
c:
3
a:
3
m
:2
p:
2
b:
1
b:
1
m
:1
c:
1
b:
1

p:
1
16
a:3
b:3
m:3
p:3
Trên cơ sở tính chất 1, chúng ta thu thập tất cả các tập phổ biến mà có chứa nút ai
bắt đầu từ nút đầu ai trong header table và các nút liên kết tiếp theo. Chúng ta xem
xét bắt đầu từ nút cuối cùng trong header table.
Với nút p, chúng ta thu được mẫu phổ biến (p:3) và hai đường đi trên FP-tree :
(f:4; c:3; a:3; m:2; p:2) và (c:1; b:1; p:1). Đường đi thứ nhất chỉ ra rằng chuỗi "(f;
c; a; m; p)" xuất hiện hai lần trong CSDL. Chú ý là mặc dù chuỗi (f; c; a ) xuất
hiện ba lần và (f) xuất hiện bốn lần trong CSDL, nhưng chúng chỉ xuất hiện hai
lần cùng với p, vì thế số đếm của chuỗi trước p là f:2; c:2; a:2; m:2. Tương tự,
đường đi thứ hai chỉ ra rằng chuỗi "(c; b; p)" xuất hiện một lần trong các giao tác
của CSDL huặc chuỗi trước p là c:1; b:1. Cả hai chuỗi truớc p , "{(f:2; c:2;
a:2;m:2), (c:1; b:1)}" , tạo thành một "cơ sở điều kiện của p". Xây dựng một FP-
tree dựa trên cơ sở điều kiện của p ta có một FP-tree (gọi là cây điều kiện FP của
p) chỉ có một nhánh là c:3. do đó chỉ tìm được một tập phổ biến là cp:3. Sự tìm
kiếm các tập phổ biến có chứa p chấm dứt.
Với nút m, chúng ta có mẫu phổ biến là (m:3) và hai đường đi đến m là (f:4; c:3;
a:3;m:2) và (f:4; c:3; a:3; b:1;m:1). Tương tự như nút p đã phân tích ở trên, chúng
ta có cơ sở điều kiện của m là "{(f:2; c:2; a:2), (f:1; c:1; a:1; b:1)}". Xây dựng FP-
tree dựa trên cơ sở điều kiện này, chúng ta có một FP-tree theo điều kiện của m có
nhánh là (f:3; c:3; a:3), một đuờng đi đơn qua các mẫu phổ biến. Sau đó chúng ta
có thể khai thác dựa trên FP-tree này một cách đệ qui, nghĩa là gọi mine(<f:3;
c:3;a:3>|m)
Hình dưói đây cho thấy "mine(<f:3; c:3;a:3>|m)" có liên quan đến việc tìm ra ba
mẫu (a), (c), (f) theo thứ tự.

Cơ sở điều kiện của "m": Cơ sở điều kiện của "am": (f:3, c:3)
(f:2, c:2, a:2)
(f:1, c:1, a:1, b:1)
Header table
item head of node-links
f
roo
t
f:
3
c:
3
a:
3
ro
ot
f:
3
c:
3
17
c
a
Cơ sở điều kiện của "cm": (f:3) Cơ sở điều kiện của "cam": (f:3)
Đầu tiên chúng ta nhận được tập phổ biến (am:3), và gọi "mine(<f:3; c:3>|am)"
chúng ta có tập phổ biến (cm:3), kế đến gọi "mine(<f:3|>cm)" chúng ta có (fm:3).
Gọi đệ qui sâu hơn nữa với "mine(<f:3; c:3>|am)", chúng ta thu đuợc các tập phổ
biến (cam:3), (fam:3), sau đó gọi "mine(<f:3>|cam)" chúng ta đuợc tập dài nhất
(fcam:3). Tương tự, gọi "mine(<f:3>|cm" chúng ta đuợc (fcm:3). Do đó, tất cả các
tập phổ biến liên quan đến m là {(m:3), (am:3), (cm:3), (fm:3), (cam:3), (fam:3),

(fcam:3), (fcm:3)}. Điều này chỉ ra rằng một đường đi đơn trên FP-tree có thể xuất
ra tất cả các sự kết hợp của các nút trong đuờng đi.
Bảng kết quả của tất cả các Item
item conditional pattern base conditional FP-tree
p {(f:2; c:2; a:2; m:2),(c:1; b:1)} {(c:3)}|p
m {(f:4; c:3; a:3;m:2), (f:4; c:3; a:3;
b:1;m:1)}
{(f:3; c:3;a:3)}|m
b {(f:4; c:3; a:3; b:1), (f:4; b:1), (c:1;
b:1)}

a {(f:3; c:3)} {(f:3; c:3)}|a
c {(f:3)} {(f:3)}|c
f ∅ ∅
Tính chất 2: (Prefix path property) để tìm ra các tập phổ biến từ một nút ai trên
đuờng đi P, chỉ cần đến đường đi con trước nút ai trên P. Và số lần phổ biến của
mỗi nút trên đường đi con này phải bằng với số lần phổ biến của nút ai.
Dựa trên các tính chất trên, chúng ta có thuật toán tìm các tập phổ biến trên cây
FP-tree.
Thuật toán tìm tập phổ biến
Input: cây FP-Tree của CSDL D, ngưỡng min_sup
Output: Một tập đầy đủ các mẫu phổ biến F
Method: gọi FP-growth(FP-tree, null)
Cây điều kiện FP của "m" Cây điều kiện FP của "am"
ro
ot
f:
3
Cây điều kiện FP của "cm"
ro

ot
f:
3
Cây điều kiện FP của "cam"
18
Procedure FP-growth (Tree, α)
{t toán khai khoáng các mẫu ụng cây FP
1. If Tree chỉ chứa một đường dẫn đơn P then {
2. for each tổ hợp của các nút trong P do {
3. phát sinh mẫu p = ;
4. support_count(p) = min_sup các nút trong
5. F = F
6. }
7. }
8. Else {
9. For each a
i
in the header of Tree {
10. Phát sinh mẫu = a
i
;
11. support_count ( )=a
i
.support_count
12. F = F
13. Xây dựng cơ sở có điều kiện của
14. Xây dựng FP-Tree có điều kiện của
15. if !=
16. call FP_growth( , );
17. }

19
18.}
}
So SJnh FP–growth và Apriori
III/ Cài đặt thử nghiệm thuật toJn
Để cài đặt thuật toán FP-Growth, Cấu trúc dữ liệu cần thiết bao gồm các cấu trúc
cơ bản( collection, hashtable, list…) và một số cấu trúc bổ sung như sau:
ItemInfo: thông tin phần tử (chưa hoặc đã số hóa, trong mã nguồn sử dụng string
chưa số hóa)
20
TreeNodeItem : chứa thông tin node của tree như : ItemName, Count, Parent,
NextNode (node-link).
FrequentLinkItem : chứa giá trị phần tử trong bảng Header ban đầu chứa thông tin
các phần tử, count và node-link.
FPTree: chứa tất cả các thông tin của Tree,Header table và MinSupport
FPGrowthFacade : lớp xử lý tìm tập phổ biến bằng FP Tree.
Sử dụng:
B1/ Khởi tạo dữ liệu cho Tree :
- Tree.BuildFrequentItemList(itemname, _count);// add
Frequent Item vào Header
- Tree.MinSupCount = minsupport
- Tree.ListStrList : danh sách giao tác ban đầu để
Duyệt tạo cây ( nếu sử dụng CSDL, có thể thay đổi thông tin
này thành thông tin kết nối tới CSDL cụ thể và thay đổi lại
hàm BuildFPTree).
B2/ Build Tree : Tree.InitializeFPTree
B3/ Chạy FP-Growth tìm tập phổ biến: GrowthFacade.FPGrowth(_fpTree, null);
Kết quả được lưu vào GrowthFacade.FrequentPattern<key,List of ItemSet> :
+ key = k (số phần tử tham gia)
+ ItemSet là một tập kết quả.

Ứng dụng trong thuật toán tìm luật kết hợp (AR) , chỉ cần lấy tập có k lớn nhất.
- Chạy test cho tập dữ liệu đơn giản như sau với support = 40%
21
- Với support = 50%
22
Kết luận

Bài nghiên cứu này nhằm mục đích tìm hiểu về thuật toán tìm tập phổ biến
dựa trên FP-Tree. Thuật toán FP-Growth phát triển là để khắc phục một số
nhược điểm của các thuật toán trước đó, tuy nhiên nó lại sinh ra một số
nhược điểm khác. Sau đây là các ưu điểm và nhược điểm của FP-Growth
Ưu Điểm
 Chỉ cần duyệt 2 lần vào Cơ Sở Dữ Liệu.
 Nén tập dữ liệu theo ý nghĩa vào tree.
 Không phát sinh tập ứng viên.
 Không đếm trùng lắp trên giao tác trong CSDL.
 Nhanh hơn nhiều so với Apriori.
Nhược điểm
 Bộ nhớ có thể không đủ cấp cho FP-Tree trong trường hợp CSDL to và
chia ra làm quá nhiều nhánh.
 Thời gian tạo FP-Tree khá tốn kém
o Thời gian tạo tree khá tốn kém, nhưng chỉ tạo 1 lần và sử dụng
nhiều lần
o Khi minsuport càng cao thì thời gian tạo cây dường như càng
phí.
Về bộ nhớ hiện nay có thể là phần nào đáp ứng cho tree, ngoài ra cấu trúc tree
có thể được lưu xuống đĩa cứng để sử dụng lại sau đó. Việc sử dụng có thể
thực hiện để thực hiện lại thuật giải tìm hoặc thay đổi ( thêm, xóa, sửa) thông
tin từ CSDL ( các thông tin bị thay đổi) cập nhật lại xuống tree. Như vậy bất
cứ quá trỉnh cập nhật nào vào CSDL hằng ngày , hằng tháng cũng sẽ được cập

nhật xuống tree tại một lúc nào đó.
Tài liệu tham khảo
 Các slides bài giảng của thấy Đỗ Phúc về khái niệm tập phổ biến
 Dựa vào Tiểu Luận anh Vũ Quang Việt - CH0601100.
 Artificial Intelligence – Machine Learning,Enginyeria i Arquitectura La
Salle,Universitat Ramon Llull
 Jen-Ting Tony Hsiao,Alexandros Ntoulas ,CS 240B May 21, 2002
 />Structure
 />Pattern_Mining/The_FP-Growth_Algorithm
23
 />presentation_v1%20(handout).pdf
 />SIGMOD2000.pdf
 />

×