1. Trang chủ
  2. » Luận Văn - Báo Cáo

Khai phá tập mục thường xuyên có trọng số trên cơ sở dữ liệu giao tác

80 425 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 80
Dung lượng 1,72 MB

Nội dung

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 1

LỜI CAM ĐOAN Tôi xin cam đoan đây là công trình nghiên cứu của tôi dưới sự hướng dẫn của 

TS Nguyễn Long Giang. 

Các số liệu, kết quả nghiên cứu trong luận văn là trung thực và mọi trích dẫn trong  báo  cáo  đều  được  ghi  rõ  nguồn  gốc.  Nếu  có  sử  dụng  bất  hợp  pháp  kết  quả công  trình nghiên  cứu  của  người  khác  trong báo  cáo  tôi  xin  hoàn  toàn  chịu  trách nhiệm. 

Tác giả   Nguyễn Tú Nam

Trang 2

LỜI CẢM ƠN Lời đầu tiên tôi muốn bày tỏ lòng biết ơn sâu sắc và kính trọng của mình tới thầy giáo,  TS  Nguyễn Long Giang. Trong  quá  trình  tìm hiểu  nghiên  cứu  để  hoàn thành luận văn tôi gặp không ít khó khăn, nhưng những lúc như vậy tôi luôn nhận được sự động viên khích lệ của thầy. Thầy đã giúp đỡ tôi rất nhiều trong quá trình nghiên cứu, hướng dẫn tận tình trong cách thức và phương pháp nghiên cứu khoa học cũng như hỗ trợ tôi trong việc tìm tài liệu. 

Để có được những kết quả trong luận văn này, tôi xin gửi lời cảm ơn sâu sắc đến Thầy,  Cô Trường Đại học Công nghệ thông tin và Truyền thông Thái Nguyên 

đã tạo điều kiện cho tôi được học hỏi kiến thức thông qua các môn học cũng như hoàn thành khóa học. 

Cuối cùng tôi xin bày tỏ lòng cảm ơn chân thành đến gia đình, người thân và bạn bè đồng nghiệp đã khích lệ và động viên tôi hoàn thành luận văn này.! 

Trang 3

MỤC LỤC

LỜI CAM ĐOAN   i 

LỜI CẢM ƠN   ii 

MỤC LỤC  iii 

Danh mục các ký hiệu, các chữ viết tắt   v 

Danh mục các bảng   vi 

Danh mục các hình   vii 

MỞ ĐẦU   1 

Chương 1: TỔNG QUAN VỀ KHAI PHÁ DỮ LIỆU   3 

1.1. Các khái niệm cơ bản trong khai phá luật kết hợp   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. Bài toán khai phá luật kết hợp   8 

1.2. Một số thuật toán cơ bản khai phá tập mục thường xuyên  8 

1.2.1. Cách tiếp cận khai phá tập mục thường xuyên   8 

1.2.2. Thuật toán Apriori   10 

1.2.3. Thuật toán FP-growth  14 

1.3. Một số hướng mở rộng bài toán khai phá tập mục thường xuyên.   23 

1.4. Kết luận chương   23 

Chương 2: KHAI PHÁ TẬP MỤC THƯỜNG XUYÊN CÓ TRỌNG SỐ  24 

2.1. Thuật toán khai phá tập mục thường xuyên có trọng số MINWAL   24 

2.1.1. Các khái niệm cơ bản   24 

2.1.2.  Thuật  toán  MINWAL  khai  phá  tập  mục  thường  xuyên  có  trọng  số  dựa  trên thuật toán Apriori   28 

2.1.3. Ví dụ minh họa thuật toán MINWAL   31 

Trang 4

2.2.1. Các khái niệm cơ bản   36 

2.2.2. Thuật toán WFIM dựa trên thuật toán Apriori   40 

2.2.3. Thuật toán WFIM dựa trên thuật toán FP-Growth   42 

2.2.4. Ví dụ thuật toán WFIM   44 

2.3. Kết luận chương   47 

Chương 3: ĐÁNH GIÁ CÁC THUẬT TOÁN VÀ ỨNG DỤNG  48 

3.1. Đánh giá các giải thuật   48 

3.2. Kiểm tra tập dữ liệu và môi trường thí nghiệm   49 

3.3. So sánh WFIM với các thuật toán khác  50 

3.4. Kiểm tra khả năng phát triển  54 

3.5. Ứng dụng chương trình   56 

KẾT LUẬN   60 

TÀI LIỆU THAM KHẢO   62 

PHỤ LỤC  64 

Trang 5

Danh mục các ký hiệu, các chữ viết tắt

Ký hiệu, chữ viết tắt Diễn giải

Trang 6

Danh mục các bảng

Bảng 1.1 Biểu diễn ngang của cơ sở dữ liệu giao tác   5 

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   6 

Bảng 1.4 CSDL giao tác minh họa thực hiện thuật toán Apriori   13 

Bảng 1.5 CSDL giao tác minh họa cho thuật toán FP- growth   16 

Bảng 2.1 CSDL giao tác   26 

Bảng 2.2 Trọng số của các mục   27 

Bảng 2.3 CSDL giao tác D   31 

Bảng 2.4 Trọng số của các mục   31 

Bảng 2.5 CSDL giao tác   36 

Bảng 2.6 Ví dụ các mục với các khoảng trọng số khác nhau   37 

Bảng 2.7 Tập các tập mục thường xuyên với các khoảng trọng số khác nhau   39 

Bảng 2.8 Mục thường xuyên có trọng số (sắp xếp tăng dần theo trọng số)   44 

Bảng 3.1 Tổng hợp số liệu thực tế   49 

Bảng 3.2 Hiệu năng đối với các ngưỡng trọng số khác nhau   53 

Trang 7

Danh mục các hình

Hình 1.1 Phân loại các thuật toán khai phá tập mục thường xuyên   10 

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 Từ tập dữ liệu ban đầu, ta xây dựng header table của cây FP như sau:   17 

Hình 1.3 Cây FP-tree của CSDL DB trong bảng   18 

Hình 1.4 FP-tree phụ thuộc của m   21 

Hình 1.5 Các FP-tree phụ thuộc của am, cm và cam  21 

Hình 2.1 Cây FP-Tree tổng quát của thuật toán FP-Tree   45 

Hình 2.2 Cây FP-Tree con với tiền tố {r}   46 

Hình 3.1 Số lượng tập mục thường xuyên so với FP-Growth (Tập dữ liệu Connect)    50 

Hình 3.2 Thời gian thực hiện so với FP-Growth (Tập dữ liệu Connect)   50 

Hình 3.3 Số lượng tập mục thường xuyên so với các thuật toán khác (Tập dữ liệu Connect)   51 

Hình 3.4 Thời gian thực hiện so với các thuật toán khác (Tập dữ liệu Connect)  51 

Hình 3.5 Thời gian thực hiện so với các thuật toán khác (Tập dữ liệu Mushroom)    52 

Hình 3.6 Thời gian thực hiện so với các thuật toán khác (Tập dữ liệu Mushroom)    53 

Hình 3.7 Khả năng phát triển của WFIM với các ngưỡng hỗ trợ khác nhau (tập dữ liệu T10I4DxK)   54 

Hình 3.8 Khả năng phát triển so với các thuật toán khác (Tập dữ liệu T10I4DxK và ngưỡng hỗ trợ = 0,1%)   55 

Hình 3.9 Khả năng phát triển so với các thuật toán khác (Tập dữ liệu T10I4DxK và ngưỡng hỗ trợ = 0,5%)   55 

Trang 8

MỞ ĐẦU

Lý do chọn đề tài

Khai  phá  dữ  liệu  và  khám  phá  tri  thức  (Data  mining  and  Knowledge discovery) là một lĩnh vực quan trọng của ngành Công nghệ thông tin. Đây là lĩnh vực  đã  thu  hút  đông  đảo  các  nhà  khoa  học  trên  thế  giới  và  trong  nước  tham  gia nghiên cứu. Khai phá luật kết hợp (Mining association rules) là bài toán có vai trò quan trọng trong nhiều nhiệm vụ khai phá dữ liệu và có nhiều ứng dụng thực tiễn trong các lĩnh vực khác nhau của đời sống, đặc biệt là trong lĩnh vực kinh doanh. Khai phá luật kết hợp được giới thiệu bởi Agrawal vào năm 1993 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 tập trung vào bài toán khai phá tập mục thường xuyên. 

Xuất  phát  từ  những  lợi  ích  thực  tế  trên  tác  giả  đã  mạnh  dạn  chọn  đề  tài 

“KHAI PHÁ TẬP MỤC THƯỜNG XUYÊN CÓ TRỌNG SỐ TRÊN CƠ SỞ

