Nhận xét và đánh giá thuật toán COUI-Mine

Một phần của tài liệu Khai phá tập mục lợi ích cao sử dụng cấu trúc cây tiền tố (Trang 53 - 92)

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 .

ột giao tác T O(|T U|), ở đó U là tập các mụ ợ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à

T DB

Max 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 .

(4) Thông thườ ớ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

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

các nghiên cứu gần đây trong [14], [15], hiện nay có thể sử dụng hà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-Mine 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-Mine là khả thi và hiệu quả.

Bước khai phá cây TWUI-tree

Mệnh đề 2.3: Thuật toán COUI-Mine đả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 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ác cây COUI-tree theo phương pháp không đệ quy đã được công bố trong [8], [9]. Tập mục lợi ích TWU cao có tính chất phản đơn điệu, do đó, khi thay độ hỗ trợ bởi lợi ích TWU thì phương pháp khai phá trong [8], [9] 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 kiểu Apriori.

Mệnh đề 2.4: Số các tập mục ứng viên sinh ra bởi thuật toán COUI-Mine 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 Apriori).

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

Tính hiệu quả của thuật toán COUI-Mine còn do 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-Mine, 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 kiểu Apriori, 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 trong [10] 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 Apriori rõ ràng tăng lên rất nhanh.

2.3.1.4. 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.

Đã 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ương tác tập mục lợi ích cao. Ở đây, luận văn chỉ đề 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-Mine. (adsbygoogle = window.adsbygoogle || []).push({});

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 giảm dần theo số lần xuất hiện của các mục dữ liệu trong cơ sở dữ liệu (như thứ tự trong cây FP-tree).

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-Mine chỉ 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 sắp xếp giảm dần theo

số lần xuất hiện của chúng trong cơ sở dữ liệu nhưng không tỉa đi mục dữ liệu nào.

- 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ự như trong bảng đầu mục và chèn danh sách đó lên

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

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 tập các tập mục lợi ích cao HU1trong

1

CP. Bây giờ cần khai phá với ngưỡng lợi ích 2, rõ ràng là ta không cần xây dựng lại cây TWUI-tree nữa.

Nếu 2 1 thì tập các ứng viên mới CP2 là tập con của tập ứng viên cũ,

2 1

CP CP, do đó không cần khai phá cây TWUI-tree để tìm tập các ứng viên mới 2

CP 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ừ tập các ứ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ũ,

2 1

CP CP, ta cần khai phá lại cây TWUI-tree để tìm tập các ứ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ớ , tức

các ứng viên thuộc CP2 CP , 1 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.3.2. Các cấu trúc cây tiền tố cho khai phá lợi ích cao

Trong thuật toán COUI-Mine ở trê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ì. Theo [15], có 3 kiểu cây tiền tố có thể áp dụng cho khai phá lợi ích cao dựa trên cấu trúc cây TWUI-tree, đó là:

- Cây TWUI-tree có các mục dữ liệu sắp tăng dần theo trật tự từ điển, ký hiệu

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

Hình 2.10: Cây TWUI-tree có các mục dữ liệu sắp tăng dần theo trật tự từ điển của cơ sở dữ liệu bảng 2.1 và bảng 2.2.

- Cây TWUI-tree có các mục dữ liệu sắp giảm dần theo số lần xuất hiện của chúng trong cơ sở dữ liệu, ký hiệu là TWUI-treeTF.

Hình 2.11: Cây TWUI-tree có các mục dữ liệu sắp giảm dần theo số lần xuất hiện của chúng trong cơ sở dữ liệu bảng 2.1 và bảng 2.2. (adsbygoogle = window.adsbygoogle || []).push({});

- Cây TWUI-tree có các mục dữ liệu sắp giảm dần theo TWU của chúng, ký hiệu là TWUI-treeTWU.

Bảng đầu mục Mục dữ liệu Con trỏ B C D E Gốc E:8 B:181 C:56 E:56 D:118 D:8 E:118 C:72 D:35 E:37 E:35 Bảng đầu mục Mục dữ liệu Con trỏ E B C D Gốc D:35 E:254 B:169 C:51 D:118 C:77 B:12 D:8

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

