Khai phá dữ liệu phức tạp được hưởng lợi từ kinh nghiệm trong quá khứ và các thuật toán đã định nghĩa với phần mềm và các gói phần mềm hiện có, với các công cụ nhất định để thu được một
Trang 1Tôi cũng xin gửi lời cảm ơn đến tất cả các Thầy Cô đang làm việc tại Phòng khám đa khoa trường Cao đẳng Y tế Phú Thọ đã tận tình giúp đỡ trong việc thu thập thông tin, lấy số liệu về bệnh và thuốc làm cơ sở dữ liệu cho luận văn
Sau cùng tôi xin gửi lời biết ơn sâu sắc đến các anh chị trong lớp và gia đình đã luôn tạo điều kiện tốt nhất cho tôi trong suốt quá trình học cũng như thực hiện luận văn
Do thời gian có hạn và kinh nghiệm nghiên cứu khoa học chưa nhiều nên luận văn còn nhiều thiếu sót, rất mong nhận được ý kiến góp ý của Thầy/Cô và các anh chị học viên
Phú Thọ, tháng 7 năm 2015
Trang 2
Lời cam đoan
Tôi cam đoan những kết quả trong luận văn là của việc tìm hiểu, có trích dẫn và tham chiếu đến các nguồn tư liệu tin cậy Nội dung luận văn không sao chép từ các kết quả của các luận văn, luận án khác
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 TỪ VIẾT TẮT v
DANH MỤC CÁC BẢNG, HÌNH VẼ vi
MỞ ĐẦU 1
CHƯƠNG 1 6
TỔNG QUAN VỀ PHÁT HIỆN MỐI QUAN HỆ GIỮA CÁC DỮ LIỆU TRONG CƠ SỞ DỮ LIỆU 6
1 1 Mục tiêu của việc phát hiện mối quan hệ giữa các dữ liệu 6
1 2 Các bước chính của quá trình khai phá tri thức 6
1 3 Các dạng dữ liệu có thể khai phá 7
1 4 Các hướng tiếp cận chính trong khai phá dữ liệu 8
1 5 Phân loại và ứng dụng các hệ thống khai phá dữ liệu 11
1 5 1 Phân loại các hệ thống khai phá dữ liệu 11
1 5 2 Ứng dụng của khai phá dữ liệu 11
1 6 Kết luận chương 12
CHƯƠNG 2 13
MỘT SỐ MỐI QUAN HỆ DỮ LIỆU ĐƯỢC PHÁT HIỆN THÔNG QUA NGÔN NGỮ TRUY VẤN 13
2 1 Luật kết hợp 13
2 1 1 Các khái niệm cơ bản 13
2 1 2 Bài toán khai phá luật kết hợp 16
2 2 Khai thác tập phổ biến dựa trên ngôn ngữ truy vấn 17
2 2 1 Ngôn ngữ truy vấn 17
2 2 2 Tìm tập phổ biến bằng K-way join 19
2 2 3 Kết quả thử nghiệm 3 phương pháp đếm độ hỗ trợ 26
Trang 42 2 4 Phân tích các cải tiến của thuật toán k-way join 31
2 2 5 Phát sinh luật kết hợp 36
2 2 6 Rút ngọn luật kết hợp 40
2 3 Kết luận chương 47
CHƯƠNG 3 48
ỨNG DỤNG TRONG TÍNH TOÁN THỬ NGHIỆM 48
3 1 Các bài toán 48
3 1 1 Bài toán tìm luật kết hợp dạng X Y 48
3 1 2 Bài toán tìm độ hỗ trợ và độ tin cậy của luật 49
3 1 3 Bài toán đánh giá độ tin cậy của luật theo ngưỡng 50
3 1 5 Giải pháp giúp thực hiện các bài toán 51
3 2 Chương trình thử nghiệm 53
3 2 1 Cơ sở dữ liệu của bài toán 54
3 2 2 Kết quả khai phá dữ liệu khi thực hiện các bài toán 55
3 3 Kết luận chương 61
KẾT LUẬN 63
PHỤ LỤC 64
TÀI LIỆU THAM KHẢO 71
Trang 5DANH MỤC CÁC TỪ VIẾT TẮT
cơ sở dữ liệu
Trang 6DANH MỤC CÁC BẢNG, HÌNH VẼ
Hình Thí dụ về xử lí dữ liệu y tế tại trường Cao đẳng Y tế Phú Thọ 2
Hình 1 1: Các bước trong quá trình khai phá tri thức 6
Hình 1 2: Các kiến trúc khai phá tích hợp với cơ sở dữ liệu 9
Hình 1 3: Kiến trúc gắn kết lỏng 9
Hình 1 4: Kiến trúc thủ tục nội và hàm do người dùng định nghĩa 10
Hình 1 5: Kiến trúc dựa trên truy vấn SQL 10
Hình 2 1: Minh họa luật kết hợp 15
Bảng 2 1: Cấu trúc bảng ban đầu 20
Bảng 2 2: Cấu trúc bảng dùng để khai khác 20
Hình 2 2: Tiến trình phát sinh tập ứng viên Ck 22
Hình 2 2: Đếm độ hỗ trợ bằng cách tiếp cận K-way Join 23
Hình 2 3: Biểu đồ hình cây cho Sub Query Qi 25
Hình 2 4: Đồ thị thời gian thực thi của 3 thuật toán khi minsup=10% và D=100000 27 Hình 2 5: Đồ thị thời gian thực thi 3 thuật toán khi minsup=10% và D=50000 27
Hình 2 7: Đồ thị thời gian thực thi của 3 thuật toán khi minsup=10% và D=10000 28
Hình 2 6: Đồ thị tổng hợp thời gian thực thi của 3 thuật toán khi minsup lớn 28
Hình 2 7: Đồ thị thời gian thực thi 3 thuật toán khi minsup=5% và D=100000 29
Hình 2 8: Đồ thị thời gian thực thi 3 thuật toán khi minsup=5% và D=50000 29
Hình 2 9: Đồ thị thời gian thực thi 3 thuật toán khi minsup=5% và D=10000 29
Hình 2 10: Đồ thị tổng hợp thời gian thực thi 3 thuật toán khi minsup trung bình 29
Hình 2 11: Đồ thị thời gian thực thi 3 thuật toán khi minsup = 1% và D = 100000 30
Hình 2 12: Đồ thị thời gian thực thi 3 thuật toán khi minsup = 1% và D= 50000 30
Hình 2 13: Đồ thị thời gian thực thi của 3 thuật toán khi minsup =1% và D=10000 30
Hình 2 154: Đồ thị tổng hợp thời gian thực thi của 3 thuật toán khi minsup nhỏ 31
Trang 7Bảng 2 3: Cơ sở dữ liệu ban đầu D 42
Bảng 2 4: Cơ sở dữ liệu sau khi chuyển đổi 42
Bảng 2 5: Kết quả F1 43
Bảng 2 6: Kết quả F2 43
Bảng 2 7: Kết quả C3 44
Bảng 2 8: Kết quả Comb3 45
Bảng 2 9: Kết quả F3 45
Bảng 2 10: Kết quả C4 46
Bảng 2 11: Kết quả Comb4 46
Bảng 2 12: Kết quả F4 47
Bảng 2 13 Kết quả 47
Bảng 3 1 Cấu trúc bảng dữ liệu ban đầu 52
Bảng 3 2 Cấu trúc bảng dùng để khai phá dữ liệu 53
Hình 3 1 Mẫu đơn thuốc của Phòng khám đa khoa Trường cao đẳng Y Phú Thọ 54
Hình 3 2 Minh họa cấu trúc dữ liệu ban đầu 54
Hình 3 3 Cấu trúc dữ liệu dùng để khai phá 55
Hình 3 4 Tính độ hỗ trợ và độ tin cậy của luật {Cefalecin} => {Paracetamol} 57
Hình 3 5 Tính độ hỗ trợ và độ tin cậy của một luật {Decolgen}=>{Vitamin C} 58
Hình 3.6 Đánh giá độ tin cậy của luật {Decolgen}=>{Vitamin B1} 61
Hình 3.7 Đánh giá độ tin cậy của luật {Cefalecin}=>{Vitamin C} 61
Hình PL1: Minh họa dữ liệu đầu vào 64
Trang 8MỞ ĐẦU
1 Lý do chọn đề tài
Theo [1] người ta thấy với sự phát triển rất mạnh mẽ về công nghệ lưu trữ,
và khả năng đáp ứng của máy tính đã cho phép ta lưu trữ và xử lý khối lượng dữ liệu khổng lồ Hầu hết các tổ chức, cơ quan đang lưu trữ dữ liệu theo thời gian Kết quả là, sau một thời gian dài, lượng dữ liệu ngày càng nhiều Tuy nhiên, những nhà quản lý lại chưa chú tâm lắm về giá trị tiềm ẩn bên trong khối dữ liệu này Những tri thức có ích ẩn bên trong đó không dễ dàng để lấy hay rút trích ra Ngày này, tính cạnh trạnh trên thị trường rất cao, đòi hỏi người ra quyết định cần phải đưa ra quyết định, chính sách một cách thận trọng, chính xác và hiệu quả Những thông tin để giúp cho họ đạt hiệu quả hơn trong việc ra quyết định có thể được phân tích, rút trích từ những dữ liệu lưu trữ hiện tại (dữ liệu thô)
Khai phá dữ liệu sẽ giúp ta giải quyết được vấn đề trên Công việc khai phá
sẽ phân tích, rút trích một cách tự động thông tin trong khối dữ liệu lớn nhằm tóm tắt dữ liệu theo cách mới để tiện cho người dùng khai phá, tìm ra các mẫu mới, những mối liên hệ và những dự đoán, xu hướng thông tin trong tương lai
Về cơ bản, khai phá dữ liệu là về xử lý dữ liệu và nhận biết các mẫu và các
xu hướng trong thông tin đó để bạn có thể quyết định hoặc đánh giá Các nguyên tắc khai phá dữ liệu đã được dùng nhiều năm rồi, nhưng với sự ra đời của big data (dữ liệu lớn), nó lại càng phổ biến hơn
Những nhu cầu hướng kinh doanh này đã thay đổi cách lấy ra và thống kê dữ liệu đơn giản sang việc khai phá dữ liệu phức tạp hơn Vấn đề kinh doanh hướng tới việc xem xét dữ liệu để giúp xây dựng một mô hình để mô tả các thông tin mà cuối cuộc sẽ dẫn đến việc tạo ra báo cáo kết quả
Trang 9Hình Thí dụ về xử lí dữ liệu y tế tại trường Cao đẳng Y tế Phú Thọ
Quá trình phân tích dữ liệu, khám phá dữ liệu và xây dựng mô hình dữ liệu thường lặp lại khi bạn tập trung vào và nhận ra các thông tin khác nhau để bạn có thể trích ra Bạn cũng phải hiểu cách thiết lập quan hệ, ánh xạ, kết hợp và phân cụm thông tin đó với dữ liệu khác để tạo ra kết quả Quá trình nhận ra dữ liệu nguồn và các định dạng nguồn, rồi ánh xạ thông tin đó tới kết quả đã cho của chúng tôi có thể thay đổi sau khi bạn phát hiện ra các yếu tố và các khía cạnh khác nhau của dữ liệu
Khai phá dữ liệu không phải là tất cả về các công cụ hay phần mềm cơ sở dữ liệu mà bạn đang sử dụng Bạn có thể thực hiện khai phá dữ liệu bằng các hệ thống
cơ sở dữ liệu bình thường và các công cụ đơn giản, bao gồm việc tạo và viết phần mềm riêng của bạn hoặc sử dụng các gói phần mềm bán ngoài cửa hàng Khai phá
dữ liệu phức tạp được hưởng lợi từ kinh nghiệm trong quá khứ và các thuật toán đã định nghĩa với phần mềm và các gói phần mềm hiện có, với các công cụ nhất định
để thu được một mối quan hệ hoặc uy tín lớn hơn bằng các kỹ thuật khác nhau
Liên quan đến xử lí dữ liệu trong các bài toán với dữ liệu lớn, trên các hệ quản trị cơ sở dữ liệu như Oracle, DB2, người ta đã sử dụng tiếp cận nối K-way join [10] để tăng tốc độ xử lí dữ liệu, và để thuận tiện cho việc phát hiện các mối quan
hệ giữa các dữ liệu, chẳng hạn như luật kết hợp Do đó, tôi đã chọn đề tài về xử lí
Trang 10dữ liệu y tế, trong cơ sở dữ liệu về y tế tại trường Cao đẳng Y tế Phú Thọ áp dụng kĩ thuật của tiếp cận K-way join để phát hiện các mối quan hệ
Trong luận văn này, tôi sử dụng ngôn ngữ truy vấn SQL và chọn cách tiếp
cận K-way join làm trọng tâm để đưa ra được các tri thức về thuốc theo nhiều bệnh
lý khác nhau nhằm hỗ trợ cho y, bác sỹ và người quản lý trong công việc khám chữa bệnh, kinh doanh dược Dựa trên bài toán đề ra, tôi đã tính toán một bài toán thực tế lấy dữ liệu từ các đơn thuốc của phòng khám trường Cao đẳng Y tế Phú Thọ, đơn thuốc mẫu trong các tài liệu giáo trình của nhà trường theo các bệnh khác nhau
2 Tính thực tiễn của đề tài
Y học là môn khoa học không ngừng phát triển Tiếp cận và cập nhật hóa thông tin y học từ những cơ sở dữ liệu, để nâng cao chất lượng chăm sóc sức khỏe cho nhân dân là điều không thể thiếu trong thực hành lâm sàng Với sự phát triển mạnh mẽ của ngành Công nghệ thông tin, một trong những ngành mũi nhọn của nhiều quốc gia trên thới giới Sự phát triển vượt bậc đó là kết quả tất yếu của việc ứng dụng của nó trong nhiều lĩnh vực khác nhau trong cuộc sống như: giáo dục, y
tế, kinh tế, khoa học, xây dựng nó đã trở thành một phần không thể thiếu được trong cuộc sống hàng ngày của con người Trong kỷ nguyên bùng nổ thông tin, việc áp dụng các phương pháp tìm kiếm thông tin từ những nguồn dữ liệu khác nhau là nhu cầu thiết thực cho toàn xã hội Trong các phương pháp tìm kiếm thông tin đó, khai phá dữ liệu để tìm ra tri thức, phục vụ đời sống xã hội là một phương pháp mới, đang được các nhà nghiên cứu khoa học quan tâm Tuy nhiên, khai phá dữ liệu trong lĩnh vực y học ở nước ta quả thật còn rất ít, gặp nhiều khó khăn, do hiện nay nhiều bệnh viện ở nước ta chưa có bệnh án điện tử Việc khai phá trong lĩnh vực này thực sự mang lại nhiều ý nghĩa cho y học để hỗ trợ cho các bác sĩ kê đơn, chẩn đoán bệnh sớm và điều trị bệnh có hiệu quả, giảm bớt tử vong cũng như chi phí điều trị, đây là một nhu cầu thiết thực trong các bệnh viện Xuất phát từ những thực tế trên, tôi đã chọn đề tài “Phát hiện mối quan hệ trong cơ sở dữ liệu và ứng dụng trong y học” để nghiên cứu cho luận văn thạc sĩ của mình
3 Mục tiêu nghiên cứu
Trang 11Mục tiêu và nội dụng của luận văn này là tìm hiểu các phương pháp khai thác dữ liệu dựa trên ngôn ngữ truy vấn SQL và chọn tiếp cận K-way join làm trọng tâm Dựa trên cách tiếp cận này chúng ta sẽ phân tích và đánh giá các cải tiến cho K-way join, đề xuất phương pháp phát sinh và rút gọn luật kết hợp dựa trên tập luật mẫu
4 Đối tượng và phạm vi nghiên cứu
Tìm hiểu các khái niệm cơ bản về luật kết hợp, các cách tiếp cận khai phá
dữ liệu, đặc biệt là cách tiếp cận K-way join
Đề xuất phương pháp phát sinh và rút gọn luật kết hợp trên tập luật mẫu
Tính toán thử nghiệm để đưa ra các tri thức về thuốc cho trường Cao đẳng Y tế Phú Thọ, so sánh và đánh giá hiệu năng, độ tối ưu của cách tiếp cận K-way join với các cách tiếp cận khác
5 Phương pháp nghiên cứu
Tìm hiểu các tài liệu về các vấn đề liên quan
Tham gia thảo luận và trình bày xemina
Tính toán thử nghiệm
6 Bố cục luận văn
Luận văn bao gồm: mục lục, phần mở đầu, phụ lục
Chương I: Tổng quan về phát hiện mối quan hệ giữa các dữ liệu trong cơ
sở dữ liệu
Chương II: Một số mối quan hệ dữ liệu được phát hiện thông qua ngôn ngữ truy vấn
Chương III: Ứng dụng trong tính toán thử nghiệm
Kết luận và hướng phát triển
Trang 12CHƯƠNG 1
TỔNG QUAN VỀ PHÁT HIỆN MỐI QUAN HỆ GIỮA CÁC DỮ LIỆU
TRONG CƠ SỞ DỮ LIỆU
1 1 Mục tiêu của việc phát hiện mối quan hệ giữa các dữ liệu
Mục tiêu của việc khai khác dữ liệu có các nhiệm vụ chính như sau [2]:
Khám phá dữ liệu, khám phá mẫu, và dự đoán mẫu nhằm khám phá tri thức trong kho dữ liệu;
Rút trích các thông tin có giá trị tiềm ẩn trong kho dữ liệu;
Phân tích tự động trong kho dữ liệu;
Biểu diễn dữ liệu để thân thiện với người dùng hơn;
Dự báo các thông tin mới dựa trên dữ liệu hiện tại để từ đó hỗ trợ, và ra quyết định
1 2 Các bước chính của quá trình phát hiện tri thức
Quá trình phát hiện tri thức được chia thành các bước như sau [1, 2]:
Hình 1 1: Các bước trong quá trình khai phá tri thức
Trích chọn dữ liệu (data selection): Là bước trích chọn những tập dữ liệu
cần được khai phá từ các tập dữ liệu lớn (databases, data warehouses)
Tiền xử lý dữ liệu (data preprocessing): Là bước làm sạch dữ liệu (xử lý
dữ liệu không đầy đủ, dữ liệu nhiễu, dữ liệu không nhất quán, ), rút gọn dữ liệu (sử dụng các phương pháp thu gọn dữ liệu, histograms, lấy mẫu, ), rời rạc hoá dữ liệu (dựa vào histograms, entropy, phân
Trang 13khoảng, ) Sau bước này, dữ liệu sẽ nhất quán, đầy đủ, được rút gọn,
và được rời rạc hoá
Biến đổi dữ liệu (data transformation): Là bước chuẩn hoá và làm mịn dữ
liệu để đưa dữ liệu về dạng thuận lợi nhất nhằm phục vụ cho các kỹ thuật khai thác ở bước sau
Khai phá dữ liệu (data mining): Đây là bước quan trọng và tốn nhiều thời
gian nhất của quá trình khám phá tri thức, áp dụng các kỹ thuật khai phá (phần lớn là các kỹ thuật của học máy) để khai phá, trích chọn được các mẫu (pattern) thông tin, các mối liên hệ đặc biệt trong dữ liệu
Đánh giá và biểu diễn tri thức (knowledge representation & evaluation):
Dùng các kỹ thuật hiển thị dữ liệu để trình bày các mẫu thông tin (tri thức) và mối liên hệ đặc biệt trong dữ liệu đã được khai phá ở bước trên biểu diễn theo dạng gần gũi với người sử dụng như đồ thị, cây, bảng biểu, luật, Đồng thời bước này cũng đánh giá những tri thức khám phá được theo những tiêu chí nhất định
Trong giai đoạn khai phá dữ liệu, có thể cần sự tương tác của người dùng để điều chỉnh và rút ra các tri thức cần thiết nhất Các tri thức nhận được cũng có thể được lưu và sử dụng lại
1 3 Các dạng dữ liệu có thể khai phá
Khai phá dữ liệu có khả năng chấp nhận một số kiểu dữ liệu khác nhau điển hình như sau [3, 4]:
Cơ sở dữ liệu quan hệ (relational databases): Là các dữ liệu tác nghiệp
được tổ chức theo mô hình dữ liệu quan hệ rất phổ biến trong hệ thống quản lý và quán lý bán hàng nói riêng, do hầu hết các hệ quản trị cơ sở dữ liệu đều hỗ trợ dạng cơ sở dữ liệu quan hệ như Oracle, MS SQL Server, IBM DB2, MS Access,
Cơ sở dữ liệu đa chiều (multidimention structures, data warehouses, data mart): Là các kho dữ liệu được tập hợp và chọn lọc từ nhiều nguồn dữ liệu
khác nhau Dạng dữ liệu này chủ yếu phục vụ cho quá trình phân tích cũng như khai phá tri thức và hỗ trợ quá trình ra quyết định
Trang 14 Cơ sở dữ liệu giao tác (transactional databases): Đây cũng là dạng dữ
liệu tác nghiệp có các bản ghi thường là các giao tác Dạng dữ liệu này cũng phổ biến hiện nay trong đó có ngành thương mại
Cơ sở dữ liệu quan hệ – hướng đối tượng (object relational databases):
Là dạng dữ liệu lai giữa hai mô hình quan hệ và hướng đối tượng
Dữ liệu không gian và thời gian (spatial, temporal, and time-series data):
Là dạng dữ liệu có tích hợp thuộc tính về không gian như dữ liệu bản đồ mạng cáp điện thoại hoặc thời gian như dữ liệu cước điện thoại, phát hành báo chí
Cơ sở dữ liệu đa phương tiện (Multimedia database): Là dạng dữ liệu âm
thanh (audio), hình ảnh (video), văn bản và WWW, Dạng dữ liệu này đang rất phổ biến trên Internet và lưu tại các web server của các đơn vị trực thuộc doanh nghiệp hoặc tổ chức
1 4 Các hướng tiếp cận chính trong khai phá dữ liệu
Một số hướng tiếp cận chính của khai phá dữ liệu được phân chia theo chức năng hay lớp các bài toán khác nhau [2, 4]:
Phân lớp và dự đoán (classification & prediction): Xếp đối tượng vào
một trong các lớp đã biết trước Ví dụ: phân lớp loại cước hoặc loại dịch
vụ dựa trên số máy bị gọi của cuộc gọi, phân lớp khu vực dựa trên số máy chủ gọi, phân lớp giờ cao điểm, thấp điểm dựa trên giờ bắt đầu đàm thoại Phân lớp là một lĩnh vực rất quan trọng trong khai phá dữ liệu Phân lớp còn được gọi là học có giám sát (supervised learning), hướng tiếp cận này thường sử dụng một số kỹ thuật của học máy như cây quyết định (decision tree), mạng nơ ron nhân tạo (neural network)
Trong việc khai phá dữ liệu, một số kiến trúc đã được đề xuất cho việc tích hợp tiến trình khai phá với hệ quản trị cơ sở dữ liệu (HQTCSDL) Những kiến trúc này được biểu diễn như sau:
Trang 15Hình 1 2: Các kiến trúc khai thác tích hợp với cơ sở dữ liệu
Sự gắn kết lỏng hay khai phá dựa trên việc lưu trữ (Loose coupling or Cache based mining): Đây là kiến trúc dạng Client/Server Phần khai phá
được xem là ứng dụng phía server Theo kiến trúc này, đầu tiên dữ liệu được đọc từ database bằng cursor, sau đó nó sẽ đưa vào nhân khai phá (mining kernel) Khai phá xong sẽ đưa kết quả vào cơ sở dữ liệu Điều này dẫn đến hiệu năng chậm Kiến trúc được mô tả như hình vẽ bên dưới:
Trang 16Hình 1 4: Kiến trúc thủ tục nội và hàm do người dùng định nghĩa
Cách tiếp cận dựa trên SQL (SQL based approach): Theo kiến trúc này,
sử dụng các câu truy vấn SQL để khai phá Bộ xử lý tối ưu của HQTCSDL (query optimizer) được dùng để tối ưu các truy vấn phức tạp, những truy vấn xử lý với thời gian dài dựa trên ngữ nghĩa Khai phá được tính xử lý song song những câu truy vấn SQL
Hình 1 5: Kiến trúc dựa trên truy vấn SQL
Cách tiếp cận tích hợp (Intergrated approach): Đây là kiến trúc chặt chẽ
nhất, không có giới hạn giữa việc truy vấn, OLAP, hay khai phá Các toán
tử khai phá hay SQL được mở rộng cho việc khai phá được tối ưu dựa trên
hệ thống bên trong mà không có sự tác động của người dùng
Khai phá mẫu tuần tự (sequential/temporal patterns): Tương tự như khai
phá luật kết hợp nhưng có thêm tính thứ tự và tính thời gian Một luật mô
tả mẫu tuần tự có dạng tiêu biểu X Y phản ánh sự xuất hiện của biến cố
X sẽ dẫn đến việc xuất hiện kế tiếp biến cố Y Hướng tiếp cận này có tính
dự báo
Phân cụm (clustering/segmentation): Sắp xếp các đối tượng theo từng
cụm (số lượng và tên của cụm chưa được biết trước) Các đối tượng được gom cụm sao cho mức độ tương tự giữa các đối tượng trong cùng một cụm
là lớn nhất và mức độ tương tự giữa các đối tượng nằm trong các cụm khác nhau là nhỏ nhất Phân cụm còn được gọi là học không có giám sát (unsupervised learning)
Trang 171 5 Phân loại và ứng dụng các hệ thống khai phá dữ liệu
1 5 1 Phân loại các hệ thống khai phá dữ liệu
Phân loại khai phá dữ liệu dựa trên các tiêu chí khác nhau [3]:
Phân loại dựa trên kiểu dữ liệu được khai phá: Cơ sở dữ liệu quan hệ,
kho dữ liệu, cơ sở dữ liệu giao tác, cơ sở dữ liệu hướng đối tượng, cơ sở
dữ liệu không gian, cơ sở dữ liệu đa phương tiện, cơ sở dữ liệu văn bản
Phân loại dựa trên dạng tri thức được khám phá: Tóm tắt và mô tả, luật
kết hợp, phân lớp, phân cụm, khai phá chuỗi
Phân loại dựa trên lĩnh vực được áp dụng: Thương mại, viễn thông, tài
chính, y học, web mining,
Phân loại dựa trên kỹ thuật được áp dụng: Phân tích trực tuyến (Online
Analytial Processing - OLAP), học máy (cây quyết định, mạng nơ ron nhân tạo, K-Means, giải thuật di truyền, tập thô, tập mờ ) Thông thường sử dụng tập mờ là thích hợp cho việc tìm ra và hiểu được sự liên quan của các mô hình dữ liệu chưa đầy đủ, tạp nhiễu, thông tin hỗn tạp và tác động của con người, và từ đó có thể cung cấp giải pháp xấp xỉ nhanh hơn Mạng nơ ron có khả năng tổng quát, không giới hạn, mạnh và học tốt trong môi trường dữ liệu giàu (data-rich) thuật toán di truyền cung cấp khả năng tìm các thuật toán để chọn mẫu từ các dữ liệu hỗn tạp dựa trên một số hàm tiêu chuẩn/ mục tiêu thường dùng Tập thô thì phù hợp cho tìm ra các mẫu khác nhau của tình trạng không rõ ràng trong dữ liệu Một
số yêu cầu khai phá dữ liệu cần phải áp dụng phương pháp tính toán mềm (Tính toán mềm là sự kết hợp của các phương pháp logic mờ, thuật toán di truyền, khám phá tri thức, mạng nơ ron, tính toán neuro- fuzzy, tập thô, rút
ra luật )
1 5 2 Ứng dụng của khai phá dữ liệu
Khai phá dữ liệu có nhiều ứng dụng trong thực tế Một số ứng dụng điển hình như [3, 4]:
Bảo hiểm
Trang 18 Tài chính và thị trường chứng khoán: phân tích tình hình tài chính và dự báo giá của các loại cổ phiếu trong thị trường chứng khoán Danh mục vốn
và giá, lãi suất, dữ liệu thẻ tín dụng, phát hiện gian lận
Phân tích dữ liệu và hỗ trợ ra quyết định
Điều trị y học và Chăm sóc y tế: Một số thông tin về chuẩn đoán bệnh lưu trong các hệ thống quản lý bệnh viện Phân tích mối liên hệ giữa triệu chứng bệnh, chuẩn đoán và phương pháp điều trị (chế độ dinh dưỡng, thuốc )
Sản xuất và chế biến: Qui trình, phương pháp chế biến và xử lý sự cố;
Text mining & Web mining: phân lớp văn bản và các trang web, tóm tắt văn bản,
Lĩnh vực khoa học: Quan sát thiên văn, dữ liệu gene, dữ liệu sinh vật học, tìm kiếm, so sánh các hệ gene và thông tin di truyền, mối liên hệ gene và một số bệnh di truyền
Mạng viễn thông: Phân tích các cuộc gọi điện thoại và hệ thống giám sát lỗi, sự cố, chất lượng dịch vụ
1 6 Kết luận chương
Chương 1 trình bày chi tiết các khái niệm cơ bản, mục tiêu của việc phát hiện mối quan hệ dữ liệu, các bước chính khai phá tri thức, các dạng dữ liệu có thể khai phá, các hướng tiếp cận, phân loại và ứng dụng khai phá dữ liệu Giúp chúng ta có cái nhìn tổng quan về các mối quan hệ trong cơ sở dữ liệu, từ đó làm cơ sở để phát triển chương 2, chương 3 của luận văn
Chương hai và chương ba của luận văn trình bày về thuật toán k-way join tìm tập phổ biến, các đề xuất tối ưu để thuật toán chạy đạt hiệu quả cao hơn và ứng dụng thử nghiệm đối với cơ sở dữ liệu y khoa
Trang 19CHƯƠNG 2 MỘT SỐ MỐI QUAN HỆ DỮ LIỆU ĐƯỢC PHÁT HIỆN THÔNG QUA
NGÔN NGỮ TRUY VẤN
2 1 Luật kết hợp
2 1 1 Các khái niệm cơ bản
Khai phá luật kết hợp là một kỹ thuật quan trọng của khai phá dữ liệu Mục tiêu khai phá là phát hiện những mối quan hệ giữa các giá trị dữ liệu trong cơ sở dữ liệu Mô hình đầu tiên của bài toán khai phá luật kết hợp là mô hình nhị phân (hay còn gọi là mô hình cơ bản) được R Agrawal, T Imielinski và A Swami đề xuất vào năm 1993, xuất phát từ nhu cầu phân tích dữ liệu của cơ sở dữ liệu giao tác, phát hiện các mối quan hệ giữa các tập mục hàng hóa (Itemsets) đã bán được tại các siêu thị [15] Việc xác định các quan hệ này không phân biệt vai trò khác nhau cũng như không dựa vào các đặc tính dữ liệu vốn có của các thuộc tính mà chỉ dựa vào sự xuất hiện cùng lúc của chúng Dưới đây là một số các khái niệm cơ bản của luật kết hợp [6]:
2 1 1 1 Cơ sở dữ liệu giao tác
Cho tập các mục (item) I i i1, , ,2 i n Một giao tác (transaction) T là một tập con của I, TI Cơ sở dữ liệu giao tác là một tập các giao tác
1, 2, , m
DB T T T Mỗi giao tác được gán một định danh TID Một tập mục con
X , gồm k mục phân biệt được gọi là một k-tập mục Giao tác T gọi là chứa tập I mục X nếu X T
2 1 1 2 Tập mục phổ biến và luật kết hợp
Độ hỗ trợ tập mục: Cho tập mục X I Ta gọi độ hỗ trợ (Support) của X
trong cơ sở dữ liệu giao tác DB, ký hiệu sup(X), là tỷ lệ phần trăm các giao tác chứa
X trên tổng số các giao tác trong DB, tức là: sup( )X {T DB T | X}
DB
Ta có: 0 ≤ sup(X) ≤ 1 với mọi tập mục X I
Tập mục phổ biến: Cho tập mục X I và ngưỡng hỗ trợ tối thiểu (minimum support) minsup 0,1 (được xác định trước bởi người sử dụng) X
Trang 20được gọi là tập phổ biến (frequent itemset hoặc large itemset) với độ hỗ trợ tối thiểu
minsup nếu sup( X ) minsup , ngược lại X gọi là tập mục không phổ biến
Luật kết hợp: Một luật kết hợp là một biểu thức dạng X Y , trong đó X
và Y là các tập con của I, X Y= Ø ; X gọi là tiền đề, Y gọi là kết luận của luật
Luật kết hợp có hai thông số quan trọng là độ hỗ trợ và độ tin cậy
Độ hỗ trợ của luật: Độ hỗ trợ (Support) của một luật kết hợp X Y , ký hiệu là sup(X Y), là độ hỗ trợ của tập mục X Y , sup(X Y) = sup(X Y)
Như vậy độ hỗ trợ của luật kết hợp X Y chính là xác suất P(XY) của sự xuất hiện đồng thời của X và Y trong một giao tác
Tính chất cơ bản của tập phổ biến :
Cho cơ sở dữ liệu giao tác DB và ngưỡng độ hỗ trợ tối thiểu minsup Tập
mục phổ biến có các tính chất sau:
(1) Nếu X, Y là các tập mục và X Y thì sup(X)sup( )Y
Trang 21(2) Nếu một tập mục là không phổ biến thì mọi tập cha của nó cũng không phổ biến
(3) Nếu một tập mục là phổ biến thì mọi tập con khác rỗng của nó cũng là
tập mục phổ biến
Ví dụ:
Luật kết hợp là những luật có dạng như “ 80% khách hàng mua máy điện thoại di động thì mua thêm simcard, 30% có mua cả máy máy điện thoại di động lẫn simcard” “mua máy điện thoại di động” ở đây được xem là vế trái (tiền đề) của luật, còn “mua simcard” là vế phải (kết luận) của luật Các con số 30% là độ hỗ trợ của luật (support – số phần trăm các giao tác chứa cả vế trái và vế phải), còn 80% là
độ tin cậy của luật (confidence – số phần trăm các giao tác thoả mãn vế trái thì cũng thoả mãn vế phải
Hình 2 1: Minh họa luật kết hợp
Độ hỗ trợ (support) và Độ tin cậy (confidence) là hai thước đo cho một luật kết hợp Chẳng hạn phân tích cơ sở dữ liệu bán hàng nhận được thông tin về những khách hàng mua máy tính có khuynh hướng mua phần mềm quản lý tài chính trong cùng lần mua được mô tả trong 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ợ 2% có nghĩa là 2% của tất cả các khách hàng mua máy tính kèm theo phần mềm quản lý tài chính
Trang 22 Độ tin cậy 60% có nghĩa là 60% các khách hàng mua máy tính cũng mua phần mềm
Chúng ta nhận thấy rằng tri thức đem lại bởi luật kết hợp ở dạng trên có sự khác biệt cơ bản so với thông tin thu được từ các câu lệnh truy vấn dữ liệu thông thường như ngôn ngữ SQL Đó là những tri thức, những mối liên hệ chưa biết trước
và mang tính dự báo đang tiềm ẩn trong dữ liệu Những tri thức này không đơn giản chỉ là kết quả của phép nhóm, tính tổng hay sắp xếp mà là kết quả của một quá trình tính toán khá phức tạp và tốn nhiều thời gian Thông tin mà dạng luật này đem lại là rất đáng kể và hỗ trợ không nhỏ trong quá trình ra quyết định Tìm kiếm được các luật kết hợp “quý hiếm” và mang nhiều thông tin từ Cơ sở dữ liệu tác nghiệp là một trong những hướng tiếp cận chính của lĩnh vực khai phá dữ liệu
2 1 2 Bài toán khai phá luật kết hợp
Cho cơ sở dữ liệu giao tác DB, ngưỡng độ hỗ trợ tối thiểu minsup và ngưỡng
độ tin cậy tối thiểu minconf
Yêu cầu: Tìm tất cả các luật kết hợp X Y trên cơ sở dữ liệu DB sao cho sup(X Y ) minsup và conf (X Y) minconf
Bài toán khai phá luật kết hợp này được gọi là bài toán cơ bản hay bài toán nhị phân, vì ở đây, giá trị của mục dữ liệu trong cơ sở dữ liệu là 0 hoặc 1 (xuất hiện hay không xuất hiện)
Bài toán khai phá luật kết hợp được chia thành hai bài toán con Bài toán thứ nhất là tìm tất cả các tập mục thỏa mãn độ hỗ trợ tối thiểu cho trước, tức là tìm tất
cả các tập phổ biến Bài toán thứ hai là sinh ra các luật kết hợp từ các tập phổ biến
đã tìm được thỏa mãn độ tin cậy tối thiểu cho trước
Bài toán thứ hai được giải quyết như sau : giả sử đã tìm được X là tập phổ biến, ta sinh ra các luật kết hợp bằng cách tìm Y X , kiểm tra độ tin cậy của luật
\
X Y Y có thỏa mãn độ tin cậy tối thiểu không Bài toán thứ hai này đơn giản, mọi khó khăn nằm ở bài toán thứ nhất, hầu hết các nghiên cứu về luật kết hợp đều tập trung giải quyết bài toán thứ nhất là tìm các tập phổ biến
Trang 232 2 Khai thác tập phổ biến dựa trên ngôn ngữ truy vấn
2 2 1 Ngôn ngữ truy vấn
2 2 1 1 Khái niệm về ngôn ngữ truy vấn
Theo [4, 10] ngôn ngữ xử lý dữ liệu quan hệ là ngôn ngữ bao gồm tập các chỉ thị cho phép hỏi, thay đổi, thêm bớt và sửa thông tin của một CSDL
Trong các ngôn ngữ thao tác dữ liệu SQL, SEQUEL, QUEL, QBE thì ngôn ngữ SQL (Structure Query Language) là ngôn ngữ hỏi đáp dữ liệu có cấu trúc, phi thủ tục, chuẩn mực và điển hình được xác nhận là mạnh, phổ dụng lại dễ sử dụng
Ngôn ngữ này được phát triển từ ngôn ngữ SEQUEL-2, thử nghiệm và cài đặt tại trung tâm nghiên cứu của hãng IBM (tại SALJOISE, CALIFONIA) cho hệ thống quản trị cơ sở dữ liệu lớn điển hình là SYSTEM-R Trong SYSTEM-R, SQL vừa đóng vai trò là một ngôn ngữ có thể thao tác độc lập của người dùng đầu cuối, đồng thời lại có khả năng là một ngôn ngữ con được nhúng trong ngôn ngữ chủ PL/1
Hiện nay ngôn ngữ SQL đã được chuyển thành chuẩn chính thức của ANSI
và ISO (Cơ quan tiêu chuẩn quốc tế) và được rất nhiều các phần mềm Quản trị hệ CSDL hỗ trợ cho ngôn ngữ này như Oracle, NGRESS, DB2, SYBASE, INFOMIC v v
2 2 1 2 Các đặc điểm của ngôn ngữ SQL
Đây là một ngôn ngữ rất phù hợp cho CSDL phân tán theo mô hình Server, nó cho phép nhiều người dùng cùng truy nhập đến một cơ sở dữ liệu với độ
Client-an toàn ổn định và tính bảo mật cao Ngôn ngữ SQL đảm bảo lưu lượng truyền thông tin trên mạng tối thiểu vì Client chỉ gửi câu hỏi và nhận về kết quả từ Server chứ không phải gửi cả CSDL đi để xử lý Đặc biệt là do được các hệ quản trị CSDL
hỗ trợ nên phương thức chung để giao tiếp giữa các phần mềm quản trị CSDL (như dùng ODBC) và điều này làm cho hệ thống có tính mở Thật vậy, có thể sử dụng một hệ quản trị CSDL tốt (đòi hỏi cấu hình phần cứng mạnh) nhưng có thể vẫn dùng phần mềm yêu cầu phần cứng thấp trên các Client hoặc có thể dùng các máy Net computer Mặt khác cũng có thể dùng nhiều hệ quản trị CSDL trong cùng một
Trang 24hệ thống để khai thác các thế mạnh của chúng, ví dụ có thể dùng Lotus Notes trên các Client (giao diện người dùng thân thiện, ưu việt về truyền thông, xử lý tốt văn bản) và kết nối vào CSDL Oracle trên Server (tính bảo mật cao, đa người dùng, quản lý tốt các giao tác-Transaction)
Ngôn ngữ SQL còn có khả năng thực hiện được những câu hỏi phức tạp mà các dạng ngôn ngữ khác không đáp ứng được và một câu lệnh SQL có thể thay thế
cho một tập hợp các câu lệnh lập trình CSDL thông thường
Ngoài cơ cấu xử lý dữ liệu SQL còn có các công cụ để xây dựng các ứng dụng WEB, có khả năng xử lý dữ liệu, tạo báo cáo, thiết kế mô hình dữ liệu và quản trị hệ thống
2 2 1 3 Các loại câu lệnh SQL thao tác với dữ liệu
Trong ngôn ngữ SQL có hai loại lệnh thao tác với dữ liệu, đó là:
Các lệnh định nghĩa dữ liệu DDL (Data Defined Language): là các lệnh tạo bảng, tạo Index v v
Các lệnh cập nhật dữ liệu DML (Data Manipulation Language) như SELECT, UPDATE, INSERT, DROP
Các lệnh cập nhật dữ liệu được sử dụng thường xuyên cho nên cần thiết phải tìm ra phương án chọn cách viết câu lệnh, cách thực hiện câu lệnh sao cho có hiệu quả nhất về mặt thời gian cũng như là về không gian lưu trữ
Hệ thống cơ sở dữ liệu dùng các câu lệnh SQL [7, 8]:
1 Câu lệnh đơn: Một câu lệnh đơn là một câu lệnh INSERT, UPDATE, DELETE hoặc SELECT thao tác duy nhất trên một bảng
2 Query đơn: thực chất là một câu lệnh SELECT (có thể với nhiều bảng)
3 Kết nối: Một kết nối là một truy vấn dữ liệu nhiều hơn một bảng và từ kết nối giữa các bảng nằm trong mệnh đề FROM Phép kết nối kéo dữ liệu từ các bảng khác nhau và so sánh chúng từng đôi tại dòng chung ở tất cả các
bảng Có các kiểu kết nối sau (i) Liên kết ngang bằng (Equijoins): liên kết
này dựa vào sự cân bằng của điều kiện tìm kiếm mà chỉ ra mối quan hệ
giữa 2 bảng; (ii) Liên kết không ngang bằng (Non-Equijoins) là liên kết 1
bảng này với một bảng khác dựa trên sự so sánh không bằng như toán tử
Trang 25<=, >=, BETWEEN; (iii) Liên kết ngoài (Outer joins): Giả sử có 2 bảng
KháchHàng và HoáĐơn cùng có 2 cột là MãKháchHàng Khi liên kết 2 bảng cho hiện lên tên của những khách hàng có số thứ tự trùng nhau Nếu muốn hiện lên cả những khách hàng không thoả mãn trong bảng
KháchHàng cũng được hiện lên thì cần dùng liên kết ngoài; (iv) Liên kết với chính nó (Self joins): Đây là kiểu liên đặc biệt giữa một bảng với
chính nó như 2 bảng riêng biệt Để làm được việc này thì bảng đó phải có một tên quan hệ
4 Tích Đề-các: là kết quả của việc nhân hai tập hợp
5 Câu lệnh phức: Một câu lệnh phức như là một câu lệnh SELECT, INSER, UPDATE, hoặc DELETE có chứa một câu lệnh SELECT khác (được gọi
là subquery)
6 Các query kết hợp: Một query kết hợp là một query có sử dụng các toán
tử tập hợp như UNION, UNION ALL, INTERSECT hoặc MINUS
7 Câu lệnh sử dụng View: View là một bảng logic mà thực chất là một câu lệnh SELECT mà có thể thao tác giống như đối với bảng
8 Câu lệnh phân tán: nghĩa là câu lệnh truy nhập dữ liệu từ xa
2 2 2 Tìm tập phổ biến bằng K-way join
2 2 2 1 Cấu trúc bảng dữ liệu
Do số item trong một giao tác không thể biết trước và có thể khác nhau nên cấu trúc bảng dạng D (tid, item1, item2, …, itemn) là không thực tế Ngoài ra, trong thực tế, số item tối đa trong một giao tác có thể vượt quá số cột mà HQTCSDL (Hệ quản trị cơ sở dữ liệu) hỗ trợ Chẳng hạn đối với SQL 2000/2005, số cột tối đa cho phép trong một bảng là 1024 Trong trường hợp này, cấu trúc bảng có dạng D (tid, item1, item2, …, itemn) là không khả thi vì n phải nhỏ hơn 1024 Ngoài ra, nếu lưu trữ bảng có nhiều cột, thì rất có thể sẽ lãng phí bộ nhớ khi mà số item trong các giao tác khác nhau qua nhiều Do đó, để không phụ thuộc vào số item trong một giao tác, không phụ thuộc vào giới hạn cột trong một bảng của HQTCSDL, và để tiết kiệm
bộ nhớ, cấu trúc dữ liệu đề xuất cho việc khai thác có dạng D (Tid, item) [8, 9, 10, 11] Trong đó:
Trang 26 Tid: là chỉ danh giao tác Mỗi giao tác có một chỉ danh duy nhất để phân biệt với các giao tác khác
Item: Tên item trong giao tác đó Các item trong cùng một giao tác sẽ có cùng Tid
Như vậy đối với cơ sở dữ liệu dạng D (tid, item1, item2, …, itemn), ta sẽ chuyển về dạng D (tid, item) trước khi thực hiện việc khai khác bằng SQL
Ví dụ Cấu trúc bảng ban đầu, bảng 3 1
tid Item1 item2 item3 item4 item5
Bảng 2 1: Cấu trúc bảng ban đầu
Sẽ được đưa về cấu trúc D (tid, item) như bảng 3 2
2 2 2 2 Tìm tập phổ biến bằng K-way join
2 2 2 2 1 Phát sinh ứng cử viên bằng K-way join
Theo tài liệu của Mishra, P , S Chakravarthy [11], việc tìm tập phổ biến sẽ được thực hiện qua hai bước Trong bước đầu tiên, tất cả các tập ứng viên Ck (hình thành do sự kết hợp của k item) được phát sinh Trong bước thứ hai, mỗi tập ứng
Trang 27viên sẽ được tính độ hỗ trợ Những tập ứng viên nào có độ hỗ trợ lớn hơn hay bằng
độ hỗ trợ tối thiểu sẽ được cộng dồn vào tập Fk tương ứng
Phát sinh ứng cử viên bằng K-way join: Việc phát sinh các tập ứng viên Ck được thực hiện dựa trên tập phổ biến Fk-1 Thêm vào đó, để tối ưu về mặt xử lý, việc loại bỏ những tập ứng viên dư thừa hay còn gọi là tỉa nhánh cũng được thực hiện song song tại bước này Dựa trên tính chất của tập phổ biến: Tất cả các tập con của một tập phổ biến phải là tập phổ biến Do đó, những tập ứng viên c Ck mà tồn tại tập con có chiều dài (k-1) không thuộc tập phổ biến Fk-1 sẽ bị loại ra khỏi tập Ck
Khi đó, thuật toán phát sinh tập ứng viên như sau:
INSERT INTO Ck
SELECT I1 item1, …, I1 itemk-1, I2 itemk-1
FROM Fk-1 I1, Fk-1 I2, …, Fk-1 Ik
WHERE
- Điều kiện phát sinh tập ứng viên
I1 item1 = I2 item1 AND
I1 itemk-2 = I2 itemk-2 AND
I1 itemk-1 < I2 itemk-1 AND
Điều kiện tỉa nhánh item1
I1 item2 = I3 item1 AND
…
I1 itemk-1 = I3 itemk-2 AND
I2 itemk-1 = I3 itemk-1 AND
Điều kiện tỉa nhánh itemk-2
I1 item1 = Ik item1 AND
……
I1 itemk-3 = Ik itemk-3 AND
I1 itemk-1 = Ik itemk-2 AND
I2 itemk-1 = Ik itemk-1
Trang 28Số tập ứng viên sau mỗi vòng lặp sẽ được giảm dần nhờ vào tính chất của tập phổ biến: Tất cả các tập con của một tập phổ biến là tập phổ biến Biểu đồ hình cây cho tiến trình này như sau:
Hình 2 2: Tiến trình phát sinh tập ứng viên C k
Ví dụ F3 = {{1, 2, 3}, {1, 2, 4}, {1, 3, 4}, {1, 3, 5}, {2, 3, 4}} Sau bước liên kết với F3, tập ứng viên C4 sẽ là: {{1, 2, 3, 4}, {1, 3, 4, 5}} Trong bước tỉa nhánh, Itemset {1, 3, 4, 5} được kết hợp từ hai tập itemset {1, 3, 4} và {1, 3, 5} Tuy nhiên, itemset {3, 4, 5} {1, 3, 4, 5} không tồn tại trong F3, vì vậy {1, 3, 4, 5} sẽ bị loại khỏi C4, và C4 chỉ còn {1, 2, 3, 4}
Theo [13, 14] thuật toán K-way join: Tại mỗi vòng lặp thứ k, k bản copy của
bảng dữ liệu đầu vào được liên kết với tập ứng viên Ck theo sau bởi mệnh đề GROUP BY trên các itemset k bản copy của bảng dữ liệu đầu vào để so sánh k items trong ứng viên Ck với mỗi item từ mỗi bản copy của bảng dữ liệu đầu vào Mệnh đề GROUP BY dùng để xác định itemset nào có độ hỗ trợ lớn hơn hay bằng
độ hỗ trợ tối thiểu sẽ là tập phổ biến Thủ tục supcnt_k_way_join (k, minsup, T, tid,
item) và biểu đồ hình cây để phát sinh tập phổ biến có chiều dài k như sau:
Trang 29INSERT INTO Fk
SELECT item1, …, itemk, COUNT (*)
FROM Ck, T t1, …, T tk
WHERE
t1 item = Ck item1 AND
t2 item = Ck item2 AND
…
tk item = Ck itemk AND
t1 tid = t2 tid AND
t2 tid = t3 tid AND
…
tk-1 tid = tk tid
GROUP BY item1, item2, …, itemk
HAVING COUNT (*) ≥ minsup
Hình 2 2: Đếm độ hỗ trợ bằng cách tiếp cận K-way Join
Khi áp dụng cách tiếp cận này vào thực tế, thời gian xử lý chấp nhận được (tăng chậm) khi dữ liệu ngày càng nhiều
2-Group By: Cách tiếp cận này giảm số liên kết của cách tiếp cận K-way
join Cách tiếp cận này chỉ liên kết tập ứng viên Ck với bảng dữ liệu ban đầu chỉ 1 lần Điều kiện liên kết kiểm tra xem mục (item) trong bảng dữ liệu ban đấu có giống với bất kỳ k mục (item) trong tập ứng viên Ck hay không? Nếu có thì gom nhóm tất
Trang 30cả các item đó lại, nghĩa là gom nhóm trên tập (item1, item2, …, itemk, Tid) với điều kiện số lượng các items như thế phải bằng k Kết quả là một tập những item và các tid mà tid này hỗ trợ itemset trong Ck Khi tất cả các itemset được xác định, ta thực hiện việc gom nhóm trên itemset (item1, item2, …, itemk) Những itemset mà có độ
hỗ trợ lớn hơn hay bằng độ hỗ trợ tối thiểu sẽ được đưa vào danh sách các tập phổ biến Cấu trúc câu lệnh SQL như sau:
INSERT INTO Fk
SELECT item1, item2, …, itemk, count (*)
FROM (SELECT item1, item2, …, itemk, COUNT (*)
GROUP BY item1, item2, …, itemk
HAVING COUNT (*) ≥ minsup
Trong cách tiếp cận này, việc đếm độ hỗ trợ chỉ phải liên kết một lần giữa tập ứng viên và bảng dữ liệu đầu vào Vì vậy, số liên kết trong vòng lặp thứ k sẽ tương đối ít so với cách tiếp cận K-way join Tuy nhiên, cách tiếp cận này đã sử dụng toán tử OR để so sánh các itemset, cùng với hai mệnh đề GROUP BY và HAVING (một cho việc gom nhóm các items trong bảng dữ liệu đầu vào và một cho lúc thực sự đếm độ hỗ trợ) cho việc đếm độ phổ biến của itemset có chiều dài k
Do bản thân toán tử OR trong các HQTCSDL không cung cấp xử lý tối ưu nên chi phí so sánh cao sẽ cao, thêm vào đó là việc sử dụng hai mệnh đề GROUP BY và HAVING Hai mệnh đề này tốn rất nhiều chi phí về mặt thời gian khi xử lý Trên thực tế, khi áp dụng cách tiếp cận này, thời gian xử lý sẽ tăng đột biến khi khối lượng dữ liệu ngày càng nhiều
Trang 31Query sub Query: Cách tiếp cận này đã tận dụng việc sử dụng các tiền tố
chung cho việc đếm độ hỗ trợ Có rất nhiều câu truy vấn con trung gian được phát sinh trong quá trình đếm độ hỗ trợ Gọi Qi là truy vấn con thứ i với i ≠ 0 (Chú ý rằng, không có truy vấn con Q0)
Qi sẽ chọn ra những item từ truy vấn con Qi-1, Ci và bảng dữ liệu đầu vào T với điều kiện các item trong Qi-1 bằng với các item trong Ci và Tid trong T bằng với Tid trong Qi-1 Vì vậy, trong bất kỳ vòng lặp nào, với m cho trước thì (m-1) item (item1, item2, …, itemm-1) trong Qm-1 bằng với (m-1) item trong Cm Tương tự cho Tid trong T phải bằng với Tid trong Qm-1 Nếu tất cả đều thỏa, và có độ hỗ trợ lớn hơn hay bằng độ hỗ trợ tối thiểu thì chúng được đưa vào Fk Biểu đồ hình cây và cấu trúc câu truy vấn có dạng như sau:
Hình 2 3: Biểu đồ hình cây cho Sub Query Q i
INSERT INTO Fk
SELECT item1, item2, …, itemk, count (*)
FROM (Subquery Qk) t
GROUP BY item1, item2, …, itemk
HAVING COUNT (*) ≥ minsup
Subquery Qi (1 ≤ i ≤ k):
SELECT item1, item2, …, itemi, tid
FROM T ti, (Subquery Qi-1) as ri-1,
Trang 32(SELECT DISTINCT item1, item2, …, itemi
FROM Ck) As di
WHERE ri-1 item1 = di item1 AND
…
ri-1 itemi-1 = di itemi-1 AND
ri-1 tid = ti tid AND
ti item = di itemi
Tại bất kỳ vòng lặp k nào, việc phát sinh truy vấn con Qk-1 được thực hiện để tìm ra những item phổ biến có chiều dài (k-1) Tiếp đó, truy vấn con Qk-1 sẽ gọi ngược lại truy vấn con Qk-2, tiến trình này sẽ gọi ngược cho đến Q1 Sau đó, Q1 sẽ thực thi và trả về kết quả các itemset phổ biến có chiều dài 1 Kết quả này sẽ được gửi tới Q2, để dùng cho việc phát sinh itemset phổ biến có chiều dài 2 Lặp lại tiến trình này cho đến khi Qk-1 được thực thi Lưu ý rằng, do các truy vấn con này phải được thực hiện tuần tự, nên tại bất kỳ vòng lặp k nào, (k-1) truy vấn con phải được thực thi trước Do đặc tính của cách tiếp cận này là phát sinh quá nhiều truy vấn con trong quá trình đếm độ hỗ trợ, nên trong thực nghiệm, thời gian thực thi của thuật toán này là không khả thi
2 2 3 Kết quả thử nghiệm 3 phương pháp đếm độ hỗ trợ
Cấu hình thử nghiệm:
CPU Intel Pentium 4, 512 MB RAM
Hệ quản trị cơ sở dữ liệu: Microsoft SQL Server 2000
Hệ điều hành: Windows XP Professional, Service Pack 2
Dữ liệu thử nghiệm: 100000 mẩu tin trong dữ liệu nghiệp vụ nhập của bán hàng tại một địa điểm thu ngân
Việc thử nghiệm cũng được thực hiện trên những tập dữ liệu có kích thước khác nhau (đại diện cho 3 giá trị: nhỏ, trung bình và lớn) và giá trị minsup khác nhau (đại diện cho 3 giá trị: nhỏ, trung bình, lớn) để đánh giá tương đối chính xác thời gian thực thi của các thuật toán Để chú trọng vào việc so sánh các thuật toán, chi phí chuyển đổi từ cơ sở dữ liệu dạng ngang D (Tid, item1, item2, …) sang dạng dọc D (Tid, item) cũng không được tính vào thời gian phân tích
Trang 33Kết quả thử nghiệm 3 phương pháp [11]:
- Với độ hỗ trợ lớn minsup =10% và các kích thước CSDL khác nhau:
Hình 2 4: Đồ thị thời gian thực thi của 3 thuật toán khi minsup=10% và D=100000
Hình 2 5: Đồ thị thời gian thực thi 3 thuật toán khi minsup=10% và D=50000
Trang 34Hình 2 7: Đồ thị thời gian thực thi của 3 thuật toán khi minsup=10% và D=10000
Hình 2 6: Đồ thị tổng hợp thời gian thực thi của 3 thuật toán khi minsup lớn
Dựa trên đồ thị ta thấy, K-way join luôn hiệu quả hơn 2 thuật toán còn lại trong mọi trường hợp khi độ hỗ trợ lớn Khi kích thước CSDL tăng từ nhỏ lên trung bình, thời gian xử lý của K-way join cũng tăng, nhưng tăng ít vì các cải tiến của của K-way join đã khắc phục được nhược điểm của thuật toán gốc
- Tiếp tục thử nghiệm với độ hỗ trợ trung bình và các kích thước CSDL khác nhau:
Trang 35Hình 2 7: Đồ thị thời gian thực thi 3 thuật toán khi minsup=5% và D=100000
Hình 2 8: Đồ thị thời gian thực thi 3 thuật toán khi minsup=5% và D=50000
Hình 2 9: Đồ thị thời gian thực thi 3 thuật toán khi minsup=5% và D=10000
Hình 2 10: Đồ thị tổng hợp thời gian thực thi 3 thuật toán khi minsup trung bình
Dựa trên đồ thị ta thấy, thời gian thực thi của K-way join vẫn tốt hơn 2 thuật toán còn lại trong mọi trường hợp kích thước CSDL khi minsup trung bình Một điểm lưu ý ở đây là khi kích thước dữ liệu nhỏ thì Sub query lại tỏ ra tốt hơn 2 group by
do thời gian thực thi các truy vấn con nhanh hơn khi thực hiện phép toán tử OR và 2 mệnh đề GROUP BY và HAVING
- Với độ hỗ trợ nhỏ và các kích thước CSDL khác nhau:
Trang 36Hình 2 11: Đồ thị thời gian thực thi 3 thuật toán khi minsup = 1% và D = 100000
Hình 2 12: Đồ thị thời gian thực thi 3 thuật toán khi minsup = 1% và D= 50000
Hình 2 13: Đồ thị thời gian thực thi của 3 thuật toán khi minsup =1% và D=10000
Trang 37Hình 2 154: Đồ thị tổng hợp thời gian thực thi của 3 thuật toán khi minsup nhỏ
Dựa trên đồ thị ta thấy, K-way join vẫn được xem là tốt nhất khi minsup nhỏ
và kích thước CSDL tuỳ ý Và đặc biệt khi kích thước dữ liệu tăng thì K-way join tăng rất ít trong khi các thuật toán còn lại tăng rất nhanh
Tóm lại, với các kết quả thử nghiệm ở trên [14], việc so sánh thời gian chạy của 3 thuật toán K-way join, 2-group by, Sub query trong việc đếm độ hỗ trợ để khẳng định thuật toán K-way join là lựa chọn tốt nhất trong các cách tiếp cận với hệ quản trị CSDL SQL với mọi minsup và mọi kích thươcs CSDL
2 2 4 Phân tích các cải tiến của thuật toán k-way join
Dựa vào các kết quả vừa nêu trên, đề tài đưa ra các phân tích về thuật toán k-way join như sau:
2 2 4 1 Tối ưu hóa vòng lặp 1, 2
Quan sát thuật toán K-way join ta thấy:
Trong tất cả các vòng lặp thì vòng lặp thứ hai tiêu tốn nhiều thời gian hơn
cả
Kích thước của C2 thường rất lớn nên chi phí cho việc đếm độ hỗ trợ là 2 rất cao (gồm Cn tập ứng viên được phát sinh, với n là số tập phổ biến có chiều dài 1)
Các tập ứng viên có chiều dài 2 được phát sinh từ tập phổ biến có chiều dài 1, do đó không thu được lợi ích gì từ việc thu gọn/tỉa nhánh trong bước này
Không có luật kết hợp nào được sinh ra từ F1, vì vậy tiến trình phát sinh C2 từ F1 là không cần thiết
Trang 38HAVING COUNT (*)≥ minsup
Tính F2: Thực hiện phép kết 2 bảng dữ liệu đầu vào với điều kiện item trong bảng dữ liệu đầu vào thứ nhất phải nhỏ hơn item trong bảng dữ liệu đầu vào thứ hai
và cả hai item này cùng thuộc một giao tác Cấu trúc câu truy vấn như sau:
INSERT INTO F2
SELECT t1 item, t2 item, COUNT (*)
FROM InputTable T1, InputTable T2
WHERE T1 tid = T2 tid and T1 item < T2 item
GROUP BY T1 item, T2 item
HAVING COUNT (*) ≥ minsup
2 2 4 2 Giảm kích thước dữ liệu đầu vào
Ta nhận thấy, trong thuật toán K-way join, ta luôn sử dụng bảng dữ liệu đầu vào trong việc đếm độ hỗ trợ Tuy nhiên, bản thân những item trong tập dữ liệu đầu vào này, không phải item nào cũng là phổ biến (có chiều dài 1) Do vậy, việc loại bỏ ngay từ ban đầu những item không là phổ biến sẽ giúp ta giảm kích thước của tập
dữ liệu đầu vào mà không làm ảnh hưởng đến việc đếm độ hỗ trợ của những vòng lặp sau Điều này sẽ giảm chi phí kết mỗi khi phải liên kết với bảng dữ liệu đầu vào
Giải pháp: Xoá những item không là phổ biến trong tập dữ liệu đầu vào Những item không phổ biến là những item trong tập dữ liệu đầu vào và F1
Câu truy vấn có dạng:
DELETE InputTable T
WHERE T item NOT IN (SELECT item FROM F1)
Trang 392 2 4 3 Giảm số phép kết tại vòng lặp
Tại mỗi vòng lặp k bất kỳ phải sử dụng k bảng dữ liệu đầu vào liên kết với
Ck Trong trường hợp dữ liệu đầu vào rất lớn thì việc kết k bảng này sẽ tốn rất nhiều chi phí Để giảm thiểu chi phí này, ta tính sẵn tập phổ biến từ một giao tác cụ thể trong vòng lặp (k-1), và dùng nó trong việc đếm độ hỗ trợ tại vòng lặp thứ k Điều này sẽ tiết kiệm được một chuỗi các phép kết vì đã được làm trong vòng lặp trước
đó Tối ưu này tỏ ra rất hiệu quả khi chiều dài tập phổ biến lớn, và vòng lặp nhiều Tập Combk (Tid, item1, item2, …, itemk) được tạo ra khi ta đếm độ hỗ trợ tại vòng lặp thứ k Combk là kết quả kết của 3 tập Combk-1, T, và Ck để chọn ra tất cả những giao tác trong T mà chứa 1-extension tới tập phổ biến có chiều dài (k-1)
Giải pháp: Tính sẵn tập Combk
Cấu trúc câu truy vấn như sau:
INSERT INTO Combk
SELECT T1 tid, T1 item1, T1 item2, …, T1 itemk-1, T2 item
FROM Ck, Combk-1 T1, T T2
WHERE T1 item1 = Ck item1 AND
…
T1 itemk-1 = Ck itemk-1 AND
T2 item = Ck itemk AND
T1 tid = T2 tid
Trong bất kỳ vòng lặp k nào, thay vì phải sử dụng (k+1) phép kết, bây giờ ta chỉ cần dùng có 3 phép kết Tại vòng lặp thứ k, ta chỉ sử dụng 3 quan hệ Ck, T, và Combk-1 cho việc kết Tuy nhiên, ta phải tính Combk-1 trước để nó có thể được dùng trong lần lặp kế tiếp
Fk sau đó được phát sinh từ Combk bằng cách nhóm k items (item1, item2, …, itemk) và chọn ra những mục có độ hỗ trợ lớn hơn hay bằng độ hỗ trợ tối thiểu Câu truy vấn sẽ có dạng: