Bài toán đặt ra

Một phần của tài liệu KHAI PHÁ DỮ LIỆU VÀ PHÁT HIỆN LUẬT KẾT HỢP TRONG CƠ SỞ DỮ LIỆU LỚN (Trang 60 - 61)

thuật toán Phát hiện luật kết hợp Aprior

7.1Bài toán đặt ra

Một CSDL về bán hàng đợc hình dung nh là các giao dịch tại một siêu thị hay hệ thống của hàng bán lẻ của một công ty và cụ thể ở đây là bán sách. CSDL này có thể bao gồm các thông tin sau:

 Thông tin về khách hàng

 Thông tin về các loại sách đợc bán

 Thông tin về sự mua bán

Ta quan tâm đến thông tin về mua bán, cụ thể hơn là các giao dịch mua hàng của các khách hàng. Thông tin về các giao dịch có thể rất phức tạp, nhng ở đây ta chỉ quan tâm đến mỗi lần đi mua hàng, khách hàng đã mua những loại sách gì.

Do vậy, bài toán có thể đợc mô tả cụ thể hơn nh sau:

Ta có các bản ghi về các giao dịch mua hàng đợc lu trữ trong một bảng có tên là GIAO_DICH. Bảng GIAO_DICH bao gồm các trờng dữ liệu sau:

1/ Tid

Đây là trờng số, xác định duy nhất cho mỗi bản ghi là các giao dịch mua hàng. Trờng này có giá trị tự động sinh.

2/ Các trờng tơng ứng với từng loại sách về các chủ đề sau: âm nhac, thể thao, thiếu nhi, kỹ thuật. Các trờng này chỉ nhận giá trị 0 và 1 thể hiện giao dịch đó có loại sách đó hay không.

Bảng có thể có các trờng dữ liệu khác, nhng chúng không đợc quan tâm ở đây.

Sau đây là ví dụ về Table GIAO_DICH với 3 giao dịch ứng với 3 lần mua của các khách hàng. Tid Am_nhac 1 The_thao 2 Thieu_nh i 3 Ky_thua t 4 1 1 1 0 1 2 0 1 1 0 3 1 1 1 0 ... ... ... ... ... 7.2 Thuật toán

Mục đích của thuật toán Apriori là xác định tập các Lk. Vậy Lk là gì?

Nh ví dụ trên chỉ ra bản ghi thứ nhất có thể đợc xem nh tập hợp gồm 3 phần tử {1,2,4} tơng ứng với các loại sách âm nhạc, Thể thao và kỹ thuật đợc mua cùng một lần. Bản

ghi thứ hai đợc xem nh tập hợp gồm 2 phân tử {2,3} tơng ứng với hai loại sách thể thao và thiếu nhi đợc mua cùg một lần.

Ci chính là tập hợp của các tập hợp chỉ có i phần tử, Li là tập con của Ci đợc lọc ra dựa vào tiêu chuẩn tính ngỡng.

Giá trị ngỡng support cho trớc (ngầm định) là 2 và ngỡng confidence cho trớc là 2. Các giá trị ngỡng sẽ là dữ liệu đợc nhập vào mỗi khi thực hiện chơng trình.

Thuật toán đã đợc lập trình dựa theo các bớc hình thức sau: procedure Apriori()

begin

L1 := {Các 1-tập mục}; // đa vào các bản ghi cho bảng L1 từng loại sách với số đếm là số lần xuất hiện trong các giao dịch >= ngỡng

for (k:=2; Lk-1 không rỗng; k++) do { //k chạy từ 2 đến 4 nhng nếu bảng Lk-1

không có phần tử nào thì dừng lại.

Ck := apriori-gen(Lk-1); // Lời gọi đến thủ tục tính giá trị các Ck

for Duyệt bảng GIAO_DICH do{

for Duyệt bảng Ck nếu thấy bản ghi nào là

tập con của bản ghi GIAO_DICH hiện thời do số đếm++;

}

Select từ Ci các bản ghi có số đếm lớn hơn ngỡng (>=2) rồi ghi vào Li }

In ra kết quả toàn bộ các bản ghi bên trong L1, L2, L3, L4 end

Thủ tục apriori-gen dựa trên các bản ghi của Lk-1, thêm một phần tử và ghi vào Ck. Thủ tục thực hiện nh sau:

insert into Ck (adsbygoogle = window.adsbygoogle || []).push({});

select p.loạisách1, p.loạisách2, ...., p.loạisáchk-1 , q.loạisáchk-1

from Lk-1 p Lk-1 q

where p.loạisách1, = q.loạisách1,..., p.loạisáchk-2 = q.loạisáchk-2, p.loạisáchk-1< q.loạisáchk-1;

Bớc tiếp theo của thủ tục apriori-gen ta cần xoá đi một số các bản ghi vừa đa vào Ck, nh- ng một tập con (k-1) phần tử không nằm trong Ck-1 đợc thực hiện nh sau:

for mỗi bản ghi thuộc Ck do

for Liệt kê các tổ hợp các trờng loạisách nhng chỉ có (k-1) phần tử do if nếu tổ hợp vừa chọn không thuộc Lk-1) then

delete xoá bản ghi đó khỏi Ck;

Một phần của tài liệu KHAI PHÁ DỮ LIỆU VÀ PHÁT HIỆN LUẬT KẾT HỢP TRONG CƠ SỞ DỮ LIỆU LỚN (Trang 60 - 61)