Hình 2.12: Cây TWUI-tree có các mục dữ liệu sắp giảm dần theo TWU của chúng trong cơ sở dữ liệu bảng 2.1 và bảng 2.2.

So sánh tính hiệu quả của các cây này, ta có các nhận xét sau (theo [15]):

Mệnh đề 2.5: Số lượng các nút tham gia vào quá trình khai phá của cây

TWUI-treeTWU luôn nhỏ hơn hoặc bằng số lượng các nút tham gia vào quá trình

khai phá của cây TWUI-treeTFvà cây TWUI-treeL.

Mệnh đề 2.6: Khi ngưỡng lợi ích minutil tăng, số lượng mục dữ liệu có TWU thấp tăng thì số nút N tham gia vào quá trình khai phá trong cây TWUI-treeTWU

giảm.

Mệnh đề 2.7: Nếu N1 là số các tập mục ứng viên được tạo ra bởi các thuật toán khai phá cây TWUI-tree và N2 là số các tập mục ứng viên được tạo ra bởi các thuật toán khai phá tập mục lợi ích cao kiểu Apriori, thì N1 N2 .

Các cây TWUI-tree có thể dùng để khai phá gia tăng, chúng chỉ yêu cầu điều chỉnh nhóm các giao tác được thêm vào/xóa đi/sửa đổi cuối.

Các cây TWUI-tree xây dựng một lần, sử dụng khai phá nhiều lần, do đó chúng hiệu quả trong khai thác tương tác. Sau khi tạo ra một cây, một số lần khai thác có thể được thực hiện với các ngưỡng lợi ích tối thiểu khác nhau mà không cần xây dựng lại cây.

Trong 3 cấu trúc cây tiền tố ở trên, TWUI-treeLlà cây rất đơn giản và dễ

Bảng đầu mục Mục dữ liệu Con trỏ E B D C Gốc B:12 E:254 B:169 C:51 D:118 D:43 C:42 C:35

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

dàng để xây dựng và xử lý, nó không đòi hỏi bất kỳ hoạt động tái cấu trúc nào mặc dù có cập nhật gia tăng cơ sở dữ liệu. Với chi phí tái cơ cấu nhỏ, cây TWUI-treeTF

đòi hỏi ít bộ nhớ và cây TWUI-treeTWU đòi hỏi ít thời gian thực hiện hơn. Tất cả ba cấu trúc cây này đều đòi hỏi tối đa hai lần duyệt cơ sở dữ liệu cho quá trình xây dựng cây. Phân tích chi tiết hơn trong [15] cho thấy 3 cấu trúc cây này là hiệu quả để khai phá gia tăng và khai phá tương tác các tập mục lợi ích cao cả về mặt thời gian thực hiện và sử dụng bộ nhớ.

2.3.3. Thuật toán UP-Growth

Thuật toán UP-Growth (Utility Pattern Growth) được nhóm các nhà nghiên cứu (Vincent S. Tseng, Cheng-Wei Wu, Bai-En Shie và Philip S. Yu) thuộc Đại học Quốc gia Cheng Kung (Đài loan) và Đại học Illinois (Chicago, USA) đề xuất năm 2010 [14]. Đây là thuật toán sử dụng hiệu quả cấu trúc cây tiền tố để khai phá tập mục lợi ích cao trong CSDL giao tác.

Trong thuật toán COUI-Mine ở phần 2.3.1 trên, ở bước thứ nhất, thuật toán xây dựng cây TWUI-tree và khai phá trên cây này để tìm ra các tập mục lợi ích cao theo giao tác – tập này được coi như tập ứng viên của các tập mục lợi ích cao. Trong bước thứ hai, thuật toán duyệt lại CSDL ban đầu để xác định tập mục lợi ích cao từ tập ứng viên.

Để nâng cao hiệu quả cho bước thứ nhất, trong thuật toán UP-Growth, các tác giả đã đề xuất bốn chiến lược để đánh giá lợi ích của các tập mục gần hơn với lợi ích của chúng, do đó số các tập mục ứng viên giảm đi, giảm công việc cho bước thứ 2. Thuật toán sử dụng cấu trúc cây tiền tố để lưu thông tin về các giao tác phục vụ cho khai phá tập mục lợi ích cao và đặt tên là cây UP-Tree (Utility Pattern Tree).

