CÀI ĐẶT ỨNG DỤNG THỬ NGHIỆM KHAI PHÁT ẬP

Một phần của tài liệu Các tập mục thường xuyên trong khai phá dữ liệu và ứng dụng (Trang 56)

Kết quả thực hiện thuật toán khai phá tập mục lợi ích cao sử dụng thuật toán trình bày trong mục khai phá tập mục lợi ích cao dựa trên ý tưởng của thuật toán FSM. Thuật toán được cài đặt bằng Visual Studio 2008, ngôn ngữ cài đặt là C#. Kết quả được thực hiện trên máy có cấu hình Pentium Core 2 Duo E7500, 2GB DDR3 SDRAM, hệ điều hành Windows 7. Dữ liệu chạy chương trình được sinh ngẫu nhiên với số lượng bản ghi và số lượng mục dữ liệu tùy ý. Dữ liệu được lưu trong file Excel nằm trong thư mục Database của chương trình.

Một số kết quả giao diện chạy chương trình

File Excel chứa dữ liệu gồm 4 sheets có tên tương ứng là HUI, Utility, Profit, twu.

Giao din 1. Sheet HUI, d liu được sinh bi chương trình

Giao diện chương trình chính

Giao din 3. Giao din chương trình chính

Trong giao diện chương trình chính có nút Generator để sinh dữ liệu vào sheet HUI, nút Run để thực hiện chương trình với dữ liệu đã được sinh vào sheet HUI trong file Excel và ngưỡng lợi ích được nhập.

Giao din 4. Kết qu thc hin vi ngưỡng li ích 30%

Trong phần kết quả, ta nhìn thấy có một giá trịđứng trước ký tự “$”, đó là giá trị minutil được tính theo định nghĩa trong mục khai phá dữ liệu lợi ích cao trong chương II.

Chuỗi ký tự tiếp theo là các tập mục thường xuyên lợi ích cao với ngưỡng lợi ích 30%. Các tập mục này được ngăn cách nhau bởi dấu “,” còn ký tự “-” để

tách các mục dữ liệu trong tập mục.

Với cơ sở dữ liệu giao tác và bảng lợi ích, dựa vào thuật toán khai phá tập mục lợi ích cao như sau:

k = 1;

C1 = {I1, I2, I3, I4, I5}

u(I1) = (11 + 7 + 7 + 7)*3 = 96; u(I2) = (18 + 7 + 8) * 4 = 132; u(I3) = (10 + 18 + 2) * 5 = 150; u(I4) = (2 + 2 + 18) * 1 = 22; u(I5) = (11 + 9 + 6 + 5) * 2 = 62; tu(T0) = 11*3 + 18*4 + 10*5 + 2*1 + 11*2 = 179; tu(T1) = 7*3 + 7*4 + 18*5 + 2*1 + 9*2 = 159;

tu(T2) = 7*3 + 6*2 = 33;

tu(T3) = 7*3 + 8*4 + 2*5 = 63; tu(T4) = 18*1 + 5*2 = 28;

minutil = 30*(179 + 159 + 33 + 63 + 28) / 100 = 138,6

twu(I1) = tu(T0) + tu(T1) + tu(T2) + tu(T3) = 179 + 159 + 33 + 63 = 434 twu(I2) = tu(T0) + tu(T1) + tu(T3) = 179 + 159 + 63 = 401

twu(I3) = tu(T0) + tu(T1) + tu(T3) = 179 + 159 + 63 = 401 twu(I4) = tu(T0) + tu(T1) + tu(T4) = 179 + 159 + 28 = 366

twu(I5) = = tu(T0) + tu(T1) + tu(T3) + tu(T4) = 179 + 159 + 63 + 28 = 399

Vì tất cả các twu(Ip) > minutil nên không loại bỏ mục nào trong Ck

Ta thấy u(I3) = 150 > minutil = 138,6 nên {I3} là 1-tập mục lợi ích cao, còn lại các tập mục I1, I2, I4, I5 có lợi ích < minutil nên không phải là tập mục lợi ích cao.

Xét tiếp với k= 2

Sinh tập ứng viên trong Ck bằng cách dùng thuật toán Apriori_join để nối 2 tập mục Lk-1 với nhau khi có k-2 tập mục đầu tiên bằng nhau, ta được

C2 = {I1-I2, I1-I3, I1-I4, I1-I5, I2-I3, I2-I4, I2-I5, I3-I4, I3-I5, I4-I5} u(I1-I2) = (11 + 7 + 7)*3 + (18 + 7 + 8)*4 = 207

u(I1-I3) = (11 + 7 + 7)*3 + (10 + 18 + 2)*5 = 225

u(I1-I4) = (11 + 7)*3 + (2 + 2)*1 = 58

u(I1-I5) = (11 + 7 + 7)*3 + (11 + 9 + 6)*2 = 127 u(I2-I3) = (18 + 7 + 8)*4 + (10 + 18 + 2)*5 = 282

u(I2-I4) = (18 + 7)*4 + (2 + 2)*1 = 104

u(I2-I5) = (18 + 7)*4 + (11 + 9)*2 = 140 u(I3-I4) = (10 + 18)*5 + (2 + 2)*1 = 144 u(I3-I5) = (10 + 18)*5 + (11 + 9)*2 = 180 (adsbygoogle = window.adsbygoogle || []).push({});

u(I4-I5) = (2 + 2)*1 + (11 + 9)*2 = 44 twu(I1-I2) = tu(T0) + tu(T1) + tu(T3) = 401

twu(I1-I3) = tu(T0) + tu(T1) + tu(T3) = 401 twu(I1-I4) = tu(T0) + tu(T1) = 338

twu(I1-I5) = tu(T0) + tu(T1) + tu(T3) = 401

twu(I2-I3) = tu(T0) + tu(T1) + tu(T3) = 401 twu(I2-I4) = tu(T0) + tu(T1) = 338

twu(I2-I5) = tu(T0) + tu(T1) = 338 twu(I3-I4) = tu(T0) + tu(T1) = 338 twu(I3-I5) = tu(T0) + tu(T1) = 338

twu(I4-I5) = tu(T0) + tu(T1) + u(T4) = 361

Trong tất cả 2-tập mục thuộc C2 không có tập mục nào có twu(X) < minutil nên ta không tỉa tập ứng viên nào.

Các tập mục {I1-I2}, {I1-I3}, {I2-I3}, {I2-I5}, {I3-I4}, {I3-I5} có u(X) > minutil nên các 2-tập mục này là tập mục lợi ích cao.

k=3

C3 = {I1-I2-I3, I1-I2-I4, I1-I2-I5, I1-I3-I4, I1-I3-I5, I1-I4-I5, I2-I3-I4, I2- I3-I5, I3-I4-I5}

u(I1-I2-I3) = (11 + 7 + 7)*3 + (18 + 7 + 8)*4 + (10 + 18 + 2)*5 = 357 u(I1-I2-I4) = (11 + 7)*3 + (18 + 7)*4 + (2 + 2)*1 = 158 u(I1-I2-I5) = (11 + 7)*3 + (18 + 7)*4 + (11 + 9)*2 = 194 u(I1-I3-I4) = (11 + 7)*3 + (10 + 18)*5 + (2 + 2)*1 = 198 u(I1-I3-I5) = (11 + 7)*3 + (10 + 18)*5 + (11 + 9)*2 = 234 u(I1-I4-I5) = (11 + 7)*3 + (2 + 2)*1 + (11 + 9)*2 = 98 u(I2-I3-I4) = (18 + 7)*4 + (10 + 18)*5 + (2 + 2)*1 = 244 u(I2-I3-I5) = (18 + 7)*4 + (10 + 18)*5 + (11 + 9)*2 = 280 u(I3-I4-I5) = (10 + 18)*5 + (2 + 2)*1 + (11 + 9)*2 = 184

twu(I1-I2-I3) = tu(T0) + tu(T1) + tu(T3) = 401 twu(I1-I2-I4) = tu(T0) + tu(T1) = 338

twu(I1-I2-I5) = tu(T0) + tu(T1) = 338 twu(I1-I3-I4) = tu(T0) + tu(T1) = 338 twu(I1-I3-I5) = tu(T0) + tu(T1) = 338

twu(I1-I4-I5) = tu(T0) + tu(T1) = 338 twu(I2-I3-I4) = tu(T0) + tu(T1) = 338

twu(I2-I3-I5) = tu(T0) + tu(T1) = 338 twu(I3-I4-I5) = tu(T0) + tu(T1) = 338

Các tập mục trong C3 đều có twu(X) > minutil = 138,6 nên không loại bỏ

Các tập mục trong C3 chỉ có tập mục {I1-I4-I5} có u(X) = 98 < minutil = 138,6 nên tập {I1-I4-I5} không phải là tập mục lợi ích cao. Ngoài ra tất cả các tập mục còn lại trong C3đều là tập mục lợi ích cao.

k=4

C4 = {I1-I2-I3-I4, I1-I2-I3-I5, I1-I2-I4-I5, I1-I3-I4-I5, I2-I3-I4-I5}

u(I1-I2-I3-I4) = (11 + 7)*3 + (18 + 7)*4 + (10 + 18)*5 + (2 + 2)*1 = 298

u(I1-I2-I3-I5) = (11 + 7)*3 + (18 + 7)*4 + (10 + 18)*5 + (11 + 9)*2 = 334 u(I1-I3-I4-I5) = (11 + 7)*3 + (10 + 18)*5 + (2 + 2)*1 + (11 + 9)*2 = 238 u(I2-I3-I4-I5) = (18 + 7)*4 + (10 + 18)*5 + (2 + 2)*1 + (11 + 9)*2 = 288

twu(I1-I2-I3-I4) = tu(T0) + tu(T1) = 338 twu(I1-I2-I3-I5) = tu(T0) + tu(T1) = 338

twu(I1-I3-I4-I5) = tu(T0) + tu(T1) = 338 twu(I2-I3-I4-I5) = tu(T0) + tu(T1) = 338

Tất cả các 4-tập mục trong C4 đều có twu(X) > minutil nên không có tập mục nào bị tỉa.

Tất cả các 4-tập mục trong C4đều có u(X) > minutil nên đều là tập mục lợi ích cao.

k = 5

C5 = {I1-I2-I3-I4-I5} u(I1-I2-I3-I4-I5) =

(11+7)*3 + (18 + 7)*4 + (10 + 18)*5 + (2 + 2)*1 + (11 + 9)*2 = 342 twu(I1-I2-I3-I4-I5) = tu(T0) + tu(T1) = 338

k = 6

C6 = ∅ thuật toán dừng. (adsbygoogle = window.adsbygoogle || []).push({});

Kết hợp tất cả các tập mục lợi ích cao lại ta có kết quả đạt được

High Utility Frequent ItemSets = {I3} ∪ {I1,I2} ∪ {I1,I3} ∪ {I2,I3} ∪

{I2,I5} ∪ {I3,I4} ∪ {I3,I5} ∪ {I1,I2,I3} ∪ {I1,I2,I4} ∪ {I1,I2,I5} ∪ {I1,I3,I4}

∪ {I1,I3,I5} ∪ {I2,I3,I4} ∪ {I2,I3,I5} ∪ {I3,I4,I5} ∪ {I1,I2,I3,I4} ∪

{I1,I2,I3,I5} ∪ {I1,I2,I4,I5} ∪ {I1,I3,I4,I5} ∪ {I2,I3,I4,I5} ∪ {I1,I2,I3,I4,I5}

Nhìn vào giao diện 4. Kết quả trong hiển thị trong TextBox hoàn toàn trùng khớp với dữ liệu đã cho.

Do thời gian có hạn nên tác giả chưa cài đặt được thuật toán khai pháp tập mục thường xuyên cổ phần cao và thuật toán khai phá tập mục thường xuyên. Trong luận văn này mới chỉ chương trình ứng dụng được cài đặt bằng thuật toán chưa hiệu quả bằng các thuật toán áp dụng cấu trúc cây COFI-tree đã trình bày trong chương I. Tác giả hy vọng thời gian sau này có thể nghiên cứu để cải tiến các thuật toán khai phá tập mục thường xuyên hiệu quả hơn.

KẾT LUẬN

1) Nhng kết qu chính ca lun văn:

Trong luận văn này đã nêu được những khái niệm cơ bản nhất về khai phá các tập mục thường xuyên. Mục đích khai phá tập mục thường xuyên xây dựng các luật kết hợp phù hợp đểđưa ra các thông tin hữu ích cho người dùng.

Chương I. Nêu được những khái niệm cơ bản nhất về tập mục thường xuyên nhị phân. Dữ liệu chỉ bao gồm các giá trị 0 hoặc 1. Dựa trên tính chất Apriori để tỉa bớt các tập ứng viên trong quá trình khai phá dữ liệu

Chương II. Các khái niệm mới về tập mục cổ phần cao và tập mục lợi ích cao. Nêu lên khái niệm mới là sự mở rộng tập mục nhị phân bằng cách thay cho dữ liệu chỉ chứa 0 hoặc 1 thì dữ liệu trong tập mục cổ phần ta đưa vào số lượng nguyên dương có giá trị để mô tả số lượng của mục dữ liệu. Tập mục lợi ích ta

đưa thêm một bảng lợi ích ứng với mỗi mục dữ liệu. Khai phá tập mục cổ phần cao và lợi ích cao mang ngữ nghĩa khác với khai thác tập mục chỉ chứa dữ liệu 0 hoặc 1. Với tập mục nhị phân, khai phá tập mục thường xuyên mang ý nghĩa thống kê mặt hàng (nhóm mặt hàng) nào bán được hay ko bán được. Với tập mục cổ phần, khai phá tập mục cổ phần cao mang nghĩa là phát hiện các mặt hàng bán được số lượng lớn hơn các mặt hàng khác. Với tập mục lợi ích, khai phá tập mục lợi ích cao mang nghĩa tìm ra những mặt hàng bán thu được nhiều lợi nhuận nhất.

Chương III. Cài đặt một thuật toán khai phá tập mục lợi ích cao. Thuật toán này có thể ứng dụng vào thương mại điện tử như việc xác định các mặt hàng thu được nhiều lợi nhuận nhất từ việc lấy dữ liệu là các hóa đơn bán hàng. Sử dụng khai phá tập mục lợi ích cao, áp dụng cho khai phá luật kết hợp có thể

tìm ra những luật đểđịnh hướng kinh doanh có hiệu quả. 2) Hướng nghiên cu mi:

Nghiên cứu các thuật toán khai phá tập mục cổ phần cao và tập mục lợi ích cao đang là hướng nghiên cứu được nhiều nhà nghiên cứu quan tâm vì tính ứng

dụng của nó trong nhiều lĩnh vực đặc biệt là trong lĩnh vực kinh doanh. Hướng nghiên cứu tiếp theo:

- Nghiên cứu, cải tiến các thuật toán khai phá tập mục cổ phần cao và tập mục lợi ích cao

- Nghiên cứu khai phá tập mục lợi ích cao có yếu tố thời gian

- Nghiên cứu khai phá tập mục lợi ích cao có trọng số: các mục dữ

liệu được gán trọng số để phản ánh mức độ ưu tiên. Khi đó bảng lợi ích sẽ có thêm mục trọng số các mục dữ liệu.

- Áp dụng lý thuyết tập thô, lý thuyết xác suất để khai phá tập mục lợi ích cao trong việc tìm ra các tập mục lợi ích cao xấp xỉ, luật kết hợp xấp xỉ có nhiều khả năng mang lại kết quả tốt.

TÀI LIỆU THAM KHẢO

Tiếng Vit:

[1]. Vũ Đức Thi, Nguyễn Huy Đức (2008), “Khai phá tập mục thường xuyên cổ phần cao trong cơ sở dữ liệu lớn”, Tp chí tin hc và điu khin hc, 24(2), tr 168-178

[2]. Vũ Đức Thi, Nguyễn Huy Đức (2008), “Thuật toán hiệu quả khai phá tập mục thường xuyên cổ phần cao”, K yếu hi tho Mt s vn đề chn lc v

CNTT và TT, Huế, 12/2008, tr 431-444.

[3]. Vũ Đức Thi, Nguyễn Huy Đức (2008), “Thuật toán hiệu quả khai phá tập mục lợi ích cao trên cấu trúc dữ liệu cây”, Tp chí tin hc và điu khin hc, 24(3), tr 204-216

[4]. Nguyễn Huy Đức (2009), “Khai phá tập mục cổ phần cao và lợi ích cao trong cơ sở dữ liệu”, Lun án tiến s toán hc, Mã số: 62.46.35.01, Hà Nội, Việt Nam.

Tiếng Anh: (adsbygoogle = window.adsbygoogle || []).push({});

[5] El-Haj M. and Zaiane Osmar R. (2003), “ COFI-tree Mining: A New Approach to Pattern Growth with Reduced Candidacy Generation”, In Proc. 2003 Int’l Conf. on Data Mining and knowledge Discovery (ACM SIGKDD), Chicago, Illinois, USA.

[6]. Liu Y., W. Liao K., and Choudhary A. (2005), “A fast high utility itemsets mining algorithm”, in Proc. 1st Intl. conf. on Utility-Based Data Mining, Chicago Chicago Illinois, pp.90-99, USA.

[7]. Erwin A., Gopalan R. P., & Achuthan N. R. (2007), “A Bottom-Up Projection Based Algorithm for Mining High Utility Itemsets”, IEEE 7th International Conferences on Computer and Information Technology, Aizu Wakamatsu, Japan.

[8]. Li Y. C., Yeh J. S., and Chang C. C. (2005), “Efficient algorithms for mining share-frequent itemsets”, In Proceedings of the 11th World Congress of Intl, Fuzzy Systems Association.

[9]. Agrawal R. And Srikant R. (1994), “Fast algorithms for mining association rules”, in proceeding of 20th International Conference on Very Large Databases, Santiago, Chile.

[10]. Yao H., Hamilton H. J. (2006), “Mining Itemsets Utilities from Transaction Databases”, Data and knowledge Engeneering, Vol. 59, issue 3.

[11]. Yao H., Hamilton H. J., and Butz C. J. (2004), “A foundational Approach to Mining Itemset Utilities from Databases”, Proceeding of the 4th SIAM International Conference on Data Mining, Florida, USA.

[12] Yao H., Hamilton H. J., and Geng L. (2006), “A Unified Framework for Utility Based measures for Ming Itemsets”, UBDM’06 Philadelphia, Pennsylvania, USA.

[13]. Bodon Ferenc (2006), “A Survey on Frequent Itemset Mining”,

Technical Report, Budapest University of Technology and Economic, Hungary. [14]. Han J., Pei J., and Yin Y. (2000), “Ming frequent patterns without candidate generation”, In ACM SIGMOD Intl. Conference on Management of Data, pp. 1-12.

[15]. Kotsiantis S., Kanellopoulos D. (2006), “Association Rules Mining: A Recent Overview”, GESTS International Transactions on Computer Science and Engineering, Vol. 32, No. 1, pp. 71-82

[16]. Zhao Q. (2003), “Association Rule Mining: A Survey”, Technical Report, CAIS, Nanyang Technological University, Singapore, No. 2003116

[17]. Li Y. C., Yeh J. S., and Chang C. C, “A fast algorithm for mining share-frequent itemsets”, Lecture Notes in Computer Science, Springer-Verlag, Germany, Vol. 3399, pp.417-428

[18]. Han J., and Kamber M. (2000), Data Mining Concepts and Techniques, Morgan Kanufmann.

Một phần của tài liệu Các tập mục thường xuyên trong khai phá dữ liệu và ứng dụng (Trang 56)