1. Trang chủ
  2. » Luận Văn - Báo Cáo

Khai phá tập mục thường xuyên đóng trong cơ sở dữ liệu và ứng dụng

79 11 0

Đ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

Thông tin cơ bản

Định dạng
Số trang 79
Dung lượng 1,56 MB

Nội dung

i ĐẠI HỌC THÁI NGUYÊN TRƢỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG -  LÊ THỊ TUYẾT NHUNG Tên đề tài: KHAI PHÁ TẬP MỤC THƢỜNG XUYÊN ĐÓNG TRONG CƠ SỞ DỮ LIỆU VÀ ỨNG DỤNG Chuyên ngà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 Hƣớng dẫn khoa học: TS NGUYỄN HUY ĐỨC Số hóa Trung tâm Học liệu http://lrc.tnu.edu.vn/ ii Thái Ngun - 2013 LỜI CẢM ƠN Trước hết em xin gửi lời cảm ơn đến TS Nguyễn Huy Đức, người thầy hướng dẫn em nhiều suốt trình tìm hiểu, nghiên cứu hoàn thành luận văn tốt nghiệp từ lý thuyết đến ứng dụng Sự hướng dẫn thầy giúp em có thêm hiểu biết khai phá liệu ứng dụng Đồng thời em xin chân thành cảm ơn thầy cô trường thầy cô Viện Khoa học cơng nghệ Việt Nam tận tình giảng dạy, trang bị cho em kiến thức cần thiết để em hồn thành tốt luận văn Em xin gửi lời cảm ơn đến gia đình, bạn bè tạo điều kiện thuận lợi để em xây dựng thành cơng luận văn Thái Nguyên, tháng 06 năm 2013 Học viên Lê Thị Tuyết Nhung Số hóa Trung tâm Học liệu http://lrc.tnu.edu.vn/ iii LỜI CAM ĐOAN Tôi xin cam đoan đề tài “Khai phá tập mục thường xuyên đóng sở liệu ứng dụng ” cơng trình nghiên cứu thân Các số liệu kết nghiên cứu nêu luận văn trung thực, tác giả cho phép sử dụng tài liệu tham khảo trình bày luận văn Tôi xin chịu trách nhiệm luận văn Số hóa Trung tâm Học liệu http://lrc.tnu.edu.vn/ iv MỤC LỤC Lời cảm ơn i Lời cam đoan ii MỤC LỤC iii DANH MỤC CÁC KÝ HIỆU VÀ CÁC CHỮ VIẾT TẮT v DANH MỤC CÁC BẢNG vi DANH MỤC HÌNH VẼ vii MỞ ĐẦU Chƣơng 1: Tổng quan khai phá liệu khai phá tập mục thƣờng xuyên 1.1 Khái niệm khai phá tri thức khai phá liệu 1.2 Kiến trúc hệ thống khai phá liệu 1.3 Quá trình khai phá liệu 1.4 Một số kỹ thuật khai phá liệu 1.4.1 Phân lớp dự đoán (Classification & Prediction) 1.4.2 Luật kết hợp (Association Rules) 11 1.4.3 Khai thác mẫu (Sequential/ Temporal patterns) 11 1.4.4 Phân nhóm - đoạn (Clustering/ Segmentation) 11 1.4.5 Hồi quy (Regression) 12 1.4.6 Tổng hợp hóa (Summarization) 12 1.4.7 Mơ hình hóa phụ thuộc (dependency modeling) 12 1.4.8 Phát biến đổi độ lệch (Change and deviation detection) 13 1.5 Các sở liệu phục vụ cho khai phá liệu 13 1.6 Một số ứng dụng khai phá liệu 14 1.7 Khai phá luật kết hợp 14 1.7.1 Bài toán phát luật kết hợp 14 1.7.2 Các khái niệm 15 1.7.3 Các cách tiếp cận khai phá tập mục thường xuyên 18 1.7.4 Một số thuật toán điển hình tìm tập mục thường xun 19 Số hóa Trung tâm Học liệu http://lrc.tnu.edu.vn/ v 1.7.4.1 Thuật tốn Apriori (Phương pháp sinh ứng viên) 19 1.7.4.2 Thuật toán FP-Growth 23 1.8 Kết luận chương 31 Chƣơng 2: Khai phá tập mục thƣờng xuyên đóng sở liệu 32 2.1 Cơ sở toán học tập mục thường xuyên đóng 32 2.1.1 Ánh xạ đóng 32 2.1.2 Tập đóng 32 2.1.3 Kết nối Galois 32 2.1.4 Bao đóng tập mục liệu 33 2.2 Khái niệm, tính chất tập mục thường xun đóng 34 2.3 Một số thuật tốn điển hình khai phá tập mục thường xun đóng 35 2.3.1 Thuật tốn CHARM (Phương pháp dựa IT-Tree) 35 2.3.1.1 Giới thiệu thuật toán CHARM 35 2.3.1.2 Cây tìm kiếm lớp tương đương 35 2.3.1.3 Các tính chất cặp tập mục – tập định danh 36 2.3.1.4 Thiết kế thuật toán 37 2.3.2 Thuật toán Closet + 41 2.4 Kết luận chương 45 Chƣơng 3: Chƣơng trình thực nghiệm ứng dụng lĩnh vực y tế 46 3.1 Bài toán phát luật kết hợp liệu y tế 46 3.2 Xây dựng chương trình 50 3.3 Kết thực nghiệm 57 3.4 Nhận xét 58 KẾT LUẬN 59 TÀI LIỆU THAM KHẢO 60 PHỤ LỤC 62 Soá hóa Trung tâm Học liệu http://lrc.tnu.edu.vn/ vi DANH MỤC CÁC KÝ HIỆU VÀ CÁC CHỮ VIẾT TẮT Ký hiệu Diễn giải Ck Tập k tập mục ứng viên BFS Breadth First Search CSDL Cơ sở liệu CHARM Closed Asociation RuleMning DB Cơ sở liệu giao tác DFS Depth First Search FP -growth Frequent -Pattern Growth FP -tree Frequent pattern tree IT-tree Itemset-Tidset tree I Tập mục liệu k-itemset Tập mục gồm k mục KPDL Khai phá liệu Minsup Ngưỡng hỗ trợ tối thiểu Lk Tập k-tập mục thường xuyên Supp Độ hỗ trợ (support) TID Định danh giao tác T Giao tác (transaction) DL Dữ liệu TX Thường xuyên TTHN Tình trạng nhân Số hóa Trung tâm Học liệu http://lrc.tnu.edu.vn/ vii DANH MỤC CÁC BẢNG Bảng 1.1 Cơ sở liệu giao tác minh họa thực thuật toán Apriori Bảng 1.2: CSDL giao tác minh họa cho thuật toán FP-Growth Bảng 2.1: a) CSDL giao tác biểu diễn ngang b) CSDL giao tác biểu diễn dọc Bảng 3.1 : Dữ liệu bệnh hen suyễn Bảng 3.2: Lựa chọn thuộc tính Bảng 3.3: Thuộc tính “Tuổi” sau phân hoạch Bảng 3.4: Dữ liệu tìm kiếm sau thực phân loại liệu Bảng 3.5: Chuyển đổi liệu Bảng 3.6: Dữ liệu cho khai phá Số hóa Trung tâm Học liệu http://lrc.tnu.edu.vn/ viii DANH MỤC HÌNH VẼ Hình 1.1: Kiến trúc hệ thống khai phá liệu Hình 1.2: Quá trình khám phá tri thức Hình 1.3: Quá trình khai phá liệu Hình 1.4: Cây FP-tree xây dựng dần thêm giao tác t1 ÷ t6 Hình 1.5: Cây FP-tree CSDL DB bảng 1.5 Hình 2.1: Kết nối Galois Hình 2.2: Cây IT-tree dùng Tidset với minSup =3 Hình 2.3: Cây IT-tree tìm tập mục thường xun đóng thỏa mãn ngưỡng minsup = 50% Hình 2.4: Áp dụng tính chất tập thường xun đóng Hình 2.5: Minh họa xây dựng kết Hình 3.1: Mơ hình khai phá cho liệu y tế Hình 3.2: Giao diện chứa liệu gốc Hình 3.3: Hiển thị liệu chuyển đổi Hình 3.4: Giao diện thêm ghi Số hóa Trung tâm Học liệu http://lrc.tnu.edu.vn/ MỞ ĐẦU Khai phá liệu (Data Mining), nhiều người ý Nó thực đem lại lợi ích đáng kể việc cung cấp thông tin tiềm ẩn sở liệu lớn, giúp người sử dụng thu tri thức hữu ích từ sở liệu kho liệu khổng lồ khác Những “tri thức” chiết xuất từ nguồn sở liệu phục vụ yêu cầu trợ giúp định ngày có ý nghĩa quan trọng nhu cầu to lớn lĩnh vực hoạt động kinh doanh, quản lý Tiến hành cơng việc thực trình phát triển tri thức sở liệu (Knowledge Discovery in Database) mà kỹ thuật khai phá liệu (Data Mining) cho phép phát tri thức tiềm ẩn Một nội dung khai phá liệu khai phá luật kết hợp Khai phá luật kết hợp gồm hai bước: Bước thứ nhất, tìm tất tập mục thường xun, địi hỏi tính tốn lớn Bước thứ hai, dựa vào tập mục thường xun tìm luật kết hợp, địi hỏi tính tốn hơn, song gặp phải vấn đề sinh nhiều luật, vượt khỏi kiểm sốt người khai phá người dùng, có nhiều luật khơng cần thiết Để giải vấn đề đó, bước thứ nhất, khơng cần thiết khai phá tất tập mục thường xuyên mà cần khai phá tập mục thường xuyên đóng Khai phá luật kết hợp dựa tập mục thường xuyên đóng cho hiệu cao hơn, đảm bảo khơng tìm tập mục thường xun khơng cần thiết, không sinh luật dư thừa Với ý nghĩa mục đích tìm hiểu tốn tìm tập mục thường xuyên sở liệu lớn, em định lựa chọn đề tài “Khai phá tập mục thường xuyên đóng sở liệu ứng dụng” Nội dung luận văn gồm chương: Chương 1: Tổng quan khai phá liệu khai phá tập mục thường xuyên Chương 2: Khai phá tập mục thường xuyên đóng sở liệu Chương 3: Chương trình thực nghiệm ứng dụng lĩnh vực y tế Số hóa Trung tâm Học liệu http://lrc.tnu.edu.vn/ CHƢƠNG 1: TỔNG QUAN VỀ KHAI PHÁ DỮ LIỆU VÀ KHAI PHÁ TẬP MỤC THƢỜNG XUYÊN 1.1 Khái niệm khai phá tri thức khai phá liệu "Khám phá tri thức trình tìm tri thức, mẫu tìm ẩn, trước chưa biết thơng tin hữu ích đáng tin cậy" Còn khai phá liệu (KPDL) bước quan trọng trình khám phá tri thức, sử dụng thuật toán KPDL chuyên dùng với số qui định hiệu tính tốn chấp nhận để chiết xuất mẫu mô hình có ích liệu Nói cách khác, mục đích khám phá tri thức KPDL tìm mẫu mơ hình tồn sở liệu (CSDL) bị che khuất hàng núi liệu Khám phá tri thức từ CSDL trình sử dụng phương pháp công cụ tin học, người trung tâm q trình Do đó, người cần phải có kiến thức lĩnh vực cần khám phá để chọn tập liệu tốt, từ phát mẫu phù hợp với mục tiêu đề Đó tri thức, rút từ CSDL, thường để phục vụ cho việc giải loạt nhiệm vụ định lĩnh vực định Tuy vậy, q trình khám phá tri thức mang tính chất hướng nhiệm vụ khơng phải tri thức tìm áp dụng vào thực tế Để có thơng tin q báu phải tìm mẫu có tập CSDL trước Việc đánh giá mẫu tìm thấy điều thú yếu có tính chất định đến sử dụng hay không sử dụng chúng Đầu chương trình khám phá mẫu có ích gọi tri thức Tri thức khám phá có đặc điểm chính: - Kiến thức cao cấp: Ngày có nhiều câu hỏi mang tính chất định tính cần phải trả lời dựa khối lượng liệu khổng lồ có Quá trình để tìm kiến thức khơng phải từ phương pháp thống kê cổ điển mà mà được đúc kết từ kinh nghiệm có, thể liệu, kết lĩnh hội Số hóa Trung tâm Học liệu http://lrc.tnu.edu.vn/ 57 ITNode: Đại diện cho node IT-Tree, chứa thơng tin Itemset, Tidset, node cha node ITSearchTree: Lớp sử dụng thiết lập ITNode IT-Tree TransactionDatabase: Chứa phương thức đọc liệu đầu vào từ tập tin dạng text, chuyển đổi liệu thành dạng dọc (cấu trúc có dạng Itemset x Danh_sach_transaction) Số hóa Trung tâm Học liệu http://lrc.tnu.edu.vn/ 58 HashTable: Kiểm tra lưu trữ tập mục thường xuyên đóng tìm tránh trường hợp lưu trùng AlgoCharm: Lớp chương trình, gọi đến lớp để xử lý Lớp chứa toàn cấu trúc thuật tốn Số hóa Trung tâm Học liệu http://lrc.tnu.edu.vn/ 59  Hƣớng dẫn chạy chƣơng trình Dữ liệu đầu vào có dạng bảng sở liệu có cấu trúc bao gồm: bảng - Bảng 1: Lưu trữ liệu bệnh nhân, cột đại diện cho thuộc tính số dịng đại diện cho bệnh nhân - Bảng 2: Chứa liệu dạng số 0, mã hóa từ bảng Tên thuộc tính tách từ phân hoạch thuộc tính bảng Chạy tệp chương trình CharmAlgorithm.exe, giao diện chương trình sau: Hình 3.2: Giao diện chứa liệu gốc Giao diện chia làm phần: Phần - Thực thuật toán: Đây phần chương trình Phần - Chỉnh sửa liệu Phần - Giới thiệu khái quát thuật toán CHARM Số hóa Trung tâm Học liệu http://lrc.tnu.edu.vn/ 60 Để sinh tập mục thường xuyên đóng danh sách luật kết hợp, chọn ngưỡng hỗ trợ minsup, ngưỡng tin cậy minconf sau nhấn nút “THỰC HIỆN” Chúng ta xem bảng liệu đầu vào dạng bảng gốc bảng liệu chuyển đổi mục “TÙY CHỌN HIỂN THỊ BẢNG DỮ LIỆU” Hình 3.3: Hiển thị liệu chuyển đổi Để chỉnh sửa liệu lựa chọn mục “CHỈNH SỬA DỮ LIỆU” Giao diện sau: Số hóa Trung tâm Học liệu http://lrc.tnu.edu.vn/ 61 Hình 3.4: Giao diện thêm ghi Nhấn nút “THỰC HIỆN” để nạp sở liệu vào GridView Để thêm ghi ấn vào nút “THÊM MỚI”, cửa sổ nhập liệu cho phép ta nhập thêm ghi Để chỉnh sửa ghi ta chọn vào dòng GridView ấn nút “SỬA ĐỔI” Để xóa ghi, ta chọn ghi muốn xóa ấn vào nút “XĨA” 3.3 Kết thực nghiệm Thực khai phá sở liệu bệnh hen suyễn Bệnh viện C – Thái Nguyên với minsup = 0.6 minconf = 0.3 cho kết quả: - Danh sách tập mục thường xuyên đóng: {BHS2,Test1}, {S1,TN1,Test1}, {KT1, BMbbh1, Test1}, {T2, TN1, Test1}, {H1, TN1, Test1}, {H1, Test1},… - Danh sách luật kết hợp: TN1, Test1  S1 Test1  S1, TN1 Số hóa Trung tâm Học liệu http://lrc.tnu.edu.vn/ 62 BMbbh1, Test1  KT1 Test1 KT1, BMbbh1 TN1, Test1  T2 … Giải thích kết khai phá: Để hiểu ý nghĩa tập mục thường xuyên luật kết hợp tìm được, ta cần tra mã thuộc tính quay lại tên thuộc tính, ý nghĩa thuộc tính Ví dụ: - Tập mục thường xun đóng: {S1,TN1,Test1} với minsup = 0.6 có nghĩa là: triệu chứng bệnh Sốt, Tức ngực Test da dương tính xuất 60% trường hợp bệnh - Luật kết hợp: TN1, Test1  S1 với minsup = 0.6 minconf = 0.3 có nghĩa là: triệu chứng bệnh Sốt, Tức ngực, Test da dương tính xuất 60% trường hợp bệnh, 30% bệnh nhân có triệu chứng Tức ngực Test da dương tính có triệu chứng Sốt Các kết khai phá hữu ích cho nhà quản lý bác sĩ tham khảo trình chẩn đoán điều trị bệnh 3.4 Nhận xét Qua kết thực nghiệm thuật toán cho thấy: Khi khai phá tệp liệu với ngưỡng độ hỗ trợ ngưỡng độ tin cậy xác định số lượng tập mục thường xuyên đóng nhỏ nhiều so với số tập mục thường xuyên, từ dẫn đến luật kết hợp sinh dư thừa Khi thay đổi ngưỡng độ hỗ trợ, ngưỡng độ tin cậy số lượng tập mục thường xuyên đóng luật thay đổi (tỉ lệ nghịch) Khai phá tập liệu lớn với ngưỡng độ hỗ trợ nhỏ thuật tốn CHARM thể rõ tính hiệu Số hóa Trung tâm Học liệu http://lrc.tnu.edu.vn/ 63 KẾT LUẬN Kết đạt đƣợc luận văn Luận văn nghiên cứu toán quan trọng khai phá liệu tốn tìm tập mục thường xun đóng Từ tốn giới thiệu có nhiều thuật tốn nhiều nhóm nghiên cứu giới đề xuất Vì cần phải lựa chọn nghiên cứu thuật toán hiệu cách sâu sắc để góp phần hệ thống lại kiến thức lĩnh vực khám phá tri thức khai phá liệu Mục tiêu luận văn muốn giúp cho người nghiên cứu tiếp cận nhanh kiến thức cập nhật giới lĩnh vực Luận văn khái quát vấn đề khai phá liệu tập mục thường xun đóng, trình bày khái niệm cách tiếp cận để khai phá tập mục thường xun đóng Đồng thời trình bày chi tiết hai thuật tốn điển hình tìm tập mục thường xun đóng: Thuật tốn CHARM CLOSET+ Khái niệm ánh xạ đóng, tập đóng bao đóng tập mục liệu trình bày chi tiết để làm sở cho khai phá tập mục thường xuyên đóng Luận văn trình bày rõ cấu trúc tìm kiếm IT-tree, FP-tree cấu trúc liệu sử dụng thuật toán CHARM CLOSET+ bước thực thuật toán Đề tài làm sáng tỏ qua thực nghiệm cài đặt thuật toán CHARM ứng dụng cho khai phá liệu y tế, kết khai phá cho thấy số lượng tập mục thường xuyên đóng nhỏ nhiều so với số tập mục thường xuyên số luật kết hợp sinh dư thừa Hƣớng nghiên cứu Trên sở nghiên cứu trình bày luận văn, tiếp tục nghiên cứu sâu thuật toán khai phá tập mục thường xuyên, tìm cách cải tiến nhằm nâng cao hiệu thuật toán để áp dụng vào số toán khai phá liệu đặt như: Quy luật thị trường, chứng khoán bất động sản, Dự đốn rủi ro tín dụng, Định hướng kinh doanh,… Số hóa Trung tâm Học liệu http://lrc.tnu.edu.vn/ 64 TÀI LIỆU THAM KHẢO Tiếng Việt [1] Hoàng Kiếm, Lương Hán Cơ (2004), “Các vấn đề liên quan tốn tìm tập phổ biến đóng”, Hội Thảo Quôc gia lần thứ VII: Một số vấn đề chọn lọc Công nghệ thông tin truyền thông, Đà Nẵng [2] Hoàng Kiếm, Lương Hán Cơ (2004), “Sử dụng tập phổ biến đóng tốn tìm luật kết hợp”, Hội nghị Khoa học Trường Đại học Khoa học tự nhiên TP Hồ Chí Minh lần thứ [3] Hồng Kiếm, Đỗ Phúc (2001), “Phát triển thuật tốn tìm tập phổ biến sở liệu”, Hội thảo Quốc gia lần thứ IV: Một số vấn đề chọn lọc Cơng nghệ thơng tin, Hải Phịng Tiếng Anh [4] R Agrawal, T Imielinski, and A Swami (1993), "Mining association rules between sets of items in large databases", In FroG 1993 ACM-SIGMOD Int Con! Management of Data, pages 207-216, Washington, D.C [5] J Pei, J Han, R Mao (2000), "CLOSET: An Efficient Algorithm for Mining Frequent Closed Itemsets", In DMKD '00 [6] J.Wang, J Han, Pei (2003), "CLOSET+: Searching for the Best Strategies for Mining Frequent Closed Itemsets", In ACM SIGKDD Int'l Conf On Knowledge Discovery and Data Mining [7] M.J Zaki ,C Hsiao (2002), "CHARM: An Efficient Algorithm, for Closed Itemset Mining", In SDM '02 [8] Han J and Kamber M (2002), Data Mining: Concepts and Techniques, University of Illinois, Morgan Kaufmann Publishers, [9] B Goethals, MJ Zaki (2003), "FIMI'03: Workshop on Frequent Itemset Mining Implementations", ICDM'03 Số hóa Trung tâm Học liệu http://lrc.tnu.edu.vn/ 65 [10] J Han, J Pei, Y Yin (2000), "Mining frequent patterns without candidate generation", In Proc 2000 ACM-SIGMOD Int Conf Management of Data (SIGMOD' 00), pages 1-12, Dallas [11] S Kotsiantis, D Kanellopoulos (2006), “Association Rules Mining: A Recent Overview”, GESTS International Transactions on Computer Science and Engineering, Vol 32, No 1, pp 71-82 [12] A.Tiwari, R.K Gupta and D.P Agrawal (2010) " A Survey on Frequent Pattern Mining: Current Status and Challenging Issues", Information Technology Journal 9(7), 1278-1293 Asian Network for Scientific Infomation [13] Apte C., Liu B.&Smyth P., (2004), “Business Applications of Data Mining” [14] Abdullah Saad Almalaise Alghamdi, (2011), “Efficient Implementation of FP Growth Algorithm-Data Mining on Medical Data”, IJCSNS International Journal of Computer Science and Network Security, VOL.11 No.12, December 2011 [15] http://www.reaserch.ibm.com/dar/papers/pdf/Business_application_of_dm.pdf Số hóa Trung tâm Học liệu http://lrc.tnu.edu.vn/ 66 PHỤ LỤC using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace CharmAlgorithm { public class Charm { private long startTimestamp; private long endTimestamp; private int minsupRelative; Dictionary mapItemTIDS = new Dictionary(); int tidcount; BufferedWriter writer = null; private int itemsetCount; private Hashtable hash; public void runAlgorithm(String input, String output, double minsup, int hashTableSize) throws IOException { this.hash = new Hashtable(hashTableSize); this.itemsetCount = 0; this.startTimestamp = System.currentTimeMillis(); this.writer = new BufferedWriter(new FileWriter(output)); this.mapItemTIDS = new HashMap(); BufferedReader reader = new BufferedReader(new FileReader(input)); this.tidcount = 0; String line; while ((line = reader.readLine()) != null) { String line; if ((!line.isEmpty()) && (line.charAt(0) != '#') && (line.charAt(0) != '%') && (line.charAt(0) != '@')) { String[] lineSplited = line.split(" "); for (String stringItem : lineSplited) Số hóa Trung tâm Học liệu http://lrc.tnu.edu.vn/ 67 { int item = Integer.parseInt(stringItem); BitSet tids = (BitSet)this.mapItemTIDS.get(Integer.valueOf(item)); if (tids == null) { tids = new BitSet(); this.mapItemTIDS.put(Integer.valueOf(item), tids); } tids.set(this.tidcount); } this.tidcount += 1; } } reader.close(); this.minsupRelative = ((int)Math.ceil(minsup * this.tidcount)); ITSearchTree tree = new ITSearchTree(); ITNode root = new ITNode(new HashSet()); tree.setRoot(root); root.setTidset(null, this.tidcount); for (Map.Entry entry : this.mapItemTIDS.entrySet()) { int entryCardinality = ((BitSet)entry.getValue()).cardinality(); if (entryCardinality >= this.minsupRelative) { Set itemset = new HashSet(); itemset.add((Integer)entry.getKey()); ITNode newNode = new ITNode(itemset); newNode.setTidset((BitSet)entry.getValue(), entryCardinality); newNode.setParent(root); root.getChildNodes().add(newNode); } } sortChildren(root); while (root.getChildNodes().size() > 0) { Số hóa Trung tâm Học liệu http://lrc.tnu.edu.vn/ 68 ITNode child = (ITNode)root.getChildNodes().get(0); extend(child); save(child); delete(child); } saveAllClosedItemsets(); this.endTimestamp = System.currentTimeMillis(); this.writer.close(); } private void saveAllClosedItemsets() throws IOException { for (List hashE : this.hash.table) { if (hashE != null) { for (Itemset itemsetObject : hashE) { this.writer.write(itemsetObject.toString() + " #SUP: " + itemsetObject.cardinality); this.writer.newLine(); this.itemsetCount += 1; } } } } private void extend(ITNode currNode) throws IOException { int i = 0; while (i < currNode.getParent().getChildNodes().size()) { ITNode brother = (ITNode)currNode.getParent().getChildNodes().get(i); if (brother != currNode) { if (currNode.getTidset().equals(brother.getTidset())) { replaceInSubtree(currNode, brother.getItemset()); Số hóa Trung tâm Học liệu http://lrc.tnu.edu.vn/ 69 delete(brother); } else if (containsAll(brother, currNode)) { replaceInSubtree(currNode, brother.getItemset()); i++; } else if (containsAll(currNode, brother)) { ITNode candidate = getCandidate(currNode, brother); delete(brother); if (candidate != null) { currNode.getChildNodes().add(candidate); candidate.setParent(currNode); } } else if (!currNode.getTidset().equals(brother.getTidset())) { ITNode candidate = getCandidate(currNode, brother); if (candidate != null) { currNode.getChildNodes().add(candidate); candidate.setParent(currNode); } i++; } else { i++; } } else i++; } sortChildren(currNode); while (currNode.getChildNodes().size() > 0) { ITNode child = (ITNode)currNode.getChildNodes().get(0); extend(child); save(child); delete(child); } Soá hóa Trung tâm Học liệu http://lrc.tnu.edu.vn/ 70 } private boolean containsAll(ITNode node1, ITNode node2) { BitSet newbitset = (BitSet)node2.getTidset().clone(); newbitset.and(node1.getTidset()); return newbitset.cardinality() == node2.size(); } private void replaceInSubtree(ITNode currNode, Set itemset) { Set union = new HashSet(itemset); union.addAll(currNode.getItemset()); currNode.setItemset(union); currNode.replaceInChildren(union); } private ITNode getCandidate(ITNode currNode, ITNode brother) { BitSet commonTids = (BitSet)currNode.getTidset().clone(); commonTids.and(brother.getTidset()); int cardinality = commonTids.cardinality(); if (cardinality >= this.minsupRelative) { Set union = new HashSet(brother.getItemset()); union.addAll(currNode.getItemset()); ITNode node = new ITNode(union); node.setTidset(commonTids, cardinality); return node; } return null; } private void delete(ITNode child) { child.getParent().getChildNodes().remove(child); } Soá hóa Trung tâm Học liệu http://lrc.tnu.edu.vn/ 71 private void save(ITNode node) throws IOException { if (!this.hash.containsSupersetOf(node.itemsetObject)) { this.hash.put(node.itemsetObject); } } private void sortChildren(ITNode node) { Collections.sort(node.getChildNodes(), new Comparator() { public int compare(ITNode o1, ITNode o2) { return o1.getTidset().size() - o2.getTidset().size(); } }); } public void printStats() { System.out.println("============= CHARM - STATS ============="); long temps = this.endTimestamp - this.startTimestamp; System.out.println(" Transactions count from database : " + this.tidcount); System.out.println(" Frequent closed itemsets count : " + this.itemsetCount); System.out.println(" Total time ~ " + temps + " ms"); System.out println("==================================================="); } } } Số hóa Trung tâm Học liệu http://lrc.tnu.edu.vn/ ... tài ? ?Khai phá tập mục thường xuyên đóng sở liệu ứng dụng? ?? Nội dung luận văn gồm chương: Chương 1: Tổng quan khai phá liệu khai phá tập mục thường xuyên Chương 2: Khai phá tập mục thường xuyên đóng. .. 1.2: Tập tập mục thường xuyên tập mục thường xuyên Tức là: với A, B I, A B B tập mục thường xuyên A tập mục thường xun Tính chất 1.2 phát biểu lại sau: A B A tập mục khơng thường xun B tập mục. .. hai tốn nhỏ: Tìm tập mục ứng viên tìm tập mục thường xuyên Tập mục ứng viên tập mục mà ta hy vọng tập mục thường xuyên, phải tính độ hỗ trợ để kiểm tra Tập mục thường xuyên tập mục có độ hỗ trợ

Ngày đăng: 26/03/2021, 06:59

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w