Đánh giá thuật toán COUI-Mine1

Một phần của tài liệu khai phá tập mục thường xuyên lợi ích cao trong cơ sở dữ liệu (Trang 51 - 88)

2.3.3.1: Bƣớc xây dựng cây TWUI-tree:

Cho cơ sở dữ liệu giao tác DB với n mục dữ liệu, m giao tác và ngƣỡng lợi ích minutil.

(1)Thuật toán chỉ cần duyệt cơ sở dữ liệu hai lần để xây dựng cây TWUI-Tree. (2)Chi phí chèn một giao tác T vào cây là O(TU), ở đó U là tập các mục dữ

liệu có lợi ích TWU cao của DB.

(3)Kích thƣớc và chiều cao của cây có thể đánh giá nhƣ sau:

Mệnh đề 2.2: Cho cơ sở dữ liệu giao tác DB, ngƣỡng lợi ích minutil. Không kể nút gốc, kích thƣớc của cây TWUI-tree(số nút) có cận trên là .

T DB

T U m n

 

 , chiều

cao của cây có cận trên là Max 

T DB T U n

   , ở đó n là số mục dữ liệu và m là số giao tác của cơ sở dữ liệu, n = I , m= DB .

Chứng minh:

Trƣờng hợp tốt nhất, tất cả các giao tác có chung một tập mục dữ liệu, lúc đó chỉ có một nhánh trên cây, số nút của cây bằng số nút của nhánh đó(bằng số mục dữ liệu có lợi ích TWU cao trong DB).

Trƣờng hợp xấu nhất, mỗi giao tác chứa một tập mục dữ liệu riêng biệt, không có mục dữ liệu nào chung, lúc đó số nút tối đa của cây là bằng tổng số mục dữ liệu có lợi ích TWU cao xuất hiện trong các giao tác, tức là .

T DB

T U m n

 

Các giao tác lƣu lên cây thành một đƣờng đi bắt đầu từ nút gốc, các mục tiền tố chia sẻ chung các nút, do đó chiều cao của cây bằng số mục dữ liệu có lợi ích TWU cao trong giao tác có nhiều mục lợi ích TWU cao nhất, tức là

(4)Thông thƣờng, các giao tác dùng chung với nhau một số nút trên cây nên kích thƣớc cây TWUI-tree thƣờng nhỏ hơn kích thƣớc của cơ sở dữ liệu. Cơ sở dữ liệu càng dày thì kích thƣớc cây TWUI-tree càng nhỏ so với cơ sở dữ liệu gốc. Theo các nghiên cứu gần đây, hiện nay có thể sử dụng gigabyte bộ nhớ để khai phá hiệu quả tập mục thƣờng xuyên dựa trên cây tiền tố(prefix tree). Cây TWUI-tree trong thuật toán COUI-Mine1 có cấu trúc giống cây FP-tree, kích thƣớc hai cây về cơ bản giồng nhau, do đó khai phá dựa trên cây TWUI-tree trong thuật toán COUI-Mine1 là khả thi và hiệu quả.

2.3.3.2: Bước khai phá cây TWU-tree

Mệnh đề 2.3: Thuật toán COUI-Mine1 đảm bảo tính dừng và tìm ra tập tất cả các tập mục lợi ích cao.

Ta có thể lý giải cho mệnh đề 2.3 nhƣ sau:

- Bƣớc xây dựng cây TWUI-tree là hữu hạn thao tác, đƣợc đánh giá qua mệnh đề 2.2.

- Bƣớc khai phá cây TWUI-tree: Xây dựng cây COUI-tree cho một mục dữ liệu chỉ cần duyệt một số nhánh trên cây TWUI-tree liên quan đến mục đó nên số nhánh cần duyệt là nhỏ. Cây COUI-tree đƣợc xây dựng giống nhƣ cây TWUI-tree. Số cây

 

Max

T DB T U n

COUI-tree cần xây dựng và khai phá là hữu hạn, bằng số mục dữ liệu có lợi ích TWU cao trừ đi 1, tức là │U│- 1 ≤ n -1.

Thông thƣờng, kích thƣớc cây COUI-tree rất nhỏ so với kích thƣớc cây TWUI-tree. Kích thƣớc cây COUI-tree có cận trên bằng kích thƣớc cây TWUI-tree, đó là trƣờng hợp cây TWUI-tree chỉ có một nhánh duy nhất, khi đó chỉ có một cây COUI-tree cần xây dựng và khai phá.

Khai phá cây COUI-tree theo phƣơng pháp không đệ quy đã đƣợc công bố ở đây ta chỉ thay đổi độ hỗ trợ của mục dữ liệu bởi lợi ích TWU của nó. Tập mục TWU lợi ích cao có tính chất phản đơn điệu, do đó, khi thay độ hỗ trợ lợi ích TWU thì phƣơng pháp khai phá cho kết quả là các tập mục lợi ích TWU cao.Thuật toán chỉ cần duyệt lại cơ sở dữ liệu lần thứ 3 để tính lợi ích thực sự của các tập mục lợi ích TWU cao này.

Mệnh đề 2.4 sau chỉ rõ tính hiệu quả của thuật toán qua so sánh số các tập mục ứng viên với các thuật toán Apiori.

Mệnh đề 2.4: Số các tập mục ứng viên sinh ra bởi thuật toán COUI-Mine1 không bao giờ lớn hơn số các tập mục ứng viên sinh ra bởi các thuật toán khai phá tập mục lợi ích cao theo kiểu sinh ứng viên rồi kiểm tra ràng buộc (nhƣ cách của thuật toán Apiori).

Chứng minh:

Trong các thuật toán đƣợc phát triển dựa trên thuật toán Apiori, trƣớc tiên, một k-tập mục X là ứng viên lợi ích TWU cao nếu tất cả các tập con độ dài (k-1) của X là tập mục lợi ích TWU cao. Mặc dù vậy, khi duyệt lại cơ sở dữ liệu thì tập mục X có thể lại không xuất hiện hoặc có giá trị twu(X) thấp, twu(X)<minutil.

Trong thuật toán COUI-Mine1, nếu tập mục X không có mặt trong cơ sở dữ liệu thì nó không xuất hiện trong bất kỳ nhánh nào của cây TWUI-tree, do đó nó không thể đƣợc sinh ra. Hơn nữa, khi xác định X có lợi ích TWU thấp thì nó đã bị tỉa. Vì vậy, số các ứng viên sinh ra bởi thuật toán COUI-Mine1 không bao giờ lớn hơn số các ứng viên sinh ra bởi các thuật toán kiểu Apiori.

Tính hiệu quả của thuật toán COUI-Mine1còn đo số lần duyệt cơ sở dữ liệu của thuật toán luôn tối đa là 3 lần. Trong thuật toán COUI-Mine1, nếu tập ứng viên CP tìm đƣợc khác rỗng thì thuật toán cần duyệt lại cơ sở dữ liệu lần thứ 3 để tìm các tập mục lợi ích cao trong tập ứng viên CP. Trong khi đó, với các thuật toán Apiori, nếu độ dài của tập mục ứng viên dài nhất là N thì thuật toán cần duyệt cơ sở dữ liệu N lần, thuật toán Hai pha cần duyệt N+1 lần. Khi ngƣỡng lợi ích giảm, số các ứng viên và độ dài cực đại của chúng cũng tăng lên, do đó, thời gian thực hiện của các thuật toán kiểu Apiori rõ ràng tăng lên rất nhanh.

Thuật toán COUI-Mine1 đƣợc thử nghiệm trên một số tập dữ liệu và nhận thấy thuật toán thực hiện hiệu quả. Phần cuối cùng của chƣơng này trình bày chi tiết thực nghiệm các thuật toán.

2.3.4 Nhận xét thuật toán COUI-Mine1

- Thuật toán COUI-Mine1 khai phá tập mục lợi ích cao với tối đa là ba lần duyệt cơ sở dữ liệu : hai lần để xây dựng cây TWUI-tree và một lần để tìm tập mục lợi ích cao từ tập các ứng viên lợi ích TWU cao. Quá trình khai phá chia thành hai bƣớc giống ý tƣởng của thuật toán Hai pha do Y.Liu đề xuất nhƣng hiệu quả hơn. Thuật toán không sinh ra khối lƣợng khổng lồ các ứng viên nhƣ thuật toán Hai pha do phƣơng pháp tìm các tập mục lợi ích TWU cao đƣợc giải quyết theo cách các giao tác cùng lợi ích TWU của nó đƣợc nén lên cây TWUI-tree, sau đó khai phá cây này hiệu quả theo ý tƣởng của thuật toán COFI-tree.

- Cây TWUI-tree có cấu trúc giống cây FP-tree, trƣờng độ hỗ trợ trong các nút của cây FP-tree đƣợc thay thành lợi ích TWU của mục dữ liệu, do đó có thể coi kích thƣớc của mỗi nút của hai cây là nhƣ nhau, kích thƣớc của hai cây về cơ bản giống nhau.CâyTWUI-tree có cấu trúc đơn giản, dễ dàng xây dựng và xử lý.

- Các cây COUI-tree thực chất là kết quả chiều của cây TWUI-tree cho từng mục dữ liệu. Cây COUI-tree của mục dữ liệu x biểu diễn các mục dữ liệu có lợi ích TWU lớn hơn hoặc bằng lợi ích TWU của x và cùng xuất hiện với x trong ít nhất một giao tác của cơ sở dữ liệu. Cách làm này đã chia bài toán thành nhiều bài toán nhỏ đơn giản hơn.

- Thuật toán COUI-Mine1 đƣợc phát triển dựa trên cấu trúc cây FP-tree và phƣơng pháp khai phá của thuật toán COUI-Mine1 nên chắc chắn đảm bảo tính dừng và hiệu quả.

Với những nhận xét trên và qua kết quả thử nghiệm có thể kết luận thuật toán COUI-Mine1 là một thuật toán hiệu quả để khai phá tập mục lợi ích cao.

2.3.5 Khai phá tƣơng tác với cây TWUI-tree

Thực tế nhiều khi đòi hỏi phải khai phá cơ sở dữ liệu với các ngƣỡng lợi ích khác nhau theo yêu cầu của ngƣời sử dụng. Cho cơ sở dữ liệu DB, sau khi khai phá tập mục lợi ích cao với ngƣỡng lợi ích δ1, ngƣời sử dụng có thể có nhu cầu khai phá với ngƣỡng δ2. Lúc đó chúng ta sẽ khai phá thế nào?

Đã có một số nghiên cứu giải quyết vấn đề khai phá tƣơng tác tập mục thƣờng xuyên , song còn rất ít tác giả đề cập đến khai phá tập mục lợi ích cao. Ở đây, luận văn đề xuất cách khai phá tƣơng tác tập mục lợi ích cao dựa trên cấu trúc cây TWUI-tree của thuật toán COUI-Mine1.

Trƣớc tiên, ta nhận xét rằng các mục dữ liệu trong cây TWUI-tree không nhất thiết

phải sắp xếp theo tiêu chí gì. Các mục dữ liệu trong bảng đầu mục của cây TWUI- tree có thể sắp xếp theo một số cách sau:

- Sắp giảm dần theo giá trị TWU của các mục dữ liệu trong cơ sở dữ liệu (nhƣ thứ tự trong cây FP-tree). Sắp các mục dữ liệu theo thứ tự này sẽ tăng khả năng giảm kích thƣớc của cây nhất vì các nhánh của cây sẽ dùng chung nhiều nút hơn. Thuật toán COUI-Mine2 ở phần sau sẽ sử dụng thứ tự này để tăng hiệu quả của thuật toán.

- Theo một thứ tự nào đó, ví dụ theo trật tự từ điển của tên mục dữ liệu.

Khai phá tƣơng tác có thể thực hiện trên cấu trúc cây TWUI-tree với một vài thay đổi nhỏ. Thuật toán COUI-Mine1chỉ cần thay đổi ở một số bƣớc sau sẽ trở thành thuật toán hiệu quả để khai phá tƣơng tác các tập mục lợi ích cao.

 Bƣớc xây dựng cây TWUI-tree: thứ tự các mục dữ liệu có thể theo một trong các cách trình bày ở trên nhƣng không tỉa đi mục dữ liệu nào. Nếu sắp theo số lần thực hiện của mục dữ liệu thì thực hiện nhƣ sau:

- Duyệt cơ sở dữ liệu lần thứ nhất, đếm số lần xuất hiện và tính giá trị TWU của từng mục dữ liệu. Sau đó sắp các mục dữ liệu theo thứ tự giảm dần của số lần xuất hiện và tạo bảng đầu mục của cây.

- Duyệt cơ sở dữ liệu lần thứ hai, mỗi giao tác đƣợc đọc ra, sắp các mục dữ liệu trong giao tác theo thứ tự trong bảng đầu mục và chèn danh sách đó lên cây.

Nhƣ vậy, sau khi xây dựng cây xong, toàn bộ cơ sở dữ liệu đã đƣợc nén lên cây TWUI-tree.

 Bƣớc khai phá: Khi khai phá với ngƣỡng lợi ích δ1, thuật toán đã xây dựng và khai phá cây TWUI-tree, tìm ra tập các ứng viên CP1 có lợi ích TWU cao.

Sau đó thuật toán duyệt lại cơ sở dữ liệu để tìm ra các tập mục lợi ích cao HU1 trong CP1. Bây giờ cần khai phá với ngƣỡng lợi ích δ2, rõ ràng ta không cần xây dựng lại cây TWUI-tree nữa.

Nếu δ2> δ1 thì tập ứng viên mới CP2 là tập con của tập ứng viên cũ. CP2  CP1, do đó không cần khai phá cây TWUI-tree để tìm các tập ứng viên mới CP2 mà ta chỉ cần duyệt lại cơ sở dữ liệu một lần để tìm ra các tập mục lợi ích cao theo ngưỡng mới δ2 từ các tập ứng viên cũ CP1.

Nếu δ2< δ1 thì tập các ứng viên mới CP2 là tập cha của tập ứng viên cũ, CP2  CP1, ta cần khai phá lại cây TWUI-tree để tìm các tập ứng viên mới CP2. Bƣớc tiếp theo, khi duyệt lại cơ sở dữ liệu để tìm ra các tập mục lợi ích cao theo ngƣỡng mới δ2 ta chỉ cần tính lợi ích thực sự của các ứng viên mới xuất hiện, tức các ứng viên thuộc CP2 – CP1, vì lợi ích của các ứng viên trong CP1 đã tính ở lần khai phá trƣớc.

Nhƣ vậy, cây TWUI-tree đƣợc xây dựng một lần, sử dụng khai phá nhiều lần. Với cơ sở dữ liệu DB, sau khi đã khai phá với một ngƣỡng lợi ích nào đó, thời gian khai phá với ngƣỡng lợi ích khác đƣợc giảm rất nhiều, không còn thời gian xây dựng cây TWUI-tree nữa.

2.4 THUẬT TOÁN COUI-Mine2

Thuật toán COUI-Mine1 trình bày ở trên cần duyệt cơ sở dữ liệu thêm lần thứ 3 để tính lợi ích của các tập mục ứng viên. Phần này đề xuất thuật toán COUI- Mine2 trên cơ sở cải tiến từ thuật toán COUI-Mine1 bằng cách lƣu ngay số lƣợng các mục dữ liệu trong giao tác vào các nút của cây, vì vậy, khi tìm ra các tập mục ứng viên, tính ngay đƣợc lợi ích thực sự của nó mà không cần duyệt lại cơ sở dữ liệu.

Thuật toán COUI-Mine2 gồm hai giai đoạn. Giai đoạn thứ nhất, xây dựng cây chứa đủ thông tin để khai phá tập mục lợi ích cao, gọi là cây UP-tree(Utility Pattern tree) và giai đoạn thứ hai, khai phá cây UP-tree để tìm các tập mục lợi ích cao.

2.4.1 Xây dựng cây UP-tree

Cây UP-tree có cấu trúc giống nhƣ cây TWUI-tree ở trên nhƣng bổ sung thêm một số trƣờng.

Mỗi mục của bảng đầu mục gồm 4 trƣờng: tên mục dữ liệu, lợi ích của một đơn vị mục dữ liệu, số lƣợng mục dữ liệu đó trong toàn bộ cơ sở dữ liệu và con trỏ(trỏ đến nút đầu tiên biểu diễn mục dữ liệu này trên cây). Các mục dữ liệu trong bảng đầu mục sắp xếp giảm dần theo độ hỗ trợ của chúng(điều này sẽ tăng khả năng giảm số nút của cây UP-tree hơn là sắp theo TWU).

Nút của cây UP-tree gồm các trƣờng nhƣ nút của cây TWUI-tree và thêm mảng lƣu số lƣợng các mục dữ liệu trên đƣờng đi từ nút đó đến nút gốc của cây.

Thuật toán cần duyệt cơ sở dữ liệu hai lần. Lần duyệt thứ nhất, thuật toán tính lợi ích các giao tác, số lần xuất hiện(độ hỗ trợ), tổng số lƣợng, lợi ích theo giao tác TWU của từng mục dữ liệu. Tiếp theo, thuật toán loại bỏ các mục dữ liệu có lợi ích TWU thấp, các mục còn lại sắp xếp giảm dần theo độ hỗ trợ của chúng và xây dựng bảng đầu mục của cây.

Lần duyệt thứ hai, mỗi giao tác chỉ lấy ra các mục dữ liệu lợi ích TWU cao(có mặt trong bảng đầu mục), sắp xếp các mục này theo trật tự giảm dần của độ hỗ trợ và lƣu lên cây.

Luận văn đề xuất phƣơng pháp lƣu số lƣợng các mục dữ liệu trong giao tác vào nút của cây nhƣ sau:

Xét giao tác là T=(A1:s1, A2:s2,…,Aj:sj,…,Ak:sk) với lợi ích tu(T), ở đó cặp Aj:sj biểu diễn tên mục dữ liệu và số lƣợng của mục đó trong giao tác. Giả sử ta đã lƣu (j-1) mục đầu lên cây, bây giờ xét mục Aj tại nút N. Nút N có nhãn Aj, đƣờng đi từ nút N lên nút gốc là Aj, Aj-1, …,A1. Nút N có trƣờng twu và mảng số lƣợng các mục dữ liệu tƣơng ứng với các mục dữ liệu trên đƣờng đi từ nút N lên nút gốc

Nếu N là nút đã có của cây với mảng số lƣợng là [rj, rj-1,…, r1], thay đổi tại nút N nhƣ sau: N.twu:=N.twu+tu(T), cộng tƣơng ứng dãy số sj, sj-1,…, s1 vào mảng [rj, rj-1,…, r1] và nhận đƣợc mảng [rj+sj, rj-1+sj-1,…,r1+s1] (hình 3.10a và 3.10b).

Nếu N là nút mới đƣợc tạo ra, ta thiết đặt tại nút N nhƣ sau: N.twu:=tu(T), mảng số lƣợng các mục là [sj, sj-1,…,s1] (hình 3.11). 1 1 : w , ,..., j j j A t u r rr     Hình 2.10a: Nút N 1 1 1 1 : w ( ) , ,..., j j j j j A t u tu T r s rsr s        

Hình 2.10b: Nút N sau khi điều chỉnh

1 1 : ( ) , ,..., j j j A tu T s ss     Hình 2.11: Nút N mới tạo.

Chú ý: xét nút N trong hình 2.10a, rj là số lƣợng mục dữ liệu Aj, tức là phần tử đầu tiên của mảng số lƣợng tại một nút là số lƣợng của mục dữ liệu mà nút đó biểu diễn. Từ cách xây dựng cây UP-tree nhƣ trên, nếu đƣờng đi từ một nút N(hình

Một phần của tài liệu khai phá tập mục thường xuyên lợi ích cao trong cơ sở dữ liệu (Trang 51 - 88)