1.5.1 Thuật toỏn khai phỏ luật kết hợp khụng cần sinh Candidate
Thuật toỏn FP-Growth
Apriori là thuật toỏn kinh điển, đơn giản song hiệu năng khai phỏ khụng cao. Cú hai nguyờn nhõn khiến Apriori khụng đạt được hiệu năng khai phỏ mong muốn. Thứ nhất, thuật toỏn phải xử lớ sự bựng nổ tổ hợp khi tớnh cỏc ứng viờn. Chẳng hạn 1041 – LargeItemset sẽ sinh ra 1072 – Candidate. Để phỏt hiện Large Itemset kớch thước 100, Apriori phải sinh 1030 Candidate. Thứ hai, thuật toỏn phải duyệt cơ sở nhiều lần. Nếu kớch thước dài nhất của cỏc Transaction là n thỡ thuật toỏn phải duyệt cơ sở dữ liệu n+1 lần.
Vậy cỳ cỏch nào khụng cần sinh Candidate mà vẫn tỡm được tập cỏc Large Itemset như mong muốn?
FP – Growth là thuật toỏn đi ngược lại với tư tưởng của thuật toỏn Apriori. FP- Growth hoàn toàn khụng cần sinh Candidate trong quỏ trỡnh tỡm Large
ỨNG DễNG Lí THUYẾT LUẬT KẾT HỢP KHAI PHÁ DỮ LIỆU TÁC NGHIỆP
Itemset. Thuật toỏn này tự xõy dựng một cấu trỳc dữ liệu gọi là Cõy Frequent – Pattern (Cõy FP) và đưa ra phương phỏp khai phỏ hiệu quả trờn cấu trỳc dữ liệu FP – Tree. Phương phỏp mà FP_Growth đưa ra là ý tưởng chia để trị: Chia cụng việc thành cỏc cụng việc con nhằm cố gắng giảm thiểu thao tỏc duyệt toàn bộ dữ liệu bằng cỏch chỉ duyệt một phần cơ sở dữ liệu.
Thuật toỏn sinh Cõy FP
Đầu vào : Cơ sở dữ liệu D
Đầu ra : Cõy FP
Thuật toỏn
1. Duyệt D một lần, tỡm 1-Large Itemsets
2. Sắp xếp cỏc Large Itemset tỡm được theo thứ tự giảm dần của tần suất xuất hiện
3. Duyệt D lần thứ hai, xõy dựng cõy FP
Hỡnh 2-12 Thuật toỏn Sinh cõy FP
Tư tưởng thuật toỏn FP – Growth sẽ sử dụng cõy FP, thụng qua cỏc bước gọi đệ qui để xõy dựng đường đơn Frequent. Cỏc Item trờn Đường đơn Frequent được dựng để tổ hợp ra cỏc Large Itemset thoả món. Quỏ trỡnh sinh đường đơn Frequent gồm cỏc bước chớnh sau:
1. Xõy dựng cỏc mẫu cơ sở cú điều kiện (Conditional Pattern Base) cho mỗi item (node) trờn cừy FP.
2. Xõy dựng cỏc cừy FP cú điều kiện từ cỏc mẫu cơ sở.
3. Thực hiện cụng việc (đệ qui) trờn với mỗi cõy FP cú điều kiện. 4. Khi cõy FP rỗng hoặc chỉ cú một đường đơn thỡ dừng. Đường đơn
đỳ chớnh là đường đơn Frequent.
Thuật toỏn FP – Growth
Đầu vào : FP-Tree, f_is (frequent itemset)
Đầu ra : Cỏc Large Itemset
Thuật toỏn
1.If Cõy FP chứa đường đơn P (Single Path)
2.thenFor alltổ hợp của cỏc nỳt trờn P 3. Sinh Pattern f_is
4.else với mỗi item I trờn header 5. Sinh Pattern f_is i
6. Xõy dựng cõy cFP cú điều kiện của Pattern bằng cỏch nối cỏc đường và giữ lại cỏc node xuất hiện nhiều hơn Support lần
7.If (FP-Tree γ 0)
8.then call FP-Growth (cFP-Tree, pattern)
Hỡnh 2-13 Thuật toỏn FP - Growth
Thớ dụ minh hoạ
Vớ dụ: Xột CSDL giao dịch như trong bảng 4
Bảng 1: Cơ sở dữ liệu giao dịch của vớ dụ về FP-Tree
TID Items Frequent item (đó sắp thứ tự) 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
ỨNG DễNG Lí THUYẾT LUẬT KẾT HỢP KHAI PHÁ DỮ LIỆU TÁC NGHIỆP
Bảng 2: Khai phỏ tất cả cỏc pattern bởi tạo ra cơ sở (sub)-pattern điều kiện
cơ sở pattern điều kiện FP-Tree điều kiện p {(f:2,c:2,a:2,m:2), (c:1,b;1)} {(c:3) | m} 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 φ φ Nhận xột
• Apriori phải duyệt cơ sở dữ liệu mỗi lần sinh tập Candidate. Trong khi đú, FP – Growth chỉ cần duyệt cơ sở dữ liệu 2 lần và cỏc thao tỏc được thực hiện trờn cấu trỳc dữ liệu riờng.
• Apriori phải sinh Candidate, FP – Growth khụng cần sinh Candidate nờn khối lượng dữ liệu cần thao tỏc là ớt hơn so với trường hợp của Apriori. • FP – Growth dựng nhiều thao tỏc phức tạp hơn Apriori.
• FP – Growth chạy nhanh hơn Apriori. Đặc biệt trong cỏc trường hợp ngưỡng Support nhỏ (< 0.20 %). Dưới đõy là kết quả thử nghiệm hiệu năng thuật toỏn trờn cựng một cơ sở dữ liệu với cỏc ngưỡng Support khỏc nhau.
1. Bắt đầu bằng item cuối cựng (p)
2. Đi theo con trỏ và duyệt cỏc đường cú chứa p. Lấy phần cũn lại trờn đường (khụng chứa p) làm Cơ sở cú điều kiện. Thu được 2 cơ sở fcam: 1 và cb: 1
3. Xõy dựng cõy FP bằng cỏch hợp nhất cỏc đường và giữ lại cỏc nốt xuất hiện hơn p lần. Kết quả là c: 3 4. Tiếp tục với item cuối cựng tiếp theo: m
5. Quỏ trỡnh lặp lại theo cỏc bước 2, 3. Thu được kết quả như sau:
•
Hỡnh 2-14 So sỏnh hiệu năng FP – Growth và Apriori
1.5.2 Khai phỏ sử dụng cõu lệnh truy vấn SQL Thuật toỏn SETM
Thuật toỏn SETM là đại diện tiờu biểu của lớp thuật toỏn khai phỏ luật kết hợp sử dụng SQL cho việc tớnh toỏn Large Itemset. Để tận dụng toỏn tử kết nối Join của SQL, SETM tỏch rời việc sinh Candidate khỏi việc đếm. Tập cỏc ứng viờn được lưu lại trong một bảng cựng với TID của Transaction. Tại điểm kết của mỗi giai đoạn, số đếm Support của cỏc Candidate được xỏc định bằng lệnh count và được cập nhật vào bảng này.
Thuật toỏn SETM
Đầu vào : Tập cỏc Transaction D, ngưỡng support tối thiểu MinSup
Đầu ra : Tập cỏc Large Itemset trờn D.
Thuật toỏn
1. L1 = {large 1 - itemsets};
2. L1 = {Large 1 – itemsets được sắp xếp trờn TID} 3. For (k=2; Lk-1 ≠ 0, k ++) do Begin
ỨNG DễNG Lí THUYẾT LUẬT KẾT HỢP KHAI PHÁ DỮ LIỆU TÁC NGHIỆP
4. Ck = 0
5. Forall Transactions thuộc D do Begin
6. Lt = {1∈ Lk-1 | l.TID = t.TID} // large (k-1) – itemset chứa trong t 7. For all large itemset lt∈ Ltdo Begin
8. Ct = 1-extension of lt chứa trong t; // candidate trong t 9. Ck = Ck + {t.TID, c> | c ∈ Ct };
10. End
11. End
12. Sắp xếp Ck theo itemsets
13. Lk = Kết quả của phộp xoỏ mọi itemset c ∈ Ck cú c.count < minsup 14. Lk = {<l.itemset, số đếm của l trong Lk> | l ∈ Lk }
15. Sắp xếp Lk theo TID 16. End
17. Kết quả = Uk Lk
Hỡnh 2-15 Thuật toỏn SETM
Nhận xột
• Thuật toỏn SETM cú nhược điểm là phải lưu trữ Candidate và phải thực hiện nhiều thao tỏc sắp xếp.
• Thuật toỏn SETM phải duyệt toàn bộ cơ sở dữ liệu để sinh Candidate và lực lượng Candidate rất lớn, trong đú cú nhiều Candidate thừa mà ta biết chắc nú khụng phải là Large Itemset.