Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 54 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
54
Dung lượng
838,41 KB
Nội dung
BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC NHA TRANG TRẦN THỊ CHÂM TÌM HIỂU KỸ THUẬT KHAI THÁC TẬP PHỔ BIẾN DỰA VÀO VECTOR BIT LUẬN VĂN THẠC SĨ KHÁNH HÒA - 2019 BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC NHA TRANG TRẦN THỊ CHÂM TÌM HIỂU KỸ THUẬT KHAI THÁC TẬP PHỔ BIẾN DỰA VÀO VECTOR BIT LUẬN VĂN THẠC SĨ Ngành: Công nghệ thông tin Mã Số: 8480201 Quyết định giao đề tài: 514/QĐ - ĐHNT ngày 17/5/2019 Quyết định thành lập HĐ: Ngày bảo vệ: Người hướng dẫn khoa học: TS NGUYỄN ĐỨC THUẦN Chủ tịch hội đồng: Khoa sau đại học: KHÁNH HỊA - 2019 LỜI CAM ĐOAN Tơi xin cam đoan kết đề tài: “TÌM HIỂU KỸ THUẬT KHAI THÁC TẬP PHỔ BIẾN DỰA VÀO VECTOR BIT” cơng trình nghiên cứu cá nhân tơi chưa cơng bố cơng trình khoa học khác thời điểm Khánh Hòa, ngày … tháng 10 năm 2019 Tác giả luận văn Trần Thị Châm iii LỜI CẢM ƠN Trong suốt thời gian thực đề tài, nhận giúp đỡ quý phòng ban trường Đại học Nha Trang, Trường Cao đẳng Sư phạm Đà Lạt tạo điều kiện tốt cho tơi hồn thành đề tài Đặc biệt hướng dẫn tận tình TS Nguyễn Đức Thuần giúp tơi hồn thành tốt đề tài Qua xin gửi lời cảm ơn sâu sắc tới giúp đỡ Cuối xin gửi lời cảm ơn chân thành đến gia đình tất bạn bè giúp đỡ, động viên tơi suốt q trình học tập thực đề tài Với điều kiện thời gian kinh nghiệm hạn chế học viên, luận văn khơng thể tránh thiếu sót Tơi mong nhận bảo, đóng góp ý kiến thầy để tơi có điều kiện bổ sung, nâng cao kiến thức Tơi xin chân thành cảm ơn! Khánh Hòa, ngày……tháng 10 năm 2019 Tác giả luận văn Trần Thị Châm iv MỤC LỤC Tiêu đề Trang LỜI CAM ĐOAN iii LỜI CẢM ƠN iv MỤC LỤC v DANH MỤC CÁC TỪ VIẾT TẮT viii DANH MỤC BẢNG ix DANH MỤC HÌNH x TRÍCH YẾU LUẬN VĂN xi MỞ ĐẦU 1 Lý chọn đề tài Mục tiêu nhiệm vụ nghiên cứu Đối tượng phạm vi nghiên cứu CHƯƠNG TỔNG QUAN VỀ KHAI PHÁ DỮ LIỆU 1.1 Giới thiệu chung khai phá liệu 1.1.1 Khái niệm 1.1.2 Mục đích khai phá liệu 1.1.3 Dữ liệu sử dụng khai phá liệu 1.1.3.1 Phân loại liệu 1.1.3.2 Tổng hợp liệu 1.1.4 Các bước trình khai phá liệu 1.2 Các kỹ thuật khai phá liệu 1.2.1 Phương pháp dự đoán 1.2.1.1 Phân lớp (classification) 1.2.1.2 Hồi quy (regression) 1.2.2 Khai phá liệu mô tả 1.2.2.1 Phân cụm (clustering) v 1.2.2.2 Luật kết hợp (Association rules) 1.3 Kiến trúc hệ thống khai phá liệu 10 1.4 Các ứng dụng khai phá liệu thách thức gặp phải 10 1.4.1 Ứng dụng khai phá liệu thực tiễn 10 1.4.2 Những thách thức ứng dụng nghiên cứu kỹ thuật khai phá liệu 11 1.4.2.1 Các vấn đề liên quan đến sở liệu 11 1.4.2.1 Một số vấn đề khác 12 CHƯƠNG BÀI TOÁN KHAI THÁC TẬP PHỔ BIẾN 13 2.1 Giới thiệu toán khai thác tập phổ biến 13 2.2 Các định nghĩa 13 2.2.1 Hạng mục tập hạng mục 13 2.2.1.1 Hạng mục (Item) 13 2.2.1.2 Tập hạng mục (Itemset) 14 2.2.1.3 Tập hạng mục mức k 14 2.2.2 Giao dịch (Transaction) 14 2.2.3 Cơ sở liệu giao tác 14 2.2.4 Độ hỗ trợ (Support) 15 2.2.4.1 Độ hỗ trợ tập mục liệu 15 2.2.4.2 Độ hỗ trợ luật kết hợp 16 2.2.5 Tập mục liệu thường xuyên (Frequent Itemset) 16 2.2.6 Độ tin cậy (Confidence) 17 CHƯƠNG SO SÁNH HIỆU QUẢ THUẬT TOÁN KHAI THÁC TẬP PHỔ BIẾN APRIORI VÀ CÁC THUẬT TOÁN VECTOR BIT 18 3.1 Thuật toán Apriori 18 3.1.1 Ví dụ thử nghiệm 18 3.1.2 Ưu nhược điểm thuật toán Apriori 20 3.1.2.1 Ưu điểm 20 vi 3.1.2.2 Nhược điểm 20 3.2 Thuật toán khai phá tập liệu thường xuyên vector BIT 20 3.2.1 Giới thiệu 20 3.2.2 CBVAR Algorithm - Cluster based Bit Vectors for Association Rule mining 21 3.2.3 ICBVAR Algorithm - Improved Cluster Based Big Vector Association Rule 25 CHƯƠNG KẾT QUẢ CỦA THỬ NGHIỆM VÀ HƯỚNG PHÁT TRIỂN 29 4.1 Các thử nghiệm 29 4.1.1 Thử nghiệm liệu MUSHROOM 30 4.1.2 Thử nghiệm liệu CHESS 31 4.1.3 Thử nghiệm liệu CONNECT 31 4.2 Nhận xét chung 32 4.3 Hướng nghiên cứu 33 TÀI LIỆU THAM KHẢO 34 PHỤ LỤC 35 vii DANH MỤC CÁC TỪ VIẾT TẮT Từ viết tắt Ý nghĩa Tiếng Anh KPDL Khai phá liệu Data Mining CSDL Cơ sở liệu Database ST Ngưỡng hỗ trợ Support Threshold KDD Khai phá tri thức Knowledge Discovery in Databases MST Độ hỗ trợ tối thiểu Minimum Support Threshold SC Độ hỗ trợ Support Count FI Tập thường xuyên Frequent Itemset viii DANH MỤC BẢNG Bảng 1.1 Các kiểu liệu sử dụng khai phá liệu Bảng 2.1 CSDL mô tả giao dịch mua hàng 13 Bảng 2.2 Biểu diễn ngang sở liệu giao tác 15 Bảng 2.3 Biểu diễn dọc sở liệu giao tác 15 Bảng 3.1 Ma trận giao tác CSDL giao tác 21 Bảng 3.2 CSDL giao dịch bán hàng 23 Bảng 3.3 CSDL chuyển đổi theo thuật toán CBVAR 24 Bảng 3.4 Danh mục tập 1, 2, 3- mục thường xuyên thuật toán CBVAR 25 Bảng 3.5 CSDL xây dựng theo thuật toán ICBVAR 27 Bảng 3.6 Danh mục tập mục thường xuyên thuật toán ICBVAR 28 Bảng 4.1 Kết thời gian thực chương trình liệu MUSHROOM 30 Bảng 4.2 Kết thời gian thực chương trình liệu CHESS 31 Bảng 4.3 Kết thời gian thực chương trình liệu CONNECT 32 ix DANH MỤC HÌNH Hình 1.1 Mơ hình khai phá liệu Hình 1.2 Phân lớp cho tập liệu cho vay Hình 1.3 Phân cụm tập liệu cho vay nợ vào cụm Hình 1.4 Kiến trúc điển hình hệ thống khai phá liệu 10 Hình 4.1 Giao diện chương trình Demo 29 Hình 4.2 Biểu đồ so sánh kết thuật toán liệu MUSHROOM 30 Hình 4.3 Biểu đồ so sánh kết thuật toán liệu CHESS 31 Hình 4.4 Biểu đồ so sánh kết thuật toán liệu CONNECT 32 x CHƯƠNG KẾT QUẢ CỦA THỬ NGHIỆM VÀ HƯỚNG PHÁT TRIỂN 4.1 Các thử nghiệm Tất thử nghiệm phần cài đặt tiến hành hệ thống CPU Intel Core i5 2.3 GHz, nhớ RAM 6GB, chạy hệ điều hành Windows 10, sử dụng ngôn ngữ lập trình Visual C#, thực nghiệm CSDL CHESS, MUSHROOM, CONNECT download từ trang web: http://fimi.cs.helsinki.fi/data/ Giao diện chương trình chạy thử nghiệm: Hình 4.1 Giao diện chương trình Demo 29 Chương trình cho phép chọn thuật toán, nhập giá trị độ hỗ trợ tối thiểu S0 ô nhập điểm tối thiểu, kết thuật tốn lưu trữ file txt lưu liệu mục 1-mục thường xuyên, tới 2-mục thường xuyên,… Kết thuật toán liệu giá trị S0 thuật toán giống chứng tỏ tính cài đặt, thời gian khơng gian nhớ mà thuật tốn sử dụng khác 4.1.1 Thử nghiệm liệu MUSHROOM Ta có bảng kết thời gian thuật tốn sử dụng để tìm tập thường xun liệu MUSHROOM có 8229 dịng liệu, giá trị lớn 119 (thuật toán sử dụng ma trận kích thước 8229 × 119) : Thời gian thực (ms) Minsup Apriori CBVAR ICBVAR 50 23781 5100 5200 60 3228 566 572 70 1876 276 307 80 1788 308 294 90 1632 218 245 Bảng 4.1 Kết thời gian thực chương trình liệu MUSHROOM Thời gian thực (ms) 25000 20000 15000 10000 5000 50 60 70 apriori cbvar 80 90 icbvar Hình 4.2 Biểu đồ so sánh kết thuật toán liệu MUSHROOM 30 4.1.2 Thử nghiệm liệu CHESS Ta có bảng kết thời gian thuật tốn sử dụng để tìm tập thường xuyên liệu CHESS có 3239 dịng liệu, giá trị lớn 75 (thuật toán sử dụng ma trận kích thước 3239 × 75): Thời gian thực (ms) Minsup Apriori CBVAR ICBVAR 95 12704 936 1010 90 53050 5020 4800 85 996925 94049 95382 Bảng 4.2 Kết thời gian thực chương trình liệu CHESS Hình 4.3 Biểu đồ so sánh kết thuật toán liệu CHESS 4.1.3 Thử nghiệm liệu CONNECT Ta có bảng kết thời gian thuật tốn sử dụng để tìm tập thường xuyên liệu CONNECT có 67557 dòng liệu, giá trị lớn 129 (thuật tốn sử dụng ma trận kích thước 67557 × 129) : 31 Thời gian thực (ms) Minsup Apriori CBVAR ICBVAR 96 2,123,241 239,433 245,962 95 19,615,361 696,836 692,043 90 100,985,165 13,039,711 13,038,235 Bảng 4.3 Kết thời gian thực chương trình liệu CONNECT Thời gian thực 120.000.000 100.000.000 80.000.000 60.000.000 40.000.000 20.000.000 90 95 apriori cbvar 96 icbvar Hình 4.4 Biểu đồ so sánh kết thuật toán liệu CONNECT 4.2 Nhận xét chung Với thuật toán với kỹ thuật cài đặt khác cho kết khác nhau; tập liệu khác ngưỡng tối thiểu khác cho kết khác Do đó, có báo cơng bố sau có kết trái ngược với kết cơng bố trước Ví dụ C Borgelt R Kruse cơng bố thuật toán Apriori chạy tốt ngưỡng tối thiểu lớn, chạy chậm ngưỡng tối thiểu nhỏ Tuy nhiên, Bart Goethals cho kết ngược lại Có lẽ có khác biệt cài đặt, người sử dụng cấu trúc liệu thủ tục xử lý khác Trong trình nghiên cứu, cài đặt thuật tốn, tơi nhận thấy thuật toán khai thác tập thường xuyên vector Bit CBVAR ICBVAR có lợi mặt thời gian nhiều Apriori Trong ICBVAR đánh giá hiệu CSDL có nhiều giao dịch trùng mục (CSDL dày), CBVAR hiệu ICBVAR CSDL có giao dịch trùng khơng thời gian, 32 không gian nhớ cho việc đếm lưu trữ số lượng giao dịch Apriori hiệu giao dịch có trùng lặp, đơn giản giá trị ngưỡng lớn thời gian chênh lệch thuật toán nhỏ 4.3 Hướng nghiên cứu Trong phạm vi nghiên cứu luận văn thực việc nghiên cứu việc khai thác tập phổ biến, nhận thấy hiệu thuật toán khai thác mục thường xuyên dựa vào vector BIT tốt so với thuật toán Apriori biết trước đó.Tuy nhiên cịn số vấn đề mà thuật toán gặp phải bao gồm: - Trong trường hợp CSDL giao dịch thưa dung lượng nhớ dùng cho liệu lớn mà hiệu không cao; - Chiều dài dãy bit giao dịch mục có giá trị lớn làm cho kích thước ma trận giao tác lớn lên nhiều Trong hướng nghiên cứu tiếp theo, vấn đề nêu giải kết hợp thuật toán với cách lưu trữ, xử lý liệu chẳng hạn dạng có trọng số, bảng có trọng số, để bổ sung vào kết nghiên cứu luận văn Rất mong có đóng góp cộng tác với quan tâm để hoàn thiện mặt lý thuyết ứng dụng 33 TÀI LIỆU THAM KHẢO Tài liệu tiếng Việt Nguyễn Đức Thuần (2013), Giáo trình phát tri thức khai phá liệu, nhà xuất thông tin truyền thông Tài liệu tiếng Anh Marghny H Mohamed, Mohammed M Darwieesh (2013), Efficient mining frequent itemsets algorithms R Velmurugan, C Jothi Venkateswaran, M Krishna murthy (2016), Mining Frequent ItemSet Based on Clustering of Bit Vectors Jiemin Zheng, Defu Zhang, Stephen C H Leung, Xiyue Zhou (2010), An efficient algorithm for frequent itemsets in data mining Hosny M Ibrahim, M H Marghny, Noha M A Abdelaziz (2015), Fast Vertical Mining Using Boolean Algebra A.Saleem Raja1, E.George Dharma Prakash Raj (2014), CBT-fi: Compact BitTable Approach for Mining Frequent Itemsets J Han and M Kamber (2010), Data Mining: concepts and Techniques San Francisco, CA : Morgan Kaufmann Publishers Liu Yang and Mei Qiao (2008), A Bitmap compression algorithm for vertical association rules mining, 2008 International Symposium on Computer Science and Computational Technology (ISCSCT) (IEEE) Dong J, Han (2007), “ BitTableFI: An efcient mining frequent itemsets algorithm”, Journal of Elsevier on Knowledge Based Systems 10 Yu H, Web J, Wang H, Jun L (2011), “An improved Apriori algorithm based on the Boolean Matrix and Hadoop”, Procedia Engineering 11 Liu G, Lu H, Lou W, Xu Y, Yu JX (2004), “Efficient mining of frequent patterns using ascending frequency ordered prefix-tree”, Data Min Knowl Discov 9(3):249–274 12 http://fimi.cs.helsinki.fi 13 https://vi.wikipedia.org/wiki/Khai_phá_dữ_liệu 34 PHỤ LỤC Các hàm luận văn a Hàm xử lý thuật toán Apriori .a Hàm xử lý thuật toán CBVAR b Hàm xử lý thuật toán ICBVAR d Hàm theo dõi khơng gian nhớ sử dụng thuật tốn g Màn hình làm việc phần mềm g Kết thuật toán h 35 Các hàm, thủ tục sử dụng luận văn Hàm xử lý thuật toán Apriori public void CalApriori(string[] allLines, int maxId, double minThres) { var countTransaction = allLines.Length; Dispatcher.BeginInvoke((Action)(() => { resultPath = Directory.GetCurrentDirectory() + @"\ResultApriori" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".txt"; lblOutput.Content = resultPath; listBox.Items.Add("===Sử dụng phương pháp Apriori==="); // listBox.Items.Add("===Danh sách giao dịch==="); })); var lstTransation = new List(); lstTransation = allLines.Select(s => { s = s.Trim(); s = s.EndsWith(";") ? s.Substring(0, s.Length - 1) : s; var item = s.Split(';').Select(sTmp => { int id; if (int.TryParse(sTmp, out id)) return id; else return 0; }).ToList(); return item; }).ToList(); //print Dispatcher.BeginInvoke((Action)(() => { foreach (var item in lstTransation) { listBox.Items.Add(string.Join(",", item)); } })); var lstItem = new List(); for (int i = 1; i { listBox.Items.Add("\n===Lọc tổ hợp mã==="); })); var re = new List(); int iChon = 1; { int step = iChon; Dispatcher.BeginInvoke((Action)(() => { listBox.Items.Add(string.Format("Đang trộn {0} phần tử ", step)); a })); var reCombinations = Combinations(lstItem, iChon); // lstItem = new List(); iChon++; var reAdd = new List(); // foreach (IEnumerable item in reCombinations) { var tmpItem = item.ToList(); var count = lstTransation.Where(w => !tmpItem.Except(w).Any()).Count(); var thers = ((double)count / countTransaction) * 100; if (thers >= minThres) { var add = new ItemModel() { Count = count, Thres = thers, Item = tmpItem }; reAdd.Add(add); lstItem.AddRange(tmpItem.Where(w => !lstItem.Exists(e => e == w))); } } // re.AddRange(reAdd); var tmplstItem = new List(lstItem); Dispatcher.BeginInvoke((Action)(() => { listBox.Items.Add(string.Format("Kết có {0} mã {2} tổ hợp thỏa tỷ lệ >= {1}%", tmplstItem.Count, minThres, reAdd.Count)); if (tmplstItem.Count > 0) listBox.Items.Add(string.Join(",", tmplstItem)); listBox.Items.Add(""); })); } while (lstItem.Count > 0); resultSW = File.AppendText(resultPath); foreach (var item in re) { resultSW.WriteLine(string.Format("{0} >> {1} lần /{3} >> {2}%", string.Join(",", item.Item), item.Count.ToString("#,###"), item.Thres.ToString("#.###"), countTransaction.ToString("#,###"))); } resultSW.Flush(); resultSW.Close(); } Hàm xử lý thuật toán CBVAR public void CalCBVAR(string[] allLines, int maxId, double minThres) { var countTransaction = allLines.Length; Dispatcher.BeginInvoke((Action)(() => { resultPath = Directory.GetCurrentDirectory() + @"\ResultCBVAR" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".txt"; lblOutput.Content = resultPath; listBox.Items.Add("===Sử dụng phương pháp CBVAR==="); // listBox.Items.Add("===Danh sách giao dịch==="); b })); var arrTransaction = new long[countTransaction][]; for (int i = 0; i < countTransaction; i++) { var s = allLines[i].Trim(); s = s.EndsWith(";") ? s.Substring(0, s.Length - 1) : s; var tmp = s.Split(';').Select(sTmp => { int id; if (int.TryParse(sTmp, out id)) return id; else return 0; }).ToList(); var item = new long[maxId]; for (int i2 = 0; i2 < maxId; i2++) { item[i2] = tmp.Any(a => a == (i2+1)) ? : 0; } arrTransaction[i] = item; } //print Dispatcher.BeginInvoke((Action)(() => { foreach (var item in arrTransaction) { listBox.Items.Add(string.Join("", item)); } })); var lstItem = new List(); for (int i = 1; i { listBox.Items.Add("\n===Lọc tổ hợp mã==="); })); var re = new List(); int iChon = 1; { int step = iChon; Dispatcher.BeginInvoke((Action)(() => { listBox.Items.Add(string.Format("Đang trộn {0} phần tử ", step)); })); var reCombinations = Combinations(lstItem, iChon); // lstItem = new List(); iChon++; var reAdd = new List(); // foreach (IEnumerable item in reCombinations) { var tmpItem = item.ToList(); var count = arrTransaction.Where(w => c { int cTrue = 0; foreach (var sItem in item) { if (w[sItem - 1] == 1) cTrue += 1; } return item.Count() == cTrue ? true : false; }).Count(); var thers = ((double)count / countTransaction) * 100; if (thers >= minThres) { var add = new ItemModel() { Count = count, Thres = thers, Item = tmpItem }; reAdd.Add(add); lstItem.AddRange(tmpItem.Where(w => !lstItem.Exists(e => e == w))); } } // re.AddRange(reAdd); var tmplstItem = new List(lstItem); Dispatcher.BeginInvoke((Action)(() => { listBox.Items.Add(string.Format("Kết có {0} mã {2} tổ hợp thỏa tỷ lệ >= {1}%", tmplstItem.Count, minThres, reAdd.Count)); if (tmplstItem.Count > 0) listBox.Items.Add(string.Join(",", tmplstItem)); listBox.Items.Add(""); })); } while (lstItem.Count > 0); resultSW = File.AppendText(resultPath); foreach (var item in re) { resultSW.WriteLine(string.Format("{0} >> {1} lần /{3} >> {2}%", string.Join(",", item.Item), item.Count.ToString("#,###"), item.Thres.ToString("#.###"), countTransaction.ToString("#,###"))); } resultSW.Flush(); resultSW.Close(); } Hàm xử lý thuật toán ICBVAR public void CalICBVAR(string[] allLines, int maxId, double minThres) { var countTransaction = allLines.Length; Dispatcher.BeginInvoke((Action)(() => { resultPath = Directory.GetCurrentDirectory() + @"\ResultICBVAR" + DateTime.Now.ToString("yyyyMMddHHmmss") + ".txt"; lblOutput.Content = resultPath; listBox.Items.Add("===Sử dụng phương pháp ICBVAR==="); // listBox.Items.Add("===Danh sách giao dịch==="); })); d var arrTransactionTmp = new long[countTransaction][]; for (int i = 0; i < countTransaction; i++) { var s = allLines[i].Trim(); s = s.EndsWith(";") ? s.Substring(0, s.Length - 1) : s; var tmp = s.Split(';').Select(sTmp => { int id; if (int.TryParse(sTmp, out id)) return id; else return 0; }).ToList(); var item = new long[maxId + 1]; for (int i2 = 0; i2 < maxId; i2++) { item[i2] = tmp.Any(a => a == (i2 + 1)) ? : 0; } item[maxId] = 1; arrTransactionTmp[i] = item; } //group var arrTransaction = arrTransactionTmp GroupBy(g => string.Join("", g)) Select(s => { var item = new long[maxId + 1]; for (int i = 0; i < maxId; i++) { item[i] = int.Parse(s.Key[i].ToString()); } item[maxId] = s.Count(); return item; }).OrderByDescending(o => o[maxId]).ToArray(); //print Dispatcher.BeginInvoke((Action)(() => { listBox.Items.Add(string.Format("===Danh sách giao dịch sau nhóm {0}===", arrTransaction.Count())); foreach (var item in arrTransaction) { var str = string.Join("", item); listBox.Items.Add(str.Substring(0, maxId) + Convert.ToChar(9) + str.Substring(maxId)); } })); var lstItem = new List(); for (int i = 1; i { listBox.Items.Add("\n===Lọc tổ hợp mã==="); })); var re = new List(); int iChon = 1; e { int step = iChon; Dispatcher.BeginInvoke((Action)(() => { listBox.Items.Add(string.Format("Đang trộn {0} phần tử ", step)); })); var reCombinations = Combinations(lstItem, iChon); // lstItem = new List(); iChon++; var reAdd = new List(); // foreach (IEnumerable item in reCombinations) { var tmpItem = item.ToList(); var count = arrTransaction.Where(w => { int cTrue = 0; foreach (var sItem in item) { if (w[sItem - 1] == 1) cTrue += 1; } return item.Count() == cTrue ? true : false; }).Sum(s=>s[maxId]); var thers = ((double)count / countTransaction) * 100; if (thers >= minThres) { var add = new ItemModel() { Count = (int)count, Thres = thers, Item = tmpItem }; reAdd.Add(add); lstItem.AddRange(tmpItem.Where(w => !lstItem.Exists(e => e == w))); } } // re.AddRange(reAdd); var tmplstItem = new List(lstItem); Dispatcher.BeginInvoke((Action)(() => { listBox.Items.Add(string.Format("Kết có {0} mã {2} tổ hợp thỏa tỷ lệ >= {1}%", tmplstItem.Count, minThres, reAdd.Count)); if (tmplstItem.Count > 0) listBox.Items.Add(string.Join(",", tmplstItem)); listBox.Items.Add(""); })); } while (lstItem.Count > 0); resultSW = File.AppendText(resultPath); foreach (var item in re) { resultSW.WriteLine(string.Format("{0} >> {1} lần /{3} >> {2}%", string.Join(",", item.Item), item.Count.ToString("#,###"), item.Thres.ToString("#.###"), countTransaction.ToString("#,###"))); } resultSW.Flush(); resultSW.Close(); } f Hàm theo dõi không gian nhớ sử dụng thuật toán start.PrivateMemorySize64 = proc.PrivateMemorySize64 / f; start.WorkingSetSize64 = proc.WorkingSet64 / f; start.PeakVirtualMemorySize64 = proc.PeakVirtualMemorySize64 / f; start.PeakPagedMemorySize64 = proc.PeakPagedMemorySize64 / f; start.PagedSystemMemorySize64 = proc.PagedSystemMemorySize64 / f; start.PagedMemorySize64 = proc.PagedMemorySize64 / f; start.PagedMemorySize64 = proc.PagedMemorySize64 / f; start.TotalProcessorTime = proc.TotalProcessorTime; Màn hình làm việc phần mềm g Kết thuật toán Kết thuật toán lưu trữ vào file txt, có mục thường xuyên, số lần mục xuất hiện, tỉ lệ phần trăm tương ứng h ... hợp tập trung vào khai phá tập phổ biến Vì lợi ích thực tế luận văn “TÌM HIỂU KỸ THUẬT KHAI THÁC TẬP PHỔ BIẾN DỰA VÀO VECTOR BIT? ?? tìm hiểu, cài đặt so sánh với thuật toán Apriori khai thác tập phổ. .. CHƯƠNG BÀI TỐN KHAI THÁC TẬP PHỔ BIẾN 2.1 Giới thiệu toán khai thác tập phổ biến Bài toán khai thác tập phổ biến (hay tập thường xuyên) tìm tất tập mục liệu có độ hỗ trợ thỏa ngưỡng tối thiểu cho trước,... trước, gọi tập tập mục liệu thường xuyên hay tập mục liệu phổ biến Bài toán khai thác tập phổ biến tốn tìm tất tập hạng mục (itemset) S có độ phổ biến (support) thỏa mãn độ phổ biến tối thiểu S0: