ĐẠI HỌC THÁI NGUYÊN
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN & TRUYỀN
THÔNG
VY ĐẠI NGHĨA
PHÁT HIỆN MỐI QUAN HỆ TRONG
CƠ SỞ DỮ LIỆU VÀ ỨNG DỤNG TRONG Y
HỌC
LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH
Thái Nguyên - 2015
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
ĐẠI HỌC THÁI NGUYÊN
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN & TRUYỀN
THÔNG
VY ĐẠI NGHĨA
PHÁT HIỆN MỐI QUAN HỆ TRONG
CƠ SỞ DỮ LIỆU VÀ ỨNG DỤNG TRONG Y
HỌC
Chuyên ngành: Khoa học máy tính
Mã số: 60 48 01
LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH
NGƯỜI HƯỚNG DẪN KHOA HỌC: PGS.TS. Đỗ Trung Tuấn
Thái Nguyên - 2015
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
i
ii
Lời cả m ơn
Trước tiên, tôi xin được gửi lời cảm ơn đến tất cả quý thầy cô đã giảng dạy
trong chương trình Cao học do Trường Đại học Công nghệ thông tin và truyền thông
tổ chức, những người đã truyền đạt cho tôi những kiến thức hữu ích về khoa học máy
tính làm cơ sở cho tôi thực hiện tốt luận văn này.
Tôi xin chân thành cảm ơn PGS. TS. Đỗ Trung Tuấn đã tận tình hướng dẫn cho
tôi trong thời gian thực hiện luận văn. Mặc dù trong quá trình thực hiện luận văn có
giai đoạn không được thuận lợi nhưng những gì Thầy đã hướng dẫn, chỉ bảo đã cho tôi
nhiều kinh nghiệm trong thời gian thực hiện đề tài.
Tô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
Học viên
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
Vy Đại Nghĩa
iii
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
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
quả củ a các luâ ̣n văn, luận án khác.
iv
MỤC LỤC
Lời cả m ơn .................................................................................................................. i
Lời cam đoan ........................................................................................................... iii
MỤC LỤC ................................................................................................................. iv
DANH MỤC CÁC TỪ VIẾT TẮT ........................................................................... vi
DANH MỤC CÁC BẢNG, HÌNH VẼ ..................................................................... vii
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 .................................................... 12
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
Số hóa bởi Trung tâm Học liệu – ĐHTN
2. 2. 2. Tìm tập phổ biến bằng K-way join ............................................... 20 http://www.lrc.tnu.edu.vn
v
2. 2. 3. Kết quả thử nghiệm 3 phương pháp đếm độ hỗ trợ....................... 27
2. 2. 4. Phân tích các cải tiến của thuật toán k-way join ........................... 32
2. 2. 5. Phát sinh luật kết hợp ................................................................... 38
2. 2. 6. Rút ngọn luật kết hợp ................................................................... 42
2. 3. Kết luận chương ...................................................................................... 49
CHƯƠNG 3 .............................................................................................................. 51
ỨNG DỤNG TRONG TÍNH TOÁN THỬ NGHIỆM ............................................ 51
3. 1. Các bài toán ............................................................................................. 51
3. 1. 1. Bài toán tìm luật kết hợp dạng X Y .......................................... 51
3. 1. 2. Bài toán tìm độ hỗ trợ và độ tin cậy của luật ................................ 52
3. 1. 3. Bài toán đánh giá độ tin cậy của luật theo ngưỡng ....................... 53
3. 1. 5. Giải pháp giúp thực hiện các bài toán .......................................... 54
3. 2. Chương trình thử nghiệm ........................................................................ 56
3. 2. 1. Cơ sở dữ liệu của bài toán ............................................................ 57
3. 2. 2. Kết quả khai phá dữ liệu khi thực hiện các bài toán ..................... 58
3. 3. Kết luận chương ...................................................................................... 65
KẾT LUẬN .............................................................................................................. 67
PHỤ LỤC ................................................................................................................. 68
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
TÀI LIỆU THAM KHẢO ....................................................................................... 76
vi
DANH MỤC CÁC TỪ VIẾT TẮT
Active X Data Object ADO
Chuẩn quốc gia Hoa Kì ANSI
Khách/ chủ Client/ server
Độ tin cậy confidence
Cơ sở dữ liệu CSDL
Tên hệ quản trị cơ sở dữ liệu của IBM DB2
Hệ quản trị cơ sở dữ liệu DBMS
Hệ quản trị cơ sở dữ liệu HQTCSDL
Tổ chức tiêu chuẩn hóa quốc tế ISO
multidimensional OLAP MOLAP
Online Analysis Processing OLAP
Tên công ty ORACLE, tên hệ quản trị ORACLE
cơ sở dữ liệu
Relational OLAP ROLAP
Ngôn ngữ truy vấn SQL
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
Độ hỗ trợ, trợ giúp support
vii
DANH 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 ............................................................................... 16
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 .............................................................. 21
Hình 2. 2: Tiến trình phát sinh tập ứng viên Ck .......................................................... 23
Hình 2. 2: Đếm độ hỗ trợ bằng cách tiếp cận K-way Join ........................................... 24
Hình 2. 3: Biểu đồ hình cây cho Sub Query Qi ........................................................... 26
Hình 2. 4: Đồ thị thời gian thực thi của 3 thuật toán khi minsup=10% và D=100000 . 28
Hình 2. 5: Đồ thị thời gian thực thi 3 thuật toán khi minsup=10% và D=50000 ......... 29
Hình 2. 7: Đồ thị thời gian thực thi của 3 thuật toán khi minsup=10% và D=10000 ... 29
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 ............ 29
Hình 2. 7: Đồ thị thời gian thực thi 3 thuật toán khi minsup=5% và D=100000 ......... 30
Hình 2. 8: Đồ thị thời gian thực thi 3 thuật toán khi minsup=5% và D=50000 ........... 30
Hình 2. 9: Đồ thị thời gian thực thi 3 thuật toán khi minsup=5% và D=10000 ........... 30
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 ..... 31
Hình 2. 11: Đồ thị thời gian thực thi 3 thuật toán khi minsup = 1% và D = 100000.... 31
Hình 2. 12: Đồ thị thời gian thực thi 3 thuật toán khi minsup = 1% và D= 50000 ...... 32
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
Hình 2. 13: Đồ thị thời gian thực thi của 3 thuật toán khi minsup =1% và D=10000 .. 32
viii
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ỏ ....... 32
Bảng 2. 3: Cơ sở dữ liệu ban đầu D ........................................................................... 44
Bảng 2. 4: Cơ sở dữ liệu sau khi chuyển đổi .............................................................. 44
Bảng 2. 5: Kết quả F1 ................................................................................................. 45
Bảng 2. 6: Kết quả F2 ................................................................................................. 46
Bảng 2. 7: Kết quả C3 ................................................................................................ 46
Bảng 2. 8: Kết quả Comb3 ......................................................................................... 47
Bảng 2. 9: Kết quả F3 ................................................................................................. 47
Bảng 2. 10: Kết quả C4 .............................................................................................. 48
Bảng 2. 11: Kết quả Comb4........................................................................................ 49
Bảng 2. 12: Kết quả F4 ............................................................................................... 49
Bảng 2. 13. Kết quả ................................................................................................... 49
Bảng 3. 1. Cấu trúc bảng dữ liệu ban đầu ................................................................... 55
Bảng 3. 2. Cấu trúc bảng dùng để khai phá dữ liệu .................................................... 56
Hình 3. 1. Mẫu đơn thuốc của Phòng khám đa khoa Trường cao đẳng Y Phú Thọ ..... 57
Hình 3. 2. Minh họa cấu trúc dữ liệu ban đầu ............................................................. 58
Hình 3. 3. Cấu trúc dữ liệu dùng để khai phá ............................................................. 58
Hình 3. 4. Tính độ hỗ trợ và độ tin cậy của luật {Cefalecin} => {Paracetamol} ......... 61
Hình 3. 5. Tính độ hỗ trợ và độ tin cậy của một luật {Decolgen}=>{Vitamin C} ....... 61
Hình 3.6. Đánh giá độ tin cậy của luật {Decolgen}=>{Vitamin B1} .......................... 65
Hình 3.7. Đánh giá độ tin cậy của luật {Cefalecin}=>{Vitamin C} ............................ 65
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
Hình PL1: Minh họa dữ liệu đầu vào ......................................................................... 68
1
MỞ ĐẦ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
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
cuộc sẽ dẫn đến việc tạo ra báo cáo kết quả.
2
Hì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ử du ̣ng tiếp cận nối K-way join
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
[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
3
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í
dữ 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
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
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ế
4
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
Mụ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.
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
Kết luận và hướng phát triển.
6
CHƯƠ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ý
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
dữ liệu không đầy đủ, dữ liệu nhiễu, dữ liệu không nhất quán, . . . ), rút
7
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
khoả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,
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
IBM DB2, MS Access, . . .
8
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.
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
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
(decision tree), mạng nơ ron nhân tạo (neural network). . .
9
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:
Hì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:
Hình 1. 3: Kiến trúc gắn kết lỏng
Thủ tục nội và hàm do người dùng định nghĩa (Stored procedure and
user defined functions): Theo kiến trúc này, công việc khai phá được xem
như là một ứng dụng trên máy chủ cơ sở dữ liệu. Các xử lý được thực thi
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
trên cùng không gian địa chỉ là HQTCSDL. Thuật toán khai phá được viết
10
dưới dạng thủ tục nội (stored procedure) nên việc lập trình khá uyển
chuyển, và có thể tái sử dụng.
Hì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
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
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
11
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).
1. 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
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
ra luật. )
12
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.
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
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
triển chương 2, chương 3 của luận văn.
13
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.
CHƯƠ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) . 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
. Mỗi giao tác được gán một định danh TID. Một tập mục con
, 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
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
mục X nếu .
14
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à:
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) (được xác định trước bởi người sử dụng). X
đượ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 , 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 , trong đó X
và Y là các tập con của I, ; 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 , ký
hiệu là , là độ hỗ trợ của tập mục , .
Như vậy độ hỗ trợ của luật kết hợp 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.
Ta có: .
Độ tin cậy của luật: Độ tin cậy (Confidence) của một luật , ký hiệu
, là tỷ lệ phần trăm giữa số giao tác chứa và số giao tác chứa
X trong cơ sở dữ liệu DB.
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
Độ tin cậy của luật kết hợp chính là xác suất có điều kiện P(Y/X) :
15
và ta có
Các luật thoả mãn cả hai ngưỡng độ hỗ trợ tố i thiểu (minsup) và độ tin cậy tố i thiểu
(minconf), tức thỏa mãn và ,
được gọi là luật kết hợp mạnh.
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à thì .
(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
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
thoả mãn vế phải
16
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.
Độ 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 trên cơ sở dữ liệu DB sao cho
và .
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
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
hay không xuất hiện).
17
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 , kiểm tra độ tin cậy của luật
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.
2. 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.
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
. . v. v.
18
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 Client-
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 độ
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
hệ 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ư
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
SELECT, UPDATE, INSERT, DROP.
19
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ử
<=, >=, 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
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
tử tập hợp như UNION, UNION ALL, INTERSECT hoặc MINUS.
20
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 đó:
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
100 a c d
200 b c e
300 a b e
Bảng 2. 1: Cấu trúc bảng ban đầu
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
21
Sẽ được đưa về cấu trúc D (tid, item) như bảng 3. 2
Item Tid
a 100
c 100
d 100
b 200
c 200
e 200
a 300
b 300
e 300
Bảng 2. 2: Cấu trúc bảng dùng để khai khác
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
viê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
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
SELECT I1. item1, …, I1. itemk-1, I2. itemk-1
22
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
Số 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
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
cho tiến trình này như sau:
23
Hình 2. 2: Tiến trình phát sinh tập ứng viên Ck
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}.
2. 2. 2. 2. 2. Đếm độ hỗ trợ bằng K-way join
Pha này rất quan trọng và tốn nhiều thời gian trong quá trình khai khác. Mục tiêu
của pha này là xác định ra được các itemset nào là tập phổ biến trong các tập ứng
viên. Trong cách tiếp cận dạng SQL, ta có 3 lựa chọn [14] để đếm độ hỗ trợ: K- way
join, 2-Group by, Query sub Query.
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,
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
item) và biểu đồ hình cây để phát sinh tập phổ biến có chiều dài k như sau:
24
INSERT 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
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
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
25
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
cả 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 (*)
FROM T, Ck
WHERE item = Ck. item1 OR
…. .
item = Ck. itemk
GROUP BY item1, item2, …, itemk, tid
HAVING COUNT (*) = k
) As temp
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
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
phí so sánh cao sẽ cao, thêm vào đó là việc sử dụng hai mệnh đề GROUP BY và
26
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.
Query 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 Qi
INSERT INTO Fk
SELECT item1, item2, …, itemk, count (*)
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
FROM (Subquery Qk) t
27
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,
(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
http://www.lrc.tnu.edu.vn
bán hàng tại một địa điểm thu ngân Số hóa bởi Trung tâm Học liệu – ĐHTN
28
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.
Gọi D là kích thước CSDL, minsup là độ hỗ trợ tối thiểu. Ta quy ước như sau:
0 < D ≤ 10000: Kích thước dữ liệu nhỏ
10000 < D ≤ 50000: Kích thước dữ liệu trung bình
D > 50000: Kích thước dữ liệu lớn
0 < minsup ≤ 1%: Độ hỗ trợ nhỏ
1 < minsup ≤ 5%: Độ hỗ trợ trung bình
minsup > 5%: Độ hỗ trợ lớn
Kế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
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
29
Hình 2. 5: Đồ thị thời gian thực thi 3 thuật toán khi minsup=10% và D=50000
Hì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
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
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
30
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:
Hì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
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
31
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:
Hình 2. 11: Đồ thị thời gian thực thi 3 thuật toán khi minsup = 1% và D = 100000
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
32
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
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ỏ
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
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
join như sau:
33
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
Do vậy giải pháp: Tính sẵn F1, F2
Tính F1: Sử dụng bảng dữ liệu đầu vào để tìm tập phổ biến có chiều dài 1.
Cấu trúc câu truy vấn như sau:
INSERT INTO F1
SELECT item, COUNT (*)
FROM InputTable T
GROUP BY T. item
HAVING 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
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
GROUP BY T1. item, T2. item
34
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)
2. 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:
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
INSERT INTO Combk
35
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:
INSERT INTO Fk
SELECT item1, item2, …, itemk
FROM Combk
GROUP BY item1, item2, …, itemk
HAVING COUNT (*) >= minsup
Một lưu ý nổi bật ở đây là F1, F2 đã được tính sẵn, nên nhu cầu tính Comb1,
Comb2 là không cần thiết. Đây là một tối ưu rất hiệu quả, vì nếu phải tính Comb1,
Comb2 thì kết quả của 2 tập này sẽ rất lớn. Và như vậy chi phí tính toán sẽ khá cao.
Ta chỉ cần tính bắt đầu từ Comb3 như sau.
INSERT INTO Comb3
SELECT T1. tid, t1. item, t2. item, t3. item
FROM InputTable T1, InputTable T2, InputTable T3, C3
WHERE
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
T1. item = C3. item1 and
36
T2. item = C3. item2 and
T3. item = C3. item3 and
T1. tid = T2. tid and
T2. tid = T3. tid
Sau khi có Comb3, ta tính sẵn F3 bằng cách
INSET INTO F3
SELECT item1, item2, item3
FROM Comb3
GROUP BY item1, item2, item3
HAVING COUNt (*) minsup
Combk sẽ được tính từ Combk-1, Ck, và T với k ≥ 4
2. 2. 4. 4. Tối ưu chỉ mục cho tập dữ liệu đầu vào
Ta nhận thấy, tập dữ liệu đầu vào được dùng nhiều lần trong việc so khớp để
tính F1, F2, Combk (k ≥ 3). Để giảm thiểu chi phí so khớp, ta sẽ tạo chỉ mục (index)
cho tập dữ liệu đầu vào. Khi đó, thay vì dò tìm trong tập dữ liệu đầu vào, việc dò
tìm sẽ được thực hiện trong bảng chỉ mục trước, sau đó kết quả sẽ được ánh xạ vào
tập dữ liệu đầu vào (nếu việc dò tìm trong bảng chỉ mục tồn tại). Việc tạo chỉ mục
trên bảng dữ liệu đầu vào được thực hiện như sau:
CREATE INDEX InputTable_index ON InputTable (tid, item)
2. 2. 4. 5. Thuật toán tìm tập phổ biến bằng K-way join
Với các cải tiến ở trên, thuật toán K-way join cải tiến được mô tả như sau [14, 15]:
Input:
CSDL: D (tid_attr, item_attr)
Độ hỗ trợ tối thiểu: minsup
Output
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
Các tập phổ biến Fi, i =1. . n
37
Giải thuật:
F1 = gen_F1 (D)//Tối ưu tính toán sẵn F1
D = delete_redundant_input_data (F1)// Tối ưu giảm kích thước dữ liệu đầu
vào
size_of_D = get_attr_count (D)
F2 = gen_F2 (D) //Tối ưu tính toán sẵn F2
--Tối ưu giảm số lượng liên kết từ k -> 3
C3 = get_C3 (F2)
Comb3 = get_Comb3 (D, C3)
F3 = gen_F3 (Comb3) //Tối ưu tính toán sẵn F3
level_current = 3 //Chiều dài của tập phổ biến hiện tại
f_current = get_attr_count (F2)
Lặp (f_current >0) // Tìm và phát sinh Ck với k≥ 4
level_current = level_current + 1
Clevel_current = candi_sql_gen (level_current)
candidate_count= get_attr_count (Clevel_current)
Nếu candidate_count > 0
Combk = gen_Combk (level_current)
End nếu
Nếu candidate_count > 0
Flevel_current = supcnt_k_way_join_optimize (level_current, minsup)
f_current= get_attr_count (Flevel_current)
End nếu
Ngược lại
f_current = 0
End nếu
f_current = f_current -1
End lặp
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
Trong đó:
38
gen_F1 (D): Phát sinh tập phổ biến có chiều dài 1 từ D
gen_F2 (D): Phát sinh tập phổ biến có chiều dài 2 từ D
gen_F3 (Combo3): Phát sinh tập phổ biến có chiều dài 3 từ Comb3
get_attr_count (table_name): Trả về số lượng mẩu tin trong bảng
table_name
candi_sql_gen (k): Phát sinh tập ứng viên có chiều dài k
gen_Combk (k): Phát sinh tập Combk có chiều dài k
supcnt_k_way_join_optimize (k, minsup): Phát sinh tập phổ biến có
chiều dài k sử dụng cách tiếp cận k-way join cải tiến: Sử dụng Combk để
phát sinh
2. 2. 5. Phát sinh luật kết hợp
2. 2. 5. 1. Giới thiệu
Đề tài đề xuất một phương pháp phát sinh luật kết hợp dựa trên tập luật mẫu.
Dưới đây là một số khái niệm và thuật toán:
Gọi I = { i1, i2, …, in }: Tập n thuộc tính;
VT, VP I: Itemset: Tập các item của vế trái (VT), tập các item của vế
phải (VP);
nVT, nVP N*: Số item của vế trái, số item của vế phải;
Gọi Rk: Là tập luật mẫu có chiều dài vế trái là k, k ≥1;
Luật mẫu có chiều dài k-TRk: là luật có dạng (VT, VP, k) và được hiểu là:
VT VP có chiều dài vế trái là k; trong đó: VTVP = Ø, VT ≠ Ø, VP ≠ Ø.
Phát sinh tập luật mẫu TRSk: Tập luật mẫu TRSk: Là tập các TRk. Để phát
sinh tập luật mẫu TRSk ta phát sinh tập các thuộc tính vế trái có chiều dài k trước.
Việc phát sinh tập các thuộc tính vế trái có chiều dài k được dựa trên tổ hợp chập k
của n phần tử với 1≤ k ≤ n-1. VTk = Cnk 1≤ k ≤ n-1. Các thuộc tính vế phải = tập
thuộc tính ban đầu trừ đi tập các thuộc tính vế trái.
Thuật toán phát sinh tập các thuộc tính vế trái:
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
VTk = Ø
39
For k =1 to n-1
VTk = phat_sinh_to_hop (n, k)
End for
Trong đó: thủ tục phat_sinh_to_hop (n, k): sẽ phát sinh ra tập các phần tử có
chiều dài k trong tập n phần tử.
Thuật toán phát sinh tập luật mẫu Rk như sau:
D= Tập các thuộc tính ban đầu
TRSk = Ø
For each phan_tu in VTk
nVT = len (phan_tu)
VP = D\{ phan_tu }
TRSk = TRSk{VT, VP, nVT}
End for
2. 2. 5. 2. Ví dụ 1
Với n = 2, D = {1, 2}. Kết quả phát sinh tập thuộc tính vế trái có chiều dài 1:
VT1= {{1}, {2}}; Và kết quả phát sinh tập luật mẫu tương ứng (có chiều dài 1):
TRS1 (tập luật mẫu)
TRS1 = {
{{1}, {2}, 1}, // {1} {2} có chiều dài vế trái là 1
{{2}, {1}, 1}
}
Ví dụ 2: Với n = 3, D = {1, 2, 3}. Thì kết quả phát sinh tập thuộc tính vế trái
có chiều dài 1, và 2 như sau:
VT1= {{1}, {2}, {3}}
VT2 = {
{1, 2},
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
{1, 3},
40
{2, 3}
}
Và kết quả phát sinh tập luật mẫu tương ứng sẽ là:
TRS1 = {
{{1}, {2, 3}, 1}, // {1} {2, 3} có chiều dài vế trái là 1
{{2}, {1, 3}, 1},
{{3}, {1, 2}, 1}
}
TRS2 = {
{{1, 2}, {3}, 2}, // {1, 2} 3 có chiều dài vế trái là 2
{{1, 3}, {2}, 2},
{{2, 3}, {1}, 2}
}
Sau khi đã tìm được tập các luật mẫu có chiều dài k. Bước tiếp theo là phát
sinh luật kết hợp dựa trên tập luật mẫu và các tập phổ biến tìm được. Thuật toán
phát sinh luật kết hợp như sau:
2. 2. 5. 3. Thuật toán
Thuâ ̣t toán được phát biểu như sau:
Max_len_of_rule = {frequent k-itemsets}
for (k = 2; k<= Max_len_of_rule; k++) do
TRSk = generate_template_rule_set (k)
for all subset t Fk do
VT = generate_subset (t)
sp_LHS = find_sp (VT)
conf = t. sp/sp_LHS
if conf (t) ≥ minconf then
rk = replace_Left (TRk, VT)
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
rk = replace_Right (TRk, t\VT)
41
Rk = Rk{rk, sp, conf}
end if
end for
end for
Answer = k{Rk}
Trong đó:
Max_len_of_rule: Chiều dài tối đa của các tập phổ biến
TRSk: Tập luật mẫu có chiều dài k
TRk: Luật mẫu có chiều dài k
Thủ tục con generate_template_rule_set (k): Phát sinh tập các luật mẫu có
chiều dài thuộc tính vế trái là k.
Thủ tục generate_subset (t): Phát sinh các tập con và t
Thủ tục find_sp (x): Tìm độ hỗ trợ của tập x
Thủ tục replace_Left (TRk, x): Thay thế tập thuộc tính vế trái của luật
mẫu TRk thành tập thuộc tính x
Thủ tục replace_Right (TRk, x): Thay thế tập thuộc tính vế phải của luật
mẫu TRk thành tập thuộc tính x
Ví dụ: Ta có tập phổ biến: {A, B} n = 2. support (A) =2, support (B) =3,
minconf=50%, D = 4, support (A, B) = 2. Khi đó, tiến trình tìm và phát sinh luật kết
hợp như sau:
Bước 1: Phát sinh tập luật mẫu với n = 2
TRS1 = {
{{1}, {2}, 1}, // {1} {2} có chiều dài vế trái là 1
{{2}, {1}, 1}
}
Bước 2: Tìm và phát sinh luật kết hợp dựa trên tập luật mẫu TRS1
Tập phổ biến F2 = { (A, B), 2})
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
t = {AB}:
42
VT t VT = A
Sp (A) =2
Conf = sp (AB)/sp (A) = 2/2 =1 > 0. 5
rk = replace_Left ({{1}, {2}, 1}, {A}) = {{A}, {2}, 1}
rk = replace_Right ({{A}, {2}, 1}, {B}) = {{A}, {B}, 1}
Rk = Rk {rk, sp, conf} = {{A}, {B}, 1}, 2, 1}
VT t VT= B
Sp (B) =2
Conf = sp (AB)/sp (A) = 2/3 = 0. 67 > 0. 5
rk = replace_Left ({{1}, {2}, 1}, {B}) = {{B}, {2}, 1}
rk = replace_Right ({{B}, {2}, 1}, {A}) = {{B}, {A}, 1}
Rk = Rk {rk, sp, conf} = {
{{A}, {B}, 1}, 2, 1},
{{B}, {A}, 1}, 2, 0. 67}
}
Tóm lại, tập luật thỏa điều kiện là:
Rk = {
{{A}, {B}, 1}, 2, 1},
{{B}, {A}, 1}, 2, 0. 67}
}
2. 2. 6. Rút ngọn luật kết hợp
Trong quá trình phát sinh luật kết hợp, có một số dạng luật có thể được rút
gọn lại cho tối ưu và giúp luật kết hợp có ý nghĩa hơn. Đề tài đề xuất 2 cách rút gọn
dựa trên hai tiêu chí:
Những luật có cùng thuộc tính vế trái và có tần suất thuộc cùng một miền
nào đó (miền này do người dùng tự định nghĩa) sẽ được thu gọn lại thành
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
một. Ví dụ có 2 luật A B có độ tin cậy từ 80% 100% . A C có độ
43
tin cậy từ 80% 100% . Sau khi rút gọn ta được: A B, C có độ tin cậy
từ 80% 100%
Những luật có cùng thuộc tính vế phải và có tần suất thuộc cùng một
miền nào đó (miền này do người dùng tự định nghĩa) sẽ được thu gọn lại
thành một. Ví dụ có 2 luật A B có độ tin cậy từ 80% 100% ; C B
có độ tin cậy từ 80% 100% . Sau khi rút gọn ta được: A hoặc C B có
độ tin cậy từ 80% 100%.
2. 2. 6. 1. Thuật toán rút gọn vế phải
For all x in Ri
VP = x. RHS
For all y in Ri
If y. LHS=x. LHS AND x<>y AND x. tan_suat= y. tan_suat
VP = VP + y. RHS
End if
end for
ROk = ROk{x. LHS, VP, tan_suat}
end for
Answer = k{ROk}
2. 2. 6. 2. Thuật toán rút gọn vế trái
For all x in Ri
VT = x. LHS
For all y in Ri
If y. RHS = x. RHS AND x<>y AND x. tan_suat=y. tan_suat
VT = VT + y. LHS
End if
end for
ROk = ROk {VT, x. RHS, tan_suat}
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
end for
44
Answer = k{ROk}
Với LHS, RHS: là vế trái và vế phải; Ri: Tập các luật có chiều dài i; ROk:
Tập luật tối ưu của các luật có chiều dài k
2. 2. 6. 3. Ví dụ áp dụng K-way join
Input: Cơ sở dữ liệu D, minsup =3
TID Item
1 A
2 A, B
3 A, B, C
4 A, B, C, D
5 A, B, C, D, E
6 A, B, C, D, E, F
Bảng 2. 3: Cơ sở dữ liệu ban đầu D
Output: Các tập phổ biến Fi;
Bước 1: Đưa dữ liệu về dạng cột. Tên cơ sở dữ liệu mới là D
Bảng 2. 4: Cơ sở dữ liệu sau khi chuyển đổi
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
45
Bước 2: Tối ưu 2 vòng lặp đầu tiên: Tính F1, F2
Tính F1:
SELECT m. item a1, COUNT (DISTINCT m. tid)sp INTO F1
FROM D m
GROUP BY m. item
HAVING COUNT (DISTINCT m. tid)> 2
Kết quả F1:
a1 sp
A 6
B 5
C 4
D 3
Bảng 2. 5: Kết quả F1
Tính F2:
SELECT t1. item a1, t2. item a2, count (*) sp INTO F2
FROM D T1, D T2
WHERE T1. tid = T2. tid and T1. item < T2. item
GROUP BY T1. item, T2. item
HAVING COUNT (*) > 2
Kết quả F2:
A1 a2 sp
A B 5
A C 4
B C 4
A D 3
B D 3
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
C D 3
46
Bảng 2. 6: Kết quả F2
Bước 3: Tính sẵn C3, Comb3, F3
Tính C3:
SELECT x1. a1 a1, x1. a2 a2, x2. a2 a3 INTO C3
FROM F2 x1, F2 x2, F2 x3
WHERE x1. a1 = x2. a1 AND
x1. a2 < x2. a2 AND
x1. a2 = x3. a1 AND
x2. a2 = x3. a2
a1 a2 a3
A B C
A B D
A C D
B C D
Bảng 2. 7: Kết quả C3
Tính Comb3:
SELECT T1. tid, T1. item a1, T2. item a2, T3. item a3 INTO Comb3
FROM D T1, D T2, D T3, C3
WHERE T1. item = C3. a1 AND
T2. item = C3. a2 AND
T3. item = C3. a3 AND
T1. tid = T2. tid AND
T2. tid = T3. tid
Tid a1 a2 a3
3 A B C
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
4 A B C
47
D 4 A B
D 4 A C
D 4 B C
C 5 A B
D 5 A B
D 5 A C
D 5 B C
C 6 A B
D 6 A B
D 6 A C
D 6 B C
Bảng 2. 8: Kết quả Comb3
Tính F3:
SELECT a1, a2, a3, count (*) sp INTO F3
FROM Comb3
GROUP BY a1, a2, a3
HAVING COUNT (*) minsup
sp a1 a3 a2
4 A C B
3 A B D
3 A C D
3 B C D
Bảng 2. 9: Kết quả F3
Bước 4: Ck, Combk, Fk với k ≥ 4; level_ct = 3; f_ct = count (F2) =4 //Số mẩu
tin trong F2. Trong khi f_ct = 4 >0 nên level_ct = level_ct +1 =3 +1 =4 và phát sinh
tập ứng viên C4 như sau:
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
SELECT x1. a1 a1, x1. a2 a2, x1. a3 a3, x2. a3 a4 INTO C4
48
FROM F3 x1, F3 x2, F3 x3, F3 x4
WHERE x1. a1 = x2. a1 AND
x1. a2 = x2. a2 AND
x1. a3 < x2. a3 AND
x1. a2 = x3. a1 AND
x1. a3 = x3. a2 AND
x2. a3 = x3. a3 AND
x1. a1 = x4. a1 AND
x1. a3 = x4. a2 AND
x2. a3 = x4. a3
a1 a2 A B a3 a4 C D
Bảng 2. 10: Kết quả C4
c_ct = count (C4) =1 // Số mẩu tin trong C4. Do c_ct =1 >0 nên ta tính Comb4
và phát sinh F4 như sau:
Comb4:
SELECT T1. tid, T1. a1 a1, T1. a2 a2, T1. a3 a3, T2. item a4
INTO Comb4
FROM C4, Comb3 T1, D T2
WHERE T1. a1 = C4. a1 AND
T1. a2 = C4. a2 AND
T1. a3 = C4. a3 AND
T2. item = C4. a4 AND
T1. tid = T2. tid
tid a1 a2 a3 a4
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
4 A B C D
49
5 A B C D
6 A B C D
Bảng 2. 11: Kết quả Comb4
Phát sinh F4:
SELECT a1, a2, a3, a4, COUNT (*) sp INTO F4
FROM Comb4
GROUP BY a1, a2, a3, a4
HAVING COUNT (*) 3
a1 a2 a3 a4 sp
A B C D 3
Bảng 2. 12: Kết quả F4
f_ct = count (F4)= 1 >0. Giảm f_ct đi 1: f_ct = f_ct -1 = 1 – 1 =0 vòng lặp
dừng. Kết luận: Các tập phổ biến tìm được thoả mãn đề bài:
Bảng 2. 13. Kết quả
2. 3. Kết luận chương
Chương 2 nghiên cứ u, so sánh, đánh giá về sự tối ưu của thuật toán K-way
join trong áp dụng tìm tập phổ biến. Dựa vào các kết quả thời gian thực thi của thuật
toán được lọc trích từ [14, 15], luận văn đã phân tích và đưa ra các điểm tối ưu của
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
thuật toán K-way join cải tiến, từ đó áp dụng thuật toán K-way join cải tiến này để
50
làm cơ sở trong tính toán thử nghiệm ở chương 3. Chương 2 cũng có đề xuất việc
phát sinh luật kết hợp dựa trên tập luật mẫu, tập phổ biến, các cách rút gọn luật kết
hợp.
Ở chương 3, đề tài sẽ tiến hành tính toán thử nghiệm với thuật toán K-way
join cải tiến đã được viết ở chương 2. Cơ sở dữ liệu sử dụng là các đơn thuốc về
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
một bệnh cúm của phòng khám đa khoa Trường Cao đẳng Y tế Phú Thọ.
51
CHƯƠNG 3
ỨNG DỤNG TRONG TÍNH TOÁN THỬ NGHIỆM
Ở chương này, luận văn đưa ra 3 bài toán trong đó bài toán 1 là tìm ra tất cả
các luật kết hợp từ cơ sở dữ liệu ban đầu theo độ hỗ trợ và độ tin cậy cho trước.
Như chúng ta đã biết công việc đưa ra tất cả các luật thì đã có rất nhiều nên bài toán
mà luận văn quan tâm đó là hai bài toán tìm độ hỗ trợ và tin cậy của luật, bài toán
đánh giá độ tin cậy của luật theo ngưỡng. Giải quyết các bài toán này giúp cho các
nhà quản lý vấn đề muốn biết, muốn kiểm nghiệm một luật bất kỳ họ đưa ra dạng X
Y thì có tin cậy hay không và độ tin cậy bao nhiêu? Từ đó áp dụng vào cơ sở dữ
liệu đơn thuốc được tổng hợp từ phòng khám đa khoa Trường Cao đẳng Y tế Phú
Thọ để đưa ra được các tri thức quan trọng, hữu ích, giúp cho việc học tập của học
sinh sinh viên được tốt hơn. Trong ứng dụng thử nghiệm, đề tài mới chỉ tổng hợp
các đơn thuốc về bệnh cúm, trong tương lai sẽ cố gắng xây dựng ứng dụng hoàn
thiện hơn, tổng hợp được nhiều loại bệnh hơn nữa nhằm có thể làm ứng dụng thực
tế được.
3. 1. Các bài toán
3. 1. 1. Bài toán tìm luật kết hợp dạng X Y
Từ cơ sở giao dịch N đã có, từ N ta xác định được tập các thuộc tính I={I1,
I2, …, In} và các giao dịch T. Xác định tất cả các luật kết hợp thỏa mãn ngưỡng α,
β cho trước.
Input: I, N, α, β
Output: Tất cả các luật kết hợp dạng XY
Để giải bài toán này chúng ta tiến hành theo các bước như sau:
- Bước 1: Tìm tất cả các tập con của của tập I, ký hiệu là P(I) (nếu I có m
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
thuộc tính ta sẽ có 2m tập con)
52
- Bước 2: Với mỗi tập con của P(I) gọi là X ta tính s(X), nếu s(X)≥α thì X là
tập FI được lấy.
- Bước 3: Các tập FI gồm: X1, X2, …, Xv với v ≤ 2m
- Bước 4: Từ các tập hợp FI mới tìm ra ta xét
C(X1X2)
C(X1X3)
C(X1X4)
…
C(X1Xv)
C(X2X3)
C(X2X4)
…
C(X2Xv)
…
C(X2X1)
…
C(Xv-1Xv)
Tìm ra luật kết hợp có độ tin cậy không nhỏ hơn β.
3. 1. 2. Bài toán tìm độ hỗ trợ và độ tin cậy của luật
Từ cơ sở giao dịch D đã có, từ D ta xác định được tập các thuộc tính I={I1,
I2, …, In} và các giao dịch T. Xác định một luật bất kỳ XY là có độ hỗ trợ và độ
tin cậy bao nhiêu?
Ta có thể xác định đầu vào và đầu ra của bài toán như sau:
Input: I, D, XY
Output: s(XY) và p(XY)
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
Ý tưởng giải bài toán:
53
- Các thuộc tính tham gia vào một luật XY có là thuộc tính của D
hay không?
- Tính độ hỗ trợ của tập X, tập Y, tập chứa cả X và Y sau đó tính độ
tin cậy s( XY).
Để giải bài toán này chúng ta tiến hành theo các bước như sau:
- Bước 1: Kiểm tra các thuộc tính của tập X và các thuộc tính của
tập YI hay không?
Nếu đúng sang bước 2
Ngược lại, luật XY là KHÔNG TIN CẬY
- Bước 2: Duyệt D để tính s(X), s(Y), s(XY) = s(XY) và tính
c(XY)= s(X Y)/ s(X)
- Bước 3: Trả kết quả s(XY) và c(XY)
Người bác sĩ hay một học sinh đang học dược lý…. họ cần biết một luật bất
kỳ XY là có tin cậy hay không? Để giải quyết vấn đề này người quản trị mạng
cần đưa ra một ngưỡng độ hỗ trợ và ngưỡng độ tin cậy α và β. Dựa trên 2 độ đo α
và β cùng với sự tính toán độ tin cậy và độ hỗ trợ của luật. Để từ đó kết luận một
luật có đáng tin cậy hay không? Bài toán tiếp theo sẽ giúp giải quyết vấn đề trên.
3. 1. 3. Bài toán đánh giá độ tin cậy của luật theo ngưỡng
Từ cơ sở giao dịch D đã có, từ D ta xác định được tập các thuộc tính I={I1,
I2, …, In} và các giao dịch T. Cho trước ngưỡng độ tin cậy β và ngưỡng độ hỗ trợ
α. Xác định một luật bất kỳ XY là có tin cậy hay không?
Ta có thể xác định đầu vào và đầu ra của bài toán như sau:
Input: I, D, α, β, XY
Output: Luật XY là TIN CẬY hoặc KHÔNG TIN CẬY
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
Ý tưởng giải bài toán:
54
- Các thuộc tính tham gia vào một luật XY có là thuộc tính của D
hay không?
- Tính độ hỗ trợ của tập X, tập Y, tập chứa cả X và Y so với ngưỡng α
biết trước.
- Tính độ tin cậy s( XY) so với ngưỡng β biết trước.
Để giải bài toán này chúng ta tiến hành theo các bước như sau:
- Bước 1: Kiểm tra các thuộc tính của tập X và Y I
Nếu đúng sang bước 2
Ngược lại, XY là KHÔNG TIN CẬY
- Bước 2: Duyệt D để tính s(X), s(Y)
- Bước 3: Kiểm tra s(X) ≥ α và s(Y) ≥ α
Nếu là đúng sang bước 4
Ngược lại, kết luận luật XY là KHÔNG TIN CẬY
- Bước 4: Duyệt D để tính s(XY)
- Bước 5: Kiểm tra nếu và s(XY) ≥ α
Nếu là đúng sang bước 6
Ngược lại, kết luận luật XY là KHÔNG TIN CẬY
- Bước 6: Duyệt D để tính c(XY)
- Bước 7: Kiểm tra c(XY) ≥ β
Nếu là đúng, kết luận luật XY là TIN CẬY
Nếu sai, kết luận luật XY là KHÔNG TIN CẬY
3. 1. 5. Giải pháp giúp thực hiện các bài toán
3. 1. 5. 1. Chọn 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
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
cấu trúc bảng dạng D (tid, item1, item2, …, itemn) là không thực tế. Ngoài ra, trong
55
thực tế, số item tối đa trong một giao tác có thể vượt quá số cột mà Hệ quản trị
CSDL 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
quá 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 Hệ quản trị CSDL, 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, List of Items).
Ví dụ:
Tid Danh sách các Items
1 Cefalecin, Paracetamol, AlphaChymotrypcin, Vitamin C, Vitamin B1
2 Cefalecin, Codacmin, Alpha Chymotrypcin, Vitamin C, Vitamin B1
3 Ameflu, Clorpheniramin, Vitamin C
4 Ameflu, Pamin, Cảm xuyên hương
Bảng 3. 1. Cấu trúc bảng dữ liệu ban đầu
Để thuận lợi trong quá trình cài đặt công việc khai thác dữ liệu tôi chuyển
đổi cấu trúc bảng dữ liệu ban đầu dạng D (Tid, List of Items) về bảng có cấu trúc
dạng D (Tid, Item).
Tid Item
1 Cefalecin
1 Paracetamol
1 AlphaChymotrypcin
1 Vitamin C
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
1 Vitamin B1
56
Cefalecin 2
Codacmin 2
Alpha Chymotrypcin 2
Vitamin C 2
Vitamin B1 2
Ameflu 3
Clorpheniramin 3
Vitamin C 3
Ameflu 4
Pamin 4
Cảm xuyên hương 4
Bảng 3. 2. Cấu trúc bảng dùng để khai phá dữ liệu
3. 1. 5. 2. Giảm kích thước đầu vào
Khi chúng ta xét độ tin cậy hoặc tính độ tin cậy của một luật thì trước chúng
ta phải tính độ hỗ trợ (hay độ thường xuyên của luật đó) và phải xét độ hộ trợ cho
từng thuộc tính. Để giảm thời gian duyệt trong mỗi lần thực hiện các bài toán được
đưa ra phía trên ta sẽ thực hiện giảm kích thước của bảng dữ liệu đầu vào.
Câu lệnh SQL sau đây giúp việc giảm kích thước bảng khaithac_bandau
(Tid, item)
SELECT *
FROM khaithac_bandau
GROUP BY item
HAVING COUNT (*) >= α
3. 2. Chương trình thử nghiệm
Trường Cao đẳng Y tế Phú Thọ là một trường đào tạo về y học, các học viên
đều sẽ phải trải qua các môn học về thuốc. Chương trình thử nghiệm này nhằm ứng
dụng các bài toán 2, bài toán 3, bài toán 4 vào CSDL được thu thập trong thực tế từ
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
đơn thuốc của phòng khám đa khoa trường Cao đẳng Y tế Phú Thọ về một loại bệnh
57
cúm. Kết quả này sẽ giúp ích cho các em học sinh sinh viên trong quá trình học
dược lý, tiến tới có thể xây dựng một chương trình lớn bao gồm nhiều tri thức về
thuốc và bệnh hơn nữa để áp dụng trong thực tiễn việc dạy và học dược lý.
Chương trình được cài đặt bằng Microsoft Visual Basic 6. 0, chạy trên máy
tính PC CPU Intel (R) Pentium (R), bộ nhớ trong 2GB RAM, sử dụng hệ điều hành
Windows XP Professional. Các thuật toán được thử nghiệm với dữ liệu khoảng 100
đơn thuốc về bệnh cúm lấy tại phòng khám đa khoa Trường Cao đẳng Y tế Phú
Thọ, đó là các đơn thuốc của phòng khám qua quá trình khám chữa bệnh từ năm
2014 cho đến nay.
Hình 3. 1. Mẫu đơn thuốc của Phòng khám đa khoa Trường cao đẳng Y Phú Thọ
3. 2. 1. Cơ sở dữ liệu của bài toán
Cấu trúc dữ liệu ban đầu được nhập vào bảng khaithac_bandau (Tid, Items) trong
đó:
Tid: kiểu số nhập mã giao dịch
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
Items: kiểu chuỗi ghi các mặt hàng trong mỗi lần giao dịch
58
Hình 3. 2. Minh họa cấu trúc dữ liệu ban đầu
Cấu trúc dữ liệu sau khi chuyển đổi được lưu vào bảng data_daxuly (Tid, Item)
trong đó:
Tid: kiểu số nhập mã giao dịch
Item: kiểu chuỗi ghi một mặt hàng trong mỗi lần giao dịch
Hình 3. 3. Cấu trúc dữ liệu dùng để khai phá
Với dữ liệu như trên, chương trình thiết kế mỗi một bài toán được viết riêng thành
một thủ tục, ta chạy bài toán nào chương trình sẽ gọi thủ tục đó.
3. 2. 2. Kết quả khai phá dữ liệu khi thực hiện các bài toán
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
Bài toán tìm độ hỗ trợ và độ tin cậy của luật:
59
Chương trình sẽ gọi thủ tục dbo. doluat_sc, các ký tự X Y nhập vào được gán thành
các biến mh1, mh2. Sau đó chương trình chạy 2 vòng lặp cho mh1, mh2 để đếm số
lần lặp của mh1, mh2 trong bảng data_daxuly. Độ hỗ trợ và độ tin cậy được tính
như sau:
Độ hỗ trợ: Số lần lặp của X và Y/ Số các đơn thuốc
Độ tin cậy: Số lần lặp của X và Y/ Số lần lặp X
Code thử nghiệm bài toán tính độ hỗ trợ và độ tin cậy của luật:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER function [dbo]. [sc_11](@string1 nvarchar(100), @string2 nvarchar(100))
returns @temptable table(mh1 nvarchar(50), mh2 nvarchar(50), supp real, conf real
)
AS
BEGIN
declare @hienthi1 nvarchar(100)
declare @hienthi2 nvarchar(100)
declare @s real
declare @c real
declare @t1 real
declare @t2 real
declare @t3 real
declare @t10 real
Set @hienthi1='{'+''+@string1+''+'}'+'=>'
Set @hienthi2='{'+''+@string2+''+'}'
select @t1=count(*) from dbo. transaction2
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
select @t2=count(distinct magd) from data_daxuly2 where
60
mh=ltrim(rtrim(@string1))
select @t10=supp from bang_2mh2 where (mathang1=ltrim(rtrim(@string1)) and
mathang2=ltrim(rtrim(@string2)))
if NOT exiStS(select*from data_daxuly2 where mh=ltrim(rtrim(@string1)))
OR NOT exiStS(select*from data_daxuly2 where mh=ltrim(rtrim(@string2)))
BEGIN
Set @s=0--@t10/@t1
Set @c=0--@t10/@t2
Insert into @temptable(MH1, MH2, supp, conf)
values (@hienthi1, @hienthi2, @s, @c)
end
ELSE
begin
if @t10>0 or @t10=0
begin
set @s=@t10/@t1
Set @c=@t10/@t2
end
else
begin
Set @s=0
Set @c=0
end
Insert into @temptable(mh1, mh2, supp, conf)
values (@hienthi1, @hienthi2, @s, @c)
end
Return
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
END
61
Màn hình kết quả thử nghiệm tính độ hỗ trợ và độ tin cậy của luật:
Hình 3. 4. Tính độ hỗ trợ và độ tin cậy của luật {Cefalecin} => {Paracetamol}
Hình 3. 5. Tính độ hỗ trợ và độ tin cậy của một luật {Decolgen}=>{Vitamin C}
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
Bài toán đánh giá độ tin cậy của luật theo ngưỡng
62
Bài toán này sử dụng cách tính độ hỗ trợ và độ tin cậy của luật giống như
bên trên vừa trình bày, sau khi có kết quả sẽ so sánh với độ hỗ trợ, độ tin cậy mà
nhà quản lý, người sử dụng đưa ra để đánh giá. Nếu độ hỗ trợ, độ tin cậy mà lớn
hơn giá trị nhà quản lý, người sử dụng đưa ra thì đánh giá là “Không tin cậy”.
Ngược lại, nếu nhỏ hơn thì sẽ đánh giá là “Tin cậy”.
Code thử nghiệm bài toán đánh giá độ tin cậy của luật theo ngưỡng:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
ALTER function [dbo]. [DGKQ_11](@string1 nvarchar(100), @string2
nvarchar(100), @sp real, @cf real)
returns @temptable table(mh1 nvarchar(50), mh2 nvarchar(50), supp real, conf real
, danhgia nvarchar(100) )
AS
BEGIN
declare @hienthi1 nvarchar(100)
declare @hienthi2 nvarchar(100)
declare @s real
declare @c real
declare @D nvarchar(100)
declare @t1 real
declare @t2 real
declare @t3 real
declare @t10 real
Set @hienthi1='{'+''+@string1+''+'}'+'=>'
Set @hienthi2='{'+''+@string2+''+'}'
select @t1=count(*) from dbo. transaction2
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
select @t2=count(distinct magd) from data_daxuly2 where
63
mh=ltrim(rtrim(@string1))
select @t3=count(distinct magd) from data_daxuly2 where
mh=ltrim(rtrim(@string2))
select @t10=supp from bang_2mh2 where (mathang1=ltrim(rtrim(@string1)) and
mathang2=ltrim(rtrim(@string2)))
if NOT exiStS(select*from data_daxuly2 where mh=ltrim(rtrim(@string1)))
OR NOT exiStS(select*from data_daxuly2 where mh=ltrim(rtrim(@string2)))
BEGIN
Set @s=0--@t10/@t1
Set @c=0--@t10/@t2
Set @D='TRONG LUAT CHUA MAT HANG KHONG TON TAI TRONG CSDL
D'
Insert into @temptable(MH1, MH2, supp, conf, danhgia)
values (@hienthi1, @hienthi2, @s, @c, @D)
end
ELSE
begin
if @t10>0 or @t10=0
if (@t10/@t1)<@sp or (@t3/@t1)<@sp or (@t2/@t1)<@sp
begin
set @s=@t10/@t1
Set @c=@t10/@t2
Set @D='KHONG TIN CAY'
end
else
if @t10/@t2>@cf
begin
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
Set @s=@t10/@t1
64
Set @c=@t10/@t2
Set @D='TIN CAY'
end
else
begin
Set @s=@t10/@t1
Set @c=@t10/@t2
Set @D='KHONG TIN CAY'
end
else
begin
Set @s=0
Set @c=0
Set @D='KHONG TIN CAY'
end
Insert into @temptable(mh1, mh2, supp, conf, danhgia)
values (@hienthi1, @hienthi2, @s, @c, @D)
end
Return
END
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
Màn hình thử nghiệm đánh giá độ tin cậy của luật theo ngưỡng:
65
Hình 3.6. Đánh giá độ tin cậy của luật {Decolgen}=>{Vitamin B1}
Hình 3.7. Đánh giá độ tin cậy của luật {Cefalecin}=>{Vitamin C}
3. 3. Kết luận chương
Ở chương 3, luận văn đã đưa ra cụ thể các bài toán về tính độ hỗ trợ, tính độ
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
tin cậy của luật và đánh giá một luật có tin cậy hay không. Các bài toán được minh
66
họa và chạy thử nghiệm qua phần mềm được viết từ Microsoft Visual Basic 6. 0,
chạy trên máy tính PC CPU Intel (R) Pentium (R), bộ nhớ trong 2GB RAM, sử
dụng hệ điều hành Windows XP Professional. Cơ sở dữ liệu là hàng trăm đơn thuốc
của phòng khám đa khoa Trường Cao đẳng Y tế Phú Thọ về bệnh cúm từ năm 2014
đến nay. Kết quả này sẽ giúp ích cho sinh viên y dược trong quá trình học tập và các
bác sĩ, dược sĩ có được những tri thức hay về thuốc, giúp ích cho công việc hàng
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
ngày.
67
KẾT LUẬN
Kết quả đạt được của luận văn
Về mặt lý thuyết: Đề tài đã tìm hiểu những cách tiếp cận khai thác dữ liệu
dựa trên ngôn ngữ truy vấn SQL-92 và chú trọng vào cách tiếp cận K-way join. Đề
phân tích, thử nghiệm, đánh giá và đề xuất cải tiến cho K-way join, đưa ra phương
pháp phát sinh và rút gọn luật kết hợp.
Về mặt thực hành: Đề tài đã đưa ra phương án, cách thức để tìm ra những tri
thức tốt về thuốc với cơ sở dữ liệu là các đơn thuốc.
Kết luận: Khai phá dữ liệu đã và đang là một lĩnh vực rất thu hút các nhà
nghiên cứu vì tính khoa học và ứng dụng của nó trong cuộc sống. Những thử thách
trong lĩnh vực khai phá còn rất nhiều, khai phá tri thức theo kiểu luật kết hợp cũng
còn cả một khối khổng lồ, đặc biệt là cách tiếp cận khai phá dữ liệu dựa trên truy
vấn SQL.
Hướng phát triển luận văn
Mở rộng thuật toán sang HQTCSDL quan hệ-đối tượng (sử dụng các đặc
tính quan hệ-đối tượng trong SQL như: UDFs, BLOBs, Table functions)
Đưa ràng buộc vào khai phá dữ liệu
Mở rộng sang khai phá mẫu phổ biến chuỗi (sequential partern mining).
Vì đây là lĩnh vực có phạm vi ứng dụng rất rộng và hiện tại có rất ít nghiên
cứu chuyên sâu về SQL để khai phá loại dữ liệu này.
Với những luật có độ tin cậy nhỏ hơn 100%, vấn đề luật thừa cũng cần
phải được xem lại. Lấy ví dụ, chúng ta đã có luật AB như vậy luật (A,
C) B là luật thừa. Nhưng trong thực tế thì (A, C) B phần lớn có độ
tin cậy cao hơn, và chính những luật có độ tin cậy cao là những luật chúng
ta cần quan tâm và tin tưởng hơn. Những luật mà vế trái càng nhiều items
thì càng quí, cũng giống như công việc điều tra mà có càng nhiều chứng
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
cứ càng tốt.
68
PHỤ LỤC
Luận văn sử dụng ngôn ngữ lập trình Microsoft Visual Basic 6. 0, hệ quản trị
cơ sở dữ liệu SQL Sever 2005 để tính toán thử nghiệm với dữ liệu là các đơn thuốc
cúm của phòng khám đa khoa Trường cao đẳng Y tế Phú Thọ.
Dữ liệu đầu vào: Tập các đơn thuốc bệnh cúm
Hình PL1: Minh họa dữ liệu đầu vào
Chương trình:
Giao diện chính:
Private Sub mnubaitoan2_Click() baitoan2. Show End Sub Private Sub mnubaitoan3_Click() baitoan3. Show End Sub Private Sub mnubaitoan4_Click() baitoan4. Show End Sub Private Sub mnuketnoidulie_Click() Dim str As String Set myCn = New Connection str = "Provider=SQLOLEDB. 1;User ID=" & mUser & ";Password=" & mPwd & _ ";Initial Catalog=" & mData & ";Data Source=" & mDataSource & "" myCn. Open str MsgBox "Ket noi thanh cong!!!", vbOKOnly, "Thong bao" End Sub
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
69
Private Sub cmscluat_Click() Dim str1 As String Set myCn1 = New Connection str1 = "Provider=SQLOLEDB. 1;User ID=" & mUser & ";Password=" & mPwd & _ ";Initial Catalog=" & mData & ";Data Source=" & mDataSource & "" myCn1. Open str1 Dim sqlstr1 As String Dim rs As ADODB. Recordset sqlstr1 = "select * from dbo. doluat_sc('" & txtstr1. Text & "', '" & txtstr2. Text & "')" 'myCn. Execute (sqlstr) 'ket noi Set rs = New ADODB. Recordset rs. Open sqlstr1, myCn1, adOpenStatic, adLockOptimistic Call HienKQLenGrid1(rs) rs. Close MsgBox "Da do luat!!!" End Sub Private Sub Cmthemgd_Click() Dim str1 As String Set myCn1 = New Connection 'myCn. CursorLocation = adUseClient str1 = "Provider=SQLOLEDB. 1;User ID=" & mUser & ";Password=" & mPwd & _ ";Initial Catalog=" & mData & ";Data Source=" & mDataSource & "" myCn1. Open str1 Dim sqlstr As String Dim rsmathang As New Recordset sqlstr = "exec dbo. themgiaodich '" & txtdsmathang. Text & "'" rsmathang. Open sqlstr, myCn1, adOpenStatic, adLockOptimistic 'MsgBox "Them thanh cong!!!" Call hienthidsmh End Sub Private Sub Cmxulydata_Click() Dim str1 As String Set myCn1 = New Connection 'myCn. CursorLocation = adUseClient str1 = "Provider=SQLOLEDB. 1;User ID=" & mUser & ";Password=" & mPwd & _ ";Initial Catalog=" & mData & ";Data Source=" & mDataSource & "" myCn1. Open str1 Dim sqlstr As String sqlstr = "exec dbo. taodata_daxuly3" myCn1. Execute (sqlstr) MsgBox "Xu ly du lieu xong!!!" End Sub Private Sub HienKQLenGrid1(rs As ADODB. Recordset) Dim i As Integer 'load du lieu len grid
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
Tính độ hỗ trợ và tin cậy của luật:
grdketqua1. Rows = 2 If (rs. EOF = False) Then i = 0 While (Not rs. EOF) i = i + 1 If (i >= grdketqua1. Rows - 1) Then grdketqua1. Rows = grdketqua1. Rows + 1 grdketqua1. TextMatrix(i, 0) = i End If grdketqua1. TextMatrix(i, 1) = rs!mh1 grdketqua1. TextMatrix(i, 2) = rs!mh2 grdketqua1. TextMatrix(i, 3) = rs!supp grdketqua1. TextMatrix(i, 4) = rs!conf rs. MoveNext Wend End If 'danh so thu tu cho cac cot Dim stt As Integer grdketqua1. Col = 0 For stt = 1 To grdketqua1. Rows - 2 grdketqua1. Row = stt grdketqua1. Text = stt Next stt End Sub Private Sub KtGird() grdketqua1. Clear grdketqua1. Rows = 2 grdketqua1. TextMatrix(0, 0) = "STT" grdketqua1. TextMatrix(0, 1) = "Mat hang 1" grdketqua1. TextMatrix(0, 2) = "Mat hang 2" grdketqua1. TextMatrix(0, 3) = "Supp" grdketqua1. TextMatrix(0, 4) = "Conf" grdketqua1. ColWidth(0) = 500 grdketqua1. ColWidth(1) = 2000 grdketqua1. ColWidth(2) = 2000 grdketqua1. ColWidth(3) = 1000 grdketqua1. ColWidth(4) = 1000 End Sub Public Sub KhoiTaoGird_2() grdthemgd. Clear grdthemgd. Rows = 2 grdthemgd. TextMatrix(0, 0) = "Stt" grdthemgd. TextMatrix(0, 1) = "ID" grdthemgd. TextMatrix(0, 2) = "Magd" grdthemgd. TextMatrix(0, 3) = "Mathang" grdthemgd. ColWidth(0) = 500
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
70
grdthemgd. ColWidth(1) = 500 grdthemgd. ColWidth(2) = 600 grdthemgd. ColWidth(3) = 5000 End Sub Private Sub Command1_Click() Unload Me End Sub Private Sub Form_Load() Dim str1 As String Set myCn1 = New Connection str1 = "Provider=SQLOLEDB. 1;User ID=" & mUser & ";Password=" & mPwd & _ ";Initial Catalog=" & mData & ";Data Source=" & mDataSource & "" myCn1. Open str1 baitoan2. Show Call KtGird Call KhoiTaoGird_2 Call hienthidsmh End Sub Public Sub hienthidsmh() Dim i, ii As Integer Dim sqlstr2 As String Dim rs1 As ADODB. Recordset Dim str As String Set myCn = New Connection str = "Provider=SQLOLEDB. 1;User ID=" & mUser & ";Password=" & mPwd & _ ";Initial Catalog=" & mData & ";Data Source=" & mDataSource & "" myCn. Open str i = 1 ii = 0 sqlstr2 = "select * from transaction2" Set rs1 = New ADODB. Recordset grdthemgd. Rows = 1 rs1. Open sqlstr2, myCn, adOpenDynamic, adLockBatchOptimistic With rs1 If (Not (. BOF And . EOF)) Then Do Until rs1. EOF grdthemgd. AddItem "" grdthemgd. TextMatrix(i, 0) = "" & ii + 1 grdthemgd. TextMatrix(i, 1) = Trim(. Fields(0). Value) grdthemgd. TextMatrix(i, 2) = "" & Trim(. Fields(1). Value) grdthemgd. TextMatrix(i, 3) = "" & Trim(. Fields(2). Value) ' grdthemgd. TextMatrix(i, 4) = "" & Trim(. Fields(3). Value) ii = ii + 1 i = i + 1 . MoveNext Loop . MoveFirst Else Exit Sub
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
71
72
End If End With End Sub
Option Explicit 'Dim WithEvents rsKhoa As Recordset Dim myCn As Connection Dim rsmathang As New Recordset Dim sqlstr As String Private Sub cmkiemtraluat_Click() Dim str As String Set myCn = New Connection str = "Provider=SQLOLEDB. 1;User ID=" & mUser & ";Password=" & mPwd & _ ";Initial Catalog=" & mData & ";Data Source=" & mDataSource & "" myCn. Open str Dim sqlstr As String Dim rs As ADODB. Recordset sqlstr = "select * from dbo. doluat_dg('" & txtstring1. Text & "', '" & txtstring2. Text & "', " & txtminsup. Text & ", " & txtmincof. Text & ")" 'myCn. Execute (sqlstr) 'ket noi Set rs = New ADODB. Recordset rs. Open sqlstr, myCn, adOpenStatic, adLockOptimistic Call HienKQLenGrid(rs) rs. Close MsgBox "Da kiem tra luat!!!" End Sub Private Sub Cmthemgd_Click() Dim str As String Set myCn = New Connection 'myCn. CursorLocation = adUseClient str = "Provider=SQLOLEDB. 1;User ID=" & mUser & ";Password=" & mPwd & _ ";Initial Catalog=" & mData & ";Data Source=" & mDataSource & "" myCn. Open str Dim sqlstr As String Dim rsmathang As New Recordset sqlstr = "exec dbo. themgiaodich '" & Me. txtdsmathang & "'" rsmathang. Open sqlstr, myCn, adOpenStatic, adLockOptimistic MsgBox "Them thanh cong!!!" Call hienthidsmh 'myCn. Execute (sqlstr) End Sub
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
Đánh giá độ tin cậy của luật:
Private Sub Cmxulydata_Click() Dim str As String Set myCn = New Connection 'myCn. CursorLocation = adUseClient str = "Provider=SQLOLEDB. 1;User ID=" & mUser & ";Password=" & mPwd & _ ";Initial Catalog=" & mData & ";Data Source=" & mDataSource & "" myCn. Open str Dim sqlstr As String sqlstr = "exec dbo. taodata_daxuly3" myCn. Execute (sqlstr) MsgBox "Xu ly du lieu xong!!!" End Sub Private Sub HienKQLenGrid(rs As ADODB. Recordset) Dim i As Integer 'load du lieu len grid grdketqua. Rows = 2 If (rs. EOF = False) Then i = 0 While (Not rs. EOF) i = i + 1 If (i >= grdketqua. Rows - 1) Then grdketqua. Rows = grdketqua. Rows + 1 grdketqua. TextMatrix(i, 0) = i End If grdketqua. TextMatrix(i, 1) = rs!mh1 grdketqua. TextMatrix(i, 2) = rs!mh2 grdketqua. TextMatrix(i, 3) = rs!danhgia rs. MoveNext Wend End If 'danh so thu tu cho cac cot Dim stt As Integer grdketqua. Col = 0 For stt = 1 To grdketqua. Rows - 2 grdketqua. Row = stt grdketqua. Text = stt Next stt End Sub Private Sub Form_Load() 'frmketqua. Show Call KhoiTaoGird Call KhoiTaoGird_2 Call hienthidsmh End Sub Private Sub KhoiTaoGird()
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
73
grdketqua. Clear grdketqua. Rows = 2 grdketqua. TextMatrix(0, 0) = "STT" grdketqua. TextMatrix(0, 1) = "Mat hang 1" grdketqua. TextMatrix(0, 2) = "Mat hang 2" grdketqua. TextMatrix(0, 3) = "Danh gia" grdketqua. ColWidth(0) = 500 grdketqua. ColWidth(1) = 2000 grdketqua. ColWidth(2) = 2000 grdketqua. ColWidth(3) = 5000 End Sub Public Sub KhoiTaoGird_2() grdthemgd. Clear grdthemgd. Rows = 2 grdthemgd. TextMatrix(0, 0) = "Stt" grdthemgd. TextMatrix(0, 1) = "ID" grdthemgd. TextMatrix(0, 2) = "Magd" grdthemgd. TextMatrix(0, 3) = "Mathang" grdthemgd. ColWidth(0) = 500 grdthemgd. ColWidth(1) = 500 grdthemgd. ColWidth(2) = 600 grdthemgd. ColWidth(3) = 5000 End Sub Public Sub hienthidsmh() Dim i, ii As Integer Dim sqlstr2 As String Dim rs1 As ADODB. Recordset Dim str As String Set myCn = New Connection str = "Provider=SQLOLEDB. 1;User ID=" & mUser & ";Password=" & mPwd & _ ";Initial Catalog=" & mData & ";Data Source=" & mDataSource & "" myCn. Open str i = 1 ii = 0 sqlstr2 = "select * from transaction2" Set rs1 = New ADODB. Recordset grdthemgd. Rows = 1 rs1. Open sqlstr2, myCn, adOpenDynamic, adLockBatchOptimistic With rs1 If (Not (. BOF And . EOF)) Then Do Until rs1. EOF grdthemgd. AddItem "" grdthemgd. TextMatrix(i, 0) = "" & ii + 1 grdthemgd. TextMatrix(i, 1) = Trim(. Fields(0). Value) grdthemgd. TextMatrix(i, 2) = "" & Trim(. Fields(1). Value) grdthemgd. TextMatrix(i, 3) = "" & Trim(. Fields(2). Value) ' grdthemgd. TextMatrix(i, 4) = "" & Trim(. Fields(3). Value) ii = ii + 1 i = i + 1
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
74
. MoveNext Loop . MoveFirst Else Exit Sub End If End With End Sub Private Sub Text1_Change() End Sub Private Sub thoat_Click() Unload Me End Sub
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
75
76
TÀI LIỆU THAM KHẢO
Tiếng Việt
[1]. Trương Ngọc Châu - Phan Văn Dũng (2002), “Nghiên cứu tính ứng
dụng của khai phá luật kết hợp trong cơ sở dữ liệu giao dịch”, Trường
đại học Bách khoa, Đại học Đà Nẵng.
[2]. Nguyễn Thanh Thủy, Khai phá dữ liệu – Kỹ thuật và ứng dụng, Hà nội
2001.
[3]. Nguyễn Huy Đức (2003), “Khai phá luật kết hợp trong cơ sở dữ liệu
lớn”, Kỷ yếu Hội thảo khoa học Quốc gia lần thứ nhất về nghiên cứu cơ
bản và ứng dụng CNTT, Hà Nội, 10/2003, tr. 128-136.
[4]. Đỗ Thái Hòa, “Tổ chức khai phá dữ liệu dựa trên ngôn ngữ truy vấn, áp
dụng vào bán hàng”. Luận văn Thạc sĩ công nghệ thông tin, Đại học Đà
Nẵng, 2009.
[5]. Vũ Đức Thi, Nguyễn Huy Đức (2008), “Thuật toán hiệu quả khai phá
tập mục thường xuyên cổ phần cao”, Kỷ yếu Hội thảo Một số vấn đề
chọn lọc về CNTT và TT, Huế, 12/2008, tr. 431-444.
[6]. Nguyễn Huy Đức (2010), “Khai phá tập mục cổ phần cao và lợi ích cao
trong cơ sở dữ liệu”. Luận án Tiến sĩ toán học, Viện khoa học và công
nghệ Việt Nam.
Tiếng Anh
[7]. Agrawal.R and Shim.K (1995), Developing tightly-couple Data mining
Applications on a Relational Database system. IBM Almaden Research
Center: San Jose, California.
[8]. Jiawei Han and Micheline Kamber: Data mining – Concepts and
Techniques, 1999.
[9]. Mehmed Kantardzic: Data mining – Concepts, Models, Methods, and
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
Algorithms.
77
[10]. Meo. R, Psaila. G and Ceri. S (1996), A New SQL-like Operator for
Mining Association Rules. Proceedings of the 22nd VLDB Conference,
Mumbai, India.
[11]. Ye Nong: The hand book of data mining, 2003.
[12]. Pratyush Mishra, S.Chakravarthy, Peformance Evaluation and Analysis
of SQL based Approaches for Association Rule Mining, 2003.
[13]. Pratyush Mishra, S.Chakravarthy, Evaluation of K-way Join and its
variants for Association Rule Mining, Year book BNCOD, 2002.
[14]. Erwin A., Gopalan R.P & Achuthan N.R. (2007), “CTU-Mine: An Efficient
High Utility Itemset Mining Algorithm Using the Pattern Growth Approach”,
Paper presented at the IEEE 7th International Conferences on Computer and
Information Technology, Aizu Wakamatsu, Japan.
[15]. Cai C.H., Chee Fu A.W, Cheng C.H., and Kwong (2005), “Mining
Association Rules with Weighted Items”, Proceedings of the Sixth
International Conference on Intelligent Data Engineering and Automated
Learning (IDEAL 2005).
[16]. Rakesh Agrawal, Ramakrishnan Srikant, “Fast Algorithms for Mining
Số hóa bởi Trung tâm Học liệu – ĐHTN
http://www.lrc.tnu.edu.vn
Association Rules”, 1993.