DỮ LIỆU GIAO TÁC” làm đề tài nghiên cứu cho luận văn tốt nghiệp của mình. 

Mục tiêu đề tài tiếp tục nghiên cứu và đề xuất các thuật toán khai phá tập mục thường xuyên có trọng số trong CSDL giao tác

Xây  dựng  và  đề  xuất  một  số  giải  thuật  khai  phá  tập  mục  thường  xuyên  có trọng số. 

Trang 9

Lập trình, thử nghiệm các giải thuật khai phá tập mục thường xuyên có trọng số. Đối tượng nghiên cứu các cơ sở dữ liệu giao tác được cập nhật từ kho dữ liệu mẫu UCI

Phạm vi nghiên cứu nghiên  cứu  và  thử  nghiệm  bài  toán  khai  phá  tập  mục thường xuyên có trọng số trên cơ sở dữ liệu giao tác. 

Phương pháp nghiên cứu  luận  văn  là nghiên  cứu  lý  thuyết  và  nghiên  cứu thực  nghiệm.  Về  nghiên  cứu  lý  thuyết:  các  định lý,  mệnh đề  trong luận  văn được chứng minh dựa vào các kiến thức cơ bản và các kết quả nghiên cứu đã công bố. Về 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 thuật toán. 

Bố cục luận văn

Luận văn được chia làm 3 chương:

Chương 1: TỔNG QUAN VỀ KHAI PHÁ DỮ LIỆU 

Chương 2: KHAI PHÁ TẬP MỤC THƯỜNG XUYÊN CÓ TRỌNG SỐ  Chương 3: ĐÁNH GIÁ CÁC THUẬT TOÁN VÀ ỨNG DỤNG 

 

Trang 10

Chương 1: TỔNG QUAN VỀ KHAI PHÁ DỮ LIỆU

Khai phá tập mục thường xuyên đóng vai trò quan trọng trong nhiều nhiệm vụ khai phá dữ liệu. Khai phá tập mục thường xuyên xuất hiện như là bài toán con của nhiều lĩnh vực khai phá dữ liệu như khám phá luật kết hợp, khám phá mẫu tuần tự, phân tích tương quan, phân lớp, phân cụm dữ liệu, khai phá Web,…. Bài toán khai phá tập mục thường xuyên được giới thiệu lần đầu bởi Agrawal vào năm 1993 khi phân tích cơ sở dữ  liệu bán hàng của siêu thị [6] trong mô hình của bài  toán khai phá luật kết hợp. Khai phá luật kết hợp 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, các mối quan hệ đó chính là các luật kết hợp.  

Khai phá dữ liệu bằng luật kết hợp là một phương pháp quan trọng trong khai phá 

dữ liệu. Nó được ra đời và phát triển mạnh mẽ trong những năm gần đây.  Lần đầu tiên  được  Rakesh  Agrawal,  Tomasz  Imielinski,  Arun  Swami  đề  xuất  năm 1993[6].  Sau  đó  năm  2013  được  A.KrishnaKumar, D.Amrita, N.Swathi Priya  [11] tiếp tục phát triển và cải tiến. Đến nay những nghiên  cứu  về luật kết hợp  tập  trung xây dựng 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. 

Khai  phá  luật  kết  hợp  có  hai  bước:  bước  thứ  nhất,  tìm  các  tập  mục  thường 

Trang 11

mua  nhiều  kem  cạo  râu  sẽ  được  tăng  dao  cạo  râu…Không  chỉ dừng  lại  nhưng  ứng dụng trong thương mại, luật kết hợp đã có nhưng ứng dụng rộng rãi trong các lĩnh vực khác như y tế, tài chính, thiên văn,…  

Chương 1 sẽ trình bày các vấn đề cơ bản của khai phá luật kết hợp và bài toán khai phá tập mục thường xuyên và một số hướng mở rộng của bài toán. 

1.1 Các khái niệm cơ bản trong khai phá luật kết hợp

