KẾT LUẬN CHƢƠNG 1

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 28 - 88)

Chƣơng 1 trình bày chi tiết các khái niệm cơ bản, bài toán khai phá tập mục thƣờng xuyên và hai thuật toán cơ bản là thuật toán Apriori và FP-growth. Thuật toán Apriori tiêu biểu cho phƣơng pháp sinh ra các tập mục ứng viên rồi duyệt cơ sở dữ liệu kiểm tra độ hỗ trợ của chúng, thuật toán FP-growth đại diện cho phƣơng pháp không sinh ra các tập mục ứng viên mà nén cơ sở dữ liệu lên cấu trúc

cây, sau đó khai phá cây này. Ở đây trình bày phƣơng pháp COFI-tree khai phá cây FP-tree để tìm các tập mục thƣờng xuyên thay cho phƣơng pháp FP-growth của J. Han để làm cơ sở cho việc phát triển các thuật toán ở chƣơng 2 của luận văn.

Chƣơng hai của luận văn trình bày mô hình mở rộng của bài toán khai phá tập mục lợi ích cao, đề xuất ba thuật toán khai phá cho các mô hình này.

Chƣơng 2 KHAI PHÁ TẬP MỤC LỢI ÍCH CAO 2.1. GIỚI THIỆU

Khai phá tập mục lợi ích cao là sự mở rộng, tổng quát hóa của khai phá tập mục cổ phần cao. Mô hình khai phá tập mục lợi ích cao đƣợc Yao và cộng sự đề xuất (Hong Yao và Hamilton, 2006; H.Yao, Hamilton và Butz, 2004) Trong mô hình khai phá tập mục lợi ích cao, giá trị của mục dữ liệu trong giao tác là một số(nhƣ số lƣợng đã bán của mặt hàng, gọi là giá trị khách quan), ngoài ra còn có bảng lợi ích cho biết lợi ích mang lại khi bán một đơn vị hàng đó (gọi là giá trị chủ quan, do ngƣời quản lý kinh doanh xác định). Lợi ích của một tập mục là số đo lợi nhuận mà tập mục đó đóng góp trong cơ sở dữ liệu, nó có thể là tổng lợi nhuận, là tổng chi phí của tập mục. Khai phá tập mục lợi ích cao là khám phá tất cả các tập mục có lợi ích không nhỏ hơn ngƣỡng lợi ích tối thiểu quy định bởi ngƣời sử dụng. Hong Yao và Howard Hamilton đề xuất phƣơng pháp khai phá và các chiến lƣợc tỉa dựa trên các tính chất của ràng buộc lợi ích, thể hiện trong hai thuật toán Umining và UminingH. Các thuật tỉa mà hai thuật toán này áp dụng có khả năng thu gọn phần nào tập ứng viên, tuy vậy có những nhƣợc điểm nên hiệu quả không cao. Liu (Y.Liu, W.K.Liao và A.Choudhary,2005) đƣa ra khái niệm lợi ích của giao tác và lợi ích của tập mục tính theo lợi ích của các giao tác chứa nó gọi là lợi ích TWU(Transaction-weighted Utilization). Lợi ích theo giao tác TWU có tính chất phản đơn điệu nhƣ tính chất của tập mục thƣờng xuyên và tập tất cả các tập mục lợi ích cao chứa trong tập tất cả các tập mục lợi ích TWU cao. Y.Liu đề xuất thuật toán hiệu quả gồm hai pha để khai phá tập mục lợi ích vao. Thuật toán rút gọn không gian tìm kiếm nhờ áp dụng tính chất phản đơn điệu của lợi ích TWU. Tuy nhiên, thuật toán thực hiện kém hiệu quả khi khai phá tập dữ liệu dày và mẫu dài vì tốn nhiều thời gian cho việc sinh ra khối lƣợng khổng lồ các tập mục ứng viên và tính lợi ích TWU của nó trong mỗi lần duyệt cơ sở dữ liệu. Thuật toán phải duyệt cơ sở dữ liệu nhiều lần, số lần duyệt bằng chiều dài của mẫu dài nhất tìm đƣợc, do đó, khi số mục dữ liệu lớn thì khối lƣợng tính toán là vô cùng lớn.

A.Erwin và đồng sự(A.Erwin, R.P.Gopalan và N.R.Achuthan) đề xuất các thuật toán CTU-Mine và CTU-PRO khai phá tập mục lợi ích cao theo cách phát triển các mẫu trên cấu trúc cây. Thuật toán CTU-Mine khai phá hiệu quả hơn thuật toán Hai pha chỉ trong cơ sở dữ liệu dày với ngƣỡng lợi ích thấp. Thuật toán CTU-PRO có cải tiến so với thuật toán CTU-Mine nên khai phá hiệu quả hơn thuật toán Hai pha và thuật toán CTU-Mine.

Chƣơng này đề xuất ba thuật toán khai phá tập mục lợi ích cao dựa trên cấu trúc cây đơn giản hơn và cách khai phá không đệ quy. Các thuật toán đề xuất sử dụng cấu trúc cây FP-tree đƣợc Han, Wang và Yin giới thiệu năm 2000, cách khai phá cây FP-tree không đệ quy bởi cấu trúc cây COFI-tree so Mohammad EL-Hajj và Osmar R.Zaiane đề xuất năm 2003 trong. Hai thuật toán đầu sử dụng cấu trúc cây FP-tree để xây dựng cây chứa thông tin của các giao tác, sau đó khai phá cây này để tìm các tập mục lợi ích cao. Thuật toán thứ ba chuyển đổi dữ liệu thành dạng ma trận và lƣu ở bộ nhớ ngoài, sau khi đã chuyển đổi sang dạng biểu diễn mới, có thể khai phá với các ngƣỡng lợi ích khác nhau. Thuật toán thứ ba này có thể khai phá đƣợc các tập dữ liệu rất lớn vì hầu nhƣ dữ liệu đặt tại bộ nhớ ngoài, chỉ đƣa vào bộ nhớ trong một phần nhỏ của dữ liệu để khai phá. Ba thuật toán đề xuất thực hiện khai phá hiệu quả vì các lý do: 1) Số lần duyệt cơ sở dữ liệu ít, 2) Không sinh ra khối lƣợng khổng lồ các tập mục ứng viên, giảm chi phí tính toán và 3) Sử dụng tiết kiệm bộ nhớ.

Nội dung của chƣơng 2 gồm các phần sau: sau phần giới thiệu, phần hai trình bày các khái niệm cơ bản về tập mục lợi ích cao và phát biểu bài toán khai phá nó; Phần ba, phần bốn và phần năm đề xuất ba thuật toán khai phá tập mục lợi ích cao; Phần sáu trình bày kết quả thực nghiệm các thuật toán mới; Phần cuối là đánh giá thuật toán và kết luận dựa trên việc phân tích thuật toán và các thử nghiệm.

2.2 BÀI TOÁN KHAI PHÁ TẬP MỤC LỢI ÍCH CAO

Phần này nêu một số định nghĩa và thuật ngữ mô tả bài toán khai phá tập mục lợi ích cao theo (H.Yao, Hamilton và Butz, 2004; Hong Yao, Hamilton và Geng, 2006).

Cho tập các mục (item) I={i1, i2,…, in}. Một giao tác(transaction) T là một tập con của I, T  I. Cơ sở dữ liệu là một tập các giao tác DB = {T1, T2,…, Tm}. Mỗi giao tác đƣợc gán một định danh TID. Một tập mục con X  I, gồm k mục phân biệt đƣợc gọi là một k-tập mục. Giao tác T gọi là chứa tập mục X nếu X  T.

Định nghĩa 2.1: Ta gọi giá trị của mục ip trong giao tác Tq(giá trị tại cột ip hàng Tq của cơ sở dữ liệu) là giá trị khách quan(objective value) của mục ip tại giao tác Tq, ký hiệu là o(ip, Tq).

Thông thƣờng giá trị khách quan của mục dữ liệu là số tự nhiên(nhƣ số lƣợng đã bán của một mặt hàng trong giao tác).

Định nghĩa 2.2: Ta gọi giá trị do nhà kinh doanh gán cho mục ip trong cơ sở dữ liệu, dựa trên đánh giá lợi nhuận mà mỗi đơn vị mục dữ liệu có thể đem lại, là giá trị chủ quan(subjective value) của mục ip và ký hiệu là s(ip).

