ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
======= ======
NGUYỄN NGỌC QUỲNH CHÂU
MỘT SỐ PHƯƠNG PHÁP KHAI PHÁ LUẬT KẾT
HỢP TRÊN CƠ SỞ DỮ LIỆU GIA TĂNG
LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN
Hà Nội – 2015
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
======= ======
NGUYỄN NGỌC QUỲNH CHÂU
MỘT SỐ PHƯƠNG PHÁP KHAI PHÁ LUẬT KẾT
HỢP TRÊN CƠ SỞ DỮ LIỆU GIA TĂNG
Ngành
: Công nghệ thông tin
Chuyên ngành : Kỹ thuật phần mềm
Mã số
: 60480103
LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN
Người hướng dẫn khoa học: GS. TS.Vũ Đức Thi
Hà Nội - 2015
1
LỜI CAM ĐOAN
Tôi xin cam đoan kết quả trong luận văn là sản phẩm của riêng cá nhân tôi.
Trong toàn bộ nội dung của luận văn, những điều được trình bày hoặc là của cá
nhân hoặc là được tổng hợp từ nhiều nguồn tài liệu. Tất cả các tài liệu tham
khảo đều có xuất xứ rõ ràng và được trích dẫn hợp pháp.
Tôi xin hoàn toàn chịu trách nhiệm theo quy định cho lời cam đoan
của mình.
Hà Nội, ngày 15/5/2015
Người cam đoan
Nguyễn Ngọc Quỳnh Châu
2
LỜI CẢM ƠN
Trước tiên, tôi xin chân thành cảm ơn tới các thầy cô giáo trong Khoa Công
nghệ thông tin, Đại học công nghệ, Đại học quốc gia đã nhiệt tình giảng dạy,
truyền đạt kiến thức.
Tôi cũng xin bày tỏ lời cảm ơn sâu sắc nhất tới thầy giáo GS Vũ Đức Thi
đã tận tình hướng dẫn, định hướng giải quyết các vấn đề trong luận văn.
Tôi xin cảm ơn Ban lãnh đạo và các đồng nghiệp trong Khoa Công nghệ
thông tin, Đại học Thủy Lợi đã tạo điều kiện cho tôi trong suốt quá trình học tập.
Cuối cùng, tôi xin cảm ơn gia đình, bạn bè đã đồng hành cùng tôi trong quá
trình học tập.
3
MỤC LỤC
LỜI CAM ĐOAN ........................................................................................................ 1
LỜI CẢM ƠN ............................................................................................................. 2
DANH MỤC CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT ................................................... 5
DANH MỤC HÌNH VẼ .............................................................................................. 6
DANH MỤC BẢNG BIỂU ......................................................................................... 7
CHƯƠNG 1:
KHAI PHÁ LUẬT KẾT HỢP ............................................................ 9
1.1 Tổng quan về khai phá dữ liệu ............................................................................. 9
1.2 Giới thiệu về khai phá luật kết hợp .................................................................... 10
1.3 Một số khái niệm cơ bản [3, 5, 7] ...................................................................... 11
1.3.1 Cơ sở dữ liệu giao tác ............................................................................... 11
1.3.2 Tập mục thường xuyên ............................................................................. 13
1.3.3 Luật kết hợp .............................................................................................. 14
1.4 Một số thuật toán khai phá luật kết hợp ............................................................. 16
1.4.1 Thuật toán AIS .......................................................................................... 16
1.4.2 Thuật toán Apriori..................................................................................... 18
CHƯƠNG 2:
KHAI PHÁ LUẬT KẾT HỢP TRÊN CƠ SỞ DỮ LIỆU GIA TĂNG
21
2.1 Mở đầu .............................................................................................................. 21
2.2 Thuật toán xử lý dữ liệu gia tăng theo chiều dọc - Thuật toán Gia tăng 1........... 21
2.2.1 Ý tưởng thuật toán .................................................................................... 21
2.2.2 Chuyển đổi cơ sở dữ liệu sang chiều dọc................................................... 23
2.2.3 Các thủ tục phụ trợ .................................................................................... 24
2.2.4 Tìm tập mục ứng viên ............................................................................... 27
2.2.5 Tính độ hỗ trợ của tập mục ứng viên ......................................................... 28
2.2.6 Khai phá tập thường xuyên ....................................................................... 29
2.2.7 Xử lý dữ liệu gia tăng................................................................................ 31
2.2.8 Ví dụ minh họa ......................................................................................... 32
2.2.9 Nhận xét về thuật toán gia tăng 1 .............................................................. 34
2.3 Thuật toán xử lý dữ liệu gia tăng theo chiều ngang – Thuật toán Gia tăng 2 ...... 35
4
2.3.1
2.3.2
2.3.3
2.3.4
2.3.5
2.3.6
2.3.7
Ý tưởng thuật toán .................................................................................... 35
Xây dựng cây gia tăng............................................................................... 36
Khai phá tập thường xuyên ....................................................................... 39
Lưu trữ và khôi phục cây gia tăng ............................................................. 41
Ví dụ minh họa ......................................................................................... 44
Nhận xét về thuật toán Gia tăng 2 ............................................................. 47
Đề xuất ý tưởng cải tiến cấu trúc cây gia tăng ........................................... 47
CHƯƠNG 3:
CÀI ĐẶT CHƯƠNG TRÌNH THỬ NGHIỆM.................................. 53
3.1 Mô tả chương trình chạy.................................................................................... 53
3.2 Thử nghiệm đánh giá thuật toán Gia tăng 1 ....................................................... 56
3.2.1 Thử nghiệm và đánh giá thuật toán trên nội dung 1, 2 ............................... 56
3.2.2 Thử nghiệm và đánh giá thuật toán trên nội dung 3 ................................... 60
3.3 Kết luận ............................................................................................................. 62
KẾT LUẬN ............................................................................................................... 64
TÀI LIỆU THAM KHẢO ......................................................................................... 65
5
DANH MỤC CÁC KÝ HIỆU VÀ CHỮ VIẾT TẮT
Ký hiệu
xi
tj
I
T
X={
sup(X)
S0
||X||
CSDL
,…,
}
Ý nghĩa
Mục dữ liệu thứ i
Giao tác thứ j
Tập hợp gồm n mục dữ liệu {xi, …, xn}
Cơ sở dữ liệu giao tác trên I là tập hợp gồm m giao tác
T= {t1, …, tm}
Tập mục dữ liệu X gồm k mục dữ liệu
Độ hỗ trợ của tập mục dữ liệu X
Ngưỡng hỗ trợ tối thiểu cho trước
Tập các tập thường xuyên theo ngưỡng S0
Độ dài của tập X = số các phần tử của X
Cơ sở dữ liệu
6
DANH MỤC HÌNH VẼ
Hình 1-1: Ví dụ minh họa thuật toán AIS................................................................... 18
Hình 1-2: Ví dụ về thuật toán Apriori ........................................................................ 20
Hình 2-1: Cấu trúc cây gia tăng ................................................................................. 36
Hình 2-2: Cây gia tăng với 6 giao tác được thêm vào ................................................. 46
Hình 2-3: Cây gia tăng sau khi được khôi phục.......................................................... 47
Hình 2-4: Cây gia tăng ở mục 2.3.4 sau khi sử dụng thuật toán cải tiến có cấu trúc nhỏ
gọn hơn...................................................................................................................... 52
Hình 3-1: Kết quả chạy thử nghiệm ban đầu của Gia tăng 1 ....................................... 54
Hình 3-2: Cơ sở dữ liệu test cho Apriori và Gia tăng 1 .............................................. 54
Hình 3-3: Kết quả chạy Apriori và Gia tăng 1 dữ liệu ban đầu hình 3.2 ..................... 55
Hình 3-4: Dữ liệu tăng thêm T’ .................................................................................. 55
Hình 3-5: Kết quả chạy Apriori và Gia tăng 1 trên T+T’ ............................................ 56
Hình 3-6: Thời gian chạy của Apriori và Gia tăng 1 trên CSDL 1, 2, 3,4 ban đầu ...... 58
Hình 3-7: Thời gian chạy của Apriori và Gia tăng 1 trên CSDL 1, 2,3, 4 sau khi gia
tăng............................................................................................................................ 58
Hình 3-8: Thời gian chạy của Apriori và Gia tăng 1 trên CSDL 5, 6, 7, 8 ban đầu ..... 59
Hình 3-9: Thời gian chạy của Apriori và Gia tăng 1 trên CSDL 5, 6, 7, 8 sau khi gia
tăng............................................................................................................................ 60
Hình 3-10: Kết quả chạy của Apriori và Gia tăng 1 trong trường hợp 1 ..................... 61
Hình 3-11: Kết quả chạy của Apriori và Gia tăng 1 trong trường hợp 1 ..................... 61
Hình 3-12: Kết quả chạy của Apriori và Gia tăng 1 trong trường hợp 3 ..................... 62
7
DANH MỤC BẢNG BIỂU
Bảng 1.1: Ma trận giao tác của cơ sở dữ liệu giao tác T ............................................. 12
Bảng 1.2: Biểu diễn ngang của cơ sở dữ liệu giao tác T ............................................. 12
Bảng 1.3: Biểu diễn dọc của cơ sở dữ liệu giao tác T ................................................. 13
Bảng 3.1: Giải thích tiêu đề ....................................................................................... 57
Bảng 3.2: Bộ cơ sở dữ liệu thứ nhất ........................................................................... 57
Bảng 3.3: Kết quả thu được trên bộ cơ sở dữ liệu thứ nhất ......................................... 57
Bảng 3.4: Bộ cơ sở dữ liệu thứ hai ............................................................................. 58
Bảng 3.5: Kết quả thu được trên bộ cơ sở dữ liệu thứ hai ........................................... 59
Bảng 3.6: Kết quả chạy của Apriori và Gia tăng 1 trong trường hợp 1 ....................... 60
Bảng 3.7: Kết quả chạy của Apriori và Gia tăng 1 trong trường hợp 2 ...................... 61
Bảng 3.8: Kết quả chạy của Apriori và Gia tăng 1 trong trường hợp 3 ...................... 61
8
MỞ ĐẦU
Khai phá dữ liệu nhằm phát hiện các tri thức mới giúp ích cho hoạt động của con
người đã trở thành một lĩnh vực quan trọng. Nhiều hướng tiếp cận khác nhau trong
khai phá dữ liệu như phân lớp, phân cụm, hồi quy, luật kết hợp. Khai phá luật kết hợp
là một kỹ thuật cơ bản và quan trọng được sử dụng trong khai phá dữ liệu. Khai phá
luật kết hợp nhằm tìm ra được những tập phần tử thường xuất hiện đồng thời trong cơ
sở dữ liệu hay còn gọi là tập mục thường xuyên (frequent patterns), từ đó rút ra được
luật về ảnh hưởng của một tập phần tử dẫn đến sự xuất hiện của một tập phần tử khác
như thế nào.
Khitìm các tập mục thường xuyên với các ngưỡng hỗ trợ khác nhau, công việc
tìm kiếm lại phải bắt đầu lại từ đầu. Điều này là lãng phí. Ngoài ra, trong thực tế, cơ sở
dữ liệu luôn được bổ sung và gia tăng theo thời gian. Do vậy yêu cầu cần có những
thuật toán hiệu quả cho việc phát hiện luật kết hợp khi dữ liệu tăng thêm.
Xuất phát từ nhu cầu tìm hiểu về một số phương pháp khai phá luật kết hợp trong
bối cảnh gia tăng dữ liệu, học viên đã chọn đề tài “Một số phương pháp khai phá luật
kết hợp trong cơ sở dữ liệu gia tăng”. Nội dung luận văn được chia thành 3 chương:
Chương 1: Khai phá luật kết hợp. Chương này giới thiệu về khai phá dữ liệu,
các bước trong khai phá dữ liệu, một số kỹ thuật được sử dụng trong khai phá
dữ liệu. Tiếp theo, chương này đưa ra những khái niệm trong khai phá luật kết
hợp nhưtập mục dữ liệu, cơ sở dữ liệu giao tác, độ hỗ trợ, độ tin cậy của luật kết
hợp. Hai thuật toán khai phá luật kết hợp được đề cập trong chương 1 là AIS và
Apriori.
Chương 2: Khai phá luật kết hợp trên cơ sở dữ liệu gia tăng. Chương này tập
trung vào nghiên cứu hai thuật toán khai phá dữ liệu trên cơ sở dữ liệu gia tăng:
thuật toán khai phá luật kết hợp trên cơ sở dữ liệu gia tăng theo chiều dọc và
thuật toán khai phá luật kết hợp trên cơ sở dữ liệu gia tăng theo chiều ngang.
Trong chương này, học viên cũng đề xuất thuật toán cải tiến cấu trúc cây gia
tăng trong thuật toán Gia tăng 2.
Chương 3: Cài đặt chương trình thử nghiệm. Chương này trình bày về cài đặt
hai thuật toán Apriori và thuật toán Gia tăng 1.Sau đó là phần chạy thử nghiệm
hai thuật toán trên một số cơ sở dữ liệu nhằm đánh giá hai thuật toán trên ba nội
dung: thử nghiệm trên cơ sở dữ liệu ban đầu, thử nghiệm trên cơ sở dữ liệu gia
tăng, thử nghiệm trên cơ sở dữ liệu ổn định với những ngưỡng khai phá khác
nhau. Từ đó rút ra được những so sánh, nhận xét và đánh giá về tính hiệu quả
của thuật toán Gia tăng 1 khi dữ liệu gia tăng.
9
CHƯƠNG 1: KHAI PHÁ LUẬT KẾT HỢP
Nắm được những kiến thức cơ bản về khai phá dữ liệu và những khái
niệm liên quan đến khai phá luật kết hợp như: tập mục dữ liệu, cơ sở
dữ liệu giao tác, biểu diễn của cơ sở dữ liệu giao tác, độ hỗ trợ và độ
tin cậy của tập mục dữ liệu, tập mục thường xuyên, bài toán khai phá
luật kết hợpv.v…Trong phần tiếp theo của chương này, học viên sẽ
trình bày hai thuật toán đầu tiên của khai phá luật kết hợp là AIS và
Apriori.Thuật toán Apriori là một nội dung cơ sở để phục vụ cho nội
dung chính của luận văn.
1.1
Tổng quan về khai phá dữ liệu
Khai phá dữ liệu (Data Mining) là một khái niệm ra đời vào những năm cuối của
thập kỷ 1980. Chúng ta có thể hiểu một cách sơ lược rằng khai phá dữ liệu là quá trình
tìm kiếm những thông tin (tri thức) hữu ích, tiềm ẩn và mang tính dự báo trong các tập
dữ liệu lớn. Theo [7]: Khai phá dữ liệu là một quá trình phức tạp để tìm kiếm những
mẫu hoặc những tri thức có giá trịtừ một lượng lớn dữ liệu. Các nguồn dữ liệu có thể
bao gồm cơ sở dữ liệu, kho dữ liệu, các trang web, các kho thông tin khác, hoặc dữ
liệu được nhập vào hệ thống một cách tự động.
Khai phá dữ liệu gồm những bước sau [7]:
1. Làm sạch dữ liệu: dữ liệu sau khi thu thập được có thể bị lỗi, nhiễu, không đầy
đủ, có mâu thuẫn.Những dữ liệu dạng này được xem như thông tin dư thừa, gây
nên những kết quả sai lệch. Do đó, cần phải làm sạch dữ liệu như gán các giá trị
còn thiếu, sửa chữa các dữ liệu nhiễu/lỗi.
2. Tích hợp dữ liệu: dữ liệu từ nhiều nguồn có thể được tích hợp với nhau.
3. Trích lọc dữ liệu: lấy ra những tập dữ liệu từ cơ sở dữ liệu ban đầu theo một số
tiêu chí nhất định.
4. Chuyển đổi dữ liệu: dữ liệu được chuyển từ bộ giá trị này sang một bộ giá trị
thay thế phù hợp cho việc khai phá dữ liệu.
5. Khai phá dữ liệu: sử dụng một kỹ thuật phương pháp nào đó để lấy ra được
những mẫu dữ liệu (patterns.)
6. Đánh giá các mẫu: đánh giá những mẫu theo tiêu chí nào đó.
7. Biểu diễn tri thức: biểu diễn các mẫu trích xuất được dưới dạng dễ hiểu như đồ
thị, hình vẽ, bảng,…
Một số kỹ thuật được sử dụng trong khai phá kết hợp (chính là được sử dụng
trong bước 5 của khai phá dữ liệu):
Phân loại: phương pháp phân loại cho phép chúng ta phân loại một đối tượng
vào một lớp. Mỗi lớp được đặc trưng bởi một số thuộc tính nào đó.Ví dụ chúng ta có
10
thể phân loại thành các lớp xe máy khác nhau theo các thuộc tính như nhãn hiệu, phân
khối, màu sắc. Khi có một chiếc xe mới chúng ta so sánh thuộc tính của nó với thuộc
tính của những lớp đã được định nghĩa để phân xe đó vào một lớp cụ thể. Quá trình
phân loại dữ liệu thường gồm hai bước: xây dựng mô hình và sử dụng mô hình để
phân loại dữ liệu.
Bước 1(bước học): Xây dựng mô hình dựa trên việc phân tích các mẫu dữ liệu
cho trước.
Bước 2 (bước phân loại): Sử dụng mô hình để phân loại dữ liệu.
Phân cụm: Phân cụm dữ liệu là quá trình chia một tập dữ liệu ban đầu vào các
tập con (subsets). Mỗi một tập như vậy gọi là một cụm (cluster). Các phần tử trong
cùng một cụm thì tương tự nhau (similar), các phần tử trong các cụm khác nhau thì sẽ
phi tương tự với nhau (dissimilar). Những phương pháp phân cụm khác nhau có thể sẽ
sinh ra các cụm khác nhau trên cùng tập dữ liệu ban đầu. Phân cụm được sử dụng rộng
rãi trong nhiều ứng dụng như kinh doanh thông minh (business intelligence), nhận
dạng ảnh, tìm kiếm web, sinh học và an ninh,…
Hồi quy: Theo Wikipedia, hồi quy là một phương pháp thống kê mà giá trị kỳ
vọng của một hay nhiều biến ngẫu nhiên được dự đoán dựa vào điều kiện của các biến
ngẫu nhiên (đã tính toán) khác. Cụ thể, có hồi qui tuyến tính, hồi qui lôgic, hồi qui
Poisson và học có giám sát.
Khai phá luật kết hợp: nhằm phát hiện ra những phần tử nào thường hay đi kèm
với nhau.
1.2
Giới thiệu về khai phá luật kết hợp
Khai phá luật kết hợp (Mining association rules) lần đầu được RakeshAgrawal
Agrawal đưa ra vào năm 1993 [5]. Khai phá luật kết hợp là một kỹ thuật được sử dụng
trong khai phá dữ liệu nhằm tìm ra các phần tử thường xuất hiện cùng nhau trong cơ
sở dữ liệu;từ đấyrút ra được các luật về ảnh hưởng của một tập phần tử dẫn đến sự
xuất hiện của tập phần tử khác. Ví dụ, sự xuất hiện của A kéo theo sự xuất hiện của B
nên ta có luật kết hợp (A→B). Dạng luật như vậy được gọi là luật kết hợp và quá trình
tìm ra được các luật kết hợp được gọi là khai phá luật kết hợp. Luật kết hợp là dạng
luật khá đơn giản nhưng mang lại khá nhiều ý nghĩa. Thông tin mà luật kết hợp cung
cấp hỗ trợ đáng kể trong quá trình đưa ra quyết định.
Các giải thuật khai phá luật kết hợp tìm kiếm các mối liên kết giữa các phần tử
dữ liệu, ví dụ như nhóm các món hàng thường được mua kèm với nhau trong siêu thị.
Những nghiên cứu về luật kết hợp gần đây tập trung xây dựng các thuật toán khai phá
luật kết hợp mới, hiệu quả hoặc cải tiến, phát triển các thuật toán hiệu quả hơn từ các
thuật toán đã có.
Chúng ta xem xét một bài toán kinh điển về khai phá luật kết hợp được nêu ra
trong [7]: bài toán phân tích giỏ hàng. Khách hàng vào siêu thị mua hàng. Họ sẽ bỏ
11
vào giỏ hàng của họ những mặt hàng mà họ cần mua.Khai phá luật kết hợp trong bài
toán này nhằm tìm ra các luật kết hợp giữa các mặt hàng mà khách hàng đã mua. Một
số luật kết hợp rút ra được sau khi phân tích các mặt hàng được mua:
“98% khách hàngmàmua tạp chí thể thao thì đều mua các tạp chí về ôtô” sự
kết hợp giữa “tạp chí thể thao” với “tạp chí về ôtô”.
“60% khách hàng mà mua bia tại siêu thị thì đều mua bỉm trẻ em” sự kết hợp
giữa “bia” với “bỉm trẻ em”.
Những luật kết hợp như vậy rất có ích trong việc giúp các nhà quản lý nắm bắt
được thói quen mua hàng của khách hàng, khi mua một (hoặc một số) mặt hàng này
thì khách hàng có xu hướng mua thêm một số mặt hàng nào nữa. Từ đấy có những
chiến lược quản lý hợp lý. Như vậy, khai phá luật kết hợp có thể giải quyết được bài
toán hết sức đời thường như: hàng triệu khách hàng vào siêu thị sẽ mua mặt hàng nào?
Những mặt hàng nào mà khách hàng kết hợp cùng mua. Tất nhiên, khai phá luật kết
hợp cũng có nhiều ý nghĩa trong các lĩnh vực khác như tài chính, y học, công nghệ…
Khai phá luật kết hợp nhằm tìm ra sự tương quan (correlations) của các sự kiện
xuất hiện thường xuyên một cách đồng thời. Nhiệm vụ chính của khai phá luật kết hợp
là phát hiện ra các tập con cùng xuất hiện trong một khối lượng giao dịch lớn của một
cơsởdữliệu cho trước. Nói cách khác, thuật toán khai phá luật kết hợp cho phép tạo ra
các luật mô tảcác sựkiện xảy ra đồng thời (một cách thường xuyên) nhưthếnào. Bài
toán khai phá luật kết hợp được chia thành hai bài toán nhỏ:
Bài toán 1: Tìm các tập mục dữ liệu thường xuyên theo một ngưỡng S0 cho
trước.
Bài toán 2: Từ các tập mục dữ liệu thường xuyên tìm được ở bài toán 1, tìm các
luật kết hợp thỏa mãn độ tin cậy cho trước.
Bài toán thứ hai là bài toán đơn giản. Hầu hết các nghiên cứu về luật kết hợp tập
trung vào bài toán thứ nhất. Nội dung luận văn này cũng đi sâu vào nghiên cứu một số
thuật toán để tìm các tập mục dữ liệu thường xuyên.
1.3
Một số khái niệm cơ bản [3, 5, 7]
1.3.1
Cơ sở dữ liệu giao tác
Tập hợp các mục dữ liệuI={x1, x2, …, xn} là tập n thuộc tính (mục dữ liệu) riêng
biệt. Mỗi xi ∈ I gọi là một mục dữ liệu (item) hay là một thuộc tính. Ví dụ: I= {bánh
mì, sữa, bỉm,…). Một giao tác chứa một tập con {x , x , … , x } ⊆ I
. Đặt ti =
{x , x , … , x } , ti được gọi là định danh của giao tác{x , x , … , x }.
Một cơ sở dữ liệu giao tác (Transaction Database) trên I là một tập các định
danh giao tác T = {t1, t2,…,tm}, với ti là một định danh giao tác trên Ichứa một tập các
mục dữliệu X ⊆ I. Ví dụ, trong bài toán giỏ hàng, cơ sở dữ liệu giao tác là các lầnmua
12
hàng của mỗi khách hàng, cho biết trong một lần mua hàng, khách hàng mua những
mặt hàng nào.
Mỗi tập con X ⊆ I chứa k mục dữ liệu được gọi là tập mục k phần tử (k-itemset).
Khi đó ta nói rằng lực lượng của X bằng k (||X|| = k). Trong trường hợp không quan
tâm đến số mục dữ liệu của X, ta gọi tắt X là tập mục dữ liệu.
Biểu diễn cơ sở dữ liệu giao tác:
Ma trận giao tác: cho một cơ sở dữ liệu giao tác T = {t1, t2,…,tm} trên tập mục
dữ liệu I={x1, x2, …, xn}. Ma trận giao tác của T là ma trận m×n được định nghĩa:
1 ℎ
∈
=
0 ℎ
∉
Với một cơ sở dữ liệu giao tácTnhư sau thì ta sẽ có ma trận giao tác như trong
bảng 1.1:
t0 = {x0, x1, x2}
t1 = {x0,x1,x2,x3,x4}
t2 = {x0, x2, x3}
t3 = {x0, x2, x3, x4}
t4 = {x0, x1, x2, x3}
Bảng 1.1: Ma trận giao tác của cơ sở dữ liệu giao tác T
x0
x1
x2
x3
x4
t0
1
1
1
0
0
t1
1
1
1
1
1
t2
1
0
1
1
0
t3
1
0
1
1
1
t4
1
1
1
1
0
-Biểu diễn ngang: Một cơ sở dữ liệu là một danh sách các giao tác. Mỗi giao tác
chứa danh sách những mục dữ liệu trong giao tác đó. Như vậy chúng ta có thể hình
dung theo cách này thì các mục dữ liệu được biểu diễn theo chiều ngang.
Bảng1.2: Biểu diễn ngang của cơ sở dữ liệu giao tác T
Giao tác
t0
t1
t2
t3
t4
Mục dữ liệu
x0, x1, x2
x0, x1, x2, x3, x4
x0, x2, x3
x0, x2, x3, x4
x0, x1, x2, x3
-Biểu diễn dọc: Một cơ sở dữ liệu là danh sách các mục dữ liệu, mỗi một mục dữ liệu
13
có một danh sách tất cả các định danh của giao tác chứa mục dữ liệu này. Như vậy
chúng ta có thể hình dung theo cách này thì các mục dữ liệu được biểu diễn theo chiều
dọc.
Bảng1.3: Biểu diễn dọc của cơ sở dữ liệu giao tác T
Mục dữ liệu
x0
x1
x2
x3
x4
Giao tác
t0, t1, t2, t3, t4
t0, t1, t4
t0, t1, t2, t3, t4
t1, t2, t3, t4
t1, t3
-Độ hỗ trợ (support):X là một tập mục con của I: X⊆ I và t là một định danh
giao tác, t ∈ T. Nếu X∈ t thì ta nói rằng t chứa X. Độ hỗ trợ của X (ký hiệu là
support(X) hay sup(X)) là tần suất xuất hiện X trong T:
sup( ) =
ố
ị ℎ ℎứ
ố
ị ℎ
ổ
Như trong bảng 1.1, ta có sup(x0)=5/5=1, sup(x0, x1)= sup(x0, x1) = 3/5=0.6.
Từ khái niệm trên của độ hỗ trợ, chúng ta cũng có thể tính rằng: độ hỗ trợ sup(X)
của tập mục dữ liệu X là số các giao tác mà xuất hiện X. Theo cách này: sup(x0)=5,
sup(x0, x1)= 3.
Về bản chất, hai cách tính này là tương đương nhauvì đều cung cấp thông tin về
mục dữ liệu xuất hiện trong cơ sở dữ liệu là nhiều hay ít, từ đó biết được rằng nó có
phải là tập mục dữ liệu thường xuyên hay không.
1.3.2
Tập mục thường xuyên
Cho một tập mục X ⊆ I và một ngưỡng hỗ trợ tối thiểu minsup> 0 (được cho bởi
người sử dụng). Tập mục X được gọi là tập mục thường xuyên hay tập mục phổ biến
(Frequent ItemSet hay Large ItemSet) theo độ hỗ trợ tối thiểu minsup khi và chỉ khi
sup(X) ≥ minsup.
Gọi
là tập tất cả các tập mục dữ liệu thường xuyên theo ngưỡng hỗ trợ tối
thiểu S0 của cơ sở dữ liệu giao tác T trên I. Ta có các tính chất sau:
Tính chất 1: Mọi tập con của tập thường xuyên là một tập thường xuyên:
∀ ∈
à∀ ⊆
ℎỏ
⊆
ℎì
∈
Tính chất 2: Mọi tập mục dữ liệu chứa một tập con không thường xuyên thì là
một tập không thường xuyên:
14
∀ ∉
à∀ ⊆
ℎỏ
⊆
ℎì
∉
Tính chất 3: Nếu ⊆ thì sup(X) ≥ sup(Y) vì tất cả các giao tác chứa XY thì
cũng chứa X nhưng không phải giao tác nào chứa X thì cũng chứa cả Y.
1.3.3
Luật kết hợp
1.3.3.1
Khái niệm
Một luật kết hợp (Association Rules) trên cơ sở dữ liệu giao tácT là một biểu
thức có dạng → , với , ⊆
à ∩
= .
A gọi là tiên đề (hoặc nguyên nhân).
B gọi là hệ quả.
Độ hỗ trợ của luật kết hợp → được định nghĩa:
( → )=
( ∪ )=
( )
Với cơ sở dữ liệu giao tác ở bảng 2.1 ở ta có:
sup(x0→ x1) = sup({x0,x1}) = sup(x0x1) = 3
sup(x0x1→ x2) = sup(x0x1x2) = 3
sup(x0→ x4) = sup(x0x4) = 2
Luật kết hợp A→ B là thường xuyên theo ngưỡng S0 nếu sup(A→ B) ≥ S0. Ở ví
dụ trên, với S0 = 2, luật sup(x0→ x1), sup(x0x1→ x2) là luật thường xuyên theo ngưỡng
hỗ trợ S0.
Ý nghĩa của độ hỗ trợ: độ hỗ trợ mang ý nghĩa thống kê của luật. Nói rằng độ hỗ
trợ của luật A→ B là 20 nghĩa là có 20 giao tác chứa {AB}.
Độ tin cậy (Confidence) của luật A→ Blà tỷ lệ giữa số lượng các giao dịch trong
T chứa A ∪ và số giao dịch chứa A:
( → ) =
( )/
( ).
Luật kết hợp → được gọi là luật tin cậy (confidence rule) theo ngưỡng S0 và
( → )≥
C0 nếu → là luật thường xuyên theo ngưỡng S0và
ớ 0<
≤ 1.
Ý nghĩa của độ tin cậy: độ tin cậy đo mức độ “đúng đắn” của luật, và người ta
quan tâm đến luật có độ tin cậy cao. Một luật kết hợp A→ B là thường xuyên nhưng
độ tin cậy của nó thấp thì nó cũng không có ý nghĩa trong công tác quản lý. Ví dụ, khi
phân tích giỏ hàng của khách hàng trong một siêu thị ta rút ra được luật như sau: 40%
khách hàng mua cùng lúc cả sữa và bánh mì, 75% khách hàng mua sữa thì cũng mua
bánh mì. Như vậy, 30% là độ hỗ trợ của luật và 75% là độ tin cậy của luật.
Bài toán khai phá luật kết hợp có thể được phát biểu như sau: Cho một tập mục
dữ liệu I gồm n mục dữ liệu I={x1, x2, …, xn}và cơ sở dữ liệu giao tác T gồm m giao
tácT = {t1, t2,…,tm}, độ hỗ trợ tối thiểu minsup và độ tin cậy tối thiểu minconf. Tìm tập
các luật kết hợp:
R = {X→ Y | X, Y ⊆ I, s(X→ Y) ≥ minsup, conf (X→ Y) ≥ minconf}.
15
Giải quyết bài toán: bài toán khai phá luật kết hợp được chia thành hai bài toán
nhỏ:
Bài toán 1 (Bài toán khai phátập mục thường xuyên): tìm tất cả những tập mục
dữ liệu mà có độ hỗ trợ lớn hơn hoặc bằng minsup.
Bài toán 2 (Bài toán khai phá luật kết hợp): từ những tập mục thường xuyên tìm
được ở bài toán 1, tìm tất cả các luật kết hợp có độ tin cậy lớn hơn hoặc bằng
mincof.
Ví dụ minh họa cho bài toán khai phá luật kết hợp: chúng ta sử dụng bài toán giỏ
hàng trong siêu thị: siêu thị có 4 mặt hàng (4 mục dữ liệu) và có 4 giao tác (4 hóa đơn
mua hàng) như sau:
Giao tác
Mặt hàng được mua
bánh mì, bơ, trứng
bơ, trứng, sữa
bơ
bánh mì, bơ
Tìm luật kết hợp với minsup = 40% và minconf = 60%
Ta tính được độ hỗ trợ của các tập mục dữ liệu như sau:
Tập mục dữ liệu
bánh mì
bơ
trứng
sữa
bánh mì, bơ
bánh mì, trứng
bánh mì, sữa
bơ, trứng
bơ, sữa
trứng, sữa
bánh mì, bơ, trứng
bánh mì, bơ, sữa
bơ, trứng, sữa
bánh mì, bơ, trứng, sữa
Độ hỗ trợ
50%
100%
50%
25%
50%
25%
0%
50%
25%
25%
25%
0%
25%
0%
Từ đó, ta tìm được tập mục thường xuyên là (bánh mì, bơ), (bơ, trứng), ta tính
được độ tin cậy của các luật kết hợp thường xuyên.
16
Luật kết hợp
bánh mì → bơ
bơ → bánh mì
bơ → trứng
trứng → bơ
Độ tin cậy
50%
100%
100%
50%
Vậy luật kết hợp thỏa mãn minsup và minconf cho trước là bơ → bánh mì, bơ →
trứng.
1.3.3.2
Một số tính chất của luật kết hợp
Tính chất 1: Không hợp luật
Nếu X → Y và X → Z thì không thể suy ra X → YZ.
Nếu X → Y và Z → Y thì không thể suy ra XZ → Y.
Tính chất 2: Không tách luật
Nếu XY → Z thì không thể suy ra X → Z và Y → Z.
Tuy nhiên đảo lại X → YZ thì X → Y và X → Z.
Tính chất 3: Các luật kết hợp không có tính chất bắc cầu
Nếu X → Y và Y → Z thì không thể suy ra X → Z.
Tính chất 4: Nếu luật X → (L – X) không thỏa mãn độ tin cậy tối thiểu thì Y →
(L – Y) cũng không thỏa mãn độ tin cậy tối thiểu với Y ⊆ X và X, Y ⊂ L.
1.4
Một số thuật toán khai phá luật kết hợp
1.4.1
Thuật toán AIS
Thuật toán AIS [5] là thuật toán đầu tiên được đề xuất cho khai phá luật kết hợp.
Nội dung cơ bản của thuật toán AIS:
Duyệt cơ sở dữ liệu lần thứ nhất để tính độ hỗ trợ của từng mục dữ liệu, lấy ra
tập L1 gồm những mục dữ liệu có độ hỗ trợ ≥ngưỡng hỗ trợ tối thiểu S0 cho
trước.
Từ L1 (là tập 1 mục dữ liệu thường xuyên), tìm C2 là tập ứng viên có 2 mục dữ
liệu bằng cách: duyệt từng giao tác, ghép từng cặp mục dữ liệu có trong giao tác
thành tập ứng viên. Ứng với mỗi tập ứng viên, duyệt lại cơ sở dữ liệu để đếm số
giao tác có chứa tập mục này để tính độ hỗ trợ và thu được tập các tập thường
xuyên có 2 mục dữ liệu.
17
Lặp lại, tìm được tập mục ứng viên có k phần tử từ những tập mục dữ liệu k
phần tử lấy từ các phần tử trong giao tác. Tiếp tục cho đến khi tập những tập
mục dữ liệu thường xuyên có k+1 phần tử là rỗng.
Ví dụ: chạy thuật toán AIS với độ hỗ trợ tối thiểu S0 = 3 và cơ sở dữ liệu như
sau:
t0
t1
t2
t3
t4
x0
1
1
1
1
1
x1
1
1
0
0
1
x2
1
1
1
1
1
x3
0
1
1
1
1
x4
0
1
0
1
0
Ta có các bước khi chạy thuật toán AIS như sau:
Bước 1:
Mục dữ liệu
x0
x1
x2
x3
x4
Độ hỗ trợ
5
3
5
4
2
L1
x0
x1
x2
x3
Bước 2:
Mục dữ liệu
x0 x1
x0 x2
x1 x2
x0 x3
x0 x4
x1 x3
x1 x4
x2 x3
x2 x4
Độ hỗ trợ
3
5
3
4
2
2
1
4
2
L2
x0 x1
x0 x2
x1 x2
x0 x3
x2 x3
18
Bước 3:
Mục dữ liệu
x0 x1 x2
x0 x1 x3
x0 x1 x4
x1 x2 x3
x1 x2 x4
x2 x3 x4
x0 x2 x3
x0 x2 x4
Độ hỗ trợ
3
2
1
2
1
2
2
2
L3
x0 x1 x 2
Độ hỗ trợ
2
1
2
1
L4
∅
Bước 4:
Mục dữ liệu
x0 x1 x2 x3
x0 x1 x2 x4
x0 x2 x3 x4
x1 x2 x3x4
Hình 1-1: Ví dụ minh họa thuật toán AIS
Thuật toán AIS phải tính nhiều mục dữ liệu ứng viên, ngoài ra phải duyệt nhiều
lần toàn bộ cơ sở dữ liệu để tính độ hỗ trợ của các tập ứng viên.
1.4.2
Thuật toán Apriori
Apriori là một thuật toán được đề xuất bởi R. Agrawal và R. Srikant vào năm
1994 [6] nhằm khai khá những tập mục dữ liệu thường xuyên. Sở dĩ thuật thuật toán
có tên như vậy là do thuật toán sử dụng những hiểu biết của tập mục thường xuyên
(prior knowledge). Apriori sử dụng cách tiếp cận lặp đi lặp lại được biết như là một
phương pháp tìm kiếm khôn ngoan: sinh ra các tập ứng viên Ck (gồm những phần tử
cók mục dữ liệu) từ các tập thườngxuyên Lk-1 (gồm những phần tử thường xuyên có k1 mục dữ liệu).Thuật toán Apriori sử dụng tính chất sau đây của tập thường xuyên:
Mọi tập con của một tập mục thường xuyên là tập thường xuyên.
Thuật toán Apriori:
Input: cơ sở dữ liệu giao tác T, min_sup
Output: Answer là tập các tập mục thường xuyên theo ngưỡng min_sup
Method:
19
L1 = {tập mục thường xuyên chứa 1 mục dữ liệu};
for ( k = 2; Lk-1 Ø; k++ ) do begin
Ck = apriori-gen(Lk-1); // sinh ra tập ứng viên Ck
forall transactions tTdo begin
Ct = subset(Ck, t); // những tập ứng viên nằm trong t
forall candidates cCtdo
c.count++;
endfor;
Lk = {cCk | c.count minsup}
Endfor;
Answer = kLk;
Hàm apriori_gen
Input: Lk-1
Output: Ck
Method:
Ck = ∅ ;
For each (p, q) in Lk-1
If p.item1 = q.item1, …, p.itemk – 2 = q.itemk – 2 and p.itemk – 1 q.itemk – 1
Ck = Ck ∪ {p.item1, p.item2, …, p.itemk – 1, q.itemk – 1};
forall itemsets c Ckdo
forall (k – 1)-subsets s of c do
if (s Lk – 1) thendelete c from Ck;
enfor;
endfor;
endfor;
Ví dụ: Chạy thuật toán Apriori với cơ sở dữ liệu T sau:
t0
x0
x1
x2
x3
x4
1
1
1
0
0
20
t1
1
1
1
1
1
t2
1
0
1
1
0
t3
t4
1
1
0
1
1
1
1
1
1
0
Bước 1:
C1
x0
x1
x2
x3
x4
Độ hỗ trợ
5
3
5
4
2
L1
x0
x1
x2
x3
Bước 2:
C’2
x0 x1
x0 x2
x0 x3
x1 x2
x1 x3
x2 x3
C2
x0 x1
x0 x2
x0 x3
x1 x2
x1 x3
x2 x3
Độ hỗ trợ
3
4
4
3
2
4
L2
x0 x1
x0 x2
x0 x3
x1 x2
x2 x3
C3
x0 x1 x2
Độ hỗ trợ
3
L3
x0 x1 x2
Bước 3:
C’3
x0 x1 x2
x0 x1 x3
Bước 4: C’4 rỗng. Ngừng lặp
Hình 1-2: Ví dụ về thuật toán Apriori
21
CHƯƠNG 2: KHAI PHÁ LUẬT KẾT HỢP TRÊN CƠ SỞ DỮ LIỆU GIA
TĂNG
Nội dung chính của chương này sẽ trình bày chi tiết về hai thuật
toán được sử dụng cho khai phá luật kết hợp trên cơ sở dữ liệu gia
tăng. Mỗi thuật toán đại diện cho một cách tiếp cận của bài toán:
thuật toán Gia tăng 1 đại diện cho cách tiếp cận duyệt cơ sở dữ liệu
theo chiều rộng, thuật toán Gia tăng 2 đại diện cho cách tiếp cận
duyệt cơ sở dữ liệu theo chiều sâu. Nhưng cả hai phương pháp này
đều có chung đặc điểm là khi dữ liệu gia tăng thì chỉ tính toán trên dữ
liệu gia tăng mà không cần phải tính toán lại từ đầu. Trong phần cuối
của chương, học viên đề xuất ý tưởng cải tiến cấu trúc cây gia tăng
của thuật toán Gia tăng 2.
2.1
Mở đầu
Khai phá luật kết hợp là một lĩnh vực được nhiều người quan tâm và có nhiều kết
quả công bố. Tuy nhiên những thuật toán khai phá luật kết hợp này có một đặc điểm là
chỉ khai phá trên cơ sở dữ liệu tĩnh, nghĩa là số lượng các giao tác trong cơ sở dữ liệu
là ổn định, không có sự biến động. Trên thực tế, số lượng các giao tác tăng lên hằng
giờ, hằng ngày. Một cơ sở dữ liệu mà các giao tác (hoặc các mục dữ liệu) tăng lên theo
thời gian như vậy được gọi là cơ sở dữ liệu gia tăng hoặc cơ sở dữ liệu tăng trưởng
(incremental database).Do đó, các tập mục thường xuyên và các luật kết hợp đã được
tính toán không còn giá trị trên tập dữ liệu mới. Khi đó phải tiến hành lại công việc từ
đầu trên cơ sở dữ liệu sau khi gia tăng. Chương này tập trung đi sâu vào vào hai thuật
toán khai phá luật kết hợp trên cơ sở dữ liệu gia tăng:
Thuật toán xử lý dữ liệu gia tăng theo chiều dọc [2,3]
Thuật toán xử lý dữ liệu gia tăng theo chiều ngang[1,3]
2.2
Thuật toán xử lý dữ liệu gia tăng theo chiều dọc - Thuật toán
Gia tăng 1
2.2.1
Ý tưởng thuật toán
Thuật toán khai phá cơ sở dữ liệu gia tăng theo chiều dọc còn được gọi là Thuật
toán Gia tăng 1. Cơ sở dữ liệu theo chiều dọc là biểu diễn của cơ sở dữ liệu giao tác
trong đó các giao tác được biểu diễn theo từng giao tác (xem mục 1.1.3). Theo thời
gian, các giao tác mới sẽ được thêm vào cơ sở dữ liệu giao tác (chú ý rằng các mục dữ
liệu là vẫn giữ nguyên, không tăng thêm). Khi đó thuật toán sẽ tìm được tất cả các tập
22
mục dữ liệu thường xuyên trên cơ sở dữ liệu sau khi gia tăng(là cơ sở dữ liệu cũ cộng
với cơ sở dữ liệu mới thêm vào).
Ý tưởng của Thuật toán Gia tăng 1 cũng tương tự như ý tưởng của thuật toán
Apriori (xem mục 1.4.2): xây dựng tập ứng viên Ck (gồm những phần tử có k mục dữ
liệu) từ các tập thườngxuyên Lk-1 (gồm những phần tử thường xuyên có k-1 mục dữ
liệu). Tuy nhiên thuật toán có một số cải tiến giúp nó chạy nhanh hơn:
Từ cơ sở dữ liệu giao tác T = {t1, t2, …, tm} trên tập mục dữ liệu I = {x1, x2, …,
xn} ban đầu, thuật toán chuyển thành cơ sở dữ liệu biểu diễn theo chiều dọc dọc P =
{P1, P2, …, Pn} trong đó Pi là tập các định danh của các giao tác chứa xi. Để tính độ
hỗ trợ của của tập mục dữ liệu X = { , … , }, thuật toán sẽ tính || ∩ … ∩ ||.
Với một cơ sở dữ liệu giao tác T ban đầu ban đầu, thuật toán tính độ hỗ trợ của
( )
của tất cả các tập mục dữ liệu trong I rồi lưu trữ trong tập
=
,
⊆
}. Theo thời gian, số lượng các giao tác tăng đần, thuật toán chỉ việctính độ hỗ trợ
của tập mục dữ liệu trên dữ liệu tăng thêm, mà không cần phải duyệt lại toàn bộ cơ
sở dữ liệu.
Trên một cơ sở dữ liệu giao tác ổn định, thuật toán Gia tăng 1 cũng cho phép
tìm được tập mục dữ liệu thường xuyên theo các ngưỡng hỗ trợ tối thiểu bất kỳ một
cách nhanh chóng nhờ vào cấu trúc SC. Khi lần đầu tìm các tập thường xuyên theo
ngưỡng S0, thuật toán tính độ hỗ trợ của tất cả các tập mục dữ liệu và lưu lại:
SC = {(X, Sup) | X là tập mục dữ liệu và Sup = Support(X)}.
Tập mục dữ liệu thường xuyên có theo ngưỡng hỗ trợ S0 là
:
= {X | (X, Sup) ∈ SC và Sup ≥ S0}
Sau đó nếu cần tìm các tập thường xuyên theo ngưỡng S1, có hai khả năng xảy
ra:
Nếu S1≥ S0 thì chỉ cần lọc trong SC những (X, Sup) thỏa
-
⊆
-
≤
Nếu
⊆
⇒
∉
,
⇒
= { |( ,
)∈
,
≥
≥
:
}
:
= { |( ,
( )≥
)∈
,
≥
} ∪ { ⊆ |( ,
)
}
Thuật toán sẽ gồm những công việc chính sau đây:
1. Chuyển đổi cơ sở dữ liệu giao tác sang chiều dọc.
2. Phân hoạch dữ liệu: các tập mục dữ liệu được đưa vào các nhóm khác nhau
theo đúng tiêu chí. Để thực hiện việc phân hoạch dữ liệu, thuật toán sử dụng
một số thủ tục phụ trợ.
3. Tìm các tập mục ứng viên. Tính độ hỗ trợ của các tập mục ứng viên.
23
4. Từ các tập mục ứng viên, lấy ra được những tập mục có độ hỗ trợ lớn hơn hoặc
bằng ngưỡng hỗ trợ cho trước.
2.2.2
Chuyển đổi cơ sở dữ liệu sang chiều dọc
Cơ sở dữ liệu giao tác ban đầu gồm có m giao dịch T = {t1, t2, …, tm} trên tập
mục dữ liệu I = {x1, x2, …, xn}. Gọi tid là số thứ tự của t trong T mà ta gọi là định danh
của giao tác t. Khi đó, PT = {tid | t ∈ T} = {1,2, …,m}.
Thủ tụcVerticalxây dựng n tập hợp {P1, P2, …,Pn} với Pilà tập hợp tất cả các định
danh của các giao tác chứa xitrong T: Pi = {tid ∈ PT | xi ∈ t}. Như vậy Sup(xi) = ||Pi||.
Thủ tục Verticalchuyển đổi cơ sở dữ liệu ban đầu sang thành tập các giao dịch
P={P1, P2, …,Pn}như sau:
Thủ tục Vertical(T, P);
Input:
- T = {t1, t2, …, tm}: cơ sở dữ liệu giao tác trên I = {x1, x2, …, xn};
Output:
- P = {P1, P2, …,Pn} với Pi = {
,
,…,
};
Method:
for i=1 to ndo
Pi := ∅;
endfor;
for j :=1 to m do
for i=1 to ndo
if (xi ϵ tj)then Pi=Pi∪ {j};
endfor;
endfor;
endproc;
Ví dụ, ta có CSDL giao dịch ban đầu T như trong ma trận sau:
t1
t2
t3
t4
t5
x1
1
1
1
1
1
x2
1
1
0
0
1
x3
1
1
1
1
1
x4
0
1
1
1
1
x5
0
1
0
1
0