Cho một tập I = {I1, I2,  , Im} gồm m mục (Item). Tập X  I được gọi là tập mục  (itemset)  T  ={t1,  t2,…,tn}  là  tập  gồm  n  bản  ghi  (record  -  còn  gọi  là  giao  tác  - transaction),  mỗi  bản  ghi  t  là  một  tập  mục,  được  định  danh  bởi  TID  (Transaction Identification). Tương tự như khái niệm tập hợp, các bản ghi không được trùng lặp, nhưng có thể nới rộng tính chất này  của tập  hợp và trong các thuật toán sau này, người ta đều  giả thiết rằng các khoản mục trong một bản ghi và trong tất cả các tập mục khác, có thể coi chúng đã được sắp xếp theo thứ tự từ điển của các mục. Gọi D là CSDL của n bản ghi và mỗi bản ghi được đánh nhãn với một định danh duy nhất.  1.1.1 Cơ sở dữ liệu giao tác

Định nghĩa 1.1 Cho tập các mục (item) I i i1, , ,2 i n. Một giao tác (transaction) 

T   là  một  tập  con  của  I,  T I.  Cơ  sở  dữ  liệu  giao  tác  là  một  tập  các  giao  tác 

Trang 13

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

1.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 I. Ta gọi độ hỗ trợ (Support) của X trong cơ sở 

nếu  sup(X )  minsup , 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 XY , trong đó  X và Y 

là các tập con của I,  X Y= Ø ; X gọi là tiền đề, Y gọi là kết luận của luật. Luật  kết hợp có hai thông số quan trọng là độ hỗ trợ và độ tin cậy. 

Trang 14

Định nghĩa 1.5 Độ  hỗ  trợ  (Support)  của  một  luật  kết  hợp  XY ,  ký  hiệu  là sup(XY), là độ hỗ trợ của tập mục  X Y, sup(XY) = sup(XY)

Như vậy độ hỗ trợ của luật kết hợp  XY  chính là xác suất P(XY) của sự xuất 

(1) Nếu X, Y là các tập mục và  XY  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

Trang 15

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ọn không gian tìm kiếm các tập mục thường xuyên. 

1.1.3 Bài toán khai phá luật kết hợp

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  thường xuyên, ta sinh ra các luật kết hợp bằng cách tìm  Y  X, kiểm tra độ tin cậy của luật X Y\ Y có thỏa mãn độ tin cậy tối thiểu không. Bài toán thứ hai này đơn giản, mọi khó khăn nằm ở bài toán thứ nhất, hầu hết các nghiên cứu về luật kết hợp đều tập trung giải quyết bài toán thứ nhất là tìm các tập mục thường xuyên.  

Phần tiếp theo sau đây sẽ trình bày chi tiết về khai phá tập mục thường xuyên. 1.2 Một số thuật toán cơ bản khai phá tập mục thường xuyên

1.2.1 Cách tiếp cận khai phá tập mục thường xuyên

Các nghiên cứu về khai phá tập mục thường xuyên tập trung vào tìm các thuật toán mới hoặc đề xuất giải pháp nâng cao hiệu quả các thuật toán đã có. Phần này sẽ trình bày khái quát các kỹ thuật chính để khai phá tập mục thường xuyên. 

Trang 16

Bài  toán  khai phá  tập mục  thường  xuyên  có  thể  chia  thành hai  bài  toán nhỏ: tìm các tập mục ứng viên và tìm các  tập mục thường xuyên.  Tập mục ứng viên là tập mục mà ta hy vọng nó là tập mục thường xuyên, phải tính độ hỗ trợ của nó để kiểm tra. Tập mục thường xuyên là tập mục có độ hỗ trợ lớn hơn hoặc bằng ngưỡng 

hỗ  trợ  tối  thiểu  cho  trước.  Đã  có  rất  nhiều  thuật  toán  tìm  tập  mục  thường  xuyên được công bố, ta có thể phân chúng theo hai tiêu chí sau: 

  - Phương pháp duyệt qua không gian tìm kiếm. 

  - Phương pháp xác định độ hỗ trợ của tập mục. 

Phương pháp duyệt qua  không gian tìm kiếm được phân làm hai cách: duyệt theo chiều rộng (Breadth First Search – BFS) và duyệt theo chiều sâu (Depth First Search – DFS). 

Duyệt theo chiều rộng là duyệt qua cơ sở dữ liệu gốc để tính độ hỗ trợ của tất 

cả các tập mục ứng viên có (k-1) mục trước khi tính độ hỗ trợ của các tập mục ứng viên có k mục. Với cơ sở dữ liệu có n mục dữ liệu, lần lặp thứ k phải kiểm tra độ hỗ 

trợ của tất cả  !

k n

n C

  tập mục ứng viên có k mục.   

