Thuật tốn CHARM được xây dựng dựa trên hai thủ tục chính là CHARM_Extend và CHARM_Property. Đầu tiên CHARM xác định tập P là lớp tương đương của trong quan hệ tương đương k, rồi gọi thủ tục CHARM_Extend.
Thủ tục CHARM:
Procedure CHARM (DB, minsup, CF);
Input: - DB là cơ sở dữ liệu giao tác trên I = {x1, x2, ... , xn}; - minsup: ngưỡng tối thiểu;
Output: CF – tập các tập mục thường xuyên đĩng của DB; Method:
P:= xi ,t xi xi I, t xi minsup; CF:= Ø
CHARM Extend (P, minsup, CF); Endprocedure;
Thủ tục CHARM_Extend làm nhiệm vụ tổ hợp các phần tử trong một lớp tương đương, tính độ hỗ trợ của từng cặp rồi gọi thủ tục CHARM Property để chèn tổ hợp ấy vào cây.
Procedure CHARM Extend (P, minsup, CF); Input: P = X,t(X) X I t(X) minsup;
Output: CF: Tập các tập mục thường xuyên đĩng của DB; Method:
For each (X, t(X)) in P do
P1:= Ø;
For each (Y, t(Y)) in P with X≤ f Y do
If t(X) t(Y) minsupthen
CHARM Property(P, X, Y, P1);
If P1 then
CHARM Extend(P1, minsup, CF);
Endif;
Số hóa bởi Trung tâm Học liệu http://lrc.tnu.edu.vn/
Endif;
EndFor;
EndFor; EndProcedure;
Thủ tục CHARM_Property: chèn X, Y vào tập kết quả. Procedure CHARM_Property (PI, X,Y, PO);
Input: PI = X,t(X) X I,t(X) minsup;X, Y I;
Output: PO = X,t(X) X I, t(X) minsup; PO:=PI;
If t(X) = t(Y) then // Trường hợp 1 Xĩa tất cả các Y trong PO;
Thay tất cả các tập X trong PO bởi XY; Else if t(X) t(Y) then // Trường hợp 2 Thay tất cả các X trong PO bởi XY;
Else if t(X) t(Y) then // Trường hợp 3 Xĩa tất cả các Y trong PO;
Thêm XY vào PO; // Xếp thứ tự Else if t(X) t(Y) then // Trường hợp 4 Thêm XY vào PO; // Xếp thứ tự
Endif; Endif; Endif; Endif; EndProcedure; Ví dụ minh họa Xét CSDL ở bảng 2.1.
Ta xây dựng cây IT-tree như sau:
Nút gốc Root là nút rỗng
Lớp 1 là các nút con cĩ itemset chỉ là 1 mục dựa trên các mục thường xuyên thỏa minSup.
A x t(A) = A x 1345 ; C x t(C) = C x 123456 ; D x t(D) = D x 2456 T x t(T) = T x 1356 ; W x t(W) = W x 12345
Số hóa bởi Trung tâm Học liệu http://lrc.tnu.edu.vn/ Lớp 2 là các nút con cĩ itemset gồm 2 mục, được xây dựng bằng sự tổ hợp các itemset của các nút lớp 1 với Tidset được tính dựa trên Tidset của các nút lớp 1 : t(AC) = t(A) t(C) = 1345 123456 = 1345 sup(AC) > minSup AC x 1345 tạo thành một nút mới ở lớp 2.
t(AD) = t(A) t(D) = 1345 2456 = 45 sup(AD) < minSup AD x 45 khơng tạo thành nút mới ở lớp 2.
Hình 2.2: Cây IT-tree dùng Tidset với minSup =3
Như vậy cĩ thể thấy các tập thường xuyên được liệt kê hết trong các nút của cây IT-tree, và trong quá trình xây dựng cây It-tree chính là chúng ta đã đi tìm các tập thường xuyên của CSDL.
Ban đầu ta cĩ 5 nhánh tương ứng với 5 mục và tập định danh tidset của chúng (minsupp = 50%). Để sinh ra các con của mục A (hoặc cặp A x 1345) chúng ta cần kết hợp nĩ với tất cả các nút cùng mức ở sau nĩ (bên phải nĩ). Khi kết hợp hai cặp X1 x t(X1) và X2 x t(X2), cặp nhận được là (X1 X2) x (t(X1) t(X2)). Nĩi cách khác chúng ta cần lấy giao các tập định danh tidset tưong ứng mỗi khi ta kết hợp hai hay nhiều tập mục.
Khi ta kết hợp A với C, ta thấy tính chất 2 thỏa mãn, tức là: t(A) = 1345 123456 = t(C). Do vậy ta cĩ thể bỏ A và thay nĩ bởi AC. Kết hợp A với D sinh ra tập khơng thường xuyên ACD, nĩ bị tỉa đi. Kết hợp với E sinh ra cặp ACE x 135,
Số hóa bởi Trung tâm Học liệu http://lrc.tnu.edu.vn/ tính chất 4 thoả mãn ở đây, do vậy khơng tập nào bị tỉa. Khi chúng ta kết hợp A với W chúng ta thấy t(A) t(W). Theo tính chất 2, ta thay tất cả sự xuất hiện mà khơng bị tỉa của A với AW. Do vậy, AC thành ACW và ACT thành ACTW. Kết thúc nhánh với nút gốc là A.
Với nhánh C, khi kết hợp C với D, tính chất 3 thoả mãn, tức là t(C) t(D). Điều này cĩ nghĩa là khi D xuất hiện thì C luơn xuất hiện. Do đĩ D cĩ thể loại bỏ, tồn bộ nhánh D bị tỉa và nút con CD thay thế D. Hồn tồn tương tự đối với T và W. Cả hai nhánh đều bị tỉa và thay thế bởi CT và CW (là con của C). Tiếp tục cách đĩ xuống mức sâu tiếp theo, ta xét nút CD. Kết hợp nĩ với CT sinh ra tập mục khơng thường xuyên CDT, tập này bị tỉa. Kết hợp với CW sinh ra CDW và vì tính chất 4 thoả mãn, khơng tập nào bị loại bỏ. Tương tự kết hợp của CT và CW sinh ra CTW. Nhánh đã xử lý xong.
Cuối cùng, chúng ta loại bỏ CTW x 135 vì nĩ được chứa trong ACTW x 135. Ta thấy rằng chỉ cần 10 bước để xác định được tất cả 7 tập mục thường xuyên đĩng: CD, CT, ACW, CW, C, CDW, ACTW. Xem hình 2.2.
Hình 2.3: Cây IT-tree tìm tập mục thường xuyên đĩng thỏa mãn ngưỡng minsup = 50%.
Nhận xét:
Số lượng tập mục thường xuyên đĩng thường nhỏ hơn nhiều so với số tập mục thường xuyên. Như vậy, việc khai thác luật từ chúng sẽ hiệu quả hơn.
{} x 123456 Dx2456 CDx2456 Tx1356 CTx1356 Ax1345 AWx1345 ACWx12345 Wx12345 CWx12345 Cx12345 DTx56 ADx45 DWx135 CDWx245 ATx135 ACTx135 ACWx135 TWx135 CTWx135
Số hóa bởi Trung tâm Học liệu http://lrc.tnu.edu.vn/ Mức tìm kiếm trên IT-tree để tìm FCT thấp hơn so với FI khơng gian bộ nhớ yêu cầu cho quá trình gọi là đệ qui sẽ nhỏ hơn.
Đánh giá thuật tốn [7]
Định lý 2.1: (tính đúng đắn) Thuật tốn CHARM tìm ra tất cả các tập mục
thường xuyên đĩng.
Định lý 2.2: (thời gian) Thời gian thực hiện thuật tốn CHARM là O(l. C ),