Giá trị chủ quan của các mục thƣờng đƣợc cho trong một bảng kèm theo cơ sở dữ liệu và gọi là bảng lợi ích(utility table). Chẳng hạn, cơ sở dữ liệu các giao tác và bảng lợi ích ở bảng 2.1 và bảng 2.2, giá trị khách quan của mục B tại giao tác T2 là o(B, T2)=12, giá trị chủ quan của B là s(B)=5.

Lợi ích của mục dữ liệu trong giao tác đƣợc đánh giá thông qua hàm 2 biến sau:

Định nghĩa 2.3: Ký hiệu x là giá trị khách quan, y là giá trị chủ quan của mục dữ liệu. Một hàm 2 biến f(x, y): R x RR, đơn điệu tăng theo x và theo y, đƣợc gọi là hàm lợi ích.

Thông thƣờng hàm lợi ích đƣợc xác định nhƣ sau: f(x, y)= x x y.

Định nghĩa 2.4: Cho hàm lợi ích f(x, y). Lợi ích của mục ip tại giao tác Tq, ký hiệu

u(ip, Tq) là giá trị của hàm f(x, y) tại o(ip, Tq) và s(ip). tức là u(ip, Tq) = f(o(ip, Tq), s(ip)).

Định nghĩa 2.5: Cho tập mục X chứa trong giao tác Tq. Lợi ích của tập mục X tại giao tác Tq, ký hiệu u(X, Tq), là tổng lợi ích của tất cả các mục ip thuộc X tại giao tác Tq, tức là u(X, Tq) = ( , ) p p q i X u i T   với X Tq.

Bảng 2.1: Cơ sở dữ liệu giao tác.

Bảng 2.2: Bảng lợi ích.

Định nghĩa 2.6: Lợi ích của tập mục X trong cơ sở dữ liệu DB, ký hiệu u(X), là tổng lợi ích của tập mục X tại các giao tác thuộc dbx, tức là:

TID A B C D E T1 0 12 2 0 2 T2 0 12 0 2 1 T3 2 0 1 0 1 T4 1 0 0 2 1 T5 0 0 4 0 2 T6 1 2 0 0 0 T7 0 20 0 2 1 T8 3 0 25 6 1 T9 1 2 0 0 0 T10 0 0 16 0 1

Mục dữ liệu Lợi nhuận($/đơn vị)

A 3

B 5

C 1

D 3

u(X)= ( , ) ( , ). q x q x p q p q T db T db i X u X T u i T       

Ví dụ, trong cơ sở dữ liệu bảng 2.1 và bảng 2.2, u(B, T2)=12.5=60. Xét

X={B, D}, u(X, T2)=u(B, T2)+u(D, T2)=12.5+2.3=66, có 2 giao tác T2 và T7 chứa tập mục X, do đó dbx={T2, T7}, u(X)=u(X, T2)+u(X, T7) =66+106=172.

Định nghĩa 2.7: (transaction utility) Lợi ích của giao tác Tq, ký hiệu tu(Tq), là tổng lợi ích của tất cả các mục dữ liệu trong giao tác, tức là tu(Tq)= ( , )

p q p q i T u i T  

Ví dụ, trong cơ sở dữ liệu bảng 2.1 và bảng 2.2, tu(T2) = 12.5+2.3+1.5=71.

Định nghĩa 2.8: Ngƣỡng lợi ích tối thiểu, ký hiệu , là phần trăm của tổng lợi ích của toàn bộ cơ sở dữ liệu.

Từ ngƣỡng lợi ích tối thiểu , có thể tính giá trị lợi ích tối thiểu minutil nhƣ sau: minutil=. ( ). q q T DB tu T  

Ví dụ, cơ sở dữ liệu bảng 2.1 và bảng 2.2 có tồng lợi ích là 398, nếu  =30% thì giá trị lợi ích tối thiểu là minutil = . ( )

q q T DB tu T   =30%.398=119,4.

Để tiện trình bày ở phần sau, luận văn sử dụng giá trị lợi ích tối thiểu

minutil thay cho ngƣỡng phần trăm .

Định nghĩa 2.9: Cho ngƣỡng lợi ích minutil(>0) và xét tập mục X. X đƣợc gọi là

tập mục lợi ích cao nếu u(X) minutil. Trƣờng hợp ngƣợc lại, X đƣợc gọi là tập mục lợi ích thấp.

