MỤC LỤC Khóa luận môn học Khai phá dữ liệu MỤC LỤC 4TỔNG QUAN VỀ KHAI PHÁ DỮ LIỆU 41 Giới thiệu về khai phá dữ liệu 52 Lịch sử phát triển khai phá dữ liệu 63 Tại sao dùng khai phá dữ liệu 64 Quá trình.
MỤC LỤC TỔNG QUAN VỀ KHAI PHÁ DỮ LIỆU Giới thiệu khai phá liệu Lịch sử phát triển khai phá liệu .5 Tại dùng khai phá liệu .6 Quá trình khám phá tri thức từ sở liệu Khai phá liệu (data mining) Các kỹ thuật khai phá liệu .8 6.1 Phân cụm liệu: 6.2 Phương pháp hồi quy: 10 6.3 Khai phá luật kết hợp: 10 Các quy trình khai phá liệu 12 Các hệ thống khai phá liệu (data mining systems) 14 Ứng dụng khai phá liệu 16 KHAI PHÁ LUẬT KẾT HỢP .17 Tổng quan khai phá luật kết hợp 17 1.1 Quá trình khai phá luật kết hợp .17 1.2 Các khái niệm 17 1.3 Phân loại luật kết hợp 18 Biểu diễn luật luật kết hợp 19 Khám phá luật kết hợp dựa ràng buộc 20 TÌM HIỂU MỘT SỐ THUẬT TOÁN PHÁT HIỆN LUẬT KẾT HỢP 21 Thuật toán AIS 21 Thuật toán SETM .21 Thuật toán Apriori 22 3.1 Ý tưởng thuật toán Apriori 22 3.2 Thuật toán Apriori (Pseudo code) 23 3.3 Đặc điểm thuật toán Apriori 25 3.4 Các cải tiến thuật toán Apriori (Methods to Improve Apriori’s Efficiency) 25 Thuật toán FP-growth .26 4.1 Ý tưởng thuật toán 26 4.2 Giải thuật FP-growth .26 4.2.1 Xây dựng FP-tree 26 4.2.2 Khám phá frequent itemsets với FP-tree 27 4.3 Đặc điểm FP-growth .28 KHAI PHÁ LUẬT KẾT HỢP TRONG BÀI TOÁN KHÁM VÀ ĐIỀU TRỊ BỆNH NHÂN NGOẠI TRÚ TẠI PHÒNG KHÁM Y HỌC CỔ TRUYỀN BỆNH VIỆN BÀ RỊA TỈNH BÀ RỊA – VŨNG TÀU .30 Cài đặt chương trình: 30 Về kỹ thuật: 30 Giao diện chương trình: 30 Cơ sở liệu: 32 Giới thiệu source code chương trình: 35 5.1 Code project Apriori: .35 5.2 Code project Data Access: Source code truy xuất CSDL bệnh viện Bà Bịa (benhvienbr) 42 Hướng dẫn sử dụng: 44 KẾT LUẬN 47 TÀI LIỆU THAM KHẢO 48 Khóa luận môn học: Khai phá liệu Ký hiệu CSDL KPDL KDD CNTT DB FP-Growth FP-tree IT-tree I ICD YHCT Minsup Minconf TID TID_List T k-itemset Lk Ck Ck CÁC TỪ VIẾT TẮC Diễn giải Cơ sở liệu Khai phá liệu Knowledge Discovery and Data Mining Công nghệ thông tin Cơ sở liệu giao tác Frequent parttern tree Frequent pattern tree Itemset-Tidset tree Tập mục liệu Phân loại bệnh tật quốc tế (ICD-10) Y học cổ truyền Độ hỗ trợ tối thiểu Độ tin cậy tối thiểu Định danh giao tác Danh sách định danh giao tác Giao tác Một itemset có k items Tập phổ biến k-itemsets Tập ứng viên k-itemsets Tập ứng viên k-itemsets mà tập giao tác có chứa We are data rich, but information poor “Necessity is the mother of invention” - Plato Nguyễn Văn Quang - CH1101126 Khóa luận mơn học: Khai phá liệu LỜI NĨI ĐẦU Trong năm gần đây, phát triển mạnh mẽ công nghệ thông tin làm cho khả thu thập lưu trữ thông tin hệ thống thơng tin tăng nhanh cách nhanh chóng Bên cạnh đó, việc tin học hóa cách ạt nhanh chóng hoạt động sản xuất, kinh doanh nhiều lĩnh vực hoạt động khác tạo cho lượng liệu cần lưu trữ khổng lồ Hàng triệu sở liệu sử dụng hoạt động sản xuất, kinh doanh, y tế, giáo dục, quản lý , có nhiều sở liệu lớn cỡ Gigabyte, chí Terabyte Ý nghĩa vai trị khai phá liệu: công nghệ đại lĩnh vực quản lý thông tin, diện khắp nơi có tính ẫn nhiều khía cạnh đời sống ngày như: làm việc, mua sắm, tìm kiếm thơng tin, Được áp dụng nhiều ứng dụng thuộc nhiều lĩnh vực khác Hỗ trợ nhà khoa học, giáo dục học, kinh tế học, doanh nghiệp, khách hàng Ngày nay, khai phá liệu áp dụng cách rộng rãi nhiều lĩnh vực như: Trong kinh doanh (business); tài (finance) tiếp thị bán hàng (sales marketing); thương mại (commerce) ngân hàng (bank); bảo hiểm (insurance); khoa học (science) y sinh học (biomedicine); điều khiển (control) viễn thông (telecommunication), Rất nhiều tổ chức công ty lớn giới áp dụng kỹ thuật khai phá liệu vào hoạt động sản xuất kinh doanh thu lợi ích to lớn Trong nội dung tiểu luận này, xin trình bày khái qt tốn “Tìm hiểu số thuật tốn tìm luật kết hợp Ứng dụng thuật tốn Apriori vào chương trình tìm luật kết hợp tiềm ẫn CSDL khám điều trị bệnh nhân ngoại trú phòng khám y học cổ truyền bệnh viện Bà Rịa, tỉnh Bà Rịa – Vũng Tàu” mà tìm hiểu Vì thời gian có hạn nên khố luận mơn học tơi trình bày chi tiết phần quan trọng nhất, khó tiến trình Data Mining Tơi xin chân thành cảm ơn PGS TS Đỗ Phúc, giảng viên môn học “Khai phá liệu”, Thầy tận tâm truyền đạt kiến thức quý báu khai phá liệu, số ứng dụng, hướng nghiên cứu giới Tơi xin chân thành cảm ơn Bác sỹ chuyên khoa Huỳnh Công Trứ phịng khám Đơng y bệnh viện Bà Rịa hỗ trợ trình thực nghiệm khai phá liệu phịng khám.Tơi xin chân thành cảm ơn ban cố vấn học tập ban quản trị Chương trình đào tạo thạc sĩ Công nghệ trường Đại Học Công nghệ Thông tin – Đại học Quốc Gia thành phố Hồ Chí Minh tạo điều kiện tài liệu học tập tham khảo Nguyễn Văn Quang - CH1101126 Khóa luận mơn học: Khai phá liệu CHƯƠNG TỔNG QUAN VỀ KHAI PHÁ DỮ LIỆU Giới thiệu khai phá liệu Sự phát triển nhanh chóng ứng dụng cơng nghệ thơng tin Internet vào nhiều lĩnh vực đời sống xã hội, quản lý kinh tế, y học, khoa học kỹ thuật, tạo nhiều sở liệu khổng lồ, đơn cử vài ví dụ tiêu biểu CSDL siêu thị Walmart (Mỹ) chứa 20 triệu giao tác bán hàng; CSDL nhân Tp HCM với 7,5 triệu nhân Để khai phá hiệu nguồn thông tin từ CSDL lớn hỗ trợ tiến trình định, bên cạnh khai thác thông tin truyền thống, nhà nghiên cứu phát triển phương pháp, kỹ thuật phần mềm hỗ trợ tiến trình khám phá, phân tích tổng hợp thơng tin Theo đánh giá IBM, phương pháp khai phá thông tin truyền thống thu khoảng 80% thông tin từ CSDL, phần cịn lại gồm thơng tin mang tính khái qt, thơng tin có tính quy luật cịn tiềm ẩn liệu Lượng thơng tin nhỏ thông tin cốt lõi cần thiết cho tiến trình định Khai phá liệu tiến trình khám phá tri thức tiềm ẩn CSDL Cụ thể hơn, tiến trình trích lọc, sản sinh tri thức mẫu tiềm ẩn, chưa biết hữu ích từ CSDL lớn Khai phá liệu tiến trình khái quát kiện rời rạc liệu thành tri thức mang tính khái quát, tính quy luật hỗ trợ tích cực cho tiến trình định Nguồn liệu phục vụ cho khai phá liệu CSDL lớn hay kho liệu có cấu trúc khơng có cấu trúc KPDL thực phát huy tác dụng CSDL lớn, nơi mà có khả diễn dịch trực giác người kỹ thuật truyền thống thực nỗi thực hiệu khơng cao Có thể chia khai phá liệu thành hai dạng chính: khai phá liệu (KPDL) theo hướng kiểm tra KPDL theo hướng khám phá Trong khai phá liệu theo hướng kiểm tra, người dùng đề xuất giả thiết, hệ thống kiểm tra tính đắng giả thiết; KPDL theo hướng kiểm tra bao gồm: truy vấn, báo cáo, phân tích đa chiều, phân tích thống kê,… Ngược lại, KPDL theo hướng khám phá tìm kiếm tri thức tiềm ẩn CSDL cách tiến hành xem xét tất giả thiết Do khơng gian tìm kiếm lớn, nên nhiều heuristic đề xuất nhằm nâng cao hiệu suất giải thuật tìm kiếm Ngày nay, công thu thập liệu tự động công nghệ lưu trữ liệu ngày hoàn thiện giúp người tạo lập quản lý lượng liệu khổng lồ CSDL, kho liệu (data Warehouse) nhu cầu nắm bắt liệu, trích rút thơng tin trở thành cấp thiết có ý nghĩa Mặt khác, với nhu cầu ngày cao hơn, người khơng lịng với liệu đơn giản thu từ kỹ thuật trước Từ nhu cầu kiện rời rạc lĩnh vực ứng dụng, phát sinh nhu cầu nắm bắt tri thức mối quan hệ Nguyễn Văn Quang - CH1101126 Khóa luận mơn học: Khai phá liệu chúng, xa phát quy luật lĩnh vực KPDL đời nhằm đáp ứng nhu cầu cấp thiết Lịch sử phát triển khai phá liệu Chúng ta điểm qua lịch sử phát triển kỹ thuật, công nghệ lưu trữ khai phá liệu sau: - Những năm 1960: xuất CSDL theo mơ hình mạng mơ hình phân cấp - Những năm 1970: thiết lập tảng lý thuyết cho CSDL quan hệ, hệ quản trị CSDL quan hệ - Những năm 1980: hoàn thiện lý thuyết CSDL quan hệ hệ quản trị CSDL quan hệ, xuất hệ quản trị CSDL cao cấp (hướng đối tượng, suy diễn, ) hệ quản trị CSDL hướng ứng dụng lĩnh vực không gian, khoa học, công nghiệp, nông nghiệp, địa lý, - Những năm 1990-2000: phát triển khai phá liệu kho liệu, CSDL đa phương tiện, CSDL Web Khai phá liệu cơng đoạn tiến trình lớn khám phá tri thức từ CSDL KPDL mang tính trực giác, cho phép thu hiểu biết rõ ràng sâu sắc hơn, vượt xa kho liệu, đồng thời giúp phát xu phát triển từ thông tin khứ, cho phép đề xuất dự báo mang tính thống kê, gom cụm phân loại liệu Kho liệu điễn hình doanh nghiệp cho phép người dùng hỏi trả lời câu hỏi “Doanh số bán theo khu vực, theo nhân viên bán hàng quý III năm 2012 ?” Trong đó, KPDL cho phép người định kinh doanh trả lời cho câu hỏi “Ai khách hàng yếu cơng ty mặt hàng cụ thể” “Dòng sản phẩm bán khu vực mua chúng, dựa vào việc bán sản phẩm tương tự khu vực đó” Vị trí KPDL thể qua sơ đồ (xem hình 1) Hình 1: Vị trí khai phá liệu Nguyễn Văn Quang - CH1101126 Khóa luận mơn học: Khai phá liệu Tại dùng khai phá liệu Khai phá liệu cần thiết người dùng lý sau: - Ngày có nhiều liệu lưu trữ CSDL, kho liệu hình thành “mỏ vàng liệu” chứa đầy thông tin chiến lược mà hệ quản trị CSDL thông thường phát quản trị chúng - CSDL phát triển nhanh kích thước lẫn số lượng, không xét thông tin mang tính kiện lưu trữ CSDL, thơng tin suy diễn từ thú vị Tuy nhiên với quan hệ có số lượng khổng lồ ghi (record) có nhiều trường (feild), việc duyệt hàng triệu bảng ghi hay hàng trăm trường tin để tìm mẫu quy luật thách thức trở ngại thật nhà phân tích liệu - Không phải người nhà thống kê hay nhà phân tích liệu chuyên nghiệp - Sử dụng trường hợp tìm kiếm chưa xác lập rõ chưa mơ tả điều kiện tìm kiếm Nếu người dùng biết họ tìm kiếm dùngSQL, người dùng có ý tưởng khơng rõ ràng, cảm nhận họ nên dùng khai phá liệu Khai phá liệu công cụ hiệu lĩnh vực: - Sử dụng liệu để xây dựng mơ hình dự báo: o Khả dự báo tiềm ẩn liệu o Gợi ý chiều nhóm liệu có khả chứa tri thức hữu ích - Tóm tắc báo cáo rõ ràng: o Tự động tìm phân đoạn liệu o Tìm phân đoạn mà nhà phân tích chưa biết có hiểu biết chưa tường tận - Cung cấp chế hỗ trợ định: o Dự báo o Mơ hình hóa Q trình khám phá tri thức từ sở liệu Quá trình khám phá tri thức chuỗi lặp chia thành bước sau: - Làm liệu (data cleaning): loại bỏ nhiễu liệu khơng cần thiết - Tích hợp liệu (data integration): trình hợp liệu thành kho liệu (data warehouses & data marts) sau làm tiền xử lý (data cleaning & preprocessing) - Chọn lựa liệu (data selection): trích chọn liệu từ kho liệu sau chuyển đổi dạng thích hợp cho q trình khai thác tri thức Quá trình bao gồm việc xử lý với liệu nhiễu (noisy data), liệu không đầy đủ (incomplete data), v.v Nguyễn Văn Quang - CH1101126 Khóa luận mơn học: Khai phá liệu - Chuyển đổi liệu (data transformation): liệu chuyển đổi sang dạng phù hợp cho trình xử lý - Khai phá liệu (data mining): bước quan trọng nhất, sử dụng phương pháp thông minh để chắt lọc mẫu liệu - Đánh giá mẫu (pattern evaluation): trình đánh giá kết tìm thơng qua độ đo - Biểu diễn tri thức (Knowledge presentation): trình sử dụng kỹ thuật để biểu diễn thể trực quan cho người dùng (xem hình 2) Hình Quá trình khai phá liệu Khai phá liệu (data mining) Khai phá liệu trình trích xuất tri thức từ lượng lớn liệu Một q trình khơng dễ trích xuất thơng tin ẩn, hữu ích, chưa biết trước từ liệu Các thuật ngữ thường dùng: knowledge discovery/mining in data/databases (KDD), knowledge extraction, data/pattern analysis, data archeology, data dredging, information harvesting, business intelligence Lượng lớn liệu sẵn có để khai phá: loại liệu lưu trữ hay tạm thời, có cấu trúc hay bán cấu trúc hay phi cấu trúc Dữ liệu lưu trữ gồm: tập tin truyền thống (flat files); sở liệu quan hệ (relational databases) hay quan hệ đối tượng (object relational databases); sở liệu giao tác (transactional databases) hay kho liệu (data warehouses); sở liệu hướng ứng dụng như: sở liệu không gian (spatial databases), sở liệu thời gian (temporal databases), sở liệu không thời gian (spatio-temporal databases), sở liệu chuỗi thời gian Nguyễn Văn Quang - CH1101126 Khóa luận mơn học: Khai phá liệu (time series databases), sở liệu văn (text databases), sở liệu đa phương tiện (multimedia databases); kho thông tin: the World Wide Web Tri thức đạt từ trình khai phá: mô tả lớp haykhái niệm; mẫu thường xuyên, mối quan hệ kết hợp hay tương quan; mơ hình phân loại dự đốn; mơ hình gom cụm; phần tử biên Xu hướng hay mức độ thường xuyên đối tượng có hành vi thay đổi theo thời gian Tri thức đạt có: tính mơ tả hay dự đốn tùy thuộc vào q trình khai phá cụ thể; cấu trúc, bán cấu trúc, phi cấu trúc; hay khơng người dùng quan tâm cho kết độ đo đánh giá tri thức đạt được; dùng việc hỗ trợ định, điều khiển quy trình, quản lý thông tin, xử lý truy vấn, Khai phá liệu lĩnh vực liên ngành, nơi hội tụ nhiều học thuyết công nghệ Khai phá liệu công nghệ sở liệu: - Khả đóng góp cơng nghệ sở liệu là: công nghệ sở liệu cho việc quản lý liệu khai phá Các hệ sở liệu có khả xử lý hiệu lượng lớn liệu với chế phân trang (paging) hoán chuyển (swapping) liệu vào hay nhớ Các hệ sở liệu đại có khả xử lý nhiều loại liệu phức tạp (spatial, temporal, spatiotemporal, multimedia, text, Web, …) Các chức khác (xử lý đồng thời, bảo mật, hiệu năng, tối ưu hóa, …) hệ sở liệu phát triển tốt - Thực trạng đóng góp cơng nghệ sở liệu là: hệ quản trị sở liệu (DBMS) hỗ trợ khai phá liệu như: Oracle Data Mining (Oracle 9i, 10g, 11g, 11gR2), công cụ khai phá liệu Microsoft (MS SQL Server 2000, 2005, 2008, 2012), Intelligent Miner (IBM) Các hệ sở liệu qui nạp (inductive database) hỗ trợ khám phá tri thức Chuẩn SQL/MM 6: Data Mining ISO/IEC 13249 - 6:2006 hỗ trợ khai phá liệu Đặc tả giao diện SQL cho ứng dụng dịch vụ khai phá liệu từ sở liệu quan hệ Các kỹ thuật khai phá liệu - Kỹ thuật khai phá liệu mơ tả: có nhiệm vụ mơ tả tính chất đặc tính chung liệu sở liệu có Các kỹ thuật gồm có: Gom nhóm (clustering), tóm tắt (summerization), trực quan hóa visualiztation), phân tích phát triển độ lệch (evolution and deviation analyst), phân tích luật kết hợp (association rules), - Kỹ thuật khai phá liệu dự đốn: Có nhiệm vụ đưa dự đoán dựa vào suy diễn liệu thời Các kỹ thuật gồm có: Phân lớp (classification), hồi quy (regession), (Hình 3) Nguyễn Văn Quang - CH1101126 Khóa luận mơn học: Khai phá liệu Hình Các kỹ thuật khai phá liệu Tuy nhiên, có số phương pháp thơng dụng là: phân cụm liệu, phân lớp liệu, phương pháp hồi quy khai phá luật kết hợp 6.1 Phân cụm liệu: Mục tiêu phương pháp phân cụm liệu nhóm đối tượng tương tự tập liệu vào cụm cho đối tượng thuộc lớp tương đồng đối tượng thuộc cụm khác khơng tương đồng (Hình 4) a) Phân lớp liệu: Hình Phân cụm liệu Nguyễn Văn Quang - CH1101126 Khóa luận mơn học: Khai phá liệu Mục tiêu phương pháp phân lớp liệu dự đoán nhãn lớp cho mẫu liệu Quá trình phân lớp liệu thường gồm hai bước: - Bước 1: Một mơ hình xây dựng dựa việc phân tích mẫu liệu sẵn có Mỗi mẫu tương ứng với lớp, định thuộc tính gọi thuộc tính lớp Các lớp liệu cịn gọi lớp liệu huấn luyện (training data set) Các nhãn lớp tập liệu huấn luyện phải xác định trước xây dựng mơ hình - Bước 2: Sử dụng mơ hình để phân lớp liệu Trước hết, phải tính độ xác mơ hình Nếu độ xác chấp nhận được, mơ hình sử dụng để dự đốn nhãn lớp cho mẫu liệu khác tương lai (Hình 5) Hình Phân lớp liệu 6.2 Phương pháp hồi quy: Phương pháp hồi quy khác với phân lớp liệu chỗ: hồi quy dùng để dự đốn giá trị liên tục cịn phân lớp liệu dùng để dự đoán giá trị rời rạc Hồi quy hàm học ánh xạ mục liệu thành biến dự đoán có giá trị thực Có nhiều ứng dụng khai phá liệu với nhiệm vụ hồi quy, ví dụ như: khả đánh giá tử vong bệnh nhân biết kết xét nghiệm; chẩn đoán, dự đoán nhu cầu tiêu thụ sản phẩm hàm chi tiêu quảng cáo 6.3 Khai phá luật kết hợp: Phương pháp phát đưa mối liên hệ giá trị liệu sở liệu Mẫu đầu giải thuật khai phá liệu luật kết hợp tìm Chẳng hạn, phân tích sở liệu bán hàng nhận thông tin khách hàng mua máy tính có khuynh hướng mua phần mềm quản lý tài lần mua miêu tả luật kết hợp sau: “Máy tính=>Phần mềm quản lý tài chính” (Độ hỗ trợ: 2%, độ tin cậy: 60%) Độ hỗ trợ độ tin cậy hai độ đo đáng quan tâm luật Nguyễn Văn Quang - CH1101126 10 Khóa luận mơn học: Khai phá liệu + Trường mathuoc: ghi mã thuốc + Các trường lại ghi mã số thuốc, tên thuốc, đơn vị tính,đơn giá, - Query TT_Tuoi_Benhnhan(thơng tin độ tuổi bệnh bệnh nhân) Nguyễn Văn Quang - CH1101126 34 Khóa luận mơn học: Khai phá liệu Truy vấn thông tin độ tuổi phân loại bệnh tật bệnh nhân thể qua câu lệnh truy vấn sau: SELECT Year(Date())-namsinh AS tuoi, icd.id_icd FROM tb_benhnhan AS bn, tb_icd AS icd WHERE ((((Year(Date())-[namsinh]))>=1 And ((Year(Date())-[namsinh])) 2) { chuoi = chuoi.Substring(1); item.SubItems.Add(chuoi); Nguyễn Văn Quang - CH1101126 35 Khóa luận mơn học: Khai phá liệu lv_loaddata.Items.Add(item); } } lbtonggiaotac.Text = "Tổng số giao tác: " + lv_loaddata.Items.Count.ToString(); } //Chọn giá trị Minsupport Minconfidence private bool ValidateInput(TextBox txtBox, bool bIsNumber) { if (txtBox.Text.Length == 0) { errorProvider1.SetError(txtBox, "Bạn chưa chọn giá trị"); return false; } else { if (bIsNumber && int.Parse(txtBox.Text) > 100) { errorProvider1.SetError(txtBox, "Bạn chọn giá trị khoảng từ 100"); return false; } else { errorProvider1.SetError(txtBox, ""); return true; } } //Thực thi tìm luật kết hợp private void Solve() { double dMinSupport = double.Parse(txt_Support.Text) / 100; double dMinConfidence = double.Parse(txt_Confidence.Text) / 100; Dictionary dic_FrequentItemsL1 = GetL1FrequentItems(dMinSupport); Dictionary dic_FrequentItems = dic_FrequentItemsL1; Dictionary dic_Candidates = new Dictionary(); { dic_Candidates = GenerateCandidates(dic_FrequentItems); dic_FrequentItems = GetFrequentItems(dic_Candidates, dMinSupport); Nguyễn Văn Quang - CH1101126 36 Khóa luận mơn học: Khai phá liệu } while (dic_Candidates.Count != 0); List lstRules = GenerateRules(); List lstStrongRules = GetStrongRules(dMinConfidence, lstRules); LoadFrequentItems(m_dicAllFrequentItems); LoadRules(lstStrongRules); lbtongphantu.Text = "Tổng số phần tử phổ biến: "+lv_Frequent.Items.Count.ToString(); lbtongluat.Text = "Tổng số luật mạnh: " + lv_Rules.Items.Count.ToString(); } //Tạo ứng cử viên private Dictionary GenerateCandidates(Dictionary dic_FrequentItems) { Dictionary dic_CandidatesReturn = new Dictionary(); for (int i = 0; i < dic_FrequentItems.Count - 1; i++) { string strFirstItem = lphabetize(dic_FrequentItems.Keys.ElementAt(i)); for (int j = i + 1; j < dic_FrequentItems.Count; j++) { string strSecondItem = Alphabetize(dic_FrequentItems.Keys.ElementAt(j)); string strGeneratedCandidate = GetCandidate(strFirstItem, strSecondItem); if (strGeneratedCandidate != string.Empty) { strGeneratedCandidate = Alphabetize(strGeneratedCandidate); double dSupport = GetSupport(strGeneratedCandidate); dic_CandidatesReturn.Add(strGeneratedCandidate, dSupport); } } } return dic_CandidatesReturn; } //Hiện thị danh sách items từ CSDL void showlistview(DataTable dt, ListView lv) { lv.Items.Clear(); Nguyễn Văn Quang - CH1101126 37 Khóa luận mơn học: Khai phá liệu ListViewItem item = new ListViewItem(); foreach (DataRow r in dt.Rows) { item = lv.Items.Add(r[0].ToString()); item.SubItems.Add(r[2].ToString()); } } //Lấy tập phổ biến private Dictionary GetFrequentItems(Dictionary dic_Candidates, double dMinSupport) { Dictionary dic_FrequentReturn = new Dictionary(); for (int i = dic_Candidates.Count - 1; i >= 0; i ) { string strItem = dic_Candidates.Keys.ElementAt(i); double dSupport = dic_Candidates[strItem]; if ((dSupport / (double)(m_nLastTransId - 1) >= dMinSupport)) { dic_FrequentReturn.Add(strItem, dSupport); m_dicAllFrequentItems.Add(strItem, dSupport); } } return dic_FrequentReturn; } //Tạo luật private List GenerateRules() { List lstRulesReturn = new List(); foreach (string strItem in m_dicAllFrequentItems.Keys) { if (strItem.Length > 1) { int nMaxCombinationLength = strItem.Length / 2; GenerateCombination(strItem, nMaxCombinationLength, ref lstRulesReturn); } } return lstRulesReturn; } //Lấy luật mạnh Nguyễn Văn Quang - CH1101126 38 Khóa luận môn học: Khai phá liệu private List GetStrongRules(double dMinConfidence, List lstRules) { List lstStrongRulesReturn = new List(); foreach (clssRules Rule in lstRules) { string strXY = Alphabetize(Rule.X + Rule.Y); AddStrongRule(Rule, strXY, ref lstStrongRulesReturn, dMinConfidence); } lstStrongRulesReturn.Sort(); return lstStrongRulesReturn; } // Load phần tử phổ biến private void LoadFrequentItems(Dictionary } } //Load luật private void LoadRules(List lstStrongRules) { foreach (clssRules Rule in lstStrongRules) { ListViewItem lvi = new ListViewItem(Rule.X + " >" + Rule.Y); lvi.SubItems.Add(String.Format("{0:0.00}", (Rule.Confidence * 100)) + "%"); lv_Rules.Items.Add(lvi); } } // Thêm Items vào transaction private void btn_AddTrans_Click(object sender, EventArgs e) { if (lv_Items.CheckedItems.Count || nChosenTransactions == 0) { MessageBox.Show("Bạn chọn giao dịch để hiệu chỉnh", "Alert", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return; } EnableControls(false); int nTransId = (int)lv_Transactions.CheckedItems[0].Tag; string strTransaction = m_dicTransactions[nTransId]; foreach (ListViewItem lvi in lv_Items.Items) { lvi.Checked = false; } foreach (char cItem in strTransaction) { for (int i = 0; i < lv_Items.Items.Count; i++) { if (lv_Items.Items[i].Text == cItem.ToString()) { lv_Items.Items[i].Checked = true; Nguyễn Văn Quang - CH1101126 40 Khóa luận mơn học: Khai phá liệu } } } } // Xóa Item chọn từ transaction private void btn_DeleteTrans_Click(object sender, EventArgs e) { int nChosenTransactions = lv_Transactions.CheckedItems.Count; if (nChosenTransactions < 1) { MessageBox.Show("Bạn chọn giao dịch cần xóa", "Alert", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return; } for (int i = 0; i < lv_Transactions.CheckedItems.Count; i++) { m_dicTransactions.Remove((int)lv_Transactions.CheckedItems[i].Tag ); lv_Transactions.Items.Remove(lv_Transactions.CheckedItems[i]); } } //Xóa tồn Item từ transaction private void btn_ClearTransactions_Click(object sender, EventArgs e) { if (MessageBox.Show("Bạn có chắn xóa tất giao dịch không ?", "Alert", MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation) == DialogResult.OK) { m_nLastTransId = 1; lv_Transactions.Items.Clear(); m_dicTransactions.Clear(); } } // Chọn lại giá trị Min_sup Min_conf private void button2_Click(object sender, EventArgs e) { lv_Rules.Items.Clear(); lv_Frequent.Items.Clear(); m_dicAllFrequentItems.Clear(); txt_Support.Text = string.Empty; txt_Confidence.Text = string.Empty; Nguyễn Văn Quang - CH1101126 41 Khóa luận mơn học: Khai phá liệu lbtongluat.Text = string.Empty; lbtongphantu.Text = string.Empty; } 5.2 Code project Data Access: Source code truy xuất CSDL bệnh viện Bà Bịa (benhvienbr) public class DataAccess { private static string strCon; public static OleDbConnection cn; public DataAccess() { strCon = "Provider=Microsoft.Jet.OLEDB.4.0; Data source=benhvienbr.mdb"; SetConnection(); } public static void SetConnection() { try { cn = new OleDbConnection(strCon); cn.Open(); } catch (Exception e) { MessageBox.Show("Chi tiết kỹ thuật:\n\n" + e.ToString(), "Thông báo lỗi kết nối liệu!!!", MessageBoxButtons.OK, MessageBoxIcon.Error); return; }; } public static DataTableReader getDataReader(String tableName) { OleDbDataAdapter adap; DataSet ds = new DataSet(); String strOleDb; strOleDb = "Select * From " + tableName; adap = new OleDbDataAdapter(strOleDb, cn); adap.Fill(ds); return ds.Tables[0].CreateDataReader(); ; Nguyễn Văn Quang - CH1101126 42 Khóa luận mơn học: Khai phá liệu } public static DataTableReader getDataReaderSQL(String strSQL) { OleDbDataAdapter adap; DataSet ds = new DataSet(); adap = new OleDbDataAdapter(strSQL, cn); adap.Fill(ds); return ds.Tables[0].CreateDataReader(); ; } public static DataTable getDataTable(String tableName) { OleDbDataAdapter adap; DataTable ds = new DataTable(); String strOleDb; strOleDb = "Select * From " + tableName; adap = new OleDbDataAdapter(strOleDb, cn); adap.Fill(ds); return ds; } public static DataTable getDataBySQL(String strSQL) { OleDbDataAdapter adap; DataTable ds = new DataTable(); String strOleDb; strOleDb = strSQL; adap = new OleDbDataAdapter(strOleDb, cn); adap.Fill(ds); return ds; } public static int thucthitruyvan(string strSQL) { try { OleDbCommand cmd; cmd = new OleDbCommand(strSQL, cn); cmd.ExecuteNonQuery(); return 1; } catch (Exception e) { Nguyễn Văn Quang - CH1101126 43 Khóa luận mơn học: Khai phá liệu MessageBox.Show("Chi tiết kỹ thuật:\n\n" + e.ToString(), "Thông báo lỗi"); return 0; } } public static DataSet getDataSet(String strSQL) { OleDbDataAdapter adap; DataSet ds = new DataSet(); String strOleDb; strOleDb = strSQL; adap = new OleDbDataAdapter(strOleDb, cn); adap.Fill(ds); return ds; } } Hướng dẫn sử dụng: Để chương trình chạy cần phải kết nối liệu với hệ điều hành Windows, tạo kết nối ODBC tới CSDL mà ta muốn Mining như: benhvienbr.mdb (nằm thư mục: Apriori\bin\debug\benhvienbr.mdb) Chương trình kết nối benhvienbr.mdb sẵn Khi chương trình thực thi cho ta danh sách mơ tả CSDL gồm giao tác Sau chọn thông tin Mining: - Chọn phần tử cột Item_ICD tương tứng với CSDL giao tác thể bảng mô tả CSDL Ví dụ CSDL gồm giao tác, ta chọn độ tuổi từ 50 đến 55 để mining (Hình 8a); Hình 8a Nguyễn Văn Quang - CH1101126 44 Khóa luận môn học: Khai phá liệu Tương ứng với độ tuổi(Age) ta chọn phần tử (Item_ICD), sau chọn Button thêm vào giao dịch (Transactions) xem hình 8b, 8c Hình 8b Hình 8c: Chọn items - Button thêm phần tử chọn tương ứng để thêm vào Transactions mà ta muốn Mining - Button cho phép chỉnh sữa lại giao tác Nguyễn Văn Quang - CH1101126 45 Khóa luận mơn học: Khai phá liệu - Button chọn - Button Transaction cho phép xoá item giao tác cho phép xoá tất giao dịch - Min Support: độ hỗ trợ tối thiểu từ >100%; - Min Confidence: độ tin cậy tối tiểu thiểu từ >100%; - CSDL gồm giao tác: phần xác định độ tuổi muốn Mining (thực truy vấn CSDL benhvienbr với bảng TT_tuoi_Benh) chương trình hiển thị máy tính, cột TID(Age) cho biết độ tuổi, List of items cho biết danh sách ICD (Phân loại bệnh tật quốc tế) mã hoá - Cột Items(ICD): mã hoá ký hiệu cho loại bệnh tật Ví dụ: Với Database gồm giao tác, độ tuổi từ 50 >55 thường mắc phải bệnh tật nào, với Minsup=50% Minconf=100% Chương trình thực thi tìm luật (Hình 9) Hình 9: Mơ tả kết tìm kiếm luật kết hợp Nguyễn Văn Quang - CH1101126 46 Khóa luận mơn học: Khai phá liệu KẾT LUẬN Khố luận trình bày tổng quan nét đặc trưng lĩnh vực Data Mining bao gồm vấn đề cần khám phá tri thức, hướng tiếp cận nghiên cứu tiểu biểu, phát luật kết hợp phương pháp khám phá tri thức quan trọng Data Mining có nhiều ý nghĩa khoa học thực tiễn Về mặt lý thuyết, khai phá liệu xem phần trình khám phá tri thức Quá trình khám phá tri thức chuỗi lặp gồm bước: làm liệu, tích hợp liệu, chọn lựa liệu, biến đổi liệu, khai phá liệu, đánh giá mẫu, biểu diễn tri thức Nhiều lĩnh vực khác có liên quan với khai phá liệu: công nghệ sở liệu, lý thuyết thống kê, học máy, khoa học thông tin, trực quan hóa, Khai phá luật kết hợp xem đóng góp quan trọng từ cộng đồng sở liệu việc khám phá tri thức Về thuật toán khai phá liệu khố luận trình bày số thuật tốn khai phá luật kết hợp, như: AIS, SETM, Apriori, FP-growth Về mặt cài đặt thử nghiệm, khoá luận giới thiệu kỹ thuật khai phá liệu theo thuật toán Apriori áp dụng vào toán khám điều trị bệnh nhân ngoại trú phòng khám y học cổ truyền bệnh viện Bà Rịa Dựa vào kỹ thuật khai phá liệu (Data Mining) để biết thông tin loại bệnh tùy theo độ tuổi bệnh nhân thường gặp bệnh Kết trình Mining nhằm đưa dự báo cho bác sỹ, phận chun mơn có giải pháp thích hợp việc khám điều trị bệnh nhân ngoại trú phịng khám Đơng y bệnh viện có hiệu Một phương pháp quan trọng kỹ thuật khai phá liệu mà đề tài sâu tìm hiểu khai phá luật kết hợp Mục tiêu phương pháp phát đưa mối liên hệ giá trị liệu sở liệu Mẫu đầu giải thuật khai phá liệu luật kết hợp tìm Phương pháp sử dụng hiệu lĩnh vực maketing có chủ đích, phân tích định, quản lý kinh doanh, phân tích giá thị trường … Trong q trình thực khố luận, tơi cố gắng tập trung tìm hiểu tham khảo tài liệu liên quan Tuy nhiên, với thời gian trình độ có hạn nên khơng tránh khỏi hạn chế thiếu sót Tơi mong nhận xét góp ý Thầy bạn bè để hồn thiện kết nghiên cứu Nguyễn Văn Quang - CH1101126 47 Khóa luận mơn học: Khai phá liệu TÀI LIỆU THAM KHẢO [1] Chuyên đề Khai phá liệu Nhà kho liệu (2004) – PGS.TS Đỗ Phúc Đại học Quốc Gia Thành Phố Hồ Chí Minh [2] Giáo trình Khai thác liệu (2008)– PSG.TS Đỗ Phúc, Đại học Công nghệ Thông tin, Đại học quốc gia thành phố Hồ Chí Minh [3] Tập giảng môn khai thác liệu kho liệu, Cao học CNTT (2003)TS Đỗ Phúc, ĐHQG-HCM [4] GS.TS Hồng Kiếm – PGS.TS Đỗ Phúc (2005), Giáo trình khai phá liệu, Trung tâm nghiên cứu phát triển công nghệ thông tin, Đại học Quốc gia thành phố Hồ Chí Minh [5] Giáo trình điện tử cao học Ngành Khoa học Máy tính- TS.Võ Thị Ngọc Châu, Trường Đại Học Bách Khoa Tp Hồ Chí Minh [6]Application of Data Mining to Intensive Care Unit Microbiologic Data1 Stephen A Moser, Warren T Jones, and Stephen E Brossette The University of Alabama at Birmingham, Birmingham, Alabama, USA [7] Krzysztof J Cios, Witold Pedrycz, Roman W Swiniarski Data Mining Methods for Knowledge Discovery Kluwer Academic Publishers, 1998 [8] Jiawei Han, Micheline Kamber, “Data Mining: Concepts and Techniques”, Second Edition, Morgan Kaufmann Publishers, 2006 [9] David L Olson, Dursun Delen, “Advanced Data Mining Techniques”, Springer-Verlag, 2008 [10] ZhaoHui Tang, Jamie MacLennan, “Data Mining with SQL Server 2005”, Wiley Publishing, 2005 Nguyễn Văn Quang - CH1101126 48