Duyệt theo chiều sâu là duyệt qua cơ sở dữ liệu đã được chuyển đổi thành cấu trúc cây, quá trình duyệt gọi đệ quy theo chiều sâu của cây. 

Với cơ sở dữ liệu có n mục dữ liệu, không gian tìm kiếm có tất cả 2n tập con, 

rõ ràng đây là bài toán NP khó, do vậy cần phải có phương pháp duyệt thích hợp, tỉa nhanh các tập ứng viên. 

Phương pháp xác định độ hỗ trợ của tập mục X được chia làm hai cách: cách  thứ nhất là đếm số giao tác chứa X trong cơ sở dữ liệu và cách thứ hai là tính phần  giao của các tập chứa định danh của các giao tác chứa X. 

Các thuật toán khai phá có thể phân loại như hình 1.2: 

Trang 17

Hình 1.1 Phân loại các thuật toán khai phá tập mục thường xuyên

Phần  tiếp  sau mô  tả  chi  tiết  nội  dung  hai  thuật  toán tiêu biểu  và là  cơ  sở  để phát triển các thuật toán mới. Thuật toán Apriori tiêu biểu cho phương pháp sinh ra các  tập mục ứng viên và kiểm tra độ hỗ trợ của chúng; Thuật  toán  FP-growth  đại diện cho phương pháp không sinh ra tập mục ứng viên, cơ sở dữ liệu được nén lên cấu trúc cây, sau đó khai phá bằng cách phát triển dần các mẫu trên cây này. 

1.2.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 1993 [6].  Ý 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 (xem 1.1.2): 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: 

Partition 

FP-growth 

Eclat 

Trang 18

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-1)-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:  

Bước kết nối (tìm Ck): Tập các k-tập mục ứng viên Ck được sinh ra bởi việc kết nối  

Lk-1 với chính nó. Hai tập mục l1 và l2 của Lk-1 đượ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 l1 nhỏ hơn của l2: 

  (l1[1] = l2[1])  (l1[2] = l2[2])   … (l1[k-2] = l2[k-2])   (l1[k-1] < l2[k-1]) Dạng của tập mục nhận được bởi nối l1 và l2 là:  l1[1] l1[2] … l1[k-2] l1[k-1] l2[k-1]. 

Bước tỉa: Tập Ck 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  Ck.  Tập  Ck  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 Ck. Nếu có một (k-1)-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-1 thì ứng viên đó không thể là thường xuyên, có thể loại bỏ khỏi Ck. Việc kiểm tra các (k-1)-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) 

Input: Cơ sở dữ liệu DB, ngưỡng độ hỗ trợ minsup  

Output: Tập các tập mục thường xuyên L trong DB  

Trang 19

Method:

(1) Tìm các 1-tập mục thường xuyên, nhận được L1; 

(2)  For (k=2; Lk-1≠ ; k++) do begin 

(3)   Ck = apriori_gen(Lk-1, minsup); // Sinh tập ứng viên mới từ Lk-1 (4)   For (each T DB) do begin 

(5)       C = subset(Ck,T); // Các tập mục ứng viên chứa trong T

Trang 21

3-tập mục {B, C, E} 

L3 

Loại bỏ các 3-tập mục có  

count < 2 

Trang 22

- 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 [8]. 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 nhỏ 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 như 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). 

Trang 23

Tiếp đến,  những  mục  không đủ độ hỗ  trợ bị loại. Các mục  còn  lại được  sắp theo thứ tự giảm dần của độ hỗ trợ (cũng tức là giảm dần theo số lần xuất hiện trong CSDL), ta nhận được danh sách L các mục đã sắp. 

Duyệt CSDL lần thứ 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. 

Để 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 24

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 ti, 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 25

Hình 1.3 Cây FP-tree của CSDL DB trong bảng

Procedure insert_tree(string [p | 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 t, gọi thủ tục insert_tree (t', T), ở đó t' là nội dung

Trang 26

của giao tác t sau khi đã 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.)

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ó 2 đường:          - f : 4, c : 3, a : 3, m : 2, p : 2 

- 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.) 

Trang 27

- c : 1, b : 1 Cá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 

+ Cơ sở mẫu phụ thuộc của m là: 

- f : 2, c : 2, a : 2 

- f : 1, c : 1, a : 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 c và f. Cây FP-tree phụ thuộc của m như hình 1.3 sau: 

 

 

 

 

Trang 28

Hình 1.4 FP-tree phụ thuộc của m

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 DN/P và minsup. 

Ra: Tập các mục phổ biến  

Trang 29

Procedurer FP-growth (Tree, a)

7. Nếu Treeβ=Ø thì gọi FP-growth (Treeβ, β)} 

Đá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). 

- Độ 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. 

Trang 30

1.3 Một số hướng mở rộng bài toán khai phá tập mục thường xuyên

Mô hình khai phá tập mục thường xuyên cơ bản có nhiều ứng dụng trong thực 

tế nhưng nó có những hạn chế, không đáp ứng đầy đủ yêu cầu của người sử dụng. Ràng buộc về độ hỗ trợ của tập mục thường xuyên chủ yếu 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.  

Để đá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 hướng mở rộng bài toán có nhiều ứng dụng là quan tâm đến cấu trúc dữ liệu và mức độ quan trọng khác nhau của các mục dữ liệu, các thuộc tính trong cơ 

sở dữ liệu. Một số mô hình mở rộng bài toán đã được nghiên cứu là: 

Quan  tâm đến mức độ quan  trọ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ố. Độ hỗ trợ và độ tin cậy của luật kết hợp khi đó lần lượt trở thành độ hỗ trợ và độ tin cậy có trọng số. Luật kết hợp có 

độ hỗ trợ và độ tin cậy trọng số hóa được gọi là luật kết hợp có trọng số. Các thuật toán MINWAL(O), MINWAL(W) trong [7] giải quyết vấn đề này. 

1.4 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, bài toán khai phá tập mục thường xuyên và hai thuật toán điển hình trong khai phá tập mục thường xuyên là thuật toán Apriori và FP-growth. Thuật toán Apriori tiêu biểu cho phương pháp sinh 

ra các tập mục ứng viên rồi duyệt cơ sở dữ liệu kiểm tra độ hỗ trợ của chúng, thuật toán FP-growth đại diện cho phương pháp không sinh ra các tập mục ứng viên mà nén cơ sở dữ liệu lên cấu trúc cây. Tuy nhiên, trong thực tế có nhiều bài toán ứng dụng đòi hỏi khai phá tập mục thường xuyên có trọng số trên cơ sở dữ liệu giao tác 

vì vậy trong chương 2 sẽ giải quyết bài toán trên. 

Trang 31

Chương 2: KHAI PHÁ TẬP MỤC THƯỜNG XUYÊN CÓ TRỌNG SỐ

Máy tính  lưu  trữ  lượng  lớn  giao dịch bán  lẻ  trong  kinh doanh bán  lẻ.  Vì  thế việc  lấy  thông  tin  từ  cơ  sở  dữ  liệu  lớn  rất  hữu  ích  đối  với  các  giám  đốc  tiếp  thị. Những thông tin đó rất hữu ích trong việc lập chiến lược tiếp thị và đưa ra các quyết định của họ. 

Kể từ khi Agrawal đề xuất, khai phá tập mục thường xuyên đã thu hút được sự quan tâm của nhiều nhà nghiên cứu, đã có hàng trăm kết quả nghiên cứu được công 

bố  giới  thiệu  các thuật  toán mới  hay  đề  xuất các  giải  pháp  nâng  cao hiệu quả  các thuật toán đã có. [1, 3, 4, 5, 6, 7, 8]. Tập mục thường xuyên đã có vai trò quan trọng trong nhiều ứng dụng thực tế như quản lý quan hệ khách hàng, nâng cao hiệu quả của  thương mại điện tử,  trong  lĩnh  vực  sinh  tin học, phân  tích  cấu  trúc  Protein và DNA, mở rộng truy vấn, phát hiện xâm nhập mạng  

Để đá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 quan trọng 

là  xem  xét mức độ quan  trọ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ố. Độ hỗ trợ và độ tin cậy của luật kết hợp  khi đó lần lượt trở thành độ hỗ trợ và độ tin cậy có trọng số. Luật kết hợp có độ hỗ  trợ và độ tin cậy trọng số hóa được gọi là luật kết hợp có trọng số.  

Mục tiêu của chương này là tìm hiểu thuật toán khai phá tập mục thường xuyên 

có  trọng  số  MINWAL  [7]  theo hướng  tiếp  cận Apriori  và  thuật  toán  khai  phá  tập mục  thường  xuyên  có  trọng  số  WFIM  dựa  trên  thuật  toán  FP-Growth  [12]  theo hướng tiếp cận cấu trúc cây (FP-Tree) bằng cách đưa vào ràng buộc trọng số là phân khoảng trọng số và ngưỡng trọng số nhỏ nhất. 

2.1 Thuật toán khai phá tập mục thường xuyên có trọng số MINWAL

2.1.1 Các khái niệm cơ bản

Định nghĩa 2.1. Trọng số chuẩn hóa 

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: 

Trang 32

Định nghĩa 2.3. Tập mục thường xuyên có trọng số chuẩn hóa 

Cho  k-tập  mục  XI  và  ngưỡng  hỗ  trợ  wminsupp.  X  được  gọi  là  tập  mục thường xuyên có trọng số nếu: 

 NWsupport  X   wminsupp    (2.3) 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ố. Giả 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 

1 2 k q

i , i , i

  là (k-q) 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à: 

1

W(Y,k) w w

j j

Trang 33

Tiếp  tục  giả  sử  X  là  một  k-tập  mục  thường xuyên  có  trọng  số  chuẩn hóa  và chứa Y. Như vậy, từ (1.7) và (2.1) suy ra: 

j

j

wminsupp M*k wminsupp*M*k SC(X)

wminsupp*M*k B(Y, k)

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ụ 2.1 Cho CSDL giao tác như trong bảng 2.1 với trọng số các mục như trong bảng 2.2 và wminsupp = 0,45

Trang 34

Định nghĩa 2.6. Cho tập mục X. Tập mục con Y của X mà mỗi mục trong Y đều có trọng số lớn hơn hoặc bằng trọng số của các mục trong X - Y, ta có tập mục Y được gọi là tập con bậc cao (high-order subset) của X. 

Mệnh đề 2.2 [3,12] Nếu X là tập mục thường xuyên có trọng số chuẩn hóa thì bất kỳ

một tập con bậc cao nào của X cũng sẽ là tập mục thường xuyên có trọng số chuẩn hóa.  

Mệnh đề 2.3. [3,12] Nếu X là một (k +1) - tập mục thường xuyên có trọng số chuẩn hóa

thì X phải là tập cha bậc thấp của một k-tập mục thường xuyên có trọng số chuẩn hóa Y  

Với  các  kết  luận  nêu  trong  các  Mệnh  đề  2.1,  2.2  và  2.3,  ta  có  thể  xây  dựng thuật toán khai phá tập mục thường xuyên có trọng số chuẩn hóa dưới đây [3,12].  

Trang 35

2.1.2 Thuật toán MINWAL khai phá tập mục thường xuyên có trọng số dựa trên thuật toán Apriori

Thuật toán MINWAL(W)

Trang 36

3 Join (Lk-1): (với k  2): Công việc của thủ tục con này là kết nối để tạo ra tập ứng viên Ck. Theo mệnh đề 2.3, một k-tâp mục ứng viên chỉ có thể là tập mục thường xuyên có trọng số chuẩn hóa nếu nó là  tập cha bậc thấp của một (k-1)-tập mục thường xuyên có trọng số chuẩn hóa. Vì thế, khi thủ tục con này thực hiện, nó 

sẽ kết nối các tập mục thường xuyên có trọng số chuẩn hóa trong Lk-1 với một trong 

số các mục có trọng số nhỏ hơn để lập thành một tập cha bậc thấp và nhập vào Ck. 

Ví  dụ,  nếu w1 w2  w5,  là  các  trọng  số  của  các  mục  a,b,c,d,e  và  {c,e}  là  tập mục thường xuyên có trọng số chuẩn hóa đã được phát hiện tại bước lặp II, khi đó thủ tục kết nối Join sẽ chỉ tạo ra các tập mục ứng viên {a,c,e} và {b,c,e}, rồi nhập 

Trang 37

4 Prune (Ck): Ước lượng số đếm hỗ trợ mỗi ứng viên X trong Ck bằng giá trị nhỏ hơn trong hai số đếm hỗ trợ hai tập mục lập nên X tại bước Join(Lk-1). Tính các cận j-hỗ trợ của X. Ứng viên X sẽ bị loại nếu mọi cận j-hỗ trợ của nó, với j ≤ size, 

đều lớn hơn số đếm hỗ trợ ước lượng được của X, (theo Mệnh đề 2.1). 

