Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 80 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
80
Dung lượng
1,72 MB
Nội dung
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