Khai phá tập mục thường xuyên có trọng số trên cơ sở dữ liệu giao tác

80 424 0
Khai phá tập mục thường xuyên có trọng số trên cơ sở dữ liệu giao tác

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

i  LỜI CAM ĐOAN Tôi xin cam đoan đây là công trình nghiên cứu của tôi dưới sự hướng dẫn của  TS Nguyễn Long Giang.  Các số liệu, kết quả nghiên cứu trong luận văn là trung thực và mọi trích dẫn  trong báo  cáo  đều  được  ghi  rõ nguồn  gốc.  Nếu  có  sử  dụng bất  hợp  pháp  kết  quả  công  trình nghiên  cứu  của  người  khác  trong báo  cáo  tôi  xin  hoàn  toàn  chịu  trách  nhiệm.  Tác giả      Nguyễn Tú Nam ii  LỜI CẢM ƠN Lời đầu tiên tôi muốn bày tỏ lòng biết ơn sâu sắc và kính trọng của mình tới  thầy giáo,  TS Nguyễn Long Giang. Trong quá  trình  tìm hiểu  nghiên  cứu  để hoàn  thành luận văn tôi gặp không ít khó khăn, nhưng những lúc như vậy tôi luôn nhận  được sự động viên khích lệ của thầy. Thầy đã giúp đỡ tôi rất nhiều trong quá trình  nghiên cứu, hướng dẫn tận tình trong cách thức và phương pháp nghiên cứu khoa  học cũng như hỗ trợ tôi trong việc tìm tài liệu.  Để có được những kết quả trong luận văn này, tôi xin gửi lời cảm ơn sâu sắc  đến Thầy, Cô Trường Đại học Công nghệ thông tin và Truyền thông Thái Nguyên  đã tạo điều kiện cho tôi được học hỏi kiến thức thông qua các môn học cũng như  hoàn thành khóa học.  Cuối cùng tôi xin bày tỏ lòng cảm ơn chân thành đến gia đình, người thân và  bạn bè đồng nghiệp đã khích lệ và động viên tôi hoàn thành luận văn này.!  iii  MỤC LỤC LỜI CAM ĐOAN   i  LỜI CẢM ƠN  . ii  MỤC LỤC  iii  Danh mục các ký hiệu, các chữ viết tắt   v  Danh mục các bảng   vi  Danh mục các hình   vii  MỞ ĐẦU   1  Chương 1: TỔNG QUAN VỀ KHAI PHÁ DỮ LIỆU   3  1.1. Các khái niệm cơ bản trong khai phá luật kết hợp   4  1.1.1. Cơ sở dữ liệu giao tác   4  1.1.2. Tập mục thường xuyên và luật kết hợp   6  1.1.3. Bài toán khai phá luật kết hợp  . 8  1.2. Một số thuật toán cơ bản khai phá tập mục thường xuyên  8  1.2.1. Cách tiếp cận khai phá tập mục thường xuyên  . 8  1.2.2. Thuật toán Apriori  . 10  1.2.3. Thuật toán FP-growth  14  1.3. Một số hướng mở rộng bài toán khai phá tập mục thường xuyên.   23  1.4. Kết luận chương   23  Chương 2: KHAI PHÁ TẬP MỤC THƯỜNG XUYÊN CÓ TRỌNG SỐ  24  2.1. Thuật toán khai phá tập mục thường xuyên có trọng số MINWAL   24  2.1.1. Các khái niệm cơ bản   24  2.1.2.  Thuật  toán  MINWAL  khai  phá  tập  mục  thường  xuyên  có  trọng  số  dựa  trên thuật toán Apriori   28  2.1.3. Ví dụ minh họa thuật toán MINWAL   31  iv  2.2. Thuật toán khai phá tập mục thường xuyên có trọng số WFIM   35  2.2.1. Các khái niệm cơ bản   36  2.2.2. Thuật toán WFIM dựa trên thuật toán Apriori  . 40  2.2.3. Thuật toán WFIM dựa trên thuật toán FP-Growth  . 42  2.2.4. Ví dụ thuật toán WFIM  . 44  2.3. Kết luận chương   47  Chương 3: ĐÁNH GIÁ CÁC THUẬT TOÁN VÀ ỨNG DỤNG  48  3.1. Đánh giá các giải thuật   48  3.2. Kiểm tra tập dữ liệu và môi trường thí nghiệm   49  3.3. So sánh WFIM với các thuật toán khác  50  3.4. Kiểm tra khả năng phát triển  54  3.5. Ứng dụng chương trình  . 56  KẾT LUẬN   60  TÀI LIỆU THAM KHẢO   62  PHỤ LỤC  64  v  Danh mục ký hiệu, chữ viết tắt Ký hiệu, chữ viết tắt Diễn giải CSDL Cơ sở liệu TID Transction Identifcation W Tập trọng số mục L Tập tất mục thường xuyên Ck Tập k-tập mục ứng viên Lk Tập k-tập mục thường xuyên SC(X) Số đếm hỗ trợ tập mục X WFIk Tập k-tập mục thường xuyên có trọng số WFI Tập tất tập mục thường xuyên có trọng số MaxW Trọng số có giá trị lớn CSDL giao tác MinW Trọng số có giá trị nhỏ tập mục điều kiện min_weight Ngưỡng trọng số tối thiểu min_sup Ngưỡng hỗ trợ tối thiểu support Độ hỗ trợ tập mục conf Độ tin cậy minconf Độ tin cậy cực tiểu BFS Breadth First Search DFS Depth First Search WFIM Weighted Frequent Itemset Mining vi  Danh mục bảng Bảng 1.1 Biểu diễn ngang sở liệu giao tác   5  Bảng 1.2 Biểu diễn dọc sở liệu giao tác  . 5  Bảng 1.3 Ma trận giao tác sở liệu bảng 1.1   6  Bảng 1.4 CSDL giao tác minh họa thực thuật toán Apriori   13  Bảng 1.5 CSDL giao tác minh họa cho thuật toán FP- growth   16  Bảng 2.1 CSDL giao tác  . 26  Bảng 2.2 Trọng số mục   27  Bảng 2.3 CSDL giao tác D   31  Bảng 2.4 Trọng số mục   31  Bảng 2.5 CSDL giao tác  . 36  Bảng 2.6 Ví dụ mục với khoảng trọng số khác nhau   37  Bảng 2.7 Tập tập mục thường xuyên với khoảng trọng số khác nhau  . 39  Bảng 2.8 Mục thường xuyên có trọng số (sắp xếp tăng dần theo trọng số)   44  Bảng 3.1 Tổng hợp số liệu thực tế   49  Bảng 3.2 Hiệu ngưỡng trọng số khác nhau   53  vii  Danh mục hình Hình 1.1 Phân loại thuật toán khai phá tập mục thường xuyên   10  Hình 1.2 Cây FP-tree xây dựng dần thêm giao tác ti, t2, t3 Từ tập liệu ban đầu, ta xây dựng header table FP sau:  . 17  Hình 1.3 Cây FP-tree CSDL DB bảng  . 18  Hình 1.4 FP-tree phụ thuộc m  . 21  Hình 1.5 Các FP-tree phụ thuộc am, cm cam  21  Hình 2.1 Cây FP-Tree tổng quát thuật toán FP-Tree   45  Hình 2.2 Cây FP-Tree với tiền tố {r}   46  Hình 3.1 Số lượng tập mục thường xuyên so với FP-Growth (Tập liệu Connect)    50  Hình 3.2 Thời gian thực so với FP-Growth (Tập liệu Connect)  . 50  Hình 3.3 Số lượng tập mục thường xuyên so với thuật toán khác (Tập liệu Connect)   51  Hình 3.4 Thời gian thực so với thuật toán khác (Tập liệu Connect)  51  Hình 3.5 Thời gian thực so với thuật toán khác (Tập liệu Mushroom)    52  Hình 3.6 Thời gian thực so với thuật toán khác (Tập liệu Mushroom)    53  Hình 3.7 Khả phát triển WFIM với ngưỡng hỗ trợ khác (tập liệu T10I4DxK)   54  Hình 3.8 Khả phát triển so với thuật toán khác (Tập liệu T10I4DxK ngưỡng hỗ trợ = 0,1%)   55  Hình 3.9 Khả phát triển so với thuật toán khác (Tập liệu T10I4DxK ngưỡng hỗ trợ = 0,5%)   55  1  MỞ ĐẦU Lý chọn đề tài Khai  phá  dữ  liệu  và  khám  phá  tri  thức  (Data  mining  and  Knowledge  discovery) là một lĩnh vực quan trọng của ngành Công nghệ thông tin. Đây là lĩnh  vực  đã  thu  hút  đông  đảo  các  nhà  khoa  học  trên  thế  giới  và  trong  nước  tham  gia  nghiên cứu. Khai phá luật kết hợp (Mining association rules) là bài toán có vai trò  quan trọng trong nhiều nhiệm vụ khai phá dữ liệu và có nhiều ứng dụng thực tiễn  trong các lĩnh vực khác nhau của đời sống, đặc biệt là trong lĩnh vực kinh doanh.  Khai phá luật kết hợp được giới thiệu bởi Agrawal vào năm 1993 khi phân tích  cơ sở dữ liệu bán hàng của siêu thị, phân tích sở thích mua của khách hàng bằng cách  tìm  ra những mặt  hàng  khác  nhau  được khách hàng mua  cùng  trong  một  lần  mua.  Những thông tin như vậy sẽ giúp người quản lý kinh doanh tiếp thị chọn lọc và thu  xếp không  gian bày  hàng hợp lý hơn, giúp cho kinh doanh hiệu quả hơn. Bài  toán  khai phá luật kết hợp bao gồm hai bài toán con. Bài toán thứ nhất là tìm các tập mục thường xuyên (Frequent itemset) thỏa mãn ngưỡng hỗ trợ tối thiểu cho trước, bài toán  thứ hai  là  sinh ra các  luật kết hợp  (Association rule) thỏa mãn ngưỡng  tin  cậy  cho  trước từ tập mục thường xuyên tìm được. Mọi khó khăn của bài toán khai phá luật kết  hợp tập trung ở bài toán thứ nhất, đó là khai phá tất cả các tập mục thường xuyên thỏa  mãn ngưỡng độ hỗ trợ cho trước, và các nghiên cứu về khai phá luật kết hợp tập trung  vào bài toán khai phá tập mục thường xuyên.  Xuất  phát  từ  những  lợi  ích  thực  tế  trên  tác  giả  đã  mạnh  dạn  chọn  đề  tài  “KHAI PHÁ TẬP MỤC THƯỜNG XUYÊN CÓ TRỌNG SỐ TRÊN CƠ SỞ DỮ LIỆU GIAO TÁC” làm đề tài nghiên cứu cho luận văn tốt nghiệp của mình.  Mục tiêu đề tài tiếp tục nghiên cứu và đề xuất các thuật toán khai phá tập mục  thường xuyên có trọng số trong CSDL giao tác Xây  dựng  và  đề  xuất  một  số  giải  thuật  khai  phá  tập  mục  thường  xuyên  có  trọng số.  2  Lập trình, thử nghiệm các giải thuật khai phá tập mục thường xuyên có trọng số.  Đối tượng nghiên cứu các cơ sở dữ liệu giao tác được cập nhật từ kho dữ liệu  mẫu UCI Phạm vi nghiên cứu nghiên  cứu  và  thử  nghiệm  bài  toán  khai  phá  tập  mục  thường xuyên có trọng số trên cơ sở dữ liệu giao tác.  Phương pháp nghiên cứu  luận  văn  nghiên  cứu  lý  thuyết  và  nghiên  cứu  thực  nghiệm.  Về  nghiên  cứu  lý  thuyết:  các  định lý, mệnh đề trong luận  văn được  chứng minh dựa vào các kiến thức cơ bản và các kết quả nghiên cứu đã công bố. Về  nghiên cứu thực nghiệm luận văn thực hiện cài đặt các thuật toán, chạy thử nghiệm  thuật toán.  Bố cục luận văn Luận văn được chia làm 3 chương: Chương 1: TỔNG QUAN VỀ KHAI PHÁ DỮ LIỆU  Chương 2: KHAI PHÁ TẬP MỤC THƯỜNG XUYÊN CÓ TRỌNG SỐ  Chương 3: ĐÁNH GIÁ CÁC THUẬT TOÁN VÀ ỨNG DỤNG    3  Chương 1: TỔNG QUAN VỀ KHAI PHÁ DỮ LIỆU Khai phá tập mục thường xuyên đóng vai trò quan trọng trong nhiều nhiệm vụ  khai phá dữ liệu. Khai phá tập mục thường xuyên xuất hiện như là bài toán con của  nhiều lĩnh vực khai phá dữ liệu như khám phá luật kết hợp, khám phá mẫu tuần tự,  phân tích tương quan, phân lớp, phân cụm dữ liệu, khai phá Web,…. Bài toán khai  phá tập mục thường xuyên được giới thiệu lần đầu bởi Agrawal vào năm 1993 khi  phân tích cơ sở dữ liệu bán hàng của siêu thị [6] trong mô hình của bài toán khai  phá luật kết hợp. Khai phá luật kết hợp là phát hiện những mối quan hệ giữa các giá  trị dữ liệu trong cơ sở dữ liệu, các mối quan hệ đó chính là các luật kết hợp.   Khai phá dữ liệu bằng luật kết hợp là một phương pháp quan trọng trong khai phá  dữ liệu. Nó được ra đời và phát triển mạnh mẽ trong những năm gần đây. Lần đầu  tiên  được  Rakesh  Agrawal,  Tomasz  Imielinski,  Arun  Swami  đề  xuất  năm  1993[6].  Sau  đó  năm  2013  được  A.KrishnaKumar, D.Amrita, N.Swathi Priya  [11]  tiếp tục phát triển và cải tiến. Đến nay những nghiên  cứu  về luật kết hợp  tập  trung  xây dựng thuật toán khai phá luật kết hợp mới, hiệu quả hoặc  cải tiến, phát triển  các thuật toán để hiệu quả hơn.  Khai  phá  luật  kết  hợp  có  hai  bước:  bước  thứ  nhất,  tìm  các  tập  mục  thường  xuyên thỏa mãn ngưỡng độ hỗ trợ tối thiểu minsup cho trước, bước thứ hai, từ các  tập mục thường xuyên tìm được, sinh ra các luật kết hợp thỏa mãn ngưỡng độ tin  cậy minconf cho trước. Mọi khó khăn của bài toán khai phá luật kết hợp tập trung ở  bước thứ nhất, đó là khai phá tất cả các tập mục thường xuyên thỏa mãn ngưỡng độ  hỗ trợ cho trước.  Ứng dụng điển hình là trong siêu thị, người ta muốn biết rằng trong giỏ hàng  mua hàng của khách hàng th́ ì thường mua những món hàng nào đi cùng với nhau.  Nếu nhà kinh doanh siêu thị biết được thông tin này thì họ sẽ có chiến lược kinh doanh  phù hợp để tăng thêm lợi nhuận. Ví dụ nếu một luật được khám phá rằng “đa số người  mua dao cạo râu th́ ì sẽ mua kem cạo râu”. Lúc đó nhà kinh doanh có thể sẽ đưa  tủ  chứa kem cạo râu lại gần với dao cạo râu hoặc có những h́ ình thức khuyến mãi như  59    Thực thuật toán WFIM   Kết quả thực hiện thuật toán như sau:      60  KẾT LUẬN Những kết luận văn Nghiên cứu và nắm được những kiến thức cơ bản về luật kết hợp cũng như tập  mục thường xuyên trong khai phá dữ liệu.  Nghiên cứu một số thuật toán khai phá tập mục thường xuyên cơ bản nhất là  Apriori và FP-Growth.  Thuật  toán  MINWAL  được  xây  dựng  dựa  trên  thuật  toán  Apriori,  tuy  nhiên  phần lớn tập ứng viên là không thường xuyên. Theo đánh giá của người viết, thuật  toán tốn kém khi sử dụng k-cận hỗ trợ để giữ lại tính chặn dưới đóng của tập mục  thường xuyên.  Thuật toán WFIM: có tác dụng và có thể phát triển đối với mô hình khai phá tập  mục thường xuyên có trọng số. Phần so sánh và đánh giá các thuật toán MINWAL,  WFIM, FP-Growth thì đều nhận thấy thuật toán WFIM(FP-Growth) có thời gian thực  hiện nhanh hơn so  với  các  giải  thuật khác như  MINWAL,  WFIM  (Apriori)  và  FPGrowth. Ngoài ra, nó còn trở nên nhanh hơn và tìm ra ít tập mục thường xuyên nhưng  là những tập mục rất quan trọng trong một CSDL lớn với ngưỡng hỗ trợ nhỏ nhất.  Một vài phương pháp tiện cận dựa trên thuật toán FP-Growth với hiệu năng tốt hơn  được phát triển tại, [7], [8], [9], [10], [11], [12]. Về hiệu năng của WFIM có thể được  cải tiến nếu kết hợp với những giải thuật này.  Tác giả đã nắm bắt được một số thuật toán khai phá tập mục thường xuyên có  trọng số như MINWAL, WFIM.  Luận  văn đã cài  đặt,  so sánh đánh  giá  các  thuật  toán  trên  các  bộ  số  liệu  thử  nghiệm theo các tiêu chí khác nhau.  Luận văn đã chạy thử nghiệm thành công thuật toán WFIM khai phá tập mục  thường xuyên có trọng số dựa trên FP-Growth. Thuật toán MINWAL khai phá tập  mục thường xuyên có trọng số dựa trên Apriori.  61  Hướng nghiên cứu đề tài Sinh các tập luật kết hợp có trọng số và áp dụng khai phá luật kết hợp có trọng  số vào một bài toán trong thực tiễn trong các lĩnh vực kinh doanh, tài chính…  Cải tiến chương trình từ ngôn ngữ đến giao diện để thích ứng với người sử dụng  Thu  thập  được  một  kho  dữ  liệu  thực  tế  hơn  để  kết  quả  chương  trình  có  độ  chính xác cao hơn.  62  TÀI LIỆU THAM KHẢO Tiếng Việt: Nguyễn Hữu Trọng, Lê Đức An, Trần Xuân Việt, Nguyễn Anh Hào (2014), “Một  thuật toán tìm tập mục thường xuyên trên cơ sở dữ liệu giao tác có trọng số”, Tạp chí khoa học công nghệ, 1(02), tr. 65-71.  Nguyễn Huy Đức (2010), “Khai phá tập mục cổ phần cao lợi ích cao sở liệu”, Luận án Tiến sĩ Toán học, Viện Công nghệ Thông tin – Viện KH và  CN Việt Nam.  Trần Huy Dương, Vũ Đức Thi, Trần Thế Anh (2014), Thuật toán khai phá mẫu dãy  thường xuyên  đóng có  trọng số  chuẩn hóa  với  khoảng cách  thời gian,  Kỷ yếu hội nghị Khoa học Quốc gia lần thứ VII – Nghiên cứu ứng dụng CNTT (Fair’7), tr. 650-658.  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”, Tạp chí Tin học Điều khiển học, 24(2), tr. 168-178.  Trần Huy Dương, Vũ Đức Thi (2013), Thuật toán khai phá mẫu dãy thường xuyên với  trọng số chuẩn hóa sử dụng CSDL tiền tố, Kỷ yếu hội nghị Khoa học Quốc gia lần thứ VI – Nghiên cứu ứng dụng CNTT (Fair’6), tr. 502-511  Tiếng Anh: Agrawal R. And Srikant R. (1994), “Fast algorithms for mining association rules”,  in proceedings of 20th International Conference on Very Large Databases,  Santiago, Chile.  C.H.Cai, A.W.Chee Fu, C.H.Cheng, and W.W.Kwong. “Mining Association Rules  with  Weighted  Items”,  IDEAS '98 Proceedings of the 1998 International Symposium on Database Engineering & Applications, pp. 68-77, 1998.  J.Han, J.Pei, and Y.Yin, “Mining Frequent Patterns without Candidate Generation,”  Proceedings of the 2000 ACM SIGMOD International Conference on Management of Data, pp. 1-12.  63  AzadehSoltani and M.-R.Ak barzadeh-T, “Confabulation-Inspired Association Rule  Mining for Rare and Frequent Itemsets”, IEEE transactions on neural networks and  learning systems, 2014.  10 Luca  Cagliero  and  Paolo  Garza,  “Infrequent  Weighted  Itemset  Mining  using  Frequent Pattern Growth”, IEEE Transactions on Knowledge and Data Engineering,  pp. 1- 14, 2013.  11 A.KrishnaKumar, D.Amrita, N.Swathi Priya,  “Mining  Association  Rules  between  Sets  of  Items  in  Large  Databases”,  International Journal of Science and Modern Engineering (IJSME) ISSN: 2319-6386, Volume-1, Issue-5, April 2013.  12 Unil  Yun,  John  J.  Leggett,  ‘WFIM: Weighted Frequent Itemset Mining with a weight range and a minimum weight’, Proceedings of the 2005 SIAM International  Conference on Data Mining, 2005, pp. 636-640.  64  PHỤ LỤC Mã nguồn chương trình package app.Main;  import java.awt.BorderLayout;  import java.awt.Color;  import java.awt.GridLayout;  import java.awt.Label;  import java.awt.event.ActionEvent;  import java.awt.event.ActionListener;  import java.awt.event.ItemEvent;  import java.awt.event.ItemListener;  import java.io.BufferedReader;  import java.io.File;  import java.io.FileNotFoundException;  import java.io.FileReader;  import java.io.IOException;  import java.util.HashSet;  import java.util.List;  import java.util.Set;  import java.util.StringTokenizer;  import java.util.Vector;  import javax.swing.JButton;  import javax.swing.JComboBox;  import javax.swing.JFileChooser;  import javax.swing.JFrame;  import javax.swing.JLabel;  import javax.swing.JMenu;  import javax.swing.JMenuBar;  import javax.swing.JMenuItem;  import javax.swing.JOptionPane;  import javax.swing.JPanel;  import javax.swing.JScrollPane;  import javax.swing.JTextArea;  import javax.swing.JTextField;  import javax.swing.SpringLayout;  import javax.swing.SwingConstants;  //import ca.pfv.spmf.gui.MainWindow;  import app.algorithms.sequentialpatterns.BIDE_and_prefixspan.AlgoPrefixSpan;  import app.algorithms.sequentialpatterns.fournier2008_seqdim.AlgoFournierViger08;  import app.algorithms.sequentialpatterns.fournier2008_seqdim.ItemSimple;  65  import  app.algorithms.sequentialpatterns.fournier2008_seqdim.multidimensionalsequentialpattern s.AlgoSeqDim;  import app.frequentpatterns.fpgrowth.AlgoCofiTree;  import app.frequentpatterns.fpgrowth.AlgoFPGrowth;  import app.frequentpatterns.fpgrowth.Database;  import app.frequentpatterns.fpgrowth.Itemset;  import app.frequentpatterns.fpgrowth.Itemsets;  import app.input.sequence_database_list_integers.SequenceDatabase;  import app.tools.Utils;  /*   * To change this template, choose Tools | Templates   * and open the template in the editor.   * @author Kumori   */  public class AppControl extends JFrame implements ActionListener {    private JMenu fileMenu;    /** Threshold input menu. */    private JMenu tHoldInputMenu;    /** Data pre-processing input menu. */    private JMenu dataPreProcMenu;    /** Algorithm menu. */    private JMenu algoMenu;      /** Output menu. */    private JMenu outputMenu;    /** Data array output sub-menu. */    private JMenu dataArrayOutputMenu;      /** Frequent set output sub-menu. */    private JMenu freqSetOutputMenu;    /** Association rule output sub-menu. */    private JMenu assocRuleOutputMenu;    /** Diagnostic output sub-menu. */    private JMenu diagnosticOutputSubMenu;        // Menu items    /** File menu items. */    private JMenuItem[] fileMenuItems;    /** Threshold input menu items. */    private JMenuItem[] tholdInputMenuItems;  66    /** Data pre-processing menu items. */    private JMenuItem[] dataPreProcMenuItems;    /** Algorithm menu items. */    private JMenuItem[] algoMenuItems;      /** Output menu items. */    private JMenuItem[] outputMenuItems;    /** Data array output sub-menu items. */    private JMenuItem[] dataArrayOutputMenuItems;    /** Frequent set output sub-menu items. */    private JMenuItem[] freqSetOutputMenuItems;    /** Association rule output sub-menu items. */    private JMenuItem[] assocRuleOutputMenuItems;    /** Diagnostic output sub-menu items. */     private JMenuItem[] diagnosticOutputMenuItems;    /** Call external project ca*/    private JMenuItem ca;        // Menu labels    /* File menu labels. */    //private String fileMenuLabels[] = { "Về phần mềm", "Nạp file dữ liệu giao  tác","Nạp file dữ liệu dãy","Nạp file dữ liệu dãy với khoảng cách thời gian", "Nạp file  trọng số","Tạo trọng số ngẫu nhiên","Xóa màn hình",    //    "Thoát" };    private String fileMenuLabels[] = { "Về phần mềm","Nạp file dữ liệu giao  tác","Nạp file trọng số","Xóa màn hình",    "Thoát" };      private String fileMenuActions[] = { "About", "Load Data","Load Weight","Clear  Screen",    "Exit" };    /** Threshold parameter input menu labels. */    private String tHoldInputMenuLabels[] = { "Độ hỗ trợ", "Trọng số nhỏ nhất (Chỉ  dùng trong WFIM)" };    private String tHoldInputMenuActions[] = { "Support", "Min Weight" };    /** Data pre-processing menu labels. */    private String dataPreProcMenuLabels[] = { "Sort", "Sort & Prune" };    /** Algorithm menu labels. */        private String algoMenuLabels[] = { "WFIM (Khai phá tập mục thường xuyên có  trọng số dựa trên FP-Growth)",  67                                                                                    "MINWAL (Khai phá tập mục thường xuyên có trọng số dựa trên Apriori)",    "FP-Growth (Khai phá tập mục thường xuyên sử dụng cây FP-Tree)"};  private String algoMenuActions[] = {"WFIM","COFI-WFIM","WPrefixSpan"};      /** Ouput menu labels. */  private String outputMenuLables[] = { "Output Schema" };  /** Output data array sets sub-menu labels. */  private String outputDataArrayMenuLabels[] = { "Data Att. Numbers",      "Data Output Schema" };  /** Output T-tree sub-menu labels. */  private String outputTtreeMenuLabels[] = { "T-tree Statistics",      "T-Tree (Att. Numbers)", "T-tree (Graph)" };  /** Output T-tree sub-menu labels. */  private String outputDIC_TtreeMenuLabels[] = { "DIC T-tree Stats",      "DIC T-Tree (Att. Numbers)" };  /** Output frequent sets sub-menu labels. */  private String outputFreqSetsMenuLabels[] = { "FSs Att. Numbers",      "FSs Output Schema" };  /** Output ARs sub-menu labels. */  private String outputAssocRulesMenuLabels[] = { "ARs Att. Numbers",      "ARs Output Schema" };  /** Diagnostic output sub-menu labels. */  private String outputDiagnosticMenuLabels[] = { "Conversion arrays" };    // OTHER COMPONBENTS  /** Credits panel */  private JPanel creditsPanel;  /** Text Area. */  private JTextArea textArea;  private int numRows;  private int numCols;  protected short[][] dataArray = null;  // private TotalSupportTree newAprioriT = null;  //private String fileName;  private File filePath;  private boolean haveDataFlag = true;  protected BufferedReader fileInput;  public Database context = new Database();  public SequenceDatabase sequenceDatabase = new SequenceDatabase();  68    public app.algorithms.sequentialpatterns.fournier2008_seqdim.SequenceDatabase  sequenceDatabase1 = new  app.algorithms.sequentialpatterns.fournier2008_seqdim.SequenceDatabase();      public AlgoFPGrowth algo = new AlgoFPGrowth();    public AlgoCofiTree algoCofi = new AlgoCofiTree();    public AlgoPrefixSpan algoPrefixSpan = new AlgoPrefixSpan();    public AlgoFournierViger08 algoFournierViger08 = new AlgoFournierViger08(0,        0, 0, 0, 0, null,  false, false);    protected Itemsets patterns = new Itemsets("FREQUENT ITEMSETS");    private double support =40;    private double minWeight =0.7;    private double minInterval=0; //C1    private double maxInterval=0; //C2    private double minWholeInterval=0; //C3    private double maxWholeInterval=0; //C4        private String datatype; //TDB transaction, SDB Sequence, STDB Sequence with  time           // CONSTANTS      /** Minimum threshold value. */      final static double MIN_THOLD = 0.0;      /** Minimum threshold value. */      final static double MAX_THOLD = 100.0;      final static String VERSION ="14.07";       final static String title="Đề tài cơ sở CS’14.07";      private JFrame randomCreateFrame = new JFrame("SpringForm");  public void actionPerformed(ActionEvent event) {            // File menu item About      if (event.getActionCommand().equals("About")) {        textArea.append("VỀ PHẦN MỀM :\n");        aboutSoftware();        textArea.append(" -\n");      }      // File menu load data      else if (event.getActionCommand().equals("Load Data")) {        textArea.append("Tên file dữ liệu:\n");        try {          loadData();  69        } catch (FileNotFoundException a) {        }        textArea.append(" -\n");      }      else if (event.getActionCommand().equals("Load Sequence Data")) {        textArea.append("Tên file dữ liệu:\n");        try {          loadSequenceData();        } catch (FileNotFoundException a) {        }        textArea.append(" -\n");      }      else if (event.getActionCommand().equals("Load Sequence Data with  TimeStamp")) {        textArea.append("Tên file dữ liệu:\n");        try {          loadSequenceDataWithTimeStamp();        } catch (FileNotFoundException a) {        }        textArea.append(" -\n");      }          else if (event.getActionCommand().equals("Load Weight")) {        textArea.append("Tên file trọng số:\n");        try{          loadWeight();          } catch (FileNotFoundException a){        }                 textArea.append(" -\n");      }      else if (event.getActionCommand().equals("Randomize Weight")) {        textArea.append("Tạo mảng trọng số ngẫu nhiên:\n");        createRandomWeight();        textArea.append(" -\n");      }      //File menu clear screen      else if (event.getActionCommand().equals("Clear Screen")) {        //textArea.append("Tạo mảng trọng số ngẫu nhiên:\n");        //createRandomWeight();        //textArea.append(" -\n");        textArea.setText("");  70                                                                                                                                                                      }  // File menu exit  else if (event.getActionCommand().equals("Exit")) {    System.exit(0);  }  // Threshold input menu item add support threshold  else if (event.getActionCommand().equals("ParamForm")) {    //textArea.append("Ngưỡng hỗ trợ:\n");    showParamForm();    //inputSupportThold();    //textArea.append(" -\n");  }  else if (event.getActionCommand().equals("Support")) {    textArea.append("Ngưỡng hỗ trợ:\n");    inputSupportThold();    textArea.append(" -\n");  }  else if (event.getActionCommand().equals("Min Weight")) {    textArea.append("Trọng số nhỏ nhất:\n");    inputMinWeight();    textArea.append(" -\n");  }  // Threshold input menu item add confidence threshold  else if (event.getActionCommand().equals("Confidence")) {    textArea.append("INPUT CONFIDENCE THRESHOLDS:\n");    // inputConfidenceThold();    textArea.append(" -\n");  }  // Data pre-processing menu item sort input data. */  else if (event.getActionCommand().equals("Sort")) {    textArea.append("SORT INPUT DATA:\n");    // sortInputData();    textArea.append(" -\n");  }  // Data pre-processing menu item sort and prune input data. */  else if (event.getActionCommand().equals("Sort & Prune")) {    textArea.append("SORT AND PRUNE INPUT DATA:\n");    // sortAndPruneInputData();    textArea.append(" -\n");  }      // Apriori-T menu item apriori-T without X checking. */  71      else if (event.getActionCommand().equals("Apriori T (with X check)")) {        textArea.append("APRIORI-T (WITH X CHECK):\n");        // aprioriTwithXcheck();        textArea.append(" -\n");      }      //WFIM algorithm      else if (event.getActionCommand().equals("WFIM")) {        patterns = new Itemsets("FREQUENT ITEMSETS");        algo = new AlgoFPGrowth();        textArea.append("Khai phá tập mục thường xuyên với trọng số  chuẩn hóa sử dụng cây FPTree:\n");        //support in double        double minsupp = support/100;        patterns = algo.runAlgorithm(context, minsupp, minWeight);        printStart();        patterns.printItemsets(context.size(),textArea);      textArea.append(" -END OF RESULT \n");  private void inputDataSet(JTextArea textArea, File fName)        throws IOException {      // Set filePath instance field      int counter = 0;      filePath = fName;      try {        // Open file        FileReader file = new FileReader(filePath);        fileInput = new BufferedReader(file);      } catch (IOException ioException) {        JOptionPane.showMessageDialog(null, "Lỗi mở file \""            + filePath + "\"", "FILE INPUT ERROR",            JOptionPane.ERROR_MESSAGE);        System.exit(1);      }      // Read the file      String line = fileInput.readLine();      while (line != null) {        // checkLine(counter+1,line);        StringTokenizer dataLine = new StringTokenizer(line);        int numberOfTokens = dataLine.countTokens();        if (numberOfTokens == 0)          break;        counter++;  72                                                                                        if (numCols [...]... MINWAL khai phá tập mục thường xuyên có trọng số dựa trên thuật toán Apriori Thuật toán MINWAL(W) Đầu vào: CSDL giao tác D với giao dịch T  Hai giá trị ngưỡng wminsup và minconf  Các trọng số của các mụ c W i  với thứ tự tăng dần  Đầu ra: Tập các tập mục thường xuyên có trọng số chuẩn hóa L.  Ký hiệu: D  Cơ sở dữ liệu W  Tập các trọng số của các mục Lk  Tập các k -tập mục thường xuyên có trọng số chuẩn hóa ... toán mới hoặc đề xuất giải pháp nâng cao hiệu quả các thuật toán đã có.  Phần này sẽ  trình bày khái quát các kỹ thuật chính để khai phá tập mục thường xuyên.   9  Bài  toán  khai phá tập mục thường xuyên có thể  chia  thành hai bài  toán nhỏ:  tìm các tập mục ứng viên và tìm các tập mục thường xuyên. Tập mục ứng viên là  tập mục mà ta hy vọng nó là tập mục thường xuyên,  phải tính độ hỗ trợ của nó để  kiểm tra. Tập mục thường xuyên là tập mục có độ hỗ trợ lớn hơn hoặc bằng ngưỡng ...   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   Biểu diễn cơ sở dữ liệu giao tác: cơ sở dữ liệu giao tác thường được biểu diễn ở  dạng biểu diễn ngang, biểu diễn dọc và biểu diễn bởi ma trận giao tác.   Biểu diễn ngang: Cơ sở dữ liệu là một danh sách các giao tác.  Mỗi giao tác có một ... một tập con bậc cao nào của X cũng sẽ là tập mục thường xuyên có trọng số chuẩn hóa.   Mệnh đề 2.3. [3,12] Nếu X là một (k +1) - tập mục thường xuyên có trọng số chuẩn hóa thì X phải là tập cha bậc thấp của một k -tập mục thường xuyên có trọng số chuẩn hóa Y   Với  các  kết  luận  nêu  trong  các  Mệnh  đề 2.1,  2.2  và  2.3,  ta  có thể  xây  dựng  thuật toán khai phá tập mục thường xuyên có trọng số chuẩn hóa dưới đây [3,12]. ... giản, mọi khó khăn nằm ở bài toán thứ nhất, hầu hết các nghiên cứu về luật kết hợp  đều tập trung giải quyết bài toán thứ nhất là tìm các tập mục thường xuyên.    Phần tiếp theo sau đây sẽ trình bày chi tiết về khai phá tập mục thường xuyên.   1.2 Một số thuật toán cơ bản khai phá tập mục thường xuyên 1.2.1 Cách tiếp cận khai phá tập mục thường xuyên Các nghiên cứu về khai phá tập mục thường xuyên tập trung vào tìm các thuật  toán mới hoặc đề xuất giải pháp nâng cao hiệu quả các thuật toán đã có.  Phần này sẽ ... của tập mục thường xuyên: Cho cơ sở dữ liệu giao tác DB và ngưỡng độ hỗ trợ tối thiểu minsup Các tập mục thường xuyên có các tính chất sau:  (1) Nếu X, Y là các tập mục và  X  Y  thì  sup( X )  sup(Y )   (2)  Nếu  một  tập mục là  không  thường xuyên thì  mọi  tập cha  của  nó  cũng  không thường xuyên.   (3) Nếu một tập mục là thường xuyên thì mọi tập con khác rỗng của nó cũng  là tập mục thường xuyên. .. nén cơ sở dữ liệu lên cấu trúc cây. Tuy nhiên, trong thực tế có nhiều bài toán ứng  dụng đòi hỏi khai phá tập mục thường xuyên có trọng số trên cơ sở dữ liệu giao tác vì vậy trong chương 2 sẽ giải quyết bài toán trên.   24  Chương 2: KHAI PHÁ TẬP MỤC THƯỜNG XUYÊN CÓ TRỌNG SỐ Máy tính  lưu  trữ  lượng lớn  giao dịch bán  lẻ  trong kinh doanh bán  lẻ.  Vì  thế  việc  lấy  thông  tin  từ  cơ sở dữ liệu lớn  rất  hữu  ích  đối ...  và một danh sách các mục dữ liệu trong giao tác đó.  5  Ví dụ 1.1 Bảng 1.1 Biểu diễn ngang của cơ sở dữ liệu giao tác TID Mục dữ liệu T1 B, C, D  T2 B, C, D  T3 A, B, D  T4 C, D, F  T5 C, D  T6 A, C  T7 A, B, C, F  T8 A, C  T9 A, B, E  T10 A, E  T11 A, B, C  Biểu diễn dọc: Cơ sở dữ liệu là một danh sách các mục dữ liệu,  mỗi mục dữ liệu có một danh sách tất cả các định danh của các giao tác chứa mục dữ liệu này. ... đều  có trọng số không  lớn hơn  wj,  ta  có tập mục X  được  gọi  là  tập cha  bậc  thấp  (lower-order superset) của Y.  Định nghĩa 2.6. Cho tập mục X. Tập mục con Y của X mà mỗi mục trong Y đều có trọng số lớn hơn hoặc bằng trọng số của các mục trong X - Y, ta có tập mục Y được  gọi là tập con bậc cao (high-order subset) của X.  Mệnh đề 2.2 [3,12] Nếu X là tập mục thường xuyên có trọng số chuẩn... khi đó lần lượt trở thành độ hỗ trợ và độ tin cậy có trọng số.  Luật kết hợp có độ hỗ  trợ và độ tin cậy trọng số hóa được gọi là luật kết hợp có trọng số.    Mục tiêu của chương này là tìm hiểu thuật toán khai phá tập mục thường xuyên có trọng số MINWAL  [7]  theo hướng  tiếp  cận Apriori  và  thuật  toán  khai phá tập mục thường xuyên có trọng số WFIM  dựa  trên thuật  toán  FP-Growth  [12]  theo 

Ngày đăng: 17/08/2016, 15:59

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan