Khai phá luật dãy bằng mã hóa khối cơ bản với thuật toán PRISM

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Một số thuật toán khai phá luật dãy và ứng dụng thử nghiệm vào hệ thống quản lý khách hàng và tính hóa đơn nước (Trang 38 - 43)

2.3 Hai phƣơng pháp khai phá luật dãy

2.3.2 Khai phá luật dãy bằng mã hóa khối cơ bản với thuật toán PRISM

Có 3 khía cạnh của thuật toán PRISM cần giải thích rõ (i): Chiến lƣợc không gian kiến trúc nhánh ngang; (ii) Cấu trúc dữ liệu thƣờng đƣợc sử dụng thể hiện CSDL và thông tin ứng viên trung gian; (iii) Làm thế nào để tính toán độ hỗ trợ cho ứng viên; Khối cơ bản sẽ xác định dãy phổ biến của mỗi ứng viên. Cụ thể nhƣ sau:

Dãy thứ tự từng phần đƣợc tạo bởi dãy con liên quan đƣợc biểu diễn nhƣ một cây tìm kiếm. Cây tìm kiếm dãy đƣợc định nghĩa đệ qui nhƣ sau: Gốc của cây tìm kiếm ở mức 0 và gán nhãn với dãy null . Một nút mức k đƣợc gán nhãn với dãy S, nghĩa là một dãy k đƣợc mở rộng lặp đi lặp lại bằng cách thêm một phần tử (item) từ I tạo ra một nút con ở mức (k+1) nghĩa là dãy (k+1). Có hai cách để mở rộng dãy bởi cùng một phần tử: mở rộng dãy và mở rộng tập phần tử.

Trong một dãy mở rộng, một phần tử đƣợc nối thêm lặp đi lặp lại một cách tuần tự vào cuối mỗi mẫu nhƣ một tập phần tử mới. Trong một tập phần tử mở rộng, một phần tử đƣợc thêm vào tập phần tử cuối cùng trong một mẫu. Tập phần tử mở rộng với điều kiện phần tử thêm vào đã sắp xếp theo thứ tự từ điển lớn hơn tất cả các phần tử trong tập phần tử cuối cùng. Vì thế, với cách mở rộng dãy thì kích thƣớc của dãy luôn luôn tăng lên trong khi đó với cách mở rộng tập phần tử thì không. Ví dụ nếu chúng ta có một nút S=ab→a và một phần tử b để mở rộng S và nhƣ vậy dãy mở rộng là ab→a→b còn tập phần tử mở rộng sẽ là ab →ab. Hình 2.22 biểu diễn một ví dụ của cây tìm kiếm dãy thành phần với 2 phần tử a và b. Ví dụ chỉ ra rằng dãy tăng kích thƣớc lên 3 (chỉ những nhánh con dƣới phần tử a đƣợc hiển thị).

Hình 2.22: Cây tìm kiếm dãy thành phần: mũi tên nét liền biểu thị các dãy mở rộng, mũi tên nét đứt biểu thị tập phần tử mở rộng

Về bản chất thì tất cả các phƣơng thức khai phá dãy theo cách mở rộng dãy hoặc mở rộng tập các phần tử đều sử dụng đến cây tìm kiếm. Sự khác biệt chính nằm ở chỗ độ hỗ trợ cho các mẫu ứng viên đƣợc quyết định nhƣ thế nào. Dƣới đây mô tả thuật toán PRISM tính toán tần suất cho mỗi cách mở rộng.

Ví dụ trong hình 2.23(a) gồm 5 dãy có độ dài khác nhau với các phần tử I ={a,b, c}; Với G ={2,3,5,7} là tập sinh đầu tiên, chúng ta sẽ xem xét việc cấu trúc PRISM mã hóa khối cơ bản cho phần tử a nhƣ thế nào.

Tại bƣớc đầu tiên, cấu trúc PRISM sẽ mã hóa khối cơ bản về vị trí trong mỗi dãy. Ví dụ khi a xuất hiện ở vị trí 1, 4 và 6 trong dãy 1 (với giả thiết rằng vị trí đầu tiên xác định là 1) chúng ta có bit đƣợc mã hóa (bit-encoding) tƣơng ứng là 100101, chuyển dãy sang dạng véctơ với độ dài là bội số của |G|= 4, ta có A = 10010100, hai bit đƣợc in đậm là hai bít thêm vào. Khi đó ta có ν(A)=ν(1001)ν(0100) ={14,3}. Vị trí đƣợc mã hóa của a cho tất cả các dãy đƣợc mô tả trong hình 2.23(b).

Việc tiếp theo là mã hóa khối cơ bản cho dãy. Khi a xuất hiện trong tất cả các dãy trừ vị trí thứ tƣ khi đó chúng ta biểu diễn dãy véc tơ dãy sẽ là 11101000 sau khi thêm các bít vào cuối. Khi đó khối mã hóa cơ bản đƣợc biểu diễn trong hình 2.23(c), ν(A) = ν(1110)ν(1000)={30,2}.

Việc mã hóa cho phần tử a về vị trí ở tất cả các dãy và khối cơ bản đƣợc mô tả trong hình 2.23(d).

Một khối Ai = 0000 = 0 với ν(Ai) = {1} = 1 đƣợc coi là một khối rỗng. Lƣu ý rằng việc mã hóa đầy đủ cho tất cả các vị trí khối rỗng còn lại, ví dụ a không xuất hiện tại khối thứ 2 tại vị trí thứ 5, khi đó dãy dãy véctơ là 0000 và mã cơ bản là {1}.

Để loại trừ những khối rỗng, PRISM chỉ giữ lại những khối không rỗng khi mã hóa cơ bản. Cần giữ vị trí của mỗi khối trong dãy đáp ứng đƣợc yêu cầu. Hình 3e chỉ ra việc mã hóa khối cơ bản của phần tử a khi loại bỏ những khối rỗng. Khối của dãy đầu tiên là 30, ||30||G = 3, vậy có 3 dãy hợp lệ trong khối . Với mỗi dãy, chúng ta lƣu vị trị vào khối các vị trí. Ví dụ, nếu vị trí của dãy {1} là 1 và hai phần tử đầu tiên trong khối vị trí là của dãy này thì vị trí khối tƣơng ứng với dãy thứ 2 là 3 và vị trí trong khối tƣơng ứng với dãy thứ 3 là 4 nếu dãy 2 và 3 chỉ cần một phần tử trong khối vị trí. Với cách biểu diễn này, mọi việc trở nên rất rõ ràng khi mã hóa cơ bản cho c. Với việc mã hóa đầy đủ sẽ chứa nhiều thông tin dƣ thừa, bằng cách khử đi các thông tin này trong mã hóa khối cơ bản, chúng ta có ví dụ nêu trong hình 2.23(e).

(b)

(c)

(d)

(e)

Hình 2.23: Ví dụ mã hóa khối cơ bản: (a) CSDL; (b) Mã hóa vị trí của a; (c) Mã hóa dãy của a; (d) Khối cơ bản của a, b,c; (e) Mã hóa khối cơ bản của a, b, c Độ hỗ trợ của dãy S đƣợc xác định ngay từ khối của dãy trong mã hóa khối cơ bản. Đặt ε(S) = (SS ,PS ) thể hiện việc mã hóa khối cơ bản cho dãy S với SS là tập tất cả các khối của dãy đƣợc mã hóa, PS là tập tất cả các khối vị trí đƣợc mã hóa của S

 Tính toán độ hỗ trợ thông qua phép nối (join) khối cơ bản

Sau đây chúng ta sẽ chỉ ra rằng độ hỗ trợ của tập phần tử và dãy mở rộng đƣợc thực hiện thông qua kết hợp khối cơ bản. Giả sử rằng chúng ta có một số nút của S trong cây tìm kiếm dãy với S là mức k, đặt P là nút cha của S có mức k-1. Giả sử chúng ta có mã hóa khối cơ bản cho P là ε(P). Nhƣ minh họa trong hình 2, S đƣợc mở rộng bởi một nút nào đó cùng cấp dƣới nút cha P. Ví dụ nếu P = ab, và S = ab →a, có

thể tạo ra sự mở rộng khác của S bằng sự mở rộng của P tạo ra nút anh em T = S = ab →b

Các phần tử a và b có thể đƣợc sử dụng để mở rộng S = ab → a. Có hai dãy mở rộng, cụ thể là ab → a → a và ab → a → b, và một tập đƣợc suy ra bởi ab → ab. Trong thực tế, độ hỗ trợ cho bất kỳ sự mở rộng luôn luôn là kết quả của việc kết hợp khối mã hóa căn bản 2 nút (có thể giống nhau) ở bên dƣới tiền tố P. Ví dụ, ε(ab → a → b) là thu đƣợc kết quả của một dãy khối cơ bản ε(ab → a) và ε(ab → b), nhƣng ngƣợc lại ε(ab → ab) đƣợc sử dụng nhƣ kết quả tập phần tử khối cơ bản ε(ab → a) và ε(ab→ b).

Quá trình liệt kê dãy phổ biến đƣợc bắt đầu với gốc của cây tìm kiếm nhƣ nút gốc P =  và PRISM giả sử rằng ban đầu chúng ta đã biết mã hóa khối cơ bản cho tất cả các phần tử đơn lẻ. PRISM sau đó thực hiện đệ quy cho mỗi nút trong cây tìm kiếm, tính toán độ hỗ trợ thông qua việc kết hợp các khối cơ bản, và các khối mới đƣợc giữ lại khi chúng đƣợc sử dụng thƣờng xuyên. Tìm kiếm thực chất là đệ quy, sự khác biệt chủ yếu là cho một nút S bất kỳ, tất cả các phần mở rộng của nó đƣợc đánh giá trƣớc khi gọi đệ quy. Khi gọi đệ quy không tìm thấy dãy phổ biến mới thì quá trình tìm kiếm đƣợc dừng lại. Ví dụ minh họa nhƣ hình 2.23(e).

CHƯƠNG 3 – ĐỀ XUẤT ỨNG DỤNG KHAI PHÁ LUẬT DÃY TRONG HỆ THỐNG QUẢN LÝ KHÁCH HÀNG VÀ TÍNH

HÓA ĐƠN NƯỚC

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Một số thuật toán khai phá luật dãy và ứng dụng thử nghiệm vào hệ thống quản lý khách hàng và tính hóa đơn nước (Trang 38 - 43)