BƯỚC 1: Tạo 2 bảng:
Bảng 1- Tên bảng B ltem (Maltem C(5), Tenltem C(20), Nhan C(l))
Trong đó:
B ltem: Bảng Item Maltem: Mã Item Tenltem: Tên Item Nhan: Nhãn của Item
Nhập nội dung cho bảng này, khi nhập nhãn nên bắt đầu bởi chữ A và sau đó theo chiều tăng của từ điển
Sắp xếp nhãn theo từ điển (chức năng sort hoặc thuật toán nỗi bọt)
Chẳng hạn, sau khi nhập ta được Bảng B_Item
Maltem Tenltem Nhan Sup
003 ? c 004 ?? D 002 ??? B 001 ???? A 005 7 7 7 7 7 7 E Bảng 2.13. Các Item và nhãn
(đã được nhập Sau khi sắp xếp nhãn theo từ điển ta được ) Bảng B ltem
Maltem Tenltem Nhan Sup
001 ???? A
002 ??? B
003 ? c
004 ?? D
005 9 9 9 9 9 E
Dùng hàm n = Count(B_Item) để biết số Item, theo ví dụ trên ta được số Item là n = 5 Bảng 2- Tên bảng: B_GD (MaGD C(5), ND GD C(30)) Trong đó: B_GD : Bảng giao dịch MaGD: Mã giao dịch
ND_GD: Nội dung giao dịch - gồm các Item tham gia vào giao dịch
Nhập nội dung cho bảng B_GD, phải chặn sao cho trong một giao dịch các Item là duy nhất.
Chẳng hạn, sau khi nhập ta được
Bảng B_GD MaGD ND_GD Ti ACD t2 BCE t3 ABCE t4 BE Bảng 2.15. Bảng giao dịch |T| = 4
Dùng hàm T = Count(B GD) để đếm số giao dịch. Ví dụ trên ta được số giao dịch T = 4
Thuật toán 2. Chuyển bảng giao dịch sang dạng bảng giao dịch nhị phân B_GD_NP
Var Sứ: integer;
Strl = “o”
For j = 1 to n
Strl = Strl & ‘d’ &Str(j) & “Number(l)” & ‘7 ’ Andíor
Strl = “dl Number(l), d2 Number(l), d(n)Number(l),” Strl = Left(Strl, len(Strl) - 1) {Cần khử dấu cuối}
Strl = “dl Number(l), d2 Number(l), dn Number(l)” { Kết quả ta khử
{Tạo bảng B_GD_NP }
Create table B_GD_NP( & Strl) {Kết quả có bảng dạng sau} B_GD_NP
o d l d 2 ... d n
Bảng 2.16. Bảng B_GD_NP
Chú ý rằng các Nhan giao dịch đã được xếp tăng theo từ điển sẽ tương ứng với di, d2, dn
Tạo mảng một chiều Array A_Nhan(n) of Char;
{Nạp các nhãn cho A_Nhan} For i = 1 To n
A_Nhan(i) = B_Item.Nhan
Skip {Chuyển đến bản ghi tiếp theo} EndFor
For i = 1 To n
B GD NP.O = “o” & Str(i)
For j = 1 To Count(B_GD.ND_GD) If A_Nhan(i) = B_GD.ND_GD(j) Then B_GD_ND. d & (j) = 1 Else B_GD_ND. d & (j) = 0 Endlf
Skip B_GD Endfor Skip B_GD_NP Endfor o d l d 2 dn O l * * * o 2 * * * ... ... ... ... Om * * Bảng 2.17. Bảng B GD NP đã được nạp nhập dữ liệu Trong đó * là o hoặc 1 Chẳng hạn từ bảng 2.2. ta có 0 d l d 2 ¿ 3 d 4 d 5 Ol 1 0 1 1 0 0 2 0 1 1 0 1 0 3 1 1 1 0 1 o 4 0 1 0 0 1 Bảng 2.18. Bảng B GD NP đã được nạp nhập dữ liệu thực tế
Kết luận chương 2
Trong chương này đã trình bày tổng quan về khai phá dữ liệu, khai phá luật kết hợp. Để đi vào những nghiên cứu cụ thể ở chương sau, chương này cung cấp những hiểu biết cần thiết về bài toán khai phá luật kết họp. Đặc biệt trình bày chi tiết thuật toán Apriori tìm tập mục phổ sinh ra các ứng cử, sinh ra luật kết hợp tò tập mục phổ biến.
Việc tìm kiếm các luật kết hợp trong CSDL nhị phân được thực hiện theo thuật toán nguyên thuỷ Apriori. Một hạn chế đáng kể của các thuật toán này là chỉ làm việc với dữ liệu ở dạng nhị phân, tức là giá trị của các thuộc tính chỉ nhận 2 giá trị là 0 và 1. Chính vì thế thuật toán khó có thể áp dụng trực tiếp trên những CSDL thực tế - những CSDL không chỉ chứa thuộc tính nhị phân, mà còn chứa cả dữ liệu số và hạng mục. Muốn thực hiện được điều này, người ta phải tiến hành ròi rạc hóa dữ liệu cho các thuộc tính số để chuyển chúng về thuộc tính nhị phân.
Chương 3. ỨNG DỤNG LUẬT KẾT HỢP TRÊN HỆ THỐNGO • • • •
THÔNG TIN NHI PHÂN ĐẺ XÂY DƯNG BÀI TOÁN TƯ VẤN XÂY DƯNG• • •