Từ dữ liệu đầu vào là bảng TRANSACTIONS (TID, ITEM), chúng ta sẽ xây dựng ứng dụng thực nghiệm theo các bước như đã giới thiệu trong chương bốn. Trong quá trình thực hiện ứng dụng sẽ có các bảng tạm (temp tables) được tạo ra lưu trữ tập các ứng viên Ck và tập mục phổ biến Fk với độ hỗ trợ tương ứng.
Để gọi chạy chương trình trong môi trường Oracle, chúng ta sử dụng:
begin pkg_apriorịapriori_main; end; Trong đó: procedure apriori_main is l_table_name varchar2(100):='CRD_AGGREGATÉ; --k-itemsets
begin pkg_apriorịtransform_datắ01-JUN-2010','10-JUN-2010',l_table_name); pkg_apriorịcreate_aut_mapping_table(l_table_name); --Sinh ra bảng CSDL giao dịch pkg_apriorịcreate_transactions_table(l_table_name); for k in 1 .. 10 loop
--Tạo ra bảng chứa tập các ứng viên pkg_apriorịcreate_c_table(k); --Tạo ra bảng k-tập mục phổ biến
pkg_apriorịcreate_f_table(k, 'transactions'); end loop;
--Tạo ra bảng k-tập mục phổ biến với độ hỗ trợ tương ứng pkg_apriorịcreate_fisets_table(l_k_max);
--Tạo ra bảng giao hoán vị trí các mục trong tập mục phổ biến pkg_apriorịcreate_subsets_table;
--Tạo bảng chứa các luật kết hợp với độ hỗ trợ, độ tin cậy tương ứng pkg_apriorịcreate_rules_table(l_k_max, 1715223);
end apriori_main;
5.2.1 Sinh tập các ứng viên và tính độ hỗ trợ
Đầu tiên chúng ta sẽ sinh ra các tập mục phổ biến F1 từ bảng TRANSACTIONS như sau:
create table F1 as
select item item1, count(*) count from transactions
group by item having count(*) > 1
Từ bảng tập mục phổ biến F1, tạo bảng sinh các ứng cử viên C2 bằng việc nối bảng F1 với chính nó:
create table C2 as
Select I1.item1, I2.item1 item2 From F1 I1, F1 I2 Where I1.item1 < I2.item1
Thực hiện phép nối giữa tập mục phổ biển Fk-1, để sinh tập các ứng viên Ck, sau đó thực hiện bước tỉa loại bỏ ứng viên không có lợi như được mô tả trong mục 4.2.2 (thực hiện bước tỉa loại bỏ ứng viên không có lợi). Tham khảo thủ tục
Tìm tập mục phổ biến có độ dài k (Fk) và tính độ hỗ trợ của mỗi tập mục, tham khảo thủ tục f_table_creation (trong phần phụ lục A, mục 2).
5.2.2 Sinh các luật kết hợp từ các tập mục phổ biến
Kết hợp các tập mục phổ biến có độ dài từ 1 đến k bằng cách kết hợp dữ liệu của bảng tạm đã tạo ra F1, …,Fk vào bảng FISETS, từ bảng FISETS chúng ta tìm tập con cảu tập mục phổ biến trong bảng FISETS và lưu vào bảng SUBSETS.
Tham khảo thủ tục Gensubs_combination (trong phần phụ lục A, mục 4) sẽ thực hiện việc tìm tất cả các tập con của các tập phổ biến trong bảng FISETS, thủ tục Gensubs_combination thực hiện việc tìm các tập con bằng cách liệt kê tổ hợp chập k của n phần tử bằng phương pháp đệ quỵ
Thủ tục subsets_table_creation (trong phần phụ lục A, mục 4) sẽ lưu tất cả các tập mục phổ biến được sinh ra từ thủ tục Gensubs_combination vào bảng SUBSETS.
Thủ tục rules_table_creation (trong phần phụ lục A, mục 5) sẽ kết hợp các bảng và lưu dữ liệu vào bảng RULES, bảng RULES sẽ lưu tất cả các tập phổ biến với độ hỗ trợ (support) và độ tin cậy(confidence) tương ứng. Kết quả thu được trong bảng RULES như sau: