Nhằm phân tích các dữ liệu và áp dụng các thuật toán để tìm ra những mẫu thông tin, hoạt động có tính chính quy trong tập dữ liệu lớn, đồng thời áp dụng vào khai phá dữ liệu khám chữa bệ
Trang 1LỜI CẢM ƠN
Tôi xin bày tỏ lòng biết ơn sâu sắc tới TS Nguyễn Hải Minh - khoa Công nghệ Thông tin - Trường Đại học Công nghệ Thông tin và Truyền thông – Đại học Thái Nguyên cán bộ đã trực tiếp hướng dẫn cho tôi trong quá trình thực hiện luận văn
Tôi xin chân thành cảm ơn các thầy, cô giáo Viện Công nghệ thông tin, Trường Đại học Công nghệ thông tin và Truyền thông thuộc Đại học Thái Nguyên đã tham gia giảng dạy, tạo mọi điều kiện cho tôi được học tập, nâng cao trình độ kiến thức để phục vụ cho công tác của tôi hiện tại và sau này
Tôi xin cảm ơn Thạc sỹ, Bác sỹ chuyên khoa II Trương Đồng Tâm - Bệnh viện trường Đại học Y Khoa Thái Nguyên, đã tạo điều kiện cho tôi tiếp xúc trực tiếp tìm hiểu các thông tin liên quan trong ngành Y và giúp tôi tiếp cận với kho dữ liệu khám chữa bệnh tại bệnh viện
Cuối cùng, tôi xin gửi lời cảm ơn tới gia đình, bạn bè, đồng nghiệp đã luôn động viên, hỗ trợ tôi trong quá trình học tập và nghiên cứu đề tài
Mặc dù đã rất cố gắng, song luận văn này không thể tránh khỏi những thiếu sót, kính mong được sự chỉ dẫn, góp ý của các quý thầy cô và các bạn
Thái Nguyên, tháng 05 năm 2016
Tác giả
Lê Tiến Thành
Trang 2LỜI CAM ĐOAN
Tôi xin cam đoan nội dung và kết quả nghiên cứu trong luận văn này là trung thực và không trùng lặp với các đề tài khác Tôi cũng xin cam đoan là mọi sự giúp đỡ cho việc thực hiện luận văn này đã được cảm ơn và các thông tin trích dẫn trong luận văn đã được chỉ rõ nguồn gốc
Thái Nguyên, tháng 05 năm 2016 Tác giả
Lê Tiến Thành
Trang 3MỤ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, CÁC CHỮ VIẾT TẮT v
DANH MỤC CÁC BẢNG vi
DANH MỤC CÁC HÌNH vii
LỜI NÓI ĐẦU 1
MỞ ĐẦU 3
Chương 1 TỔNG QUAN VỀ KHAI PHÁ DỮ LIỆU VÀ GIAN LẬN BẢO HIỂM Y TẾ 4
1.1 Các kiến thức chung về khai phá dữ liệu 4
1.1.1 Quy trình khai phá dữ liệu và phát hiện tri thức 5
1.1.2 Kiến trúc của một hệ thống khai phá dữ liệu 6
1.1.3 Các loại dữ liệu được khai phá 8
1.1.4 Chức năng khai phá dữ liệu 8
1.1.5 Lợi thế của khai phá dữ liệu so với phương pháp cơ bản 8
1.1.6 Một số ứng dụng của khai phá dữ liệu 11
1.1.7 Những thách thức trong ứng dụng và nghiên cứu kỹ thuật KPDL 13
1.2 Tổng quan về gian lận BHYT trong kê đơn cấp thuốc 17
1.2.1 Giới thiệu chung 17
1.2.2 Các hình thức gian lận trong y tế 18
1.2.3 Gian lận trong kê đơn, cấp thuốc BHYT 18
1.2.4 Chức năng, nhiệm vụ của cơ quan Bảo hiểm trong y tế: 18
1.3 Khai phá dữ liệu bằng luật kết hợp 18
1.3.1 Lý thuyết về luật kết hợp 18
1.3.2 Định nghĩa luật kết hợp 19
1.4 Các tính chất của luật kết hợp 20
1.4.1 Với tập mục phổ biến (3 tính chất) 20
Trang 41.4.2 Với luật kết hợp (4 tính chất sau) 21
Chương 2 GIẢI THUẬT APRIORI VÀ FP-GROWTH TRONG KHAI PHÁ DỮ LIỆU 23
2.1 Thuật toán Apriori 23
2.2 Thuật toán PP-growth 26
2.3 Cấu trúc cây FP-Tree 28
2.4 Xây dựng cây FP-Tree 29
2.5 Sinh tập phổ biến 31
Chương 3 ỨNG DỤNG THUẬT TOÁN FP-GROWTH KHAI PHÁ DỮ LIỆU ĐƠN THUỐC BẢO HIỂM Y TẾ 39
3.1 Thông tin dữ liệu mẫu và yêu cầu bài toán 39
3.2 Mô hình ứng dụng thuật toán FP-growth để phát hiện luật kê đơn 41
3.3 Lựa chọn công cụ phát triển 41
3.4 Kết quả khai phá luật trên dữ liệu kê đơn thuốc bảo hiểm 44
3.5 Thử nghiệm chương trình hỗ trợ phát hiện gian lận kê đơn cấp thuốc 62
3.5.1 Mô hình hỗ trợ phát hiện gian lận kê đơn cấp thuốc BHYT 62
3.5.2 Phương pháp thử nghiệm 62
3.5.3 Dữ liệu thử nghiệm 63
3.5.4 Kết quả thử nghiệm 63
KẾT LUẬN 64
KIẾN NGHỊ NHỮNG NGHIÊN CỨU TIẾP THEO 66
TÀI LIỆU THAM KHẢO 67
PHỤ LỤC 68
Trang 5DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮT
and Data Mining
Kỹ thuật phát hiện tri thức và khai phá dữ liệu
Minconf Minimum Confidence Độ tin cậy tối thiểu
Minsup Minimum Support Độ hỗ trợ tối thiểu
KPDL Data Mining Khai phá dữ liệu
Trang 6DANH MỤC CÁC BẢNG
Trang
Bảng2.1 Ví dụ về một cơ sở dữ liệu giao dịch T 32
Bảng 2.2 Các tập mục phổ biến 38
Bảng 3.1 Bảng dữ liệu 39
Bảng 3.2 Danh mục các bệnh thường gặp 40
Bảng 3.3 Mã bệnh I15.0 : Cao huyết áp do mạch máu thận 44
Bảng 3.4 Mã bệnh J20: Viêm phế quản cấp 45
Bảng 3.5 Mã bệnh J30: Viêm mũi do vận mạch và dị ứng 47
Bảng 3.6 Mã bệnh K35: Viêm ruột thừa cấp 48
Bảng 3.7 Mã bệnh M25.5: Đau khớp 51
Bảng 3.8 Mã bệnh N20.0: Sỏi thận 53
Bảng 3.9 Mã bệnh R10.4: Đau bụng không xác định và đau bụng khác 57
Bảng 3.10 Mã bệnh R51: Đau đầu 59
Bảng 3.11 Mã bệnh T67.6: Mệt do nhiệt, nhất thời 60
Trang 7DANH MỤC CÁC HÌNH
Trang
Hình 1.1 Quy trình phát hiện tri thức 5
Hình 1.2 Kiến trúc của một hệ khai phá dữ liệu điển hình 7
Hình 3.1 Giao diện chính chương trình 42
Hình 3.2 Giao diện chọn file dữ liệu mẫu 42
Hình 3.3 Kết quả thực hiện phân tích tìm luật 43
Hình 3.4 Giao diện module kê đơn thuốc 63
Hình 3.5 Giao diện phát hiện gian lận từ Cơ sở dữ liệu 64
Trang 8LỜI NÓI ĐẦU
Trong thời đại ngày nay, với sự phát triển nhanh chóng các ứng dụng công nghệ thông tin trong kỷ nguyên internet vào nhiều lĩnh vực đời sống xã hội, khoa học kỹ thuật, kinh tế, an ninh quốc phòng, … Đã tạo ra nhiều cơ sở
dữ liệu khổng lồ Việc dùng các phương tiện tin học để tổ chức và khai thác các cơ sở dữ liệu đã được phát triển từ những năm 60 Sự phát triển của công nghệ thông tin và việc ứng dụng công nghệ thông tin trong nhiều lĩnh vực của đời sống, kinh tế xã hội trong nhiều năm qua đã tạo ra những kho dữ liệu khổng lồ, tăng lên không ngừng Các cơ sở dữ liệu trong các đơn vị, tổ chức kinh doanh, quản lý khoa học… chứa đựng nhiều thông tin tiềm ẩn, phong phú và đa dạng, đòi hỏi phải có những phương pháp phù hợp, chính xác, hiệu quả để lấy được những thông tin bổ ích Tuy nhiên, theo thống kê thì chỉ có một lượng nhỏ của những dữ liệu này là luôn được phân tích, số còn lại họ không biết sẽ phải làm gì hoặc có thể làm gì Vấn đề đặt ra là làm thế nào để
xử lý được khối lượng thông tin cực lớn như vậy để phát hiện ra các tri thức tiềm ẩn trong nó Những tri thức chiết suất từ nguồn cơ sở dữ liệu trên sẽ là nguồn thông tin rất hữu ích hỗ trợ cho lãnh đạo trong việc lên kế hoạch hoạt động hoặc ra các quyết định chính xác Để làm được điều đó người ta đã sử dụng quá trình phát hiện tri thức trong cơ sở dữ liệu (Knowledge Discovery
in Database – KDD) Nhiệm vụ của KDD là từ dữ liệu sẵn có phải tìm ra những thông tin tiềm ẩn có giá trị mà trước đó chưa được phát hiện cũng như tìm ra những xu hướng phát triển và các xu hướng tác động lên chúng Các
kỹ thuật cho phép ta lấy được các tri thức từ cơ sở dữ liệu sẵn có đó được gọi
là kỹ thuật Khai phá dữ liệu (Data Mining)
Trang 9Một trong các nội dung cơ bản nhất trong khai phá dữ liệu và rất phổ biến là phát hiện các luật kết hợp Phương pháp này nhằm tìm ra các tập thuộc tính thường xuất hiện đồng thời trong cơ sở dữ liệu và rút ra các luật
về ảnh hưởng của một tập thuộc tính dẫn đến sự xuất hiện của một hoặc một tập thuộc tính khác như thế nào Những luật kết hợp khai phá được có thể giúp các tổ chức và các nhà quản lý đưa ra những quyết định kinh doanh hiệu quả hơn
Từ những lý do đó em đã tìm hiểu về đề tài “LUẬT KẾT HỢP TRONG KHAI PHÁ DỮ LIỆU VÀ ỨNG DỤNG HỖ TRỢ PHÁT HIỆN GIAN LẬN
KÊ ĐƠN CẤP THUỐC BẢO HIỂM Y TẾ” Nhằm phân tích các dữ liệu và
áp dụng các thuật toán để tìm ra những mẫu thông tin, hoạt động có tính chính quy trong tập dữ liệu lớn, đồng thời áp dụng vào khai phá dữ liệu khám chữa bệnh tại cơ sở khám chữa bệnh để hướng tới cài đặt một chương trình hỗ trợ các cán bộ đại diện bảo hiểm và lãnh đạo phát hiện sớm các trường hợp gian lận và lạm dụng bảo hiểm và ứng dụng hỗ trợ phát hiện gian lận
Trong quá trình làm luận văn này em đã nhận được sự giúp đỡ chỉ bảo tận tình của các thầy cô giáo trong khoa công nghệ thông tin của Trường Đại
học Công nghệ Thông tin và Truyền thông, đặc biệt là thầy Nguyễn Hải Minh Do thời gian có hạn và năng lực còn hạn chế nên không tránh khỏi
những sai sót nên em rất mong nhận được sự giúp đỡ và góp ý hơn nữa của các thầy cô và các bạn
Em xin chân thành cảm ơn thầy Nguyễn Hải Minh và các thầy, cô
trong trường Đại học Công nghệ Thông tin và Truyền thông đã tạo điều kiện giúp đỡ em trong suốt quá trình học tập và làm luận văn tại Trường
Trang 10hỗ trợ từ nguồn ngân quỹ bảo hiểm xã hội
Đề tài này sẽ tập trung nghiên cứu những kiến thức về khai phá dữ liệu
sử dụng luật kết hợp Đây là dạng luật kết hợp mang lại hiệu quả cao giúp tìm
ra được những quy luật và ứng dụng vào khai phá dữ liệu tại các cơ sở khám chữa bệnh Trong khuôn khổ và phạm vi nghiên cứu của đề tài, phần thực nghiệm tác giả đã tiến hành cài đặt thuật toán dựa trên dữ liệu kê đơn thuốc bảo hiểm của bệnh viện trường Đại học Y khoa – Đại học Thái Nguyên với mục tiêu phát hiện ra quy luật kê đơn đối với một số bệnh thường gặp ở bệnh viện, để từ đó làm cơ sở xây dựng chương trình hỗ trợ các cán bộ đại diện bảo hiểm và phát hiện các trường hợp bất thường trong kê đơn, có nghi ngờ gian lận hoặc lạm dụng bảo hiểm
Trang 11Chương 1 TỔNG QUAN VỀ KHAI PHÁ DỮ LIỆU VÀ
GIAN LẬN BẢO HIỂM Y TẾ
1.1 Các kiến thức chung về khai phá dữ liệu
Trong thời đại ngày nay, với sự phát triển vượt bật của công nghệ thông tin, các hệ thống thông tin có thể lưu trữ một khối lượng lớn dữ liệu về hoạt động hàng ngày của chúng Từ khối dữ liệu này, các kỹ thuật trong Khai Phá Dữ Liệu (KPDL) và máy học có thể dùng để trích xuất những thông tin hữu ích mà chúng ta chưa biết Các tri thức vừa học được có thể vận dụng để cải thiện hiệu quả hoạt động của hệ thống thông tin ban đầu
Khai phá dữ liệu là tiến trình khám phá tri thức tiềm ẩn trong các CSDL,
cụ thể hơn, đó là tiến trình lọc, sản sinh những tri thức hoặc các mẫu tiềm
ẩn, chưa biết những thông tin hữu ích từ các CSDL lớn Tri thức đó thường ở dạng các mẫu có tính chất không tầm thường, không tường minh (ẩn), chưa được biết đến và có tiềm năng mang lại lợi ích Về bản chất nó là giai đoạn duy nhất rút trích và tìm ra được các mẫu, các mô hình hay thông tin mới, tri thức tiềm ẩn có trong CSDL chủ yếu phục vụ cho mô tả và dự đoán Đây là giai đoạn quan trọng nhất trong quá trình phát hiện tri thức từ CSDL, các tri thức này hỗ trợ trong việc ra quyết định, điều hành trong khoa học và kinh doanh Có một số nhà nghiên cứu còn gọi KPDL là phát hiện tri thức trong cơ
sở dữ liệu (Knowledge Discovery in Database - KDD) Ở đây có thể coi KPDL
là cốt lõi của quá trình phát hiện tri thức
Trang 121.1.1 Quy trình khai phá dữ liệu và phát hiện tri thức
Hình 1.1 Quy trình phát hiện tri thức Bước thứ nhất: Hình thành, xác định và định nghĩa bài toán Là tìm
hiểu lĩnh vực ứng dụng từ đó hình thành bài toán, xác định các nhiệm vụ cần phải hoàn thành Bước này sẽ quyết định cho việc rút ra được các tri thức hữu ích và cho phép chọn các phương pháp khai phá dữ liệu thích hợp với mục đích ứng dụng và bản chất của dữ liệu
Bước thứ hai: Thu thập và tiền xử lý dữ liệu Là thu thập và xử lý thô,
còn được gọi là tiền xử lý dữ liệu nhằm loại bỏ nhiễu (làm sạch dữ liệu), xử lý việc thiếu dữ liệu (làm giàu dữ liệu), biến đổi dữ liệu và rút gọn dữ liệu nếu cần thiết, bước này thường chiếm nhiều thời gian nhất trong toàn bộ qui trình phát hiện tri thức Do dữ liệu được lấy từ nhiều nguồn khác nhau, không đồng nhất, … có thể gây ra các nhầm lẫn Sau bước này, dữ liệu sẽ nhất quán, đầy
đủ, được rút gọn và rời rạc hoá
Bước thứ ba: Khai phá dữ liệu, rút ra các tri thức Là khai phá dữ liệu,
hay nói cách khác là trích ra các mẫu hoặc/và các mô hình ẩn dưới các dữ liệu Giai đoạn này rất quan trọng, bao gồm các công đoạn như: chức năng, nhiệm vụ và mục đích của khai phá dữ liệu, dùng phương pháp khai phá nào?
Trang 13Thông thường, các bài toán khai phá dữ liệu bao gồm: các bài toán mang tính
mô tả - đưa ra tính chất chung nhất của dữ liệu, các bài toán dự báo - bao gồm
cả việc phát hiện các suy diễn dựa trên dữ liệu hiện có Tuỳ theo bài toán xác định được mà ta lựa chọn các phương pháp khai phá dữ liệu cho phù hợp
Bước thứ tư: Sử dụng các tri thức phát hiện được Là hiểu tri thức đã
tìm được, đặc biệt là làm sáng tỏ các mô tả và dự đoán Các bước trên có thể lặp đi lặp lại một số lần, kết quả thu được có thể được lấy trung bình trên tất
cả các lần thực hiện Các kết quả của quá trình phát hiện tri thức có thể được đưa và ứng dụng trong các lĩnh vực khác nhau Do các kết quả có thể là các
dự đoán hoặc các mô tả nên chúng có thể được đưa vào các hệ thống hỗ trợ ra quyết định nhằm tự động hoá quá trình này
Tóm lại: KDD là một quá trình kết xuất ra tri thức từ kho dữ liệu mà
trong đó khai phá dữ liệu là công đoạn quan trọng nhất
1.1.2 Kiến trúc của một hệ thống khai phá dữ liệu
Kiến trúc của một hệ thống KPDL điển hình có thể có các thành phần như hình 1.2
- CSDL, kho dữ liệu hoặc các lưu trữ thông tin khác (Databases, Data warehouse, ): Đây là một hay một tập các CSDL, các kho dữ liệu, các trang tính hay các dạng lưu trữ thông tin khác Các kỹ thuật làm sạch dữ liệu và tích hợp dữ liệu có thể được thể hiện trên những dữ liệu này
- Máy chủ CSDL hay máy chủ kho dữ liệu (Database or warehouse server): Máy chủ này có trách nhiệm lấy những dữ liệu thích hợp dựa trên các yêu cầu khai phá của người dùng
Trang 14Hình 1.2 Kiến trúc của một hệ khai phá dữ liệu điển hình
- Cơ sở tri thức (Knowledge base): Đây là miền tri thức được dùng
để hướng dẫn việc tìm kiếm hay đánh giá độ quan trọng của các hình mẫu kết quả
- Máy KPDL (Data mining engine): Một hệ thống KPDL cần phải
có một tập các modun chức năng để thực hiện công việc như: đặc trưng hoá, kết hợp, phân lớp, phân cụm, phân tích sự tiến hoá
- Modun đánh giá mẫu (Pattern evaluation): Bộ phận này tương
tác với các modun KPDL để duyệt tìm các mẫu đáng được quan tâm Nó
có thể dùng các ngưỡng về độ quan tâm để lọc mẫu đã khám phá được Cũng
có thể modun đánh giá mẫu được tích hợp vào modun khai phá, tuỳ theo sự cài đặt của phương pháp khai phá được dùng
- Giao diện đồ họa người dùng (Graphical user interface): Bộ phận
này cho phép người dùng giao tiếp với hệ thống KPDL Ngoài ra, bộ phận này còn cho phép người dùng xem các lược đồ CSDL, lược đồ kho dữ liệu (hay các cấu trúc dữ liệu), các đánh giá mẫu và hiển thị các mẫu trong khuôn dạng khác nhau
Trang 151.1.3 Các loại dữ liệu được khai phá
KPDL phải có thể được áp dụng vào một loại lưu trữ thông tin bất kì Các loại dữ liệu đó có thể là CSDL quan hệ, CSDL giao dịch, kho dữ liệu, các
hệ CSDL nâng cao, các tập tin phẳng (flat file) và Web Các hệ CSDL nâng cao gồm CSDL hướng đối tượng, CSDL quan hệ đối tượng, CSDL hướng ứng dụng cụ thể như: CSDL chuỗi thời gian (time-series), CSDL văn bản và CSDL đa phương tiện
1.1.4 Chức năng khai phá dữ liệu
KPDL có hai chức năng chính: mô tả (description) và dự đoán (prediction)
Công việc KPDL mô tả sẽ mô tả các tính chất hoặc đặc tính chung của
dữ liệu trong CSDL, nghĩa là phân tích và mô tả một tập mẫu đã biết (a set of known sample) trong khả năng nhận thức của con người nhằm giúp họ hiểu rõ
hơn, sâu sắc hơn về dữ liệu
Còn công việc KPDL dự đoán sẽ thực hiện việc suy luận dựa trên dữ liệu hiện hành để cho ra các dự báo, nghĩa là phân tích tập dữ liệu huấn luyện
và tạo ra một hoặc vài mô hình cho phép dự đoán các mẫu mới chưa biết
(unseen new examples)
1.1.5 Lợi thế của khai phá dữ liệu so với phương pháp cơ bản
Các phương pháp khai phá dữ liệu không có gì là mới và hoàn toàn dựa trên các phương pháp cơ bản đã biết Nhưng có một số điểm khác biệt và ưu thế hơn so với các phương pháp cơ bản như sau:
1.1.5.1 Học máy (Machine Learning)
Mặc dù người ta đã cố gắng cải tiến các phương pháp học máy để có thể phù hợp với mục đích khai phá dữ liệu nhưng sự khác biệt giữa cách thiết
kế, các đặc điểm của cơ sở dữ liệu đã làm cho phương pháp học máy trở nên không phù hợp với mục đích này, mặc dù cho đến nay, phần lớn các phương
Trang 16pháp khai phá dữ liệu vẫn đựa trên nền tảng cơ sở của phương pháp học máy Những phân tích sau đây sẽ cho thấy điều đó
Trong quản trị cơ sở dữ liệu, một cơ sở dữ liệu là một tập hợp được tích hợp một cách logic của dữ liệu được lưu trong một hay nhiều tệp và được tổ chức để lưu trữ có hiệu quả, sửa đổi và lấy thông tin liên quan được dễ dàng
Ví dụ như trong CSDL quan hệ, dữ liệu được tổ chức thành các tệp hoặc các bảng có các bản ghi có độ dài cố định Mỗi bản ghi là một danh sách có thứ tự các giá trị, mỗi giá trị được đặt vào một trường Thông tin về tên trường và giá trị của trường được đặt trong một tệp riêng gọi là thư viện dữ liệu (data dictionary) Một hệ thống quản trị cơ sở dữ liệu sẽ quản lý các thủ tục (procedures) để lấy, lưu trữ, và xử lý dữ liệu trong các cơ sở dữ liệu đó
Trong học máy, thuật ngữ cơ sở dữ liệu chủ yếu đề cập đến một tập các mẫu (instance hay example) được lưu trong một tệp Các mẫu thường là các vector đặc điểm có độ dài cố định Thông tin về các tên đặc điểm, dãy giá trị của chúng đôi khi cũng được lưu lại như trong từ điển dữ liệu Một giải thuật học còn sử dụng tập dữ liệu và các thông tin kèm theo tập dữ liệu đó làm đầu vào và đầu ra biểu thị kết quả của việc học (ví dụ như một khái niệm)
Với so sánh cơ sở dữ liệu thông thường và CSDL trong học máy như trên, có thể thấy là học máy có khả năng được áp dụng cho cơ sở dữ liệu, bởi
vì không phải học trên tập các mẫu mà học trên tệp các bản ghi của CDSL
Tuy nhiên, phát hiện tri thức trong cơ sở dữ liệu làm tăng thêm các vấn
đề vốn đã là điển hình trong học máy và đã quá khả năng của học máy Trong thực tế, cơ sở dữ liệu thường động, không đầy đủ, bị nhiễu, và lớn hơn nhiều
so với tập các dữ liệu học máy điển hình Các yếu tố này làm cho hầu hết các giải thuật học máy trở nên không hiệu quả trong hầu hết các trường hợp
Vì vậy trong khai phá dữ liệu, cần tập trung rất nhiều công sức vào việc vượt qua những khó khăn, phức tạp này trong CSDL
Trang 171.1.5.2 Phương pháp hệ chuyên gia
Các hệ chuyên gia cố gắng nắm bắt các tri thức thích hợp với bài toán nào đó Các kỹ thuật thu thập giúp cho việp háp đó là một cách suy diễn các chuyên gia con người Mỗi phương pháp đó là một cách suy diễn các luật từ các ví dụ và giải pháp đối với bài toán chuyên gia đưa ra Phương pháp này khác với khai phá dữ liệu ở chỗ các ví dụ của chuyên gia thường ở mức chất lượng cao hơn rất nhiều so với các dữ liệu trong cơ sở dữ liệu, và chúng thường chỉ bao được các trường hợp quan trọng Hơn nữa, các chuyên gia sẽ xác nhận tính giá trị và hữu dụng của các mẫu phát hiện được Cũng như với các công cụ quản trị cơ sở dữ liệu, ở các phương pháp này đòi hỏi có sự tham gia của con người trong việc phát hiện tri thức
1.1.5.3 Phát kiến khoa học
Khai phá dữ liệu rất khác với phát kiến khoa học ở chỗ khai phá trong CSDL ít có chủ tâm và có điều kiện hơn Các dữ liệu khoa học có ừ thực nghiệm nhằm loại bỏ một số tác động của các tham số để nhấn mạnh độ biến thiên của một hay một số tham số đích Tuy nhiên, các cơ sở dữ liệu thương mại điển hình lại ghi một số lượng thừa thông tin về các dự án của họ để đạt được một số mục đích về mặt tổ chức Độ dư thừa này (hay có thể gọi là sự lẫn lộn – confusion) có thể nhìn thấy và cũng có thể ẩn chứa trong các mối quan hệ dữ liệu Hơn nữa, các nhà khoa học có thể tạo lại các thí nghiệm và
có thể tìm ra rằng các thiết kế ban đầu không thích hợp Trong khi đó, các nhà quản lý cơ sở dữ liệu hầu như không thể xa xỉ đi thiết kế lại các trường dữ liệu và thu thập lại dữ liệu
1.1.5.4 Phương pháp thống kê
Một câu hỏi hiển nhiên là khai phá dữ liệu khác gì so với phương pháp thống kê Một câu hỏi hiển nhiên là khai phá dữ liệu khác gì so với phương
Trang 18pháp thống kê Từ nhiều năm nay, con người đã sử dụng phương pháp thống
kê một cách rất hiệu quả để đạt được mục đích của mình
Mặc dù các phương pháp thống kê cung cấp một nền tảng lý thuyết vững chắc cho các bài toàn phân tích dữ liệu nhưng chỉ có tiếp cận thống kê thuần túy thôi chưa đủ Thứ nhất, các phương pháp thống kê chuẩn không phù hợp đối với các kiểu dữ liệu có cấu trúc trong rất nhiều các CSDL Thứ hai, thống kê hoàn toàn theo dữ liệu (data driven), nó không sử dụng tri thức sẵn
có về lĩnh vực Thứ ba, các kết quả phân tích thống kê có thể sẽ rất nhiều và khó có thể làm rõ được Cuối cùng, các phương pháp thống kê cần có sự hướng dẫn của người dùng để xác định phân tích dữ liệu như thế nào và ở đâu
Sự khác nhau cơ bản giữa khai phá dữ liệu và thống kê là ở chỗ khai phá
dữ liệu là một phương tiện được dùng bởi người sử dụng đầu cuối chứ không phải là các nhà thống kê Khai phá dữ liệu tự động quá trình thống kê một cách có hiệu quả, vì vậy làm nhẹ bớt công việc của người dùng đầu cuối, tạo
ra một công cụ dễ sử dụng hơn Như vậy, nhờ có khai phá dữ liệu, việc dự đoán và kiểm tra rất vất vả trước đây có thể được đưa lên máy tính, được tính,
dự đoán và kiểm tra một cách tự động
1.1.6 Một số ứng dụng của khai phá dữ liệu
1.1.6.1 Phân tích dữ liệu gen và sinh học y học
KPDL đã trở thành một công cụ mạnh và đóng góp thiết thực vào việc phân tích gen theo các cách sau:
Nghiên cứu tương tự và so sánh các chuỗi gen: Một trong những nghiên cứu quan trọng trong phân tích gen là nghiên cứu tương tự và so sánh các chuỗi gen Các chuỗi gen được cô lập từ các mô bệnh và khoẻ có thể được so sánh với nhau để nhận dạng những khác biệt giữa hai lớp gen
Trang 19Phân tích kết hợp: Nhận dạng các chuỗi gen cùng xảy ra, phân tích kết hợp có thể được sử dụng giúp chúng ta xác định các loại gen thường kết hợp với nhau để gây nên bệnh
Phân tích hướng đi: Liên kết các gen ở các giai đoạn khác nhau của quá trình phát triển bệnh, nếu một chuỗi hoạt động của các gen ở những giai đoạn khác nhau của bệnh được xác định, thì có thể giúp chúng ta chế tạo ra các dược phẩm can thiệp vào từng giai đoạn của bệnh Do đó, có thể đạt được cách điều trị bệnh hiệu quả hơn
1.1.6.2 Phân tích dữ liệu tài chính
Dữ liệu tài chính nhận được tương đối hoàn chỉnh, đáng tin cậy và chất lượng cao làm thuận lợi cho việc phân tích dữ liệu, KPDL một cách hệ thống Các ứng dụng của KPDL vào lĩnh vực tài chính là:
- Dự đoán trả tiền vay và phân tích chính sách tín dụng khách hàng: Dự đoán trả tiền vay và phân tích chính sách tín dụng khách hàng là
vấn đề quan trọng đối với việc kinh doanh của ngân hàng Có nhiều yếu tố (chẳng hạn: tỉ lệ trả trên thu nhập, mức thu nhập, mức học vấn, vùng dân
cư, lịch sử tín dụng,…) có thể ảnh hưởng mạnh hoặc yếu đến việc thực hiện trả tiền vay và sự đánh giá mức độ tín nhiệm khách hàng Các phương pháp KPDL như lựa chọn đặc trưng, xếp hạng các thuộc tính liên quan có thể giúp xác định các yếu tố quan trọng và loại bỏ những yếu tố không liên quan
Do đó, ngân hàng có thể điều chỉnh chính sách cho vay đối với những khách
hàng mà trước đây ngân hàng đã từ chối nhưng nay tỉ mạo hiểm đối với họ là
thấp dựa vào các phân tích trên
- Phát hiện các tội phạm tài chính: Để phát hiện việc chuyển tiền bất
chính vào ngân hàng và các tội phạm tài chính, việc tích hợp thông tin từ các CSDL khác nhau (CSDL giao dịch ngân hàng, CSDL về lịch sử tội phạm) là
Trang 20rất quan trọng Sau khi có dữ liệu tổng hợp, chúng ta có thể dựa trên các công cụ của KPDL để phát hiện ra các mẫu khác thường
1.1.6.3 Phân tích các mẫu gian lận và xác định các mẫu khác thường
Việc xác định những người dùng gian lận tiềm năng và những mẫu sử dụng không điển hình là rất quan trọng Những mẫu này có thể được khám phá bởi phân tích đa chiều, phân tích phân cụm, phân tích phần tử ngoài cuộc
1.1.7 Những thách thức trong ứng dụng và nghiên cứu kỹ thuật KPDL
Một số vấn đề khó khăn trong việc nghiên cứu và ứng dụng kỹ thuật khai phá dữ liệu như sau:
1.1.7.1 Các vấn đề về cơ sở dữ liệu
Đầu vào chủ yếu của một hệ thống khai thác tri thức là các dữ liệu thô trong cơ sở phát sinh trong khai phá dữ liệu chính là từ đây Do các dữ liệu trong thực tế thường động, không đầy đủ, lớn và bị nhiễu Trong những trường hợp khác, người ta không biết cơ sở dữ liệu có chứa các thông tin cần thiết cho việc khai thác hay không và làm thế nào để giải quyết với sự dư thừa những thông tin không thích hợp này
• Dữ liệu lớn: Cho đến nay, các cơ sở dữ liệu với hàng trăm trường và
bảng, hàng triệu bản ghi và với kích thước đến gigabytes đã là chuyện bình thường Hiện nay đã bắt đầu xuất hiện các cơ sở dữ liệu có kích thước tới terabytes Các phương pháp giải quyết hiện nay là đưa ra một ngưỡng cho cơ
sở dữ liệu, lấu mẫu, các phương pháp xấp xỉ, xử lý song song (Agrawal et al, Holsheimer et al)
• Kích thước lớn: không chỉ có số lượng bản ghi lớn mà số các trường
trong cơ sở dữ liệu cũng nhiều Vì vậy mà kích thước của bài toán trở nên lớn hơn Một tập dữ liệu có kích thước lớn sinh ra vấn đề làm tăng không gian tìm kiếm mô hình suy diễn Hơn nữa, nó cũng làm tăng khả năng một giải thuật khai phá dữ liệu có thể tìm thấy các mẫu giả Biện pháp khắc phục là làm
Trang 21giảm kích thước tác động của bài toán và sử dụng các tri thức biết trước để xác định các biến không phù hợp
• Dữ liệu động: Đặc điểm cơ bản của hầu hết các cơ sở dữ liệu là nội
dung của chúng thay đổi liên tục Dữ liệu có thể thay đổi theo thời gian và việc khai phá dữ liệu cũng bị ảnh hưởng bởi thời điểm quan sát dữ liệu Ví dụ trong cơ sở dữ liệu về tình trạng bệnh nhân, một số giá trị dữ liệu là hằng số, một số khác lại thay đổi liên tục theo thời gian (ví dụ cân nặng và chiều cao), một số khác lại thay đổi tùy thuộc vào tình huống và chỉ có giá trị được quan sát mới nhất là đủ (ví dụ nhịp đập của mạch) Vậy thay đổi dữ liệu nhanh chóng có thể làm cho các mẫu khai thác được trước đó mất giá trị Hơn nữa, các biến trong cơ sở dữ liệu của ứng dụng đã cho cũng có thể bị thay đổi, bị xóa hoặc là tăng lên theo thời gian Vấn đề này được giải quyết bằng các giải pháp tăng trưởng để nâng cấp các mẫu và coi những thay đổi như là cơ hội để khai thác bằng cách sử dụng nó để tìm kiếm các mẫu bị thay đổi
• Các trường không phù hợp: Một đặc điểm quan trọng khác là tính
không thích hợp của dữ liệu, nghĩa là mục dữ liệu trở thành không thích hợp với trọng tâm hiện tại của việc khai thác Một khía cạnh khác đôi khi cũng liên quan đến độ phù hợp là tính ứng dụng của một thuộc tính đối với một tập con của cơ sở dữ liệu Ví dụ trường số tài khoản Nostro không áp dụng cho các tác nhân
• Các giá trị bị thiếu: Sự có mặt hay vắng mặt của giá trị các thuộc tính
dữ liệu phù hợp có thể ảnh hưởng đến việc khai phá dữ liệu Trong hệ thống tương tác, sự thiếu vắng dữ liệu quan trọng có thể dẫn đến việc yêu cầu cho giá trị của nó hoặc kiểm tra để xác định giá trị của nó Hoặc cũng có thể sự vắng mặt của dữ liệu được coi như một điều kiện, thuộc tính bị mất có thể được coi như một giá trị trung gian và là giá trị không biết
Trang 22Các trường bị thiếu: Một quan sát không đầy đủ cơ sở dữ liệu có thể
làm cho các dữ liệu có giá trị bị xem như có lỗi Việc quan sát cơ sở dữ liệu phải phát hiện được toàn bộ các thuộc tính có thể dùng để giải thuật khai phá
dữ liệu có thể áp dụng nhằm giải quyết bài toán Giả sử ta có các thuộc tính để phân biệt các tình huống đáng quan tâm Nếu chúng không làm được điều đó thì có nghĩa là đã có lỗi trong dữ liệu Đối với một hệ thống học để chuẩn đoán bệnh sốt rét từ một cơ sở dữ liệu bệnh nhân thì trường hợp các bản ghi của bệnh nhân có triệu chứng giống nhau nhưng lại có các chẩn đoán khác nhau là do trong dữ liệu đã bị lỗi Đây cũng là vấn đề thường xảy ra trong cơ
sở dữ liệu kinh doanh Các thuộc tính quan trọng có thể sẽ bị thiếu nếu dữ liệu không được chuẩn bị cho việc khai phá dữ liệu
Độ nhiễu và không chắc chắn: Đối với các thuộc tính đã thích hợp, độ
nghiêm trọng của lỗi phụ thuộc vào kiểu dữ liệu của các giá trị cho phép Các giá trị của các thuộc tính khác nhau có thể là các số thực, số nguyên, chuỗi và
có thể thuộc vào tập các giá trị định danh Các giá trị định danh này có thể sắp xếp theo thứ tự từng phần hoặc đầy đủ, thậm chí có thể có cấu trúc ngữ nghĩa
Một yếu tố khác của độ không chắc chắn chính là tính kế thừa hoặc độ chính xác mà dữ liệu cần có, nói cách khác là độ nhiễu crên các phép đo và phân tích có ưu tiên, mô hình thống kê mô tả tính ngẫu nhiên được tạo ra và được sử dụng để định nghĩa độ mong muốn và độ dung sai của dữ liệu Thường thì các mô hình thống kê được áp dụng theo cách đặc biệt để xác định một cách chủ quan các thuộc tính để đạt được các thống kê và đánh giá khả năng chấp nhận của các (hay tổ hợp các) giá trị thuộc tính Đặc biệt là với dữ liệu kiểu số, sự đúng đắn của dữ liệu có thể là một yếu tố trong việc khai phá
Ví dụ như trong việc đo nhiệt độ cơ thể, ta thường cho phép chênh lệch 0.1
độ Nhưng việc phân tích theo xu hướng nhạy cảm nhiệt độ của cơ thể lại yêu
Trang 23cầu độ chính xác cao hơn Để một hệ thống khai thác có thể liên hệ đến xu hướng này để chuẩn đoán thì lại cần có một độ nhiễu trong dữ liệu đầu vào
Mối quan hệ phức tạp giữa các trường: các thuộc tính hoặc các giá trị
có cấu trúc phân cấp, các mối quan hệ giữa các thuộc tính và các phương tiện phức tạp để diễn tả tri thức về nội dung của cơ sở dữ liệu yêu cầu các giải thuật phải có khả năng sử dụng một cách hiệu quả các thông tin này Ban đầu,
kỹ thuật khai phá dữ liệu chỉ được phát triển cho các bản ghi có giá trị thuộc tính đơn giản Tuy nhiên, ngày nay người ta đang tìm cách phát triển các kỹ thuật nhằm rút ra mối quan hệ giữa các biến này
1.1.7.2 Một số vấn đề khác
“Quá phù hợp” (Overfitting): Khi một giải thuật tìm kiếm các tham số
tốt nhất cho đó sử dụng một tập dữ liệu hữu hạn, nó có thể sẽ bị tình trạng
“quá độ” dữ liệu (nghĩa là tìm kiếm quá mức cần thiết gây ra hiện tượng chỉ phù hợp với các dữ liệu đó mà không có khả năng đáp ứng cho các dữ liệu lạ), làm cho mô hình hoạt động rất kém đối với các dữ liệu thử Các giải pháp khắc phục bao gồm đánh giá chéo (cross-validation), thực hiện theo nguyên tắc nào đó hoặc sử dụng các biện pháp thống kê khác
Đánh giá tầm quan trọng thống kê: Vấn đề (liên quan đến overfitting)
xảy ra khi một hệ thống tìm kiếm qua nhiều mô hình Ví dụ như nếu một hệ thống kiểm tra N mô hình ở mức độ quan trọng 0,001 thì với dữ liệu ngẫu nhiên trung bình sẽ có N/1000 mô hình được chấp nhận là quan trọng Để xử
lý vấn đề này, ta có thể sử dụng phương pháp điều chỉnh thống kê trong kiểm tra như một hàm tìm kiếm, ví dụ như điều chỉnh Bonferroni đối với các kiểm tra độc lập
Khả năng biểu đạt của mẫu: Trong rất nhiều ứng dụng, điều quan
trọng là những điều khai thác được phải cáng dễ hiểu với con người càng tốt
Vì vậy, các giải pháp thường bao gồm việc diễn tả dưới dạng đồ họa, xây dựng
Trang 24cấu trúc luật với các đồ thị có hướng (Gaines), biểu diễn bằng ngôn ngữ tự nhiên (Matheus et al.) và các kỹ thuật khác nhằm biểu diễn tri thức và dữ liệu
Sự tương tác với người sử dụng và các tri thức sẵn có: rất nhiều công
cụ và phương pháp khai phá dữ liệu không thực sự tương tác với người dùng
và không dễ dàng kết hợp cùng với các tri thức đã biết trước đó Việc sử dụng tri thức miền là rất quan trọng trong khai phá dữ liệu Đã có nhiều biện pháp nhằm khắc phục vấn đề này như sử dụng cơ sở dữ liệu suy diễn để phát hiện tri thức, những tri thức này sau đó được sử dụng để hướng dẫn cho việc tìm kiếm khai phá dữ liệu hoặc sử dụng sự phân bố và xác suất dữ liệu trước đó như một dạng mã hóa tri thức có sẵn
1.2 Tổng quan về gian lận BHYT trong kê đơn cấp thuốc
1.2.1 Giới thiệu chung
Theo Luật Bảo hiểm y tế, chính phủ thống nhất quản lý nhà nước về BHYT Trong đó trách nhiệm của các Bộ, ngành liên quan gồm:
Bộ Y tế được giao quản lý nhà nước, thực hiện các chính sách về lĩnh vực y tế
Bộ Tài chính phối hợp với Bộ Y tế, xây dựng chính sách, pháp luật
về tài chính liên quan đến bảo hiểm y tế, thanh tra, kiểm tra việc thực hiện các quy định của pháp luật về chế độ tài chính đối với bảo hiểm y tế, quỹ BHYT
Bảo hiểm y tế là hình thức bảo hiểm được áp dụng trong lĩnh vực chăm sóc sức khỏe, không vì mục đích lợi nhuận, do Nhà nước tổ chức thực hiện và các đối tượng có trách nhiệm tham gia với nguyên tắc:
Chia sẻ rủi ro giữa những người tham gia BHYT
Mức hưởng BHYT theo mức độ bệnh tật, nhóm đối tượng trong phạm vi quyền lợi của người tham gia BHYT
Trang 251.2.2 Các hình thức gian lận trong y tế
Có nhiều hình thức gian lận và lạm dụng trong gian lận y tế Chủ yếu là những hình thức như sau:
- Gian lận y tế từ nhà cung cấp trang thiết bị, thuốc điều trị
- Gian lận y tế từ các nhà cung cấp chăm sóc y tế, các cơ sở khám chữa bệnh, nhân viên y tế
- Gian lận từ người tham gia thụ hưởng bảo hiểm: giả mạo giấy tờ, cho người khác mượn giấy tờ liên quan khi đi khám chữa bệnh
1.2.3 Gian lận trong kê đơn, cấp thuốc BHYT
Gian lận trong kê đơn, cấp thuốc BHYT là cố tình kê sai, kê lạm dụng
để lấy thuốc được thực hiện bởi một người hoặc nhiều người làm tổn thất về tài chính cho nhà nước và các cơ sở khám chữa bệnh Thực tế tình hình lạm dụng và gian lận bảo hiểm y tế ở Việt Nam hiện đang diễn ra hàng ngày tại các cơ sở khám chữa bệnh dưới nhiều hình thức khác nhau, hiện chưa có một công cụ hữu hiệu cũng như chính sách rõ rang trong việc kiểm soát cũng như phát hiện gian lận
1.2.4 Chức năng, nhiệm vụ của cơ quan Bảo hiểm trong y tế:
- Giám định bảo hiểm y tế
- Thanh toán chi phí khám bệnh, chữa bệnh BHYT
1.3 Khai phá dữ liệu bằng luật kết hợp
1.3.1 Lý thuyết về luật kết hợp
Một trong những chủ đề phổ biến của KPDL là khám phá luật kết hợp Mục đích của khám phá luật kết hợp là xác định mối quan hệ, sự kết hợp giữa các item trong một CSDL lớn Luật kết hợp là một luật dạng X
=> Y, với X, Y là tập các item Một luật kết hợp được gọi là mạnh, nếu nó thoả độ hỗ trợ và thoả độ tin cậy tối thiểu
Trang 26
D
T X D
Có nhiều thuật toán để khai phá luật kết hợp theo từng loại luật Trong luận văn này em sẽ nghiên cứu một trong những thuật toán thường gặp nhất là thuật toán Apriori và FP-growth
Ứng dụng khai phá kết hợp là một trong những ứng dụng quan trọng của khai phá dữ liệu Luật kết hợp được giới thiệu đầu tiên vào năm 1993, được sử dụng để xác định các mối quan hệ giữa các tập thuộc tính trong CSDL Việc xác định các quan hệ này không được dựa vào các đặc tính dữ liệu vốn có của chúng (như các phụ thuộc hàm), mà nên dựa vào sự xuất hiện cùng lúc của các thuộc tính dữ liệu
1.3.2 Định nghĩa luật kết hợp
Một luật kết hợp có dạng R: X => Y, trong đó, X, Y là các tập mục, X,Y I và X∩Y=
X được gọi là tiền đề và
Y được gọi là hệ quả của luật
Kí hiệu support(X) (hoặc sup(X), s(X)) là tỷ lệ phần trăm của các giao dịch hỗ trợ X trên tổng các giao dịch trong D, nghĩa là:
Trang 27 Độ hỗ trợ tối thiểu minsup là một giá trị cho trước bởi người sử dụng
Nếu tập mục X có sup(X) minsup thì ta nói X là một tập các mục phổ biến
Một luật kết hợp có dạng R: X => Y, trong đó X, Y là tập các mục, X,
Y I và X Y =
+) X được gọi là tiên đề
+) Y được gọi là hệ quả của luật
Luật X => Y tồn tại một độ tin cậy confidence (c/conf) Độ tin cậy c được định nghĩa là khả năng giao dịch T hỗ trợ X thì cũng hỗ trợ Y Ta có công thức tính độ tin cậy c như sau:
)sup(
)(
)TX(
X
Y X T
X p
T Y
Bài toán 1: Tìm tất cả các tập mục mà có độ hỗ trợ lớn hơn độ hỗ trợ
tối thiểu do người dùng xác định Các tập mục thoả mãn độ hỗ trợ tối thiểu được gọi là các tập mục phổ biến
Bài toán 2: Dùng các tập mục phổ biến để sinh ra các luật mong muốn
Ý tưởng chung là nếu gọi ABCD và AB là các tập mục phổ biến, thì chúng ta
có thể xác định luật nếu AB => CD giữ lại với tỷ lệ độ tin cậy:
) sup(
) sup(
AB
ABCD conf
(2.3) Nếu conf ≥ minconf thì luật được giữ lại (luật này sẽ thoả mãn độ hỗ trợ tối thiểu vì ABCD là phổ biến)
Trang 28Điều này là rõ ràng vì tất cả các giao tác của D hỗ trợ B thì cũng hỗ trợ A
Tính chất 2: Một tập chứa một tập không phổ biến thì cũng là tập
không phổ biến
Nếu một mục trong B không có độ hỗ trợ tối thiểu trên D nghĩa là
sup(B)< minsup thì một tập con A của B sẽ không phải là một tập phổ biến vì
sup(B) sup(A) < minsup (theo tính chất 1)
Tính chất 3: Các tập con của tập phổ biến cũng là tập phổ biến
Nếu mục B là mục phổ biến trên D, nghĩa là sup(B) minsup thì mọi tập con A của B là tập phổ biến trên D vì sup(A) sup(B) > minsup
1.4.2 Với luật kết hợp (4 tính chất sau)
Tính chất 1: (Không hợp các luật kết hợp)
Nếu có XZ và YZ trong D thì không nhất thiết XYZ là đúng Xét trường hợp X Z = và các tác vụ trong D hỗ trợ Z nếu và chỉ nếu chúng hỗ trợ mỗi X hoặc Y, khi đó luật XYZ có độ hỗ trợ 0%
Tương tự : XY XZ XYZ
Tính chất 2: (Không tách luật)
Nếu XYZ thì XZ và YZ chưa chắc xảy ra
Ví dụ trường hợp Z có mặt trong một giao tác chỉ khi cả hai X và Y cũng có mặt, tức là sup(XY)= sup(Z), nếu độ hỗ trợ của X và Y đủ lớn hơn sup(XY), tức là sup(X) > sup(XY) và sup(Y) > sup(XY) thì hai luật riêng biệt sẽ không đủ độ tin cậy
Tuy nhiên đảo lại: XYZ XY XZ
Tính chất 3: (Các luật kết hợp không có tính bắc cầu)
Nếu XY và YZ, chúng ta không thể suy ra XZ
Ví dụ: giả sử T(X) T(Y) T(Z), ở đó T(X), T(Y), T(Z) tương ứng là các giao dịch chứa X,Y,Z, và độ tin cậy cực tiểu minconf
Trang 29conf(XY) =conf(YZ)=minconf thế thì: conf(XY) =minconf2 < minconf vì minconf < 1, do đó luật XZ không đủ độ tin cậy
Tính chất 4:
Nếu A(L - A) không thoả mãn độ tin cậy cực tiểu thì luật
B (L -B) cũng không thoả mãn, với các tập mục L,A,B và B A L
Vì supp(B) sup(A) (theo tính chất 1) và định nghĩa độ tin cậy, chúng
ta nhận được: conf(B (L-B)) = sup( )
) sup(
) sup(
) sup(
A
L B
L
< minconf Cũng như vậy: Nếu có (L-C) C thì ta cũng có luật (L – D)D, với DC và D
Bởi vì DC nên (L - D) (L - C), do đó sup(L - D) sup(L-C)
sup( )
) sup(
) sup(
) sup(
C L
L D
Trang 30Chương 2 GIẢI THUẬT APRIORI VÀ FP-GROWTH
TRONG KHAI PHÁ DỮ LIỆU 2.1 Thuật toán Apriori
Giới thiệu bài toán:
Bài toán được phát biểu: Tìm t có độ hỗ trợ s thỏa mãn s s0 và độ tin cậy c c0 (s 0 , c 0 là hai ngưỡng do người dùng xác định và s0=minsupp, c0
=minconf) Ký hiệu :
Lk tập các tập k - mục phổ biến,
Ck tập các tập k-mục ứng cử (cả hai tập có: tập mục và độ hỗ trợ) Bài toán đặt ra là:
1) Tìm tất cả các tập mục phổ biến với minsup nào đó
2) Sử dụng các tập mục phổ biến để sinh ra các luật kết hợp với độ tin cậy minconf nào đó
Quá trình thực hiện (duyệt):
1) Thực hiện nhiều lần duyệt lặp đi lặp lại, trong đó tập (k-1) - mục được sử dụng cho việc tìm tập k-mục Lần thứ nhất tìm tất cả các độ hỗ trợ của các mục, xác định mục phổ biến (mục thoả mãn độ hỗ trợ cực tiểu-minsup) Giả sử tìm được L1-mục phổ biến
2) Các lần duyệt còn lại: Bắt đầu kết quả tìm được bước trước nó, sử dụng các tập mục mẫu (L1) sinh ra các tập mục phổ biến tiềm năng (ứng cử)(giả sử L2), tìm độ hỗ trợ thực sự Mỗi lần duyệt ta phải xác định tập mục mẫu cho lần duyệt tiếp theo
3) Thực hiện lặp để tìm L3, , Lk cho đến khi không tìm thấy tập mục phổ biến nào nữa
Trang 31Chú ý:
Ứng dụng Lk-1 để tìm Lk bao gồm hai bước chính:
1) Bước kết nối: tìm Lk là tập k-mục tương ứng được sinh ra bởi việc kết nối L k-1 với chính nó cho kết quả là C k Giả sử L1, L2 thuộc Lk-1 Ký hiệu Lij là mục thứ j trong Li Điều kiện là các tập mục hay các mục trong
Thuật toán Apriori
Các kí hiệu:
Lk: Tập các k-mục phổ biến (large k-itemset) (tức tập các itemset có sup tối thiểu và có lực lượng bằng k)
Mỗi phần tử của tập này có 2 trường: itemset và support-count
Ck: Tập các candidate k-itemset (tập các tập k-mục ứng cử viên) Mỗi phần tử trong tập này cũng có 2 trường itemset và support-count
Nội dung thuật toán Apriori được trình bày như sau:
Input: Tập các giao dịch D, ngưỡng support tối thiểu minsup
Output: L- tập mục phổ biến trong D
Trang 32Ck=apriori-gen(Lk-1); //sinh ra tập ứng cử viên từ Lk-1
for (mỗi một giao dịch TD) do
begin
CT = subset(Ck, T); //lấy tập con của T là ứng cử viên trong Ck
for (mỗi một ứng cử viên c CT) do
c.count++; //tăng bộ đếm tần xuất 1 đơn vị
chỉ giữ lại các mục (item) mà sup của nó lớn hơn hoặc bằng minsup
+) Trong các giai đoạn thứ k sau đó (k>1), mỗi giai đoạn gồm có 2 pha Trước hết các large(k-1)-itemset (tập k-1- mục phổ biến) trong tập Lk-1được
sử dụng để sinh ra các candidate itemset (tập ứng cử viên) Ck, bằng cách thực hiện hàm Apriori_gen
+) Tiếp theo CSDL D sẽ được quét để tính support cho mỗi ứng viên
trong Ck Để việc đếm được nhanh, cần phải có một giải pháp hiệu quả để xác định các ứng viên trong Ck là có mặt trong một giao dịch T cho trước
Vấn đề sinh tập candidate (tập ứng cử) của Apriori – Hàm Apriori_gen: Hàm Apriori_gen với đối số là Lk-1(tập các large(k-1)-itemset) sẽ cho lại kết quả là một superset, tập của tất cả các large k – itemset Sơ đồ sau là thuật toán cho hàm này
Input: tập mục phổ biến Lk-1 có kích thước k-1
Output: tập ứng cử viên Ck
Method:
Trang 33function apriori-gen(Lk-1: tập mục phổ biến có kích thước k-1)
Begin
For (mỗi L1 Lk-1) doa
For (mỗi L2 Lk-1) do begin
If ((L1[1]=L2[1]) (L1[2]=L2[2]) (L1[k-2]=L2[k-2])
(L1[k-1]=L2[k-1])) then
c = L1 L2; // kết nối L1 với L2 sinh ra ứng cử viên c
If has_infrequent_subset(c, Lk-1) then //có tập con ko pổ
biến của c trong Lk-1 remove (c) // bước tỉa (xoá ứng cử viên c)
else Ck = Ck {c}; kết tập c vào Ck
end;
Return Ck;
End;
Với nội dung trên, ta thấy hàm này có 2 bước:
- Bước nối (join step)
- Bước cắt tỉa (prune step)
Hàm Subset (trong bước tỉa) Các tập ứng cử viên Ck được lưu trữ
trong một cây băm
+) Nút lá của cây băm chứa danh sách một tập mục và đếm
+) Các nút trong chứa ở trong bảng băm
2.2 Thuật toán PP-growth
Thuật toán kinh điển Apriori tìm tập mục phổ biến thực hiện tốt bởi rút gọn kích thước các tập ứng cử nhờ kỹ thuật tỉa Tuy nhiên, trong tình huống
mà số các mẫu nhiều, mẫu dài hoặc độ hỗ trợ cực tiểu thấp, các thuật toán Apriori gặp phải 2 chi phí lớn:
Trang 34Chi phí cho số lượng khổng lồ các tập ứng cử Ví dụ: nếu có 104 tập mục phổ biến thì thuật toán Apriori sẽ cần sinh ra hơn 107 các ứng cử 2-mục
1-và thực hiện kiểm tra sư xuất hiện của chúng Hơn nữa, để khám phá được một số mẫu phổ biến kích thước (độ dài) là l, thuật toán phải kiểm tra (2l-2 ) các mẫu phổ biến tiềm năng Ví dụ l=100, chẳng hạn là {a1,a2, ,a100}, nó phải sinh ra tổng số 2100 1030 các ứng cử (đây chính là số tập con của tập có
100 phần tử)
Đòi hỏi lặp lại nhiều lần duyệt CSDL để kiểm tra tập rất lớn các ứng
cử Số lần duyệt CSDL của thuật toán Apriori bằng độ dài của mẫu phổ biến dài nhất tìm được Trong trường hợp mẫu phổ biến dài hơn và CSDL lớn, có nhiều bản ghi, điều này là không thể thực hiện được Thuật toán Apriori chỉ thích hợp cho các CSDL thưa (sparse), với các CSDL dày (dense) thì thuật toán thực hiện kém hiệu quả hơn
Thuật toán mới xuất hiện gần đây có tên là FP-growth được giới thiệu bởi Jiawei Hai Jian Pei và Yiwen Yin năm 2000, sẽ khắc phục được các nhược điểm nêu trên Thuật toán tìm các tập phổ biến hiệu qủa hơn thuật toán Apriori bằng việc sử dụng một kỹ thuật khác không cần sinh các ứng cử Sự hiệu quả của khai phá nhận được với 3 kỹ thuật chính:
Thứ nhất, nó mở rộng của cấu trúc cây prefix (prefix tree), được gọi là
cây mẫu phổ biến (frequent pattern tree hoặc gọi tắt là FP- tree) dùng để nén
dữ liệu thích hợp Chỉ có các mục độ dài l (l-item) ở trong cây và các nút của cây được sắp đặt để các nút xuất hiện thường xuyên hơn có thể dễ dàng chia
sẻ với các nút xuất hiện ít hơn CSDL lớn được nén chặt tới cấu trúc dữ liệu nhỏ hơn (FP-tree), tránh được chi phí lặp lại duyệt qua CSDL
Thứ hai, phương pháp khai phá phát triển (growth) từng đoạn dựa trên
Fp-tree gọi là phương pháp FP – growth đã được thực hiện Bắt đầu từ mẫu phổ biến độ dài 1, FP-growth chỉ xem xét cơ sở mẫu phụ thuộc của nó
Trang 35(condition pattern base) như là CSDL con (sub-database) bao gồm tập các mục phổ biến cùng xuất hiện với mẫu hậu tố (suffix pattern), xây dựng condition FP-tree tương ứng của nó và thực hiện khai phá đệ qui trên cây này Mẫu phát triển là nhận được qua việc nối mẫu hậu tố (suffix pattern) với một đoạn mẫu được sinh ra từ condition FP-tree Khai phá dựa trên FP-tree được thực hiện theo cách phát triển (growth) các đoạn mẫu để tránh chi phí cho việc sinh ra số lượng lớn các tập ứng cử
Thứ ba, kỹ thuật tìm kiếm được dùng ở đây là dựa vào sự phân chia và
chế ngự (divide-and-conquer method) để phân rã nhiệm vụ khai phá thành tập các nhiệm vụ nhỏ hơn với giới hạn các mẫu trong các CSDL nhằm thu gọn không gian tìm kiếm
Phương pháp FP-growth đã chứng tỏ được tính hiệu quả của nó và thể hiện khai phá cho cả các mẫu ngắn và dài, nhanh hơn thuật toán Apriori, luôn chỉ cần duyệt CSDL 2 lần:
- Đầu tiên, thuật toán duyệt CSDL lần thứ nhất để tính độ hỗ trợ của
các tập mục (đếm số lần xuất hiện của từng mục)
- Tiếp đến, những mục không đủ độ hỗ trợ bị loại Các mục còn lại được sắp theo thứ tự giảm dần của độ hỗ trợ (cũng tức là giảm dần theo số lần xuất hiện trong CSDL), ta nhận được danh sách L các mục đã sắp
- Duyệt CSDL lần thứ 2, với mỗi tác vụ t, loại các mục không đủ độ
hỗ trợ, các mục còn lại theo thứ tự giống như xuất hiện trong L (tức là thứ tự giảm dần theo độ hỗ trợ) được đưa vào cây FP-tree
- Phần tiếp theo thuật toán khai phá tìm các mẫu phổ biến trên cây FP-tree đã xây dựng mà không cần duyệt lại CSDL nữa
2.3 Cấu trúc cây FP-Tree
Cây FP (còn gọi là FP-Tree) là cấu trúc dữ liệu dạng cây được tổ chức như sau: Nút gốc (root) được gán nhãn “null”; Mỗi nút còn lại chứa các
Trang 36thông tin: item-name, count, node-link Trong đó:
+ Item-name: Tên của mục mà nút đó đại diện
+ Count: Số giao dịch có chứa mẫu bao gồm các mục duyệt từ nút gốc đến nút đang xét
+ Node-link: Chỉ đến nút kế tiếp trong cây (hoặc trỏ đến null nếu nút đang xét là nút lá)
Bảng Header có số dòng bằng số mục Mỗi dòng chứa 3 thuộc tính: item-name, item-count, node-link Trong đó:
+ Item-name: Tên của mục
+ Item-count: Tổng số biến count của tất cả các nút chứa mục đó
+ Node-link: Trỏ đến nút sau cùng được tạo ra để chứa mục đó trong cây
2.4 Xây dựng cây FP-Tree
Cây FP có thể xây dựng từ cơ sở dữ liệu giao dịch D thông qua thủ tục sau:
Input: Cơ sở dữ liệu giao dịch D Ngưỡng min-sup
Sắp các item trong P theo trật tự L;
Trang 38F = F ∪ p;
} }
else
for each ai in the header of Tree
{
Phát sinh mẫu β = ai α; ∪support_count(β)=ai.support_count;
F = F ∪ β;
Xây dựng cơ sở có điều kiện của β;
Xây dựng FP-Tree có điều kiện Treeβ của β;
if (Treeβ != ϕ) then Call FP_Growth(Treeβ, β);
}
}
Trang 39T06 I2, I3
T07 I1, I3T08 I1, I2, I3, I5T09 I1, I2, I3
Trước tiên cây FP sẽ được xây dựng dần dần qua các bước Các giao dịch sẽ lần lượt được xét và các mục tương ứng được thêm vào cây
Lần duyệt thứ nhất: Tìm các tập mục có độ dài 1 và sắp xếp chúng theo danh sách với trật tự giảm dần theo tần số xuất hiện Loại bỏ các tập mục có
độ hỗ trợ nhỏ hơn ngưỡng min_sup để thu được danh sách:
L={{I2:7}, {I1:6}, {I3:6}, {I4:2}, {I5:2}}
Lần duyệt thứ hai: Xây dựng dần cây FP qua các bước Các mục trong mỗi giao dịch được xử lý theo trật tự trong L