Mọi khó khăn của bài toán khai phá luật kết hợp tập trung ở bài toán thứ nhất, đó là khai phá tất cả các tập mục thường xuyên thỏa mãn ngưỡng độ hỗ trợ cho trước, và các nghiên cứu về kh
Trang 1TRƯỜNG ĐẠI HỌC s ư PHẠM HÀ NỘI 2• • • •
===8oEŨ!g8===
LÊ THỊ THU HÀ
KHAI PHÁ LUẬT KẾT HỢP
TRÊN D ữ LIỆU DÃY
Chuyên ngành: Khoa học máy tính
Mã số: 60 48 01 01
LUẬN VĂN THẠC SĨ MÁY TÍNH
Người hướng dẫn khoa học: TS Nguyễn Long Giang
HÀ NỘI, 2015
Trang 2Bằng sự kính trọng và lòng biết ơn sâu sắc, em xin trân thành cảm ơn T.s
Nguyễn Long Giang, người đã tận tình hướng dẫn và giúp đỡ em trong suốt quá trình nghiên cứu và hoàn thành luận văn này
Em xin trân thành cảm ơn các thầy cô trong khoa Công nghệ thông tin, phòng Sau đại học Trường Đại học Sư phạm Hà Nội 2, các thầy cô trực tiếp giảng dạy trong toàn khóa học đã truyền thụ những kiến thức quý báu và tạo điều kiện thuận lợi cho em trong suốt quá trình học tập và nghiên cứu tại trường
Trong quá trình nghiên cứu, hoàn thiện luận văn khó tránh khỏi những thiếu sót Rất mong nhận được sự góp ý của Quý thầy cô và bạn bè đồng nghiệp quan tâm đến luận văn này
Vĩnh Phúc, ngày 06 tháng 12 năm 2015
Học viên
Lê Thị Thu Hà
Trang 3Tôi xin cam đoan đây là kết quả nghiên cứu của tôi dưới sự hướng dẫn khoa học của TS Nguyễn Long Giang.
Các số liệu, kết quả nêu trong luận văn là trung thực và chưa từng được
ai công bố trong bất kỳ công trình nào khác.
Học viên
Lê Thị Thu Hà
Trang 4LỜI CẢM ƠN
LỜI CAM ĐOAN
MỤC LỤ C i
DANH MỤC CÁC KÝ HIỆU, CÁC CHỮ VIẾT TẮ T iii
DANH MỤC CÁC BẢNG iv
DANH MỤC CÁC H ÌN H V MỞ Đ Ầ U 1
CHƯƠNG 1: TÔNG QUAN VỀ KHAI PHÁ TẬP MỤC THƯỜNG X U Y Ê N 4
1.1 Các khái niệm cơ b ả n 4
1.1.1 Cơ sở dữ liệu giao tá c 4
1.1.2 Tập mục thường xuyên và luật kết h ợ p 6
1.1.3 Các tính chất cơ bản của tập mục thường xuyên 7
1.1.4 Bài toán khai phá luật kết h ợ p 7
1.2 Thuật toán A p rio ri 8
1.3 Thuật toán FP-Growth 12
1.4 Tập mục thường xuyên có trọng số trên cơ sở dữ liệu giao tác 19
1.5 Kết luận chương 1 21
CHƯƠNG 2: KHAI PHÁ MẪU DÃY THƯỜNG XUYÊN CÓ TRỌNG SỐ 23
2.1 Bài toán khai phá mẫu dãy thường xuyên với trọng số chuẩn h ó a 24
2.1.1 Các khái niệm cơ b ả n 24
2.1.2 Cơ sở toán học cho bài toán khai phá mẫu dãy thường xuyên với trọng số chuẩn h ó a 25
Trang 52.2 Thuật toán khai phá mẫu dãy thường xuyên với trọng số chuẩn hóa
(W prefixSpan) 35
2.2.1 Mô tả thuật toán W prefixSpan 35
2.2.2 Độ phức tạp thuật toán W prefixSpan 36
2.3 Kết luận chương 2 37
CHƯƠNG 3: THỬ NGHIỆM VÀ ĐÁNH GIÁ CÁC THUẬT T O Á N 38
3.1 Công cụ thử nghiệm 38
3.2 Số liệu thử nghiệm 38
3.3 Môi trường thử nghiệm 39
3.4 Ket quả thử nghiệm và đánh giá các thuật to á n 39
3.4.1 So sánh thời gian thực hiện của thuật toán PrefixSpan và WPrefixSpan 39 3.4.2 So sánh số mẫu dãy thường xuyên của thuật toán PreíixSpan và W PrefixSpan 40
3.4.3 So sánh bộ nhớ sử dụng của thuật toán PrefixSpan và WPrefixSpan 40
3.4.4 So sánh độ dài mẫu dãy thường xuyên của thuật toán PrefixSpan và W PrefixSpan 41
3.5 Kết luận chương 3 41
KẾT L U Ậ N 43
TÀI LIỆU THAM KHẢO 44 PHỤ LỤC
Trang 6Ký hiệu, chữ viết tắt Diễn giải
Trang 7Bảng 1.1 Biểu diễn ngang của cơ sở dữ liệu giao tá c 4
Bảng 1.2 Biểu diễn dọc của cơ sở dữ liệu giao tá c 5
Bảng 1.3 Ma trận giao tác của cơ sở dữ liệu bảng 1.1 5
Bảng 1.4 CSDL giao tác minh họa thực hiện thuật toán Apriori 10
Bảng 1.5 CSDL giao tác minh họa cho thuật toán FP- growth 13
Bảng 1.6 CSDL giao tác 21
Bảng 1.7 Trọng số của các m ụ c 21
Bảng 2.1 Cơ sở dữ liệu dãy s 28
Bảng 2.2 Giá trị trọng số các mục dữ liệu 28
Bảng 2.3 Cơ sở dữ liệu điều kiện với tiền tố < a > 31
Bảng 2.4 Cơ sở dữ liệu điều kiện với tiền tố < a a > 32
Bảng 2.5 Cơ sở dữ liệu điều kiện với tiền tố <a(ab)> 33
Trang 8DANH MỤC CÁC HÌNH•
H ình 1.2 Cây FP-tree được xây dựng dần khi thêm các giao tác ti, t2, t3 14
H ình 1.3 Cây FP-tree của CSDL DB trong b ả n g 15
H ình 1.4 FP-tree phụ thuộc của m 17
H ình 1.5 Các FP-tree phụ thuộc của am, cm và c a m 18
H ình 3.1 Thời gian thực hiện của thuật toán PreíixSpan và W prefixSpan 39
H ình 3.2 Số mẫu dãy thường xuyên của thuật toán PreíixSpan và WprefixSpan „40 H ình 3.3 Bộ nhớ sử dụng của thuật toán PreíixSpan và W prefixSpan 40
H ình 3.4 Độ dài mẫu dãy thường xuyên của thuật toán PreíixSpan và WprefixSpan 41
Trang 9MỞ ĐẦU
1 Lý do chọn đề tài
Khai phá luật kết hợp (Mining association rules) là bài toán quan trọng ữong lĩnh vực khai phá dữ liệu Khai phá luật kết hợp được giới thiệu bởi Agrawal [2] vào năm 1994 khi phân tích cơ sở dữ liệu bán hàng của siêu thị, phân tích sở thích mua của khách hàng bằng cách tìm ra những mặt hàng khác nhau được khách hàng mua cùng trong một lần mua Những thông tin như vậy sẽ giúp người quản lý kinh doanh tiếp thị chọn lọc và thu xếp không gian bày hàng hợp lý hơn, giúp cho kinh doanh hiệu quả hơn Bài toán khai phá luật kết hợp bao gồm hai bài toán con Bài toán thứ nhất là tìm các tập mục thường xuyên (Frequent itemset) thỏa mãn ngưỡng hỗ trợ tối thiểu cho trước, bài toán thứ hai là sinh ra các luật kết hợp (Association rule) thỏa mãn ngưỡng tin cậy cho trước từ tập mục thường xuyên tìm được Mọi khó khăn của bài toán khai phá luật kết hợp tập trung ở bài toán thứ nhất, đó là khai phá tất cả các tập mục thường xuyên thỏa mãn ngưỡng độ hỗ trợ cho trước, và các nghiên cứu về khai phá luật kết hợp phần lớn tập ữung vào bài toán khai phá tập mục thường xuyênBài toán khai phá tập mục thường xuyên do Agrawal và các cộng sự đề xuất [2] được gọi là bài toán khai phá tập mục thường xuyên nhị phân vì giá trị của mỗi mục
dữ liệu trong một giao tác là 0 hoặc 1, tức là chỉ quan tâm mục dữ liệu có xuất hiện trong giao tác hay không Do đó, bài toán này chỉ mang ngữ nghĩa thống kê, không phản ánh được vai trò khác nhau của các thuộc tính cũng như đặc tính dữ liệu vốn có của chúng trong cơ sở dữ liệu
Đe đáp ứng yêu cầu của thực tiễn, bài toán khai phá tập mục thường xuyên đã
có nhiều cách thức mở rộng và ứng dụng Một trong những hướng mở rộng là xem xét mức độ quan ữọng khác nhau của các mục dữ liệu bằng cách gán cho mỗi mục một giá trị được gọi là trọng số (số lượng hoặc giá trị của tập mục) Khi đó, bài toán khai phá luật kết hợp kinh điển trở thành bài toán khai phá luật kết hợp có trọng số [3] Hướng mở rộng tiếp theo đang thu hút sự quan tâm của các nhà nghiên cứu là khai phá luật kết hợp trên dãy dữ liệu, còn gọi là dữ liệu dãy (sequence) Khi đó, bài toán khai phá tập mục thường xuyên trở thành bài toán khai phá các mẫu dãy thường
Trang 10xuyên (Mining sequential patterns) và bài toán khai phá luật kết hợp truyền thống trở thành bài toán khai phá luật kết hợp dãy [5, 6, 7, 8, 9] Khai phá luật kết hợp dãy có ứng dụng trong thực tiễn cao vì ữong thực tế tồn tại khá phổ biến các dãy dữ liệu như: dãy dữ liệu mua sắm của khách hàng, dãy dữ liệu mô tả nhật ký truy cập Website
Như đã trình bày ở trên, hướng nghiên cứu mở rộng khai phá luật kết hợp trên
dữ liệu dãy có ý nghĩa khoa học và thực tiễn cao Do đó, tôi chọn đề tài “K hai phá
luật kết hợp trên dữ liệu dãy”.
2 Mục đích nghiên cứu
Nắm bắt được kiến thức tổng quan về bài toán khai phá luật luật kết hợp kinh điển và hướng nghiên cứu mở rộng khai phá luật kết hợp có trọng số trên dữ liệu dãy Trên cơ sở đó cài đặt, thử nghiệm, đánh giá thuật toán ữên các bộ số liệu mẫu
3.Nhiệm vụ nghiên cứu
Nắm bắt được các khái niệm cơ bản và các thuật toán khai phá luật kết hợp kinh điển như Apriori, FP-Growth
Tìm hiểu và thử nghiệm thuật toán khai phá tập mục thường xuyên có trọng số trên cơ sở dữ liệu dãy, gọi là khai phá mẫu dãy thường xuyên có trọng số
4 Đổi tượng và phạm vi nghiên cứu
- Đổi tượng nghiên cứu: Là các cơ sở dữ liệu dãy.
- Phạm vỉ nghiên cứu' Nghiên cứu hướng mở rộng bài toán khai phá tập mục
thường xuyên trên dữ liệu dãy
5 Phương pháp nghiên cứu
- Nghiên cứu lý thuyết Tìm hiểu các khái niệm, các thuật toán đã công bố về
khai phá mẫu dẫy thường xuyên có trọng số
- Nghiên cứu thực nghiệm: Luận văn thực hiện cài đặt các thuật toán, chạy
thử nghiệm và đánh giá kết quả thực hiện các thuật toán
6 Cấu trúc của luận văn
Luận văn gồm: Lời mở đầu, ba chương nội dung, phần kết luận, tài liệu tham khảo và phụ lục
Trang 11Chương 1: Trình bày tổng quan về bài toán khai phá tập mục thường xuyên, bao
gồm các khai niệm cơ bản và hai thuật toán kinh điển: thuật toán Apriori [2] và thuật toán FP-Growth [4]
Chương 2: Trình bày thuật toán khai phá mẫu dãy thường xuyên với trọng số chuẩn
hóa (WprefixSpan) dựa trên thuật toán khai phá mẫu dãy thường xuyên PreíixSpan trong [5] bằng cách đưa vào trọng số của mẫu dãy
Chương 3: Trình bày phần cài đặt, thử nghiệm và đánh giá thuật toán WprefixSpan
trên một số bộ dữ liệu mẫu
Trang 12CHƯ ƠN G 1: TỔNG QUAN VỀ K H A I PHÁ TẬP M ỤC THƯ ỜN G XUYÊN
Chương này trình bày một số khái niệm cơ bản trong khai phá luật kết và hai thuật toán khai phá tập mục thường xuyên kinh điển: thuật toán Apriori [2] và thuật toán FP-GrowÜi [4]
1.1 Các khái niệm Ctf bản
1.1.1 Ctf sở dữ liệu giao tác
Định nghĩa 1.1 Cho tập các mục (item) I — {i15i2, ,in} Một giao tác (transaction)
T là một tập con của I, T œ I Cơ sở dữ liệu giao tác là một tập các giao tác
X çz I , 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 mục X nếu X Œ T
Biểu diễn cơ sở d ữ liệu giao tác: cơ sở dữ liệu giao tác thường được biểu diễn ở
dạng biểu diễn ngang, biểu diễn dọc và biểu diễn bởi ma trận giao tác
Biểu diễn ngang: Cơ sở dữ liệu là một danh sách các giao tác Mỗi giao tác có một định danh TID và một danh sách các mục dữ liệu trong giao tác đó.
Ví dụ 1.1 Bảng 1.1 sau đây biểu diễn ngang của cơ sở dữ liệu giao tác.
Bảng 1.1 Biểu diễn ngang của cơ sở dữ liệu giao tác
Biểu diễn dọc: Cơ sở dữ liệu là một danh sách các mục dữ liệu, mỗi mục dữ liệu có
một danh sách tất cả các định danh của các giao tác chứa mục dữ liệu này
Trang 13Bảng 1.2 Biểu diễn dọc của cơ sở dữ liệu giao tác
M a trận giao tác: Cơ sở dữ liệu giao tác DB = |Г р Г2, ,Гт | trên tập các mục (item)
I = {г15г2, ,гп} được biểu diễn bởi ma trận nhị phân M = (m )mxn, ở đó:
1 khi iq e Tp
0 khi iq Ể 7;
Ví dụ 1.2 Cơ sở dữ liệu bảng 1.1 biểu diễn ở dạng ma trận giao tác là:
Bảng 1.3 Ma trận giao tác của cơ sở dữ liệu bảng 1.1
Trang 141.1.2 Tập mục thường xuyên và luật kết hợp
Định nghĩa 1.2 Cho tập mục X cr/ Ta gọi độ hỗ trợ (Support) của X trong cơ sở
dữ liệu giao tác DB, ký hiệu sup(-X), là tỷ lệ phần trăm các giao tác chứa X trên tổng
sô các giao tác trong DB, tức là: sup(X ) = J - 7——7 - L
\DB\
Ta có: 0 < supcx) < 1 với mọi tập mục X c I.
Định nghĩa 1.3 Cho tập mục X c / v à ngưỡng hỗ trợ tối thiểu (minimum support)
m ỉnsưp e [ 0 ,l ] (được xác định trước bởi người sử dụng) X được gọi là tập mục thường xuyên (frequent itemset hoặc large itemset) với độ hỗ trợ tối thiểu minsup nếu sup(X ) > m insup, ngược lại X gọi là tập mục không thường xuyên.
Định nghĩa 1.4 Một luật kết hợp là một biểu thức dạng X —» y , trong đó X và Y
là các tập con của I, X n Y= 0 ; 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.
Định nghĩa 1.5 Độ hỗ trợ (Support) của một luật kết hợp X —> Y, ký hiệu là
Như vậy độ hỗ trợ của luật kết hợp X —» y chính là xác suất PịXUY) của sự xuất hiện đồng thời của X và Y trong một giao tác.
Trang 15Các luật thoả mãn cả hai ngưỡng độ hỗ trợ tối thiểu (mỉnsup) và độ tin cậy tối thiểu (minconý), tức thỏa mãn su p fx —» Y ) > minsup
và conf(X —> 7 ) > m inconf , được gọi là luật kết hợp mạnh.
1.1.3 Các tính chất Ctf bản của tập mục thưừng xuyên
Cho cơ sở dữ liệu giao tác DB và ngưỡng độ hỗ trợ tối thiểu mỉnsup Các tập mục
thường xuyên có các tính chất sau:
(1) Neu X, У là các tập mục và X çz Y thì sup(X ) > sup(y)
(2) Nếu một tập mục là không thường xuyên thì mọi tập cha của nó cũng không thường xuyên
(3) Nếu một tập mục là thường xuyên thì mọi tập con khác rỗng của nó cũng
là tập mục thường xuyên
Tính chất (3) được gọi là tính chất Apriori, tính chất này là cơ sở để rút gọnkhông gian tìm kiếm các tập mục thường xuyên
1.1.4 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 mỉnsup và ngưỡng
độ tin cậy tối thiểu minconf.
Yêu cầu: Tìm tất cả các luật kết hợp X —> y trên cơ sở dữ liệu DB sao cho sup(X —>Y ) > minsup và conf(X —> Y ) > m in c o n f.
Bài toán khai phá luật kết hợp này được gọi là bài toán cơ bản hay bài toán nhị phân, vì ở đây giá trị của mục dữ liệu trong cơ sở dữ liệu là 0 hoặc 1 (xuất hiện hay không xuất hiện)
Bài toán khai phá luật kết hợp được chia thành hai bài toán con Bài toán thứ nhất là tìm tất cả các tập mục thỏa mãn độ hỗ trợ tối thiểu cho trước, tức là tìm tất
cả các tập mục thường xuyên Bài toán thứ hai là sinh ra các luật kết hợp từ các tập mục thường xuyê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 mục
của luật X \ Y —>Y có thỏa mãn độ tin cậy tối thiểu không Bài toán thứ hai này đơn
Trang 16giả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 mục thường xuyên.
Phần tiếp theo sau đây sẽ ữình bày chi tiết về khai phá tập mục thường xuyên
1.2 Thuật toán Apriori
Apriori là thuật toán khai phá tập mục thường xuyên do R Agrawal và R Srikant đề xuất vào năm 1994 [2] Ý tưởng của thuật toán Apriori còn là nền tảng cho việc phát triển nhiều thuật toán khai phá tập mục thường xuyên khác về sau
Ý tưởng chính của thuật toán như sau: sinh ra các tập mục ứng viên từ các tập mục thường xuyên ở bước trước, sử dụng kỹ thuật “tỉa” để bỏ đi những tập mục ứng viên không thoả mãn ngưỡng hỗ trợ cho trước Cơ sở của kỹ thuật này là tính chất
Apriori: Bất kỳ tập con nào của tập mục thường xuyên cũng phải là tập mục thường
xuyên Vì vậy các tập mục ứng viên gồm k mục có thể được sinh ra bằng cách kết
nối các tập mục thường xuyên có (k-1) mục và loại bỏ tập mục ứng viên nếu nó có chứa bất kỳ một tập con nào không phải là thường xuyên
Giả sử các mục dữ liệu trong mỗi giao tác được lưu theo trật tự từ điển Thuật toán sử dụng các ký hiệu sau đây:
Lk
Tập các k-tập mục thường xuyên (với độ hỗ trợ tối thiểu
mỉnsup) Mỗi phần tử của tập này có 2 trường:
hai bước: bước kết nổi và bước tỉa Trong lần lặp thứ k, thuật toán nối hai (k-l)-tập
mục để sinh ra k-tập mục, sử dụng tính chất Apriori để tỉa các tập ứng viên Bước nối và bước tỉa như sau:
Trang 17Bước kết nối (tìm c k): Tập các k-tập mục ứng viên c k được sinh ra bởi việc
kết nối Lk_! với chính nó Hai tập mục li và 12 của Lk_! được nối nếu chúng có (k-2) mục dữ liệu đầu bằng nhau, mục dữ liệu thứ (k-1) của Ỉ! nhỏ hơn của 12:
(li[l] = 12[1]) A (№] = 12[2]) a .a (litk-2] = l2[k-2]) A (litk-1] < l2[k-l]) Dạng của tập mục nhận được bởi nối lt và 12 là: li[l] li[2] li[k-2] li[k-l] l2[k-l]
Bước tỉa: Tập c k chứa tập Lk, tức là tất cả các k-tập mục thường xuyên đều
thuộc tập c k Tập c k có thể là rất lớn dẫn đến khối lượng tính toán lớn Thuật toán
áp dụng tính chất Apriori để rút gọn tập c k Nếu có một (k-l)-tập mục con nào đó của k-tập mục ứng viên mà không có mặt trong Lk_! thì ứng viên đó không thể là thường xuyên, có thể loại bỏ khỏi c k Việc kiểm tra các (k-l)-tập mục con có thể thực hiện nhanh bởi duy trì một cây băm của tất cả các tập mục thường xuyên đã tìm thấy
Thuật toán Apriori (tìm các tập mục thường xuyên)
In p u t: Cơ sở dữ liệu DB, ngưỡng độ hỗ trợ minsup
O u tp u t: Tập các tập mục thường xuyên L trong DB
Method:
(2) For (k=2; Lk_!^ 0 ; k++) do begin
(3) c k = apriori_gen(Lk_i, minsup); // Sinh tập ứng viên mới từ Lk_i
(4) For (each T &DB) do begin
(5) c = subset(C]j,r); // Các tập mục ứng viên chứa trong T
Trang 18Ví dụ minh hoạ thuật toán Apriori:
Ta minh họa thực hiện thuật toán Apriori trên cơ sở dữ liệu trong bảng 1.4 với
minsup=50%, tức xuất hiện ít nhất 2 lần.
B ảng 1.4 CSDL giao tác minh họa thực hiện thuật toán Aprỉori
Trang 19Loai bo cac 2-tap muc co
Ket noi L2 vai L2 dugc C3:
Duyet CSDL lan thii 3: tinh do ho trg cho cac 3-tap muc
count < 2
Trang 20Nối L3 với L3 được L4= 0 , thuật toán dừng.
Các tập mục thường xuyên tìm được theo thuật toán Apriori là:
L=L, u L2u L3 = {A, B, c, E, AC, BC, BE, CE, BCE}
N hận x é t: Thuật toán duyệt cơ sở dữ liệu nhiều lần, số lần duyệt bằng độ dài
của tập mục thường xuyên dài nhất tìm được
1.3 Thuật toán FP-Growth
Thuật toán Apriori gặp phải hai chi phí lớn:
- Chi phí sinh ra số lượng khổng lồ các tập ứng viên Giả sử ban đầu có 104 mục thường xuyên có độ dài băng 1 thì quá trình kết nối sẽ tạo ra 107 các tập mục
có độ dài bằng 2 (chính xác là 104(104- l)/2 tập mục) Rõ ràng một tập mục có độ dài k thì phải cần đến ít nhất 2k - 1 tập mục dự tuyển trước đó Một nhược điểm khác nữa là giải thuật Apriori phải kiểm tra tập dữ liệu nhiều lần, dẫn tới chi phí lớn khi kích thước các tập mục tăng lên Neu tập mục có độ dài k được sinh ra thì cần phải kiểm tra tập dữ liệu k+1 lần
- Lặp nhiều lần duyệt cơ sở dữ liệu, số lần duyệt cơ sở dữ liệu của thuật toán Apriori bằng độ dài của tập mục thường xuyên dài nhất tìm được Thuật toán Apriori chỉ thích hợp cho các cơ sở dữ liệu thưa (sparse), với các cơ sở dữ liệu dày (dense) thì thuật toán thực hiện kém hiệu quả
Để khắc phục nhược điểm trên của thuật toán Apriori, J Han, J Pei, Y Yin và
R Mao đề xuất thuật toán FP-growth [4] Thuật toán FP-growth được xây dựng với
3 kỹ thuật chính:
(1) Nén dữ liệu thích hợp vào một cấu trúc cây gọi là cây FP-tree Chỉ có các
1 -tập mục (1-item) ở trong cây và các nút của cây được sắp xếp để các nút xuất hiện thường xuyên hơn có thể dễ dàng chia sẻ với các nút xuất hiện ít hơn
(2) Thực hiện phương pháp khai phá phát triển (growth) từng đoạn dựa trên cây FP-tree gọi là phương pháp FP-growth
(3) Kỹ thuật tìm kiếm được dùng ở đây là dựa vào sự phân chia, “chia để trị”, phân rã nhiệm vụ khai phá thành các nhiệm vụ nhỏ hơn
Thuật toán FP-growth do nén toàn bộ cơ sở dữ liệu lên một cấu trúc dữ liệu
Trang 21nhỏ hơn là cây FP-tree nên tránh được việc duyệt nhiều lần cơ sở dữ liệu (thuật toán chỉ duyệt cơ sở dữ liệu 2 lần) Tiếp theo thuật toán khai phá cây bằng cách phát triển dần các mẫu mà không sinh các tập mục ứng viên, do đó tránh được khối lượng tính toán lớn Phương pháp FP-growth đã chứng tỏ được tính hiệu quả của nó
và có thể thực hiện khai phá cho cả các mẫu ngắn và dài, nhanh hơn thuật toán Apriori, luôn chỉ cần duyệt CSDL 2 lần
Thuật toán FP- growth thực hiện n h ư sau:
Đầu tiên, thuật toán duyệt CSDL lần thứ nhất để tính độ hỗ trợ của từng mục (đếm số lần xuất hiện của từng mục)
Tiếp đến, những mục không đủ độ hỗ trợ bị loại Các mục còn lại được sắptheo thứ tự giảm dần của độ hỗ trợ (cũng tóc là giảm dần theo số lần xuất hiện trongCSDL), ta nhận được danh sách L các mục đã sắp
Duyệt CSDL lần thứ hai, với mỗi giao tác T, loại các mục không đủ độ hỗ trợ, các mục còn lại theo thứ tự giống như xuất hiện trong L (tức là thứ tự giảm dần theo
độ hỗ trợ) được cất vào cây FP-tree
Phần tiếp theo thuật toán khai phá tìm các mẫu thường xuyên trên cây FP- tree
đã xây dựng mà không cần duyệt lại CSDL nữa
Đe hiểu phương pháp này làm việc thế nào, ta xét khai phá CSDL giao tác DB sau với độ hỗ trợ tối thiểu minsup = 3/5
Bảng 1.5 CSDL giao tác minh họa cho thuật toán FP- growth
Trang 22Bước 2: sắp các mục đủ độ hỗ trợ theo thứ tự giảm đần của độ hỗ trợ, ta
nhận được danh sách L sau:
Mục Sô lần xuât hiện
Bưổc 3: Duyệt CSDL lần thứ 3 và xây dựng cây FP-ữee Cây FP-tree được
xây dựng như sau:
Khởi tạo cây T, gốc của cây có nhãn null.
Khi duyệt CSDL lần thứ hai vởi mỗi giao tác loại các mục không thường xuyên, các mục còn lại sắp theo thứ tự giảm dần của sổ lần xuất hiện, Quá trình xây dựng cây như hình 1.1 sau:
H ình 1.2 Cây Fp -tree được xây dựng dần khi thêm các giao tảc tỉ, t2, t3
Từ tập dữ liệu ban đầu, ta xây dựng header table của cây FP như sau:
Trang 23H ình 1.3 Cây FP-tree của CSDL DB trong bảng
Cấu trúc cây FP-tree như sau:
- Gốc của cây nhãn null, các đường đi trên cây biểu diễn item prefixs
- Các liên kết trên cây liên kết các mục xuất hiện có tên giống nhau
- Mỗi nút (trừ nút gốc) bao gồm:
✓ Tên mục (item identifier)
s Count: số đếm
■S Node link: Liên kết đến nút tiếp theo trên cây có cùng tên.
- Bảng các đầu mục thường xuyên (header table): bắt đầu cho các liên kết Thủ tục thêm một dãy các mục (đã sắp giảm dần theo độ hỗ trợ) của một giaotác vào cây thực hiện đệ qui như sau:
Procedure insert_tree(string [p I P], tree có gốc T)
(Ở đó p là mục thứ nhất của dãy các mục và p là phần còn lại Trong lần duyệt thứ hai, với mỗi giao tác í, gọi thủ tục insert_tree (í', T), ở đó t' là nội dung của giao tác t sau khỉ đã bỏ các mục không thường xuyên và sắp theo thứ tự giảm dần của độ hỗ trợ, T là gốc của cây.)
Trang 24Procedure insert_tree (string [p I P ] , tree có gốc T)
1 Neu T có nút con N mà N.itemname = p thì N.count++
2 Ngược lại
3 Tạo một nút mới N;
4 N.itemname := p; thì N.count :=1;
5 Thay đổi nút liên kết cho p bao gồm N;
6 Nếu p khác rỗng gọi thủ tục insert_tree(P, N);
Tìm các tâp muc thường xuyên:
Sau khi xây dựng xong FP-tree cho CSDL, việc khai phá tìm các tập mục thường xuyên chỉ thực hiện trên FP-tree mà không cần duyệt CSDL nữa
Thuật toán FP- growth như sau:
Bắt đầu từ dưới lên của bảng header và cây, với mỗi mục A: dùng nút liên kết duyệt qua tất cả các nút trên cây mà xuất hiện A, với mỗi nút N mà N.itemname = A, xác định các tập mục thường xuyên có xuất hiện A, thực hiện bằng cách chỉ cần tìm các đường đi từ gốc tới N
Ví dụ 1.3 Đầu tiên xét mục p, sau đó đến m, như sau:
- Mục p:
- c : 1, b : 1, p : 1(Tức là: fcam xuất hiện hai lần với p và cb chỉ một lần số lần xuất hiện của p là 2+1=3.)
+ Từ đó suy ra cơ sở mẫu phụ thuộc (conditional pattern base) của p là:
- f : 2, c : 2, a : 3, m : 2
- c : l , b : 1Các tập mục thương xuyên chứa p là được xác định bởi cơ sở mẫu phụ thuộc này.+ Xây dựng đệ qui cây FP-tree cho cơ sở phụ thuộc (condition base) và tìm các tập mục thường xuyên ở trên cây đó, sau đó thêm p vào tất cả chúng
Trang 25Ở đây, cơ sở phụ thuộc là: - f : 2, с : 2, a : 2, m : 2
+ Cơ sở mẫu phụ thuộc của m là:
- f : 2, с : 2, а : 2
- f : 1, с : 1, а : 1, b : 1 + FP-tree phụ thuộc của m là chỉ có một đường:
- f : 3, c: 3, a : 3 + Tìm theo cách đệ qui các tập mục thường xuyên trên FP-tree phụ thuộc, đầu
tiên cho a, sau đó cho с và f Cây FP-tree phụ thuộc của m như hình 1.3 sau:
Trang 26Cầy điêu kiên FP cua '*cm
Cơ sơ đicu kiện cua nút "cní
Cơ sơ đicu kiện cua nủi *anY
(f:3sc :3) Cây đicu kiện FP cua “am"
Cơ sơ điều kiên cua ru.it ^camv
(f:3)Cầy đĩều kiện FP cua “am'’
H ình 1.5 Các FP-tree phụ thuộc của am, cm và cam
Thuật toán FP- growth:
Khai phá FP-tree được thực hiện bởi gọi lần đầu FP- growth (FP-tree, null), thực hiện như sau:
Vào: Các phân hoạch CSDL D N /P và minsup.
Ra: Tập các mục phổ biến
Procedurer FP-growth (Tree, a)
1 Nếu cây Tree chứa một đường đơn p thì
2 Với tất cả các tổ hợp (ký hiệu p) các nút trong đường đi p
3 Sinh ra mẫu p u a với support bằng độ hỗ trợ nhỏ nhất của các nút trong p
4 Ngược lại: với mỗi mục aj trong header table của Tree {
5 Sinh ra p:=aịUa với support = account;
6 Xây dựng cơ sở mẫu phụ thuộc vào p và sau đó FP-Tree phụ thuộc vào p là Treep
7 Nếu Treep=0 thì gọi FP-growth (Treep, p)}
Đảnh giả thuật toán FP- growth’ Thuật toán này như đã phân tích ở trên, thực
hiện hiệu quả hơn thuật toán Apriori, thực hiện tốt cho tập mục thường xuyên ngắn cũng như dài Ta có một số nhận xét về thuật toán như sau:
- Độ phức tạp về thời gian: Chỉ duyệt CSDL 2 lần, thời gian xây dựng cây là O(n)
Trang 27- Độ phức tạp về không gian: Độ cao của cây được giới hạn bởi kích thước của giao tác lớn nhất.
- Thuật toán không bao giờ bị ngắt bởi một mẫu dài nào của mọi giao tác Cây FP-tree duy trì đầy đủ thông tin cho khai phá các tập thường xuyên Đồng thời thuật toán cũng rút gọn hợp lý các thông tin không cần thiết bởi cách là các mục không thường xuyên đã bị loại bỏ ngay từ đầu
- Dùng kỳ thuật sắp theo trật tự giảm dần của tần số xuất hiện, điều đó dẫn đến các mục thường xuyên hơn được chia xẻ nhiều hơn Cây FP- tree không bao giờ lớn hơn CSDL gốc
1.4 Tập mục thường xuyên có trọng số trên C t f sở dữ liệu giao tác
Định nghĩa 1.7 Trọng số chuẩn hóa của k-tập mục X được định nghĩa bởi công
thức:
Với Wj là trọng s ố của mục thứ j.
Định nghĩa 1.8 Cho k-tập mục X c l , độ hỗ trợ có trọng số chuẩn hóa của tập mục
X được định nghĩa bởi công thức:
Với sup(x) là độ hỗ trợ của tập mục X
Định nghĩa 1.9 Cho k-tập mục X c l và ngưỡng hỗ trợ wminsupp X được gọi là
tập mục thường xuyên có trọng số chuẩn hóa nếu:
Trường hợp ngược lại, X được gọi là tập mục không thường xuyên có trọng số chuẩn hóa
Trang 28Giả sử Y là một q-tập mục con của I và k là một số nguyên thỏa mãn q<k<N
Gọi ir ,ir ,ir là (kq) mục có trọng số lớn nhất trong các tập các mục còn lại (I Y) Khi đó một k-tập mục chứa Y sẽ có trọng số tối đa là:
Trong đó M chỉ phép làm tròn bằng cận trên nguyên tố nhỏ nhất (Trong (2.5) ta
sử dụng hàm làm ữòn nguyên vì số đếm hỗ ữợ của một tập mục là một số nguyên)
Định nghĩa 1.10 Cho q-tập mục Y c l Đặt:
W(Y,K)
Đại lượng B(Y,k) xác định theo (1.6) được gọi là cận k-hổ trợ của tập mục Y.
Mệnh đề 1.1 [5] Nếu Y là một tập con của một k-tập mục thường xuyên có trọng sổ
chuẩn hỏa X nào đó thì sổ đếm hỗ trợ của nó phải lớn hơn hoặc bằng B(Y,k).
Ví dụ 1.4 Cho CSDL giao tác như trong bảng 1.6 với trọng số các mục như trong
bảng 1.7 và wminsupp = 0,45
Trang 30lên cấu trúc cây Chương 2 sẽ trình bày thuật toán khai phá mẫu dãy thường xuyên với trọng số chuẩn hóa, gọi tắt là thuật toán WprefixSpan Thuật toán WprefixSpan được xây dựng dựa trên thuật toán khai phá mẫu dãy thường xuyên (không có trọng số) PreíixSpan [5] bằng cách đưa vào trọng số của mẫu dãy (dựa trên ý tưởng thuật toán khai phá tập mục thường xuyên có trọng số trong [3].
Trang 31CH Ư Ơ N G 2: K H A I PHÁ MẪU DẴY THƯ ỜN G XUYÊN CÓ TRỌ N G SỐ
Khai phá mẫu dãy (Mining Sequential Patterns) là một trong những lĩnh vực rất quan trọng trong nghiên cứu khai phá dữ liệu và được áp dụng trong nhiều lĩnh vực khác nhau Trong thực tế các dữ liệu dãy tồn tại rất phổ biến, như dãy dữ liệu mua sắm của khách hàng, dữ liệu điều trị y tế, nhật ký truy cập web Mục đích chính của khai phá mẫu dãy là phát hiện tất cả các dãy con xuất hiện lặp lại trong một cơ sở dữ liệu theo yếu tố thời gian
Hiện nay trên thế giới có nhiều nhóm tác giả nghiên cứu đề xuất các thuật toán với các phương pháp tiếp cận khai phá mẫu dãy khác nhau [5, 6, 7, 8, 9] nhằm giải quyết sự đa dạng của các loại bài toán cũng như đưa ra các hướng cải tiến nhằm giảm thiểu chi phí thời gian và tài nguyên hệ thống
Các thuật toán hiện nay khai phá mẫu dãy chỉ tính toán đến số lần xuất hiện (độ hỗ trợ) mà không quan tâm đến mức độ quan trọng khác nhau của các mục dữ liệu Vì vậy, luận văn xây dựng thuật toán khai phá mẫu dãy thường xuyên với trọng số chuẩn hóa Luận văn không chỉ quan tâm đến số lần xuất hiện của các dãy (độ hỗ trợ) mà còn quan tâm đến mức độ quan trọng khác nhau (trọng số) của chúng
Trọng tâm chính đối với khai phá mẫu dãy thường xuyên với trọng số chuẩn hóa là xây dựng giải thuật nhằm thỏa mãn tính chất phản đơn điệu (downward closure property)
Luận văn sử dụng tính chất ràng buộc giữa độ hỗ trợ và trọng số của dãy để sinh các tập ứng viên trong khai phá mẫu dãy thường xuyên trọng số chuẩn hóa trong khi vẫn sử dụng tính chất phản đơn điệu cho phép cân bằng độ hỗ trợ và trọng
số của một dãy
Trong chương 2, tôi trình bày bài toán và thuật toán khai phá mẫu dãy thường xuyên với trọng số chuẩn hóa WprefixSpan dựa trên thuật toán khai phá mẫu dãy thường xuyên PrefixSpan bằng cách đưa thêm trọng số vào các tập mục
Trang 322.1 Bài toán khai phá mẫu dãy thường xuyên với trọng số chuẩn hóa
2.1.1 Các khái niệm C t f bản
trọng số Wj,j = 1, ,N.
Một dãy Sm là một danh sách được sắp xếp theo thứ tự của các mục dữ liệu
Ịsh s2, sm} với S j Œ l là một tập mục được gọi là thành phần của dãy Khi đó, s = {sh s2, sm} và S j có dạng ịỉiỉĩ— ik) và iị là một mục dữ liệu Một dãy s bị loại nếu
chỉ có duy nhất một mục dữ liệu Một mục dữ liệu chỉ xuất hiện nhiều hơn 1 lần trong 1 thành phần của một dãy S j , nhưng có thể xuất hiện nhiều lần trong các thành
Kích thước |S| của một dãy là số lượng của các thành phần trong dãy s Độ dài
1(S) của dãy là tổng số mục dữ liệu trong dãy s Một cơ sở dữ liệu dãy s = fSj, s 2,
S J là một tập các bộ dữ liệu (sid,S) với sid là định danh của một dãy và sk là một dãy dữ liệu
Định nghĩa 1 (Độ hỗ trợ của một dãy): Độ hỗ trợ của một dãy Sa trong một cơ sở
Định nghĩa 2 (Trọng số chuẩn hóa của dãy): Cho I = {ij, i2, i„} là tập hợp các mục dữ liệu Mỗi mục ijiz I được gán một trọng số Wj, j = 1, ,n Khi đó trọng số
chuẩn hóa của một dãy a = <eie2 .e n> được tính bằng công thức:
NW(o) = - t w ,
n j =1
Định nghĩa 3 (Độ hỗ trợ với trọng số chuẩn hóa của dãy)
1 "
NWsupport(a) = NW(a) * supporte à) = — V w *sup(a)
với sup(a) là độ hỗ trợ của dãy a
Định nghĩa 4 (Mẩu dãy thường xuyên với trọng số chuẩn hóa): Cho một CSDL
thường xuyên với trọng số chuẩn hóa nếu thỏa mãn tính chất