Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 82 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
82
Dung lượng
1,11 MB
Nội dung
1 ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG BẾ QUANG HUẤN NGHIÊN CỨU MỘT SỐ THUẬT TOÁN KHAI PHÁ TẬP MỤC THƯỜNG XUYÊN VÀ TẬP MỤC CỔ PHẦN CAO TRONG CƠ SỞ DỮ LIỆU Chuyên nghành: Khoa học máy tính Mã số: 60.48.01 LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH Người hướng dẫn khoa học: GS TS Vũ Đức Thi THÁI NGUYÊN 2012 i LỜI CAM ĐOAN Tôi xin cam đoan toàn nội dung Luận văn hoàn toàn theo nội dung đề cương nội dung mà cán hướng dẫn giao cho Nội dung luận văn, phần trích lục tài liệu hoàn toàn xác Nếu có sai sót hoàn toàn chịu trách nhiệm Tác giả luận văn Bế Quang Huấn ii MỤC LỤC LỜI CAM DOAN i DANH MỤC CÁC KÝ HIỆU VÀ CÁC CHỮ VIẾT TẮT iv DANH MỤC CÁC BẢNG BIỂU .v DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ vi MỞ ĐẦU .1 Chương KHAI PHÁ TẬP MỤC THƯỜNG XUYÊN VÀ MỘT SỐ MỞ RỘNG 1.1 MỞ ĐẦU 1.2 CÁC KHÁI NIỆM CƠ BẢN 1.2.1 Cơ sở liệu giao tác 1.2.2 Tập mục thường xuyên luật kết hợp 10 1.2.3 Bài toán khai phá luật kết hợp .12 1.3 KHAI PHÁ TẬP MỤC THƯỜNG XUYÊN 14 1.3.1 Các cách tiếp cận khai phá tập mục thường xuyên .14 1.3.2 Thuật toán Apriori 16 1.3.3 Thuật toán FP-growth 22 1.4 MỞ RỘNG BÀI TOÁN KHAI PHÁ TẬP MỤC THƯỜNG XUYÊN 31 1.5 KẾT LUẬN CHƯƠNG 33 Chương KHAI PHÁ TẬP MỤC CỔ PHẦN CAO 34 iii 2.1 GIỚI THIỆU 34 2.2 BÀI TOÁN KHAI PHÁ TẬP MỤC CỔ PHẦN CAO 35 2.3 THUẬT TOÁN FSM 41 2.3.1 Cở sở lý thuyết thuật toán FSM 41 2.3.2 Thuật toán FSM .42 2.3.3 Nhận xét thuật toán FSM .44 2.4 THUẬT TOÁN AFSM 45 2.4.1 Cơ sở lý thuyết thuật toán AFSM 45 2.4.2 Thuật toán AFSM 52 2.4.3 Đánh giá thuật toán AFSM 59 2.5 KẾT LUẬN CHƯƠNG 60 Chương THỰC NGHIỆM VÀ ĐÁNH GIÁ THUẬT TOÁN .61 3.1 ĐẶT BÀI TOÁN 61 3.2 THIẾT KẾ MODUL CHƯƠNG TRÌNH VÀ GIẢI THUẬT .62 3.3 GIAO DIỆN SỬ DỤNG VÀ CHỨC NĂNG CHƯƠNG TRÌNH 67 3.4 ĐÁNH GIÁ KẾT QUẢ VÀ HƯỚNG PHÁT TRIỂN CỦA CHƯƠNG TRÌNH 70 KẾT LUẬN 72 TÀI LIỆU THAM KHẢO 73 iv DANH MỤC CÁC KÝ HIỆU VÀ CÁC CHỮ VIẾT TẮT Ký hiệu Diễn giải I={i1,i2,…,in} Tập n mục liệu DB ={T1,T2,…,Tm} Cơ sở liệu có m giao tác db Cơ sở liệu giao tác DB, db ⊆ DB ip Mục liệu thứ p Tq Giao tác thứ q n Số mục liệu sở liệu giao tác m Số giao tác sở liệu giao tác A, B, C,… Tên mục liệu sở liệu giao tác X, Y,… Tập tập mục liệu I, X, Y ⊆ I X=ABC Thay cho X={A,B,C} sở liệu giao tác minsup Ngưỡng độ hỗ trợ minShare Ngưỡng cổ phần tối thiểu minconf Ngưỡng độ tin cậy tối thiểu v X Số phần tử tập hợp X CSDL Cở sở liệu CNTT Công nghệ thông tin DANH MỤC CÁC BẢNG BIỂU Bảng 1.1: Biểu diễn ngang sở liệu giao tác Bảng 1.2: Biểu diễn dọc sở liệu giao tác .9 Bảng 1.3: Ma trận giao tác sở liệu bảng 1.1 10 Bảng 1.4: Cơ sở liệu giao tác minh họa thực thuật toán Apriori 20 Bảng 1.5: Cơ sở liệu giao tác minh họa thực thuật toán COFI-tree 25 Bảng 1.6: Các mục liệu độ hỗ trợ .26 Bảng 1.7: Các mục liệu thường xuyên thứ tự 26 Bảng 1.8: Các mục liệu giao tác giảm dần theo độ hỗ trợ 27 Bảng 2.1: Cơ sở liệu ví dụ .36 Bảng 2.2: Giá trị lmv cổ phần mục liệu CSDL bảng 2.1 38 Bảng 2.3: Các tập mục cổ phần cao CSDL bảng 2.1 38 Bảng 2.4: CSDL minh họa ngữ nghĩa tập mục cổ phần cao 40 Bảng 2.5a: CSDL minh họa có trường hợp hai hàm tới hạn 51 Bảng 2.5b: CSDL minh học có trường hợp hai hàm tới hạn băng 51 Bảng 2.6: Giá trị hai hàm tới hạn k=1 52 Bảng 2.7: Các giá trị lmv hàm tới hạn với k=1 56 Bảng 2.8: Các giá trị lmv hàm tới hạn với k=2 57 vi Bảng 2.9: Các giá trị lmv hàm tới hạn với k=3 57 DANH MỤC CÁC HÌNH VẼ, ĐỒ THỊ Hình 1.1: Phân loại thuật toán khai phá tập mục thường xuyên 15 Hình 1.2: Cây FP-tree CSDL bảng 1.5 28 Hình 1.3: Cây COFI-tree mục D 28 Hình 1.4: Các bước khai phá D-COFI-tree 31 Hình 2.1: Không gian tìm kiếm tập mục cổ phần cao theo thuật toán AFSM 58 Hình 3.1: Giao diện chương trình demo 63 Hình 3.2: Giao diện hiển thị bảng liệu 64 Hình 3.3: Giao diện cập nhật ngưỡng cổ phần ngưỡng tin cậy cho bảng liệu 65 Hình 3.4: Giao diện hiển thị kết tìm tập mục cổ phần cao 66 MỞ ĐẦU Một ứng dụng quan trọng công nghệ thông tin đời sống giúp giải toán quản lý Kể từ máy tính điện tử trở thành công cụ lao động quan trọng nhu cầu lưu trữ, tìm kiếm xử lý số liệu thống kê Đến nay, sở liệu trở nên khổng lồ người ta mong muốn kho liệu cần khai thác hiệu nhiều bình diện Trong năm gần đây, khai phá liệu (Data mining) trở thành hướng nghiên cứu lớn lĩnh vực khoa học máy tính công nghệ thông tin Khai phá liệu áp dụng cách rộng rãi nhiều lĩnh vực kinh doanh đời sống khác nhau: marketing, tài chính, ngân hàng bảo hiểm, khoa học, y tế, an ninh, internet… Khai phá liệu khám phá tri thức (Data Mining and Knowledge Discovery) lĩnh vực thu hút đông đảo nhà khoa học giới nước tham gia nghiên cứu Khai phá tập mục thường xuyên toán có vai trò quan trọng nhiều nhiệm vụ khai phá liệu Khai phá tập mục thường xuyên biết đến ban đầu toán toán khai phá luật kết hợp giới thiệu Agrawal vào năm 1993 phân tích sở liệu bán hàng siêu thị, phân tích sở thích mua khách hàng cách tìm mặt hàng khác khách hàng mua lần mua Những thông tin giúp người quản lý kinh doanh tiếp thị trọn lọc thu xếp không gian bày hàng hợp lý hơn, giúp cho kinh doanh hiệu Mô hình khai phá tập mục thường xuyên có nhiều ứng dụng thực tế có hạn chế, không đáp ứng đầy đủ yêu cầu người sử dụng Để đáp ứng nhu yêu cầu thực tiễn, số hướng mở rộng toán quan tâm nghiên cứu Một hướng mở rộng toán có rât nhiều ứng dụng quan tâm đến cấu trúc liệu mức độ quan trọng khác mục liệu, thuộc tính sở liệu Theo hướng này, từ toán khai phá tập mục thường xuyên ban đầu, nhiều nhà nghiên cứu đề xuất mô hình mở rộng: Khai phá tập mục cổ phần cao, đánh giá đóng góp tập mục liệu tổng số mục liệu sở liệu Trên giới, kết nghiên cứu khai phá tập mục cổ phần cao công bố nhiều từ nhóm nghiên cứu số trường đại học Mỹ, Canada, Úc, Đài Loan, Singapo, Hồng Kông,… Tại Việt Nam, Khai phá luật kết hợp nhóm nghiên cứu Viện Công nghệ Thông tin thuộc Viện Khoa học Công nghệ Việt Nam, nhóm nghiên cứu số trường đại học Đại học Quốc gia Hà Nội, Đại học Bách Khoa Hà Nội, Đại học Quốc gia thành phố Hồ Chí Minh thực có nhiều kết công bố Với mục đích đóng góp vào lĩnh vực nghiên cứu này, chọn đề tài luận văn: “ Nghiên cứu số thuật toán khai phá tập mục thường xuyên tập mục cổ phần cao sở liệu” làm chủ đề nghiên cứu Mục đích luận văn phát triển số thuật toán khai phá tập mục cổ phần cao sở liệu giao tác cỡ lớn Trên sở áp dụng vào toán cụ thể cài đặt trương trình Với mục tiêu đó, luận văn trình bày ba chương: 60 Chương THỰC NGHIỆM VÀ ĐÁNH GIÁ THUẬT TOÁN Như trình bày chương chương khai phá tập mục thường xuyên luật kết hợp mở rộng khai phá tập mục cổ phần cao, giúp cho tổ chức, cá nhân có định xác hoạt động kinh doanh, quản lý khoa học Bài toán khai phá tập mục cổ phần cao phần giải vấn đề thực tiễn, đánh giá đóng góp tập mục CSDL Chính chương xây dựng chương trình thử nghiệm khai phá tập mục cổ phần cao, thử nghiệm CSDL bán hàng 3.1 ĐẶT BÀI TOÁN Cho CSDL bán hàng với thông tin sau: 61 TID Thuốc Bàn Kem đánh Khăn Xà Bánh chải mặt phòng mì Bơ Pho mát 01 1 1 1 02 20 0 03 3 0 0 04 0 0 05 0 0 … Xây dựng chương trình mô bước trình khai phá tập mục cổ phần cao Chương trình gồm chức năng: - Nhập liệu cần khai phá - Khai phá tập mục cổ phần cao 3.2 THIẾT KẾ MODUL CHƯƠNG TRÌNH VÀ GIẢI THUẬT Chương trình khai phá tập mục cổ phần cao xây dựng sở thuật toán AFSM (Advanced Fast Share Measure) trình bày chương Được cài đặt ngôn ngữ Microsoft visual C# 2008, hệ quản trị sở liệu Microsoft Access 2003, sử dụng hệ điều hành Windows XP Code Demo chương trình //tinh tong gia tri cua bang du lieu DB Tdb 62 try { HS = ""; int T = 0; int k = 0; foreach (DataGridViewRow row in dataGridView1.Rows) if (!row.IsNewRow) foreach (DataGridViewCell cell in row.Cells) T += (int)cell.Value; float min_lmv = T * float.Parse(txt_Support.Text) / 100; double min_conf = double.Parse(txtMinConf.Text) / 100; string C1 = null, C = null; foreach (DataGridViewColumn col in dataGridView1.Columns) C1 += col.Name.ToString() + ","; C1 = C1.Substring(0, C1.Length - 1); string[] itemsC = C1.Split(new char[] { ',' }); for (int i = 0; i < itemsC.Length; i++) if (tmv(itemsC[i], dataGridView1) >= min_lmv) { C += itemsC[i] + ","; if (lmv(itemsC[i], dataGridView1) >= min_lmv) HS += itemsC[i] + ","; } C = C.Substring(0, C.Length - 1); { k++; string RC = null; C = Candidate_Join(C, k); if (C.Equals("")) break; itemsC = C.Split(new char[] { ',' }); for (int i = 0; i < itemsC.Length; i++) if (tmv(itemsC[i], dataGridView1) >= min_lmv) { 63 RC += itemsC[i] + ","; if (lmv(itemsC[i], dataGridView1) >= min_lmv) HS += itemsC[i] + ","; } C = RC.Substring(0, RC.Length - 1); } while (!C.Equals(null)); //bước tỉa xyz = join.Split(new char[] { ',' }); for(int i=xyz.Length -2;i>0;i ) for(int j=i-1;j>=0;j ) if (xyz[i].Equals(xyz[j])) { xyz[i] = ""; break; } string str = ""; for (int i = 0; i < xyz.Length ; i++) if(!xyz[i].Equals("")) str+=xyz[i]+","; return (join.Equals("")? join:str.Substring(0, str.Length - 1)) ; } private bool validateInput(TextBox txtBox) { if (txtBox.Text.Length == 0) { errorProvider1.SetError(txtBox, "Chưa nhập giá trị"); return false; } else { if (int.Parse(txtBox.Text) > 100 || int.Parse(txtBox.Text) < 0) { errorProvider1.SetError(txtBox, "Nhập giá trị 100"); return false; } else { 64 errorProvider1.SetError(txtBox, ""); return true; } } } private string getNameItem(string names, DataGridView dgW) { string lviItem = ""; for (int j = 0; j < names.Length; j++) lviItem += dgW.Columns[names[j].ToString()].HeaderText + ", "; lviItem = lviItem.Substring(0, lviItem.Length - 2); return lviItem; } private class clssRules { string strCombination, strRemaining; double _confidence; public clssRules(string strCombination, string strRemaining, double Confidence) { this.strCombination = strCombination; this.strRemaining = strRemaining; this._confidence = Confidence; } public string X { get { return strCombination; } } public string Y { get { return strRemaining; } } public double Confidence { get { return _confidence; } } } private void generaRule(string ruleItem, List lstRule) { if (ruleItem.Length>1) { string strcombination; for (int i = 1; i < ruleItem.Length; i++) { strcombination = ""; bool[] checki = new bool[ruleItem.Length]; for (int j = 0; j < checki.Length; j++) checki[j] = true; 65 generaKRule(1, 0,ref checki,i, ruleItem,strcombination, lstRule); } } } private void generaKRule(int i,int ti, ref bool[] checki, int k, string ruleItem, string strcombination,List lstRule) { for (int j = ti; j < checki.Length; j++) { if (checki[j]) { strcombination += ruleItem[j].ToString(); checki[j] = false; if (i == k) { string remaining = getRemaining(strcombination, ruleItem); clssRules clsRule = new clssRules(strcombination, remaining, confidence(strcombination, ruleItem)); lstRule.Add(clsRule); } else generaKRule(i + 1,j,ref checki, k, ruleItem, strcombination, lstRule); strcombination = strcombination.Substring(0, strcombination.Length - 1); checki[j] = true; } } } private string getRemaining(string strCombination, string strAFSMItem) { string temp = strAFSMItem; foreach (char ch in strCombination) { temp = temp.Replace(ch.ToString(), ""); } return temp; } 66 private double confidence(string strCombination, string strAFSMItem) { return (double)sum_exist(strAFSMItem,dataGridView1) / sum_exist(strCombination,dataGridView1); } 3.3 GIAO DIỆN SỬ DỤNG VÀ CHỨC NĂNG CHƯƠNG TRÌNH Giao diện chương trình 67 Hình 3.1: Giao diện chương trình demo Chương trình gồm hai chức năng: - Nhập CSDL cần khai phá: Cho phép người sử dụng chọn sở liệu có sẵn bảng sở liệu hiển thị 68 Hình 3.2: Giao diện hiển thị bảng liệu - Tập mục cổ phần cao: Chức thực việc tính toán tìm tập mục cổ phần cao luật kết hợp 69 + Người sử dụng lựa chọn CSDL cần khai phá + Tiếp theo chọn chức tập mục cổ phần cao: Chức thực khai phá tập mục cổ phần cao CSDL chọn bước trước Người sử dụng cần nhập ngưỡng cổ phần minshare ngưỡng tin cậy minconf Sau chọn nút Tính 70 Hình 3.3: Giao diện cập nhật ngưỡng cổ phần ngưỡng tin cậy cho bảng liệu 71 Hình 3.4: Giao diện hiển thị kết tìm tập mục cổ phần cao 3.4 ĐÁNH GIÁ KẾT QUẢ VÀ HƯỚNG PHÁT TRIỂN CỦA CHƯƠNG TRÌNH Chương trình có giao diện thân thiện, đơn giản, dễ sử dụng Chương trình chạy thử nhiều liệu khác cho kết xác 72 Chương trình đạt mục đích đặt tìm tập mục cổ phần cao từ sở liệu bán hàng Tuy nhiên cần phải cải tiến, hoàn thiện với mức độ cao thời gian - Thực chương trình khai phá tập mục cổ phần cao cách sử dụng nhiều thuật toán khác - So sánh kết quả, thời gian thực hiện,… thuật toán để đưa nhận xét đắn hiệu thuật toán - Xây dựng, đóng gói chương trình thành phần mềm chuyên dụng phục vụ khai phá tập mục cổ phần cao 73 KẾT LUẬN Sau thời gian thực hiện, hoàn thành luận văn đạt số kết định Luận văn thể tính thực tiễn cấp bách việc nghiên cứu phát triển phương pháp, kỹ thuật khai phá liệu Những kết luận văn đạt được: Trình bày khái niệm sở liệu giao tác, tập mục thường xuyên luật kết hợp, khai phá tập mục cổ phần cao Đồng thời, từ việc tìm hiểu kỹ thuật khai phá liệu, vấn đề liên quan đến khai phá tập mục thường xuyên, khai phá luật kết hợp, khai phá tập mục cổ phần cao nhằm phát đưa mối liên hệ giá trị liệu CSDL Luận văn áp dụng thử nghiệm toán bán hàng, khai phá tất tập mục cổ phần cao không nhỏ ngưỡng quy định để từ hoạch định chiến lược cụ thể kinh doanh mang lại hiệu cao Hướng phát triển luận văn: Nghiên cứu, cải tiến thuật toán khai phá tập mục thường xuyên, khai phá luật kết hợp, khai phá tập mục cổ phần cao hướng nghiên cứu nhiều nhà nghiên cứu quan tâm tính ứng dụng vào nhiều lĩnh vực, đặc biệt lĩnh vực kinh doanh Trong thời gian tới mở rộng hướng nghiên cứu áp dụng lý thuyết xác suất để khai phá tập mục thường xuyên, mở rộng nghiên cứu tập mục cổ phần cao nghiên cứu tập mục lợi ích cao sở liệu giao tác cỡ lớn 74 TÀI LIỆU THAM KHẢO Tiếng Việt: [1] Vũ Đức Thi (1997), Cơ sở liệu – Kiến thức thực hành, Nhà xuất thống kê, Hà Nội [2] Vũ Đức Thi, Nguyễn Huy Đức (2008), “Khai phá tập mục thường xuyên cổ phần cao sở liệu lớn” Tạp trí tin học Điều khiển học [3] Vũ Đức Thi, Nguyễn Huy Đức (2008), “Thuật toán hiệu khai phá tập mục thường xuyên cổ phần cao”, Kỷ yếu hội thảo Một số vấn đề chọn lọc [4] Nguyễn Huy Đức (2003), “Khai phá luật kết hợp sở liệu lớn”, Kỷ yếu hội thảo khoa học Quốc gia lần thứ nghiên cứu ueng dụng CNTT [5] Nguyễn Huy Đức, luận án Tiến sĩ “Khai phá tập mục cổ phần cao lợi ích cao sở liệu”, năm 2009 Tiếng Anh: [1] Agrawal R And Srikant R (1994), “Fast algorithm for mining association rules”, VLDB-94 [2] Ashafi M., Taniar D., Smith K.(2004), “A new Approach of Eniminating Redundant Associatino Ruler”, Lecture Notes in Computer Science [3] CUCIS Center for Ultra-scale Computing and Information Security, Northwestern University ... Với mục đích đóng góp vào lĩnh vực nghiên cứu này, chọn đề tài luận văn: “ Nghiên cứu số thuật toán khai phá tập mục thường xuyên tập mục cổ phần cao sở liệu làm chủ đề nghiên cứu Mục đích luận. .. mở rộng: Khai phá tập mục cổ phần cao, đánh giá đóng góp tập mục liệu tổng số mục liệu sở liệu Trên giới, kết nghiên cứu khai phá tập mục cổ phần cao công bố nhiều từ nhóm nghiên cứu số trường... khai phá tập mục thường xuyên Các nghiên cứu khai phá tập mục thường xuyên vào tim thuật toán đề xuất giải pháp nâng cao hiệu thuật toán có Phần trình bày khái quát kỹ thuật để khai phá tập mục thường