Xác định các thuật toán tiền xử lý của luật kết hợp nhị phân

Một phần của tài liệu Ứng dụng luật kết hợp trên hệ thống thông tin nhị phân để xây dựng bài toán tư vấn xây dựng (Trang 60 - 66)

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 (adsbygoogle = window.adsbygoogle || []).push({});

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• • •

Một phần của tài liệu Ứng dụng luật kết hợp trên hệ thống thông tin nhị phân để xây dựng bài toán tư vấn xây dựng (Trang 60 - 66)