Định nghĩa 2.10: Cho cơ sở dữ liệu giao tác DB và ràng buộc lợi ích minutil, khai phá tập mục lợi ích cao là tìm tập HU(High Utilty), chứa tất cả các tập mục lợi ích cao, tức là tập HU ={X X  I, u(X)minutil}.

- Ràng buộc ích không có tính chất phản đơn điệu, ví dụ, trong cơ sở dữ liệu bảng 2.1, ta có u(BC)=62<72=u(BCE), trong khi đó u(BC)=62>0=u(BCD).

- Có thể coi khai phá tập mục cổ phần cao là trƣờng hợp đặc biệt của khai phá tập mục lợi ích cao khi tất cả các mục dữ liệu trong các giao tác là 0 hoặc 1 và tất cả giá trị chủ quan bằng 1 thì ta gặp lại mô hình dữ liệu của khai phá tập mục thƣờng xuyên.

- Về mặt ngữ nghĩa, tập mục lợi ích cao khác với tập mục thƣờng xuyên, dù có khai phá trên tập dữ liệu nhị phân với ngƣỡng lợi ích minutil bằng ngƣỡng độ hỗ trợ minsup thì kết quả khai phá cũng khác nhau, các tập mục tìm đƣợc có ý nghĩa khác nhau. Nhƣ vậy, phát triển mở rộng bài toán khai phá tập mục thƣờng xuyên thành bài toán khai phá tập mục cổ phần cao và khai phá tập mục lợi ích cao không đơn thuần là mở rộng kiểu dữ liệu mà là thay đổi nhiệm vụ khai phá, khai phá với nhiệm vụ mới và kết quả các tập mục tìm được có các ứng dụng mới.

Khai phá lợi ích cao theo mô hình của khai phá cổ phần cao:

Cho cơ sở dữ liệu giao tác và bảng lợi ích, ngƣỡng lợi ích minutil, nếu giá trị ip trong mỗi giao tác đƣợc thay thành o(ip, Tq) x s(ip) thì nhiệm vụ khai phá lợi ích cao trở thành khai phá cổ phần cao với min_lmv =minutil. Do đó các phƣơng pháp khai phá cổ phần cao vẫn có thể áp dụng cho khai phá lợi ích cao.

Phần tiếp theo của luận văn đề xuất ba thuật toán khai phá tập mục lợi ích cao sử dụng ý tƣởng của thuật toán COFI-tree do Mohammad El-Hajj và Osmar R.Zaiane đề xuất.

2.3 THUẬT TOÁN COUI-Mine1

Y.Liu đƣa ra khái niệm lợi ích của tập mục tính theo lợi ích của các giao tác chứa nó, gọi là lợi ích TWU(Transaction Weighted Utility).

Định nghĩa 2.11: (Transaction Weighted Utility-TWU) Lợi ích TWU của tập mục X, ký hiệu twu(X), là tổng lợi ích của tất cả các giao tác chứa X trong cơ sở dữ liệu, tức là twu(X) = ( ) q q q T DB X T tu T   

Nhận xét:

u(X, Tq)≤tu(Tq) nên u(X) =  ,    w  

q q q q q q T DB X T T DB X T u X T tu T t u X          

Có thể coi twu(X) nhƣ là cận trên của u(X). Với ngƣỡng lợi ích minutil, nếu X là tập mục lợi ích cao thì X cũng là tập mục lợi ích TWU cao vì twu(X) ≥ u(X) ≥ minutil, ngƣợc lại, nếu X là tập mục lơi ích TWU thấp thì X cũng là tập mục lơi ích thấp.

Y.Liu đã chứng minh:

- Ràng buộc lợi ích TWU có tính chất phản đơn điệu, tức là: Mọi tập mục cha của tập mục lợi ích TWU thấp cũng là tập mục lợi ích TWU thấp. Do vậy, nếu X là tập mục lợi ích TWU thấp, twu(X) < minutil, thì tập X và mọi tập cha của X đều là tập mục lợi ích thấp, có thể loại bỏ chúng trong quá trình khai phá tập mục lợi ích cao.

- Tập các mục lợi ích cao chứa trong tập các tập mục lợi ích TWU cao. Điều này có nghĩa là, nếu ta tìm đƣợc tập các tập mục lợi ích TWU cao thì ta chỉ cần tìm các tập mục lợi ích cao trong tập đó.

Do tập mục lợi ích TWU cao có tính chất phản đơn điệu nên có thể sử dụng các phƣơng pháp khai phá của tập mục thƣờng xuyên để tìm các tập mục lợi ích TWU cao. Trong các phƣơng pháp tập mục thƣờng xuyên thì phƣơng pháp nén các giao tác lên cấu trúc cây rồi khai phá cây đó là phƣơng pháp có nhiều ƣu điểm và hiệu quả. Dựa trên ý tƣởng khai phá tập mục thƣờng xuyên của thuật toán COFI- tree trình bày ở chƣơng 1, luận văn đề xuất thuật toán khai phá tập mục lợi ích cao, gọi là thuật toán COUI-Mine1(Co-Occurrence Utility Items Mine).

Thuật toán COUI-Mine1 gồm hai bƣớc:

- Bƣớc thứ nhất tìm các tập mục lợi ích TWU cao(tập này có thể coi là tập các tập mục ứng viên).

- Bƣớc thứ hai, duyệt lại cơ sở dữ liệu để tính lợi ích thực sự của mỗi tập mục ứng viên, từ đó xác định đƣợc tập các tập mục lợi ích cao.

Để tìm tập các tập mục lợi ích TWU cao, luận văn đề xuất một cấu trúc cây mới gọi là cây TWUI-tree(Transaction Weighted Utility Itemsets Tree) dựa trên ý tƣởng cấu trúc cây FP-tree. Cây TWUI-tree chứa đủ thông tin để khai phá tập mục lợi ích TWU cao. Khai phá cây TWUI-tree dùng một cấu trúc dữ liệu phụ trợ gọi là cây COUI-tree(Co-Occurrence Utility Items tree).

2.3.1 Xây dựng cây TWUI-tree

Định nghĩa 2.1: (Cây TWUI-tree): Cây TWUI-tree là một cấu trúc cây tiền tố (prefix-tree) đƣợc định nghĩa nhƣ sau:

(1)Cây bao gồm một nút gốc nhãn Null, tập các cây con của gốc và một bảng đầu mục.

(2)Mỗi nút của cây gồm ba trƣờng: tên mục dữ liệu, giá trị twu của mục dữ liệu và con trỏ(trỏ đến nút tiếp theo cùng nhãn trên cây hoặc là null nếu không có).

(3)Mỗi mục của bảng đầu mục gồm hai trƣờng: tên mục dữ liệu và con trỏ(trỏ đến nút đầu tiên biểu diễn 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 lợi ích TWU của chúng.

Dựa trên định nghĩa 2.1, luận văn đề xuất thuật toán xây dựng cây TWUI-tree nhƣ sau:

Thuật toán 2.3.1(xây dựng cây TWUI-tree)

Input: Cơ sở dữ liệu giao tác DB, ngƣỡng lợi ích minutil.

Output: Cây TWUI-tree.

(Cây nén các giao tác của cơ sở dữ liệu DB để khai phá tập mục lợi ích TWU cao).

Method: Cây TWUI-tree xây dựng nhƣ sau: 1. Duyệt cơ sở dữ liệu lần thứ nhất:

1.1Tính lợi ích các giao tác, lợi ích TWU của từng mục dữ liệu.

1.2Chọn ra tập U các mục dữ liệu có lợi ích TWU cao, sắp tập U theo thứ tự giảm dần của lợi ích TWU đƣợc danh sách Ulist và xây dựng bảng đầu mục của cây.

2. Tạo cây:

2.1Tạo nút gốc R của cây.

2.2Duyệt cơ sở dữ liệu lần thứ 2, với mỗi giao tác T trong DB, chọn ra các mục dữ liệu có lợi ích TWU cao, sắp các mục này theo thứ tự của Ulist. Giả sử danh sách đã sắp của T là ([xL]), ở đó x là mục dữ liệu đầu và L là phần còn lại của danh sách, gọi hàm insert_tree([xL], R).

Giải thích thực hiện của hàm insert_tree([xL], R):

Hàm insert_treeI([xL], R) làm việc nhƣ sau: Nếu có nút con N nhãn X thì điều chỉnh trƣờng twu của nút N nhƣ sau: N.twu:= N.twu + tu(T); Ngƣợc lại, tạo

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 28 - 88)