Thuật toán UP-growth gồm 3 bước giống như thuật toán COUI-Mine: (1) Xây dựng UP-Tree,

(2) Sinh ra các tập mục lợi ích cao tiềm năng từ UP-Tree bằng thuật toán UP-Growth, và

(3) Xác định các tập mục lợi ích cao từ các tập mục lợi ích cao tiềm năng. Ở đây, các tác giả đưa ra khái niệm “tập mục lợi ích cao tiềm năng” là những tập mục có khả năng là tập mục lợi ích cao.

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/

- Bước xây dựng cây UP-Tree:

Cây UP-Tree có cấu trúc giống cây TWUI-tree ở mục 2.3.1.1 trên nhưng tại mội nút N, lợi ích theo giao tác TWU của mục dữ liệu được thay bằng một giá trị đánh giá lợi ích khác, có cải tiến để gần với lợi ích thực hơn, ký hiệu là N.nu.

Mỗi nút N của cây UP-Tree bao gồm các trường: N.name, N.count, N.nu, N.parent, N.hlink và tập các nút con. Ở đó: N.name là tên mục dữ liệu của nút, N.count là số đếm hỗ trợ của nút, N.nu là giá trị đánh giá lợi ích của nút, N.parent lưu nút cha của nút, N.hlink chứa con trỏ chỉ đến các nút cùng tên chứa trong N.name.

Bảng đầu mục cũng giống như bảng đầu mục của cây TWUI-tree nhưng thêm 1 trường là giá trị đánh giá lợi ích của mục dữ liệu. Mỗi mục của bảng đầu mục gồm 3 thành phần: tên mục dữ liệu, giá trị đánh giá lợi ích của mục 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). (adsbygoogle = window.adsbygoogle || []).push({});

- Bước khai phá cây: thuật toán áp dụng cách khai phá FP-Growth trình bày

trong [8].

Thuật toán UP-Growth đã đề xuất sử dụng một số kỹ thuật có hiệu quả trong việc rút gọn tập các tập mục lợi ích cao tiềm năng, do đó giảm yêu cầu tính toán và bộ nhớ lưu trữ. Các kỹ thuật chính bao gồm:

(i). Trong quá trình xây dựng cây UP-Tree, các mục dữ liệu không có khả năng xuất hiện trong các tập mục lợi ích cao sẽ bị loại bỏ.

(ii). Giá trị đánh giá lợi ích của nút N là N.nu sẽ được trừ đi lợi ích của các nút con của nó trong suốt quá trình xây dựng cây.

Để minh họa cho các kỹ thuật này, ta xét CSDL ví dụ sau:

Bảng 2.8: Cơ sở dữ liệu ví dụ cho thuật toán UP-Growth

TID Mục dữ liệu TU

T1 (A,1) (C,1) (D,1) 8

T2 (A,2) (C,6) (E,2) (G,5) 27

Số hóa bởi Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ T4 (B,4) (C,3) (D,3) (E,1) 20 T5 (B,2) (C,2) (E,1) (G,2) 11 Bảng 2.9: Bảng lợi ích của CSDL bảng 2.8 Mục A B C D E F G Lợi nhuận 5 2 1 2 3 1 1

Bảng 2.10: Các giao tác được sắp lại các mục dữ liệu theo TWU giảm dần

TID Giao tác đã sắp lại các mục dữ liệu TU

T1’ (C,1) (A,1) (D,1) 8

T2’ (C,6) (E,2) (A,2) 22

T3’ (C,1) (E,1) (A,1) (B,2) (D,6) 25

T4’ (C,3) (E,1) (B,4) (D,3) 20

T5’ (C,2) (E,1) (B,2) 9

Xét quá trình chèn giao tác T1' ( ,1)( ,1)( ,1)C A D tại bảng 2.10 lên cây UP-tree: Đầu tiên nút C được tạo ra,

' ' ' '

1 1 1 1

. ( ) ( ( , ) ( , )) 8 (5 2) 1 ( , )

C nu TWU T u A T u D T u C T .

Tiếp theo nút A được tạo là con của nút C với A.count 1 và

Một phần của tài liệu Khai phá tập mục lợi ích cao sử dụng cấu trúc cây tiền tố (Trang 53 - 92)