5 Checking (Ck,D): Thủ tục này thực hiện công việc kiểm tra. Duyệt CSDL xác định số đếm hỗ trợ thực tế của mỗi ứng viện trong Ck, tính độ hỗ trợ có trọng số của chúng và nhập các tập mục thường xuyên có trọng số chuẩn hóa tìm được vào tập Lk. Tập Lk này cũng sẽ là tập các ứng viên được sử dụng để tạo các tập mục cha có khả năng là tập mục thường xuyên có trọng số chuẩn hóa tại vòng lặp tiếp theo. 

Cấu trúc của thuật toán MINWAL(W) tương tự như thuật toán Apriori, nhưng 

về  chi  tiết  có  một  số  khác  biệt.  Mặc  dù  các  k-tập  mục  thường  xuyên  có  trọng  số chuẩn hóa cũng được sinh ra từ các (k-1)-tập mục, nhưng không phải tất cả các tập con của một tập mục thường xuyên có trọng số chuẩn hóa cũng là tập mục thường xuyên  có  trọng  số  chuẩn hóa. Vì  thế  có  sự  khác biệt trong việc  tạo  ra  các  các  tập ứng viên giữa thuật toán MINWAL(W) và thuật toán Apriori.  

Trong thuật toán Apriori, các tập ứng viên trong Ck được sinh ra bằng việc kết nối các tập mục thường xuyên thuộc Lk-1. Trong thuật toán MINWAL(W), các tập ứng viên trong Ck được sinh ra bằng cách kiến tạo các tập cha của các tập mục trong 

Lk-1 (dựa theo Mệnh đề 2.3). 

Trong quá trình tỉa bớt các ứng viên giữa MINWAL(W) và Apriori cũng có sự khác biệt. Việc tỉa bớt các ứng viên trong MINWAL(W) không thông qua việc kiểm tra các tập con của các tập mục thường xuyên có trọng số chuẩn hóa có phải là mục thường  xuyên  có  trọng  số  chuẩn  hóa  hay  không  mà  sử  dụng  các  cận  hỗ  trợ  ước lượng (theo Mệnh đề 2.1). 

Trang 38

2.1.3 Ví dụ minh họa thuật toán MINWAL

Ví dụ 2.2 Xét  CSDL  giao  tác  D  trong  bảng  2.3  và  trọng  số  mỗi  mục  như  trong bảng  2.4.  Giả  sử  ngưỡng wminsup là  0,45.  Ta  cần  tìm tất  cả  các  tập mục  thường xuyên có trọng số chuẩn hóa trong D. 

Giải: Duyệt CSDL giao tác D, thu được kích thước dài nhất có thể có của các tập mục trong D là 4. 

   SC a  4,  SC b  5,  SC c  2,  SC d  6,  SC e  7.  

Khởi đầu L  . 

Tính độ hỗ trợ có trọng số chuẩn hóa của các mục, thu được: 

Trang 39

4 5 NWsupport(a) 0,1* 0,057, NWsupport(b) 0,3* 0, 214,

2

C    d, c ,   d, b ,   d, a ,   e, d ,   e, c ,   e, b ,   e, a  Thực hiện thủ tục Prune: Ước lượng cận trên cho số đếm hỗ trợ (ESC) của các tập mục trong C2 là: 

ESC e, a  min SC e ,  SC a  min 7,  4  4.  

Với ước lượng số đếm hỗ trợ,  ta  có các ước lượng cho độ hỗ trợ có trọng số chuẩn hóa của các tập mục là:  

Trang 40

0,8 0, 4 2 0,8 0,3 5 ENWsupport(d,c) =  * 0,171, ENWsupport(d,b) =  * 0,393,

2 7

   Các tập mục {d,c}, {d,b}, {d,a}, {e,c}, {e,b} và {e,a} có ước lượng độ hỗ trợ 

có trọng số chuẩn hóa nhỏ hơn wminsup = 0,45 nên bị loại. Sau khi prune còn lại C2 

= {{e,d}}. 

Thực hiện thủ tục Checking: Duyệt CSDL giao tác D, xác định số đếm hỗ trợ thực tế, rồi tính độ hỗ trợ có trọng số chuẩn hóa thực thế của {e,d}: 

3

C  e, d, c ,   e, d, b ,   e, d, a   Thực hiện thủ tục Prune: Ước lượng cận trên cho cho số đếm độ hỗ trợ của ba tập mục trong C3 trên đây, ta có: 

Ngày đăng: 17/08/2016, 15:59

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w