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

Phát hiện ác luật kết hợp trong cơ sở dữ liệu

80 3 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

Tiêu đề Phát Hiện Các Luật Kết Hợp Trong Cơ Sở Dữ Liệu
Tác giả Nguyễn Hồng Phương
Người hướng dẫn TS. Nguyễn Kim Anh
Trường học Trường Đại Học Bách Khoa Hà Nội
Chuyên ngành Công Nghệ Thông Tin
Thể loại luận văn thạc sĩ
Năm xuất bản 2009
Thành phố Hà Nội
Định dạng
Số trang 80
Dung lượng 2,26 MB

Nội dung

Bài toán tìm kiếm các luật kết hợp được phát biểu như sau: Cho một tập mục I, một cơ sở dữ liệu các tập mụcD, một ngưỡng hỗ trợ sminvà một ngưỡng tin cậy cmin, chúng ta phải tìm ra các l

Trang 1

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

-

LUẬN VĂN THẠC SĨ KHOA HỌC

TRONG CƠ SỞ DỮ LIỆU

NGÀNH: CÔNG NGHỆ THÔNG TIN

MÃ SỐ:

NGUYỄN HỒNG PHƯƠNG

Người hướng dẫn khoa học: TS NGUYỄN KIM ANH

HÀ NỘI 2009

Trang 2

LỜI CAM ĐOAN

Tôi xin cam đoan luận văn “Phát hiện các luật kết hợp trong cơ sở dữ liệu” là

Thông Tin và Truyền Thông, trường Đại học Bách Khoa Hà Nội Mọi trích dẫn và tài liệu tham khảo được sử dụng trong luận văn đều được tôi chỉ rõ nguồn gốc

Tôi xin hoàn toàn chịu trách nhiệm về lời cam đoan trên

Hà Nội, ngày 22 tháng 10 năm 2009

T ác giả luận ă v n

Nguyễn Hồng Phương

Trang 3

M ục lụ c

Mục lụ - 1 c Danh mục hình v , bảng biểu - 3 ẽ

Danh mục các thuật ngữ ừ ế ắ, t vi t t t - 5

Lời nói đ - 6 ầu Chương 1: Tổng quan - 8

1.1 Khai phá dữ liệu - 8

1.2 Luậ ế ợt k t h p - 9

1.2.1 Đ nh nghĩa chính thị ức - 9

1.2.2 Định nghĩa thay th - 10 ế 1.3 Các vấn đ v phát hi n lu t k t hề ề ệ ậ ế ợp trong cơ s d liệu - 11 ở ữ Chương 2: Luậ ế ợt k t h p cơ b n - 13 ả 2.1 Hai tính chất - 13

2.1.1 Tính chất 1 - 13

2.1.2 Tính chất 2 - 13

2.2 Phát hi n các tệ ập mục thư ng xuyên - 14 ờ 2.2.1 Giải thu t Aprioriậ - 14

2.2.2 Giải thu t AprioriTidậ - 15

2.3 Phát hi n các lu t k t hệ ậ ế ợp - 17

2.3.1 Giải thuật đơn gi n - 18 ả 2.3.2 Một giải thuật nhanh hơn - 19

Chương 3: Sử ụ d ng FP-tree phát hi n các tệ ập mục thư ng xuyên - 21 ờ 3.1 Gi i thiớ ệu - 21

3.2 Thiế ết k và xây dựng cây mẫu thư ng xuyên - 22 ờ 3.2.1 Cây mẫu thường xuyên - 22

3.2.2 Tính đầy đ và tính cô đ ng của cây FP - 26 ủ ọ 3.3 Khai phá mẫu thư ng xuyên sử ụờ d ng cây FP - 27

3.4 Đánh giá thực nghiệm và nghiên c u hi u năng ứ ệ - 31 -

Chương 4: Luậ ế ợt k t h p mở ộ r ng - 33

4.1 Khai phá lu t kậ ế ợt h p đa m c - 33 ứ 4.1.1 Phát biểu bài toán - 33

4.1.2 Thuật toán - 37 4.2 Khai phá lu t k t hậ ế ợp đ nh lư ng - 40 ị ợ 4.2.1 Xử lý thu c tính đ nh lư ng - ộ ị ợ 41

Trang 4

4.2.2 Ánh xạ ừ t bài toán lu t k t h p đ nh lượậ ế ợ ị ng v bài toán lu t k t h p ề ậ ế ợ

boolean - 43

4.2.3 Phát bi u hình thể ức bài toán phát hi n luật k t hệ ế ợp đ nh lư ng - ị ợ 44 4.2.4 Cách tiếp cận khối dày đ - ặc 47 4.3 Khai phá lu t k t hậ ế ợp mờ - 53

4.3.1 Tập rõ - 54

4.3.2 Tập mờ - 54

4.3.3 Các thao tác mờ - 55

4.3.4 Giao dịch mờ và luật k t hế ợp mờ - 56

4.3.5 Phân vùng mờ miền thuộc tính đ nh lư ng ị ợ - 60

4.4 Khai phá lu t k t hậ ế ợp mờ có trọng số - 62

4.4.1 Luật kết hợp mờ trọng số - 62

4.4.2 Luật k t hế ợp mờ trọng số chu n hóa - ẩ 63 Chương 5: Thử nghi m - 67 ệ 5.1 Phát hi n lu t k t hệ ậ ế ợp với thu t toán Aprioriậ - 67

5.1.1 Các lớp của thuật toán - 67

5.1.2 Kết quả chạy thử - 68

5.2 Phát hi n lu t k t hệ ậ ế ợp nhờ xây d ng FP-tree - 70 ự 5.2.1 Dữ ệ li u đầu vào - 70

5.2.2 Kết quả chạy thử - 70

5.3 Phát hi n lu t k t hệ ậ ế ợp đ nh lư ng nhờ ị ợ phân vùng - 71

5.3.1 Các lớp của thuật toán - 71

5.3.2 Kết quả chạy thử - 73

Chương 6: Kết luận và hướng phát triển - 74

6.1 K t luế ận chung - 74

6.1.1 Những kết quả đạ t đư c - 74 ợ 6.1.2 T n tồ ại - 74

6.2 Hướng phát tri n - 75 ể Tài liệu tham khảo - 76

Trang 5

Danh m c hình v ụ ẽ ả , b ng bi ểu

Hình 1.1: Quá trình phát hi n tri thệ ức 9

Bảng 1.2: Ví dụ cơ s d li u 11 ở ữ ệ Hình 1.3: Các vấn đ trình bày trong báo cáo 12 ề Hình 2.1: A nhỏ thì superset(A) cũng nh 13 ỏ Hình 2.2: B lớn thì subset(B) cũng l n 13 ớ Hình 2.3: Giải thu t Apriori 14 ậ Hình 2.4: Hàm AprioriGen sử ụ d ng trong giải thu t Aprioriậ 15

Hình 2.5: Giải thu t AprioriTidậ 16

Hình 2.6: Ví dụ ề v AprioriTid 17

Hình 2.7: Một gi i thu t đơn gi n sinh các lu t 18 ả ậ ả ậ Hình 2.8: Thủ ụ t c GenRules đư c sử ụợ d ng trong giải thu t trên 18 ậ Hình 2.9: Một gi i thu t nhanh hơn để sinh luật ả ậ 19

Hình 2.10: Thủ ụ t c GenRules đượ ử ục s d ng trong gi i thuật nhanh 19 ả Bảng 3.1: Một cơ sở d ữ liệu giao dịch 23

Hình 3.2: Cây FP kết quả 25

Bảng 3.3: Cơ sở mẫu và cây FP có đi u kiện của các mụ 29 ề c Hình 3.4: Thời gian th c hi n và ngư ng hỗ trợ 32 ự ệ ỡ Hình 3.5: Thời gian th c hi n và sốự ệ giao d ch 32 ị Hình 4.1: Phân cấp khái niệm đ u ng 33 ồ ố Hình 4.2: Hai phân cấp khái niệm 34

Hình 4.3: Ví dụ 35

Hình 4.4: Ví dụ ề ậ v lu t thú vị 37

Hình 4.5:Thuật toán cơ b n 38 ả Hình 4.6: Thuật toán Cumulate 40

Bảng 4.7: Quan hệ People (Ngư i) 41 ờ Bảng 4.8: Ví dụ ề ậ ế ợ v lu t k t h p đ nh lư ng có phạm trù 41 ị ợ Bảng 4.9: Hai cách tiếp cận phân vùng thuộc tính 43

Bảng 4.10: Bảng thu đư c sau khi ánh xạ 44 ợ Hình 4.11: Các bước giải quy t bài toán 47 ế Hình 4.12: Ví dụ ề ộ ố ậ ị v m t s lu t đ nh lượng 48

Hình 4.13: Tập mờ 55

Hình 4.14: Phần bù mờ 55

Bảng 4.15: Tập 6 giao dịch mờ 56

Bảng 4.16: Tuổi và giờ sinh của 6 người 58 Hình 4.17:Mộ ốt s nhãn ngôn ngữ ủ c a thu c tính Age 59 ộ

Trang 6

Hình 4.18: Mộ ốt s nhãn ngôn ngữ ủ c a thu c tính Hour 59 ộ Bảng 4.19: Giao dịch m tương ờ ứng của bảng 4.16 59 Hình 4.20: Ví dụ phân vùng tập mờ 61 Bảng 4.21: Miền củ ậa t p m ờAge (p = 30%) 61 Bảng 4.22: Ví dụ thu c tính và giá tr m 63 ộ ị ờ

Bảng 4.23: Trọng số ủa các mụ 63 c c Hình 4.24: Thuật toán khai phá lu t k t hậ ế ợp trọng số chu n hóa 65 ẩ Bảng 5.1: Tổng hợp số ệ li u ki m th ể ửApriori 69 Bảng 5.2: Tổng hợp số ệ li u ki m th -ể ửFP tree 70 Bảng 5.3: Tổng hợp số ệ li u ki m th lu t đ nh lư ng 73ể ử ậ ị ợ

Trang 7

Danh m ục các thuậ t ng ữ, t ừ viế ắt t t

KDD - Knowledge Discovery in

Databases

Phát hiện tri th c trong cơ s d li u ứ ở ữ ệ

Association Rule Discovery Phát hiện lu t k t h p ậ ế ợ

quantitative association rule Luậ ết k t hợp đ nh lượng ị

Trang 8

L ờ i nói đ ầ u

Sự tiến bộ của công nghệ cho phép chúng ta thu thập một lượng lớn dữ liệu và lưu trữ chúng Tuy nhiên, các tập dữ liệu này tự chúng không phản ánh được các quy luật giữa các thuộc tính để từ đó có thể vận dụng vào thực tế Khai phá dữ liệu được xem như là một hướng nghiên cứu trong cơ sở dữ liệu Từ một khối dữ liệu lớn, việc khai phá các tri thức trên chúng phục vụ cho các hệ thống sử dụng trí tuệ nhân tạo đang được các trung tâm, các trường đại học và một số công ty lớn quan tâm nghiên cứu và đã có một số công trình được công bố

Bài toán khai phá luật kết hợp đã được giới thiệu từ năm 1993, trong đó người

ta mong muốn xác định được mối quan hệ giữa các thuộc tính trong một cấu trúc của

cơ sở dữ liệu quan hệ Bài toán khai phá luật kết hợp đặt ra là tìm tất cả các luật kết hợp thỏa mãn độ hỗ trợ tối thiểu và độ tin cậy tối thiểu

Với mong muốn tìm hiểu về lĩnh vực này và đồng thời cũng cài đặt thử nghiệm một số thuật toán, em đã thực hiện công việc này trong quá trình làm luận văn cao học Bản báo cáo này trình bày lý thuyết từ cơ bản đến chuyên sâu, từ nền tảng của bài toán phát hiện luật kết hợp trong cơ sở dữ liệu giao dịch và xa hơn nữa

là phát hiện các luật kết hợp mở rộng trong cơ sở dữ liệu như luật kết hợp định lượng, luật kết hợp đa mức, luật kết hợp mờ

Bố cục của luận văn gồm các chương sau:

Chương 1 - Tổng quan Chương này trình bày khái niệm khai phá dữ liệu và luật kết

hợp

Chương 2 - Luật kết hợp cơ bản Nội dung chương này gi i thi u các tính ch t và ớ ệ ấhai giai đo n đạ ể tìm ra lu t k t hậ ế ợp trong cơ s d liệu giao dịch ở ữ

Chương 3 - S dử ụng FP Tree để phát hiện các tập mụ- c thư ng xuyên Chương này ờ

giới thiệu một cách tiếp cận khác để sinh ra các t p mụậ c thư ng xuyên mà không ờ

phải tr i qua bư c s n sinh các t p mụ ứả ớ ả ậ c ng cử viên như cách truyền thống

Chương 4 - Luật k t h ế ợp mở ộ r ng Chương này trình bày các phạm vi khác nhau của bài toán phát hi n luệ ật kết hợp: phát hiện luật k t hế ợp đa m c trong cơ s d liệu ứ ở ữgiao d ch, phát hiị ện luật k t hế ợp đ nh lưị ợng, phát hiện luậ ết hợp mờt k trong cơ s ở

d ữ liệu quan hệ

Chương 5 - Th nghiử ệm Chương này giới thi u các cài đ t thu t toán và cung c p ệ ặ ậ ấ

một số ết quả kiểm thử k

Trang 9

Chương 6 - Kết luận và hướng phát tri n Chương này tổ ng k t l i nh ng vi c đã ế ạ ữ ệlàm đư c và chưa làm đượ ợc của luận văn, đ ng th i cung cấồ ờ p m t s g i ý cho các ộ ố ợcông việc tiếp theo.

Em xin gửi lời cảm ơn tới TS Nguyễn Kim Anh, người đã tận tình giúp đỡ em trong quá trình làm luận văn

Em mong nhận được ý kiến đóng góp của thầy cô giáo và bạn bè

Hà Nội, ngày 22 tháng 10 năm 2009

Học viên

Nguyễn Hồng Phương

Trang 10

Chương 1: ổ T ng quan

Phần đầu của chương này sẽ giới thiệu tổng quan quy trình khai phá dữ liệu (data mining) một cách ngắn gọn Luật kết hợp trình bày trong phần tiếp theo được xem như là một kỹ thuật khai phá dữ liệu

rẻ, dung lượng lớn như đĩa từ, đĩa CD-ROM

Chúng ta cần có công nghệ mới hay công cụ với khả năng thông minh để tự động biến đổi dữ liệu đã được xử lý thành những thông tin và tri thức có ích Thuật ngữ phát hiện tri thức trong cơ sở dữ liệu (knowledge discovery in databases - KDD) đã trở nên phổ biến Quá trình phát hiện tri thức phải trải qua một số bước tương tác và lặp Xen giữa các bước là việc ứng dụng các giải thuật để trích rút ra các mẫu dữ liệu, gọi là khai phá dữ liệu(data mining)

Theo [1 ], các bước cơ bản của quá trình phát hiện tri thức gồm:

1 Sau khi phân tích mục đích của người sử dụng cuối và nhận về các tri thức cần thiết, chúng ta chọn ra các tập dữ liệu đích Điều này có nghĩa là tập trung vào một tập con các biến hay dữ liệu mẫu

2 Dữ liệu đích được tiền xử lý và làm sạch để loại bỏ những dữ liệu bẩn và ngoại lai

3 Đưa ra những đặc trưng có ích biểu diễn dữ liệu

4 Mục tiêu của quá trình phát hiện tri thức là dự đoán các giá trị tương lai của các biến quan tâm hoặc tìm ra những mẫu dữ liệu mà con người có thể hiểu Giải thuật khai phá dữ liệu thích hợp được lựa chọn và áp dụng Có một số thuật giải: kết hợp, phân lớp, phân nhóm,

Trang 11

Hình 1.1: Quá trình phát hiện tri thức

-Xnếu X ⊆ T Mỗi tập mục có một thông số thống kê gọi là độ hỗ trợ (support) hay

tần số (frequency) Độ hỗ trợ s của một tập mục Xlà tỉ lệ các giao dịch trong cơ sở

Một luật kết hợp là một luật có dạng

YX⇒ , trong đó

IYI

D

YX

D u ữ liệ mD u ục tiêuữ liệ D u ti n ữ liệx ử lý ề D u biữ liệđổi ến M u ẫ Tri thức

Trang 12

Luật X ⇒Ycó độ tin cậy c trong tập giao dịch D nếu c% các giao dịch trong

Dchứa Xthì cũng chứa Y:

X

YX

)(

)(

),(

Xs

YXsYX

=

Độ tin cậy biểu thị khả năng của một luật Một ngưỡng cmincủa độ tin cậy (còn gọi là

độ tin cậy tối thiểu - minconf) được sử dụng để loại bỏ những luật không đủ mạnh Một ngưỡng smincủa độ hỗ trợ (còn gọi là độ hỗ trợ tối thiểu - minsupp) loại bỏ các luật mà số lượng các giao dịch chứa phần đầu và thân luật nhỏ hơn một lượng xác định Các tập mục với độ hỗ trợ tối thiểu được gọi là các tập mục thường xuyên(frequent itemsets) hay các tập mục lớn (large itemsets)

Bài toán tìm kiếm các luật kết hợp được phát biểu như sau: Cho một tập mục I, một

cơ sở dữ liệu các tập mụcD, một ngưỡng hỗ trợ sminvà một ngưỡng tin cậy cmin, chúng ta phải tìm ra các luật kết hợp X ⇒Ytrong Dvới độ hỗ trợ s ≥sminvà độ tin cậy c ≥cmin

1.2.2 Định nghĩa thay thế

Cho D={T1,T2, ,Tn} là một quan hệ trên sơ đồ quan hệI={I1,I2, ,Im}, trong đó mỗi thuộc tính Ii, ∈i {1, ,m}nhận hai giá trị {true, false} Nói theo cách khác, D là một tập các vector nhị phân chiều dài m Với mỗi hàng Tcủa quan hệ Dthỏa mãn điều kiện ∀i∈{1, ,m}:T[i]↔ Ii ∈T Độ hỗ trợ của một tập mục X ⊆I là:

D

iTXIDTX

s( ) ∈ ∀ i∈ : []

=

Hơn nữa, chúng ta có thể dùng cách tiếp cận xác suất để định nghĩa độ hỗ trợ và độ tin cậy Xvà Ylà các tập mục, trong đó X⊂ ,I Y⊂I và X∩ Y=∅ P(X) là xác suất tất cả các mục trong Xcó trong một giao dịch Độ hỗ trợ s của một luật X ⇒Yđược định nghĩa là s= P(X∪Y) và độ tin cậy c là xác suấ có điều kiện của Y khi có X, t tức là

Ví dụ:

Bảng 1.2 là một ví dụ về cơ sở dữ liệu các giao dịch trong siêu thị Ilà một tập các mặt hàng bao gồm các mặt hàng A, B, C, D Mỗi dòng của bảng chứa một định danh giao dịch TID mô tả một giao dịch mua hàng của một khách hàng, hay nói khác đi

đó là một rỏ các mặt hàng khách hàng đã quyết định mua

Độ hỗ trợ của tập mục {A, B} là 0.4 Độ hỗ trợ của tập {A, B, D} là 0.3 Do đó, độ

Trang 13

0.3 và độ tin cậy cminnhỏ hơn hoặc bằng 0.75 thì luật này được coi là luật kết hợp.Chúng ta có thể phát biểu "Nếu khách hàng mua mặt hàng A và thì có cơ hội 75% B khách hàng cũng sẽ mua D"

1.3 Các vấ n đ v phát hi n luật k t h ề ề ệ ế ợ p trong cơ s d liệu ở ữ

Các nghiên cứu đều tập trung vào phát hiện các luật kết hợp trong cơ sở dữ liệu giao dịch và cơ sở dữ liệu quan hệ Cơ sở dữ liệu giao dịch là cơ sở dữ liệu có chứa các giao dịch mà mỗi giao dịch thể hiện trạng thái "có" hay "không" sự xuất hiện của các thuộc tính Chính vì thế, nó còn được gọi là cơ sở dữ liệu nhị phân Cơ sở dữ liệu quan hệ, như đã biết, có rất nhiều thuộc tính như thuộc tính nhị phân, thuộc tính phạm trù, thuộc tính định lượng (số),…

Đối với cơ sở dữ liệu giao dịch, để phát hiện các luật kết hợp trong đó, đã có rất nhiều công trình được đăng trên các tạp chí, kỷ yếu hội thảo Thuật toán Apriori và các cải tiến của nó [2][8] đã được đề xuất để thực hiện nhiệm vụ này Một đặc điểm của những thuật toán này là tốn khá nhiều chi phí cho việc sinh ra các tập mục ứng

cử Để giải quyết vấn đề này, [15][ ][16 32] đã đề xuất sử dụng cây mẫu thường xuyên (FP-tree) để phát hiện các tập mục thường xuyên, tránh được việc phải sinh quá nhiều tập mục ứng cử Xoay quanh bài toán đối với cơ sở dữ liệu giao dịch, một số bài báo cũng trình bày khía cạnh khác: luật kết hợp đa mức [19][ ][ ][ ][25].22 23 24Đối với cơ sở dữ liệu quan hệ, vấn đề trở nên phức tạp hơn rất nhiều Vì cơ sở dữ liệu quan hệ chứa các thuộc tính định lượng, phạm trù,… nên nảy sinh công đoạn xử

lý các thuộc tính này trước khi sinh các tập mục thường xuyên Các bài toán ở đây gồm: phát hiện luật kết hợp định lượng và phạm trù [1], phát hiện luật kết hợp mờ và luật kết hợp mờ có trọng số [5 6][ ][13 14 28 29][ ][ ][ ]

Trang 14

Bản luận văn này trình bày các v n đ trên theo cấu trúc sau:ấ ề

Hình 1.3: Các vấ n đ ề trình bày trong báo cáo

Sau đó là ph n cài đầ ặt th nghi m các thu t toán và k t lu n ử ệ ậ ế ậ

Phát hiện các luật kết hợp trong cơ sở ữ liệ d u

Phát hiện các luật kết hợp

trong cơ sở ữ liệu giao dịch d

Phát hiện các luật kết hợp trong cơ sở ữ liệ d u quan h ệ

Kiểu

Apriori S d ng ử ụ

FP Tree- Luật đa m c ứ Luật định lượng Luật mờ Luật mờ có tr ng ọ

s ố

Trang 15

Chương 2: ậ ế ợ Lu t k t h p cơ bản

Chương này giới thiệu một số thuật giải phát hiện các luật kết hợp trong cơ sở dữ liệu giao dịch Cách làm ở đây chia ra thành hai nhiệm vụ nhỏ hơn:

- Tìm kiếm các tập mục vớ ội đ h ỗ trợ ớ l n hơn hoặc bằng ngưỡng tối thi u sể min

- Xây dựng các luật kết hợp với độ tin cậy lớn hơn hoặc bằng ngưỡng tối thiểu cmin

Trang 16

2 2 Phát hiện các tập mụ thường xuyên c

Có rất nhiều thuật giải đã được đề xuất để giải quyết bài toán này Phần này sẽ giới thiệu chi tiết một vài trong số các thuật giải

2.2.1 Giải thuật Apriori

Giải thuật Apriori là giải thuật kinh điển để tìm các tập mục thường xuyên Nội dung giải thuật được thể hiện trong hình 2.3 Mặc dù có nhiều giải thuật cải tiến khác, nhưng ở đây, tôi xin trình bày lại giải thuật này vì nó là nền tảng giúp chúng ta hiểu hơn về công việc cần tiến hành

Giả sử mỗi tập mục gồm có hai trường: một tập các mục và một bộ đếm cho biết số lượng các giao dịch hỗ trợ tập mục Trong bước duyệt đầu tiên của giải thuật, với mỗi mục i của tập I, chúng ta đếm số giao dịch chứa nó Nếu kết quả vượt smin thì mỗi mục sẽ là một 1 tập mục - thường xuyên Tất cả các bước duyệt sau này đều bao gồm 2 pha Gọi bước duyệt hiện tại là k Trong pha đầu tiên, chúng ta xây dựng một tập Ck các k tập mục ứng cử (candidate k itemsets) từ tập L- - k-1của các (k 1) tập mục - -thường xuyên có được ở bước trước Tập mục ứng cử được tính toán nhờ hàm AprioriGen được chỉ ra trong hình 2.4

Trong pha thứ hai, chúng ta quét cơ sở dữ liệu D và kiểm tra mỗi giao dịch t xem có chứa các tập mục ứng cử trong đó hay không Nếu t có chứa tập mục ứng cử thì bộ đếm của tập mục này sẽ được tăng thêm 1 đơn vị Chúng ta có hàm Subset để thực hiện điều này

Hình 2.3: Giải thuật Apriori

Đầu vào: Cơ sở ữ liệu các giao dị d ch D và smin

Đầu ra: Tập Answer chứa tất cả các tập mục thường xuyên của D

Giải thuậ t:

1) L1 = {large 1-itemsets};

2) for(k=2; Lk-1≠∅; k++) do begin

3) Ck = AprioriGen(Lk-1); // New candidate

4) forall transactions t∈D do begin

5) Ct = Subset(Ck, t); // Candidates contained in t

Trang 17

Hàm AprioriGen bao gồm 2 pha Nó nhận đối số là tập các (k- -1) tập mục thường xuyên Lk-1 Trong pha đầu tiên, gọi là pha kết nối, chúng ta kết nối Lk-1với chính nó.Chúng ta giả sử rằng các mục của một tập mục được sắp xếp theo thứ tự từ điển.

Hình 2.4: Hàm AprioriGen sử ụ d ng trong giải thuật Apriori

Trong pha cắt tỉa, chúng ta xóa tất cả các tập mục c∈Ck mà các (k 1) tập con của c không có mặt trong Lk-1

-2.2.2 Gi i thuả ật AprioriTid

Giải thuật AprioriTid được chỉ ra trong hình 2.5 cũng sử dụng hàm AprioriGen (hình 2.4) để quyết định các tập mục ứng cử trước khi vòng lặp duyệt bắt đầu Đặc điểm thú vị của giải thuật này là cơ sở dữ liệu D không được sử dụng để tính toán độ hỗ trợ sau lần duyệt đầu tiên Hơn nữa, tập Ckđược sử dụng cho mục đích này Mỗi phần tử của tập Ckcó dạng <TID, {Xk}>, trong đó Xk là k tập mục lớn ứng cử hiện -diện trong giao dịch với định danh TID Với k=1, C1tương ứng với cơ sở dữ liệu D, mỗi mục i được thay thế bởi tập mục {i} Với k>1, Ckđược sinh ra bởi thuật giải (bước 10) Phần tử của Cktương ứng với giao dịch t là <t.TID, {c∈Ck | c có trong t}> Nếu một giao dịch không chứa bất kỳ k-tập mục ứng cử thì Cksẽ không có một phần

tử (dòng vào, entry) cho giao dịch này Do đó, số phần tử trong Ckcó thể nhỏ hơn số giao dịch trong cơ sở dữ liệu, đặc biệt với giá trị rất lớn của k Hơn nữa, với giá trị k

Đầu vào: Một tập Lk-1chứa tất cả các (k-1)-tập mục thường xuyên

Đầu ra: T p Cậ k ng c ứ ử là một siêu tập chứa tất cả các k ậ-t p mục thường xuyên

Trang 18

lớn, mỗi phần tử có thể nhỏ hơn giao dịch tương ứng bởi vì bởi vì có rất ít ứng viên tiềm năng có thể hiện diện trong giao dịch Tuy nhiên, với giá trị k nhỏ, mỗi phần tử

có thể lớn hơn giao dịch tương ứng bởi vì một phần tử trong Ckbao gồm tất cả các ktập mục ứng cử hiện diện trong giao dịch

-Hình 2.5: Giải thuật AprioriTid

Ví dụ:

Quan sát cơ sở dữ liệu trên hình 2.6, giả thiết smin (minimum support, minsup) là 2 giao dịch Gọi AprioriGen với đối số là L1 ở bước 4 sẽ sinh ra các tập mục ứng cử C2

Từ bước 6 đến bước 10, chúng ta đếm độ hỗ trợ của các tập mục ứng cử trong C2

bằng cách lặp trên các phần tử trong C1và sinh ra C2 Hạng mục đầu tiên trong C1là {{1},{3},{4}} tương ứng với giao dịch TID là 100 Tập Ct ở bước 7 tương ứng với hạng mục t này là {{1 3}} bởi vì {1 3} là phần tử của C2 và cả ({1 3} {1}) và ({1 -3}-{3}) đều là phần tử của t.set-of-itemsets

Gọi AprioriGen với đối số là L2 sẽ sinh ra C3 Duyệt qua dữ liệu C2và C3 sẽ có được

với TID là 100 và 400 Tập ứng cử {2 3

Đầu vào: Cơ sở ữ ệu các giao dị d li ch D và smin

Đầu ra: Tập Answer chứa tất cả các tập mục thường xuyên của D

6) forall entries t ∈ Ck − 1 do begin

// in the transaction with identifier t.TID

Ct= {c∈Ck| (c c[k]) ∈t.set of itemsets ∧- - - (c c[k- -1]) ∈t.set- -of itemsets}

Trang 19

5} trong C3 trở thành lớn và là phần tử duy nhất của L3 Sử dụng L3sinh ra C4 là một tập rỗng, chúng ta kết thúc tại đây

C TID Set-of-Itemsets

Như đã trình bày ở đầu chương, để tìm kiếm các luật kết hợp, chúng ta phải trải qua hai bước: tìm các tập mục thường xuyên và xây dựng luật kết hợp Hiệu quả của bài

Trang 20

toán phụ thuộc chủ yếu vào hiệu quả của công việc tìm kiếm các tập mục thường xuyên

Xét m t kộ -tập mục thường xuyên và mộ ột đ tin cậy tối thiểu 0, tức là mọi luậ ềt đ u được ch p nhậấ n là lu t k t h p Tậ ế ợ ổng số luật là ∑ −

k

i i

k

Nếu có tập mục thường xuyên {A, B, C}, chúng ta có thể xây dựng được 6 luật {A}⇒{B, C}, {B}⇒{A, C},

2.3.1 Gi i thuả ậ t đơn gi n ả

Cho một k-tập mục thường xuyên f với k ≥ 2 và một tập con l, trong đó, ∅ ⊂ l ⊂ f, một luật l⇒f\l là một luật kết hợp nếu s(f)/s(l) ≥ cmin Nếu luật l⇒ l không có độ tin f\cậy tối thiểu thì luật l'⇒f\l' cũng không, trong đó ∅ ⊂ l' ⊂ Do đó, thay vì phải xét ltất cả các tập con của f để sinh ra các luật kết hợp, chúng ta có thể sử dụng phương pháp đệ quy để sinh ra luật với một (k-1)-tập con l' của một k tập mục l như là phần -đầu của luật khi và chỉ khi l⇒f\l có độ tin cậy tối thiểu Thuật giải được chỉ ra trên hình 2.7 và 2.8 dưới đây:

Hình 2.7: M t gi i ộ ả thuật đơn giản sinh các luật

Hình 2.8: Thủ ụ t c GenRules đư c sử ụ ợ d ng trong giải thuật trên

Đầu vào: T p tậ ất cả các tập mục thường xuyên có nhiều hơn một mục

Đầu vào: Hai tập mục thường xuyên fk và lm, và một ngưỡng độ tin cậy cmin

Đầu ra: Các luật kết hợp với nhiều nhất m 1 mục ở- phần đầu luật (m>2)

Trang 21

2.3.2 Một giải thuật nhanh hơn

Ý tưởng của phần trước có thể được viết lại như sau: Nếu luật l⇒f\l có độ tin cậy tối thiểu tất cả các luật l', ⇒f\l', trong đó ∅ ⊂ l' ⊂ l cũng phải có độ tin cậy tối thiểu.Thay vì sinh ra vế trái của luật theo kiểu từ trên xuống (top-down) từ các k tập mục -xuống các 1 tập mục, chúng ta có thể sinh ra vế phải từ dưới lên (bottom up) bắt đầu -với các 1 tập mục và tiến tới các k tập mục Tương ứng với việc sinh ra các tập con - -trong dòng 2 của hình 2.8, chúng ta có thể tạo các siêu tập sử dụng hàm AprioriGen trong hình 2.4 Theo cách tiếp cận này, giải thuật được chỉ ra trong hình 2.9 và 2.10

Hình 2.9: M t giộ ải thuậ t nhanh hơn đ sinh luậ ể t

Hình 2.10: Thủ ục GenRules được sử ụ t d ng trong giải thuật nhanh

Giải thuật này hiệu quả hơn giải thuật trên Quan sát ví dụ: cho tập mục thường xuyên {A, B, C, D, E} Giả sử rằng các luật {A, C, D, E}⇒{B} và {A, B, C,

Đầu vào: T p tậ ất cả các tập mục thường xuyên có nhiều hơn một mục

Trang 22

E}⇒{D} là các luật kết hợp duy nhất có một mục phía bên phải Sử dụng giải thuật đơn giản, gọi đệ quy thủ tục GenRules({A, B, C, D, E},{A, C, D, E}) sẽ sinh ra các

vế phải của luật {B, A},{B, C},{B, D} và {B, E} Ví dụ, luật với vế phải {B, E} không được giữ vì {E}⊂{B, E} và luật {A, B, C, D} {E} không có độ tin cậy tố⇒ i thiểu Tương tự với GenRules({A, B, C, D, E},{A, B, C, E}) Luật kết hợp duy nhất với 2 mục ở vế phải là {A, C, E}⇒{B, D}, là luật duy nhất được kiểm tra bởi giải thuật nhanh

Cả hai giải thuật đều có mặt trái là chúng có thể sinh ra các luật kết hợp trùng nhau

Ví dụ, gọi GenRules({A, B, C, D, E},{B}) và GenRules({A, B, C, D, E},{D}) Cả hai đều sinh ra {B, D} như là vế phải 2 mục Do đó, cả hai đều sinh ra cùng luật {A,

C, E} {B, D}.⇒

Để tránh hiện tượng này, các luật nên được chèn vào một tập hợp Vì các phần tử của tập hợp là duy nhất nên tập hợp có thể được sử dụng như là một nguồn dữ liệu cho việc sản sinh các luật kết hợp

Trang 23

Chương S d 3: ử ụng FP tree phát hiện các tập mục

-thường xuyên

Chương này giới thiệu một cấu trúc dữ liệu được dùng để tìm ra các tập mục thường xuyên một cách hiệu quả hơn so với thuật toán Apriori Phần đầu của chương phân tích về những hạn chế của giải thuật Apriori và các cải tiến của giải thuật này Các phần tiếp theo giới thiệu cây FP và cách xây dựng cũng như khai thác cây FP để đưa

ra các tập mục thường xuyên

3.1 Giới thiệu

Như đã trình bày ở phần trước, việc phát hiện các tập mục thường xuyên đóng một vai trò quan trọng trong phát hiện luật kết hợp Phần lớn các kết quả nghiên cứu như [2 8 9] ][ ][ đều chọn cách tiếp cận kiểu Apriori: nếu các tập mục chiều dài k mà không phải là thường xuyên thì các siêu tập của nó với chiều dài (k+1) cũng không thường xuyên Bản chất là lặp đi lặp lại việc sinh ra các tập mục ứng cử chiều dài k từ các tập mục thường xuyên chiều dài (k-1) với k > 1 và sau đó kiểm tra xem các tập mục ứng cử có đủ tần suất xuất hiện trong cơ sở dữ liệu hay không Một số cải tiến cũng

đã được đề xuất để làm giảm số tập mục ứng cử Tuy nhiên, với một số lượng lớn các giao dịch có nhiều thuộc tính, các thuật giải tựa Apriori gặp phải một số vấn đề sau:

Chi phí cho việc kiểm soát một số lượng lớn các tập ứng cử Ví dụ, nếu có 104

1-tập mục thường xuyên, thuật giải Apriori sẽ sinh ra hơn 107 tập ứng cử kích thước

2, sau đó phải thực hiện tính cộng và kiểm tra tần suất xuất hiện của chúng Hơn nữa,

để phát hiện tập mục kích thước 100 như là {I1, I2,…, I100}, nó phải sinh ra khoảng

2100 ≈ 1030 ứng cử viên Như vậy, chi phí sẽ rất tốn kém cho dù các kỹ thuật cài đặt

có được cải tiến

Phải lặp đi lặp lại việc duyệt cơ sở dữ liệu để kiểm tra một lượng lớn các tập ứng cử bằng cách so khớp

Vấn đề thắt cổ chai của thuật toán Apriori nằm ở chỗ sinh các tập ứng cử và kiểm tra nó Nếu chúng ta có thể tránh được việc sinh ra quá nhiều tập ứng cử thì hiệu quả có thể được cải thiện đáng kể Han, Pei và Yin, trong [15] đã đề xuất sử dụng cấu trúc cây trên ba khía cạnh sau:

Thứ nhất, cấu trúc dữ liệu nén truyền thống được gọi là cây mẫu thường xuyên (FP-tree, frequent pattern tree) được xây dựng Nó là sự mở rộng của cây tiền

tố để lưu trữ các thông tin cốt yếu về các mẫu thường xuyên Chỉ những mục thường

Trang 24

xuyên chiều dài 1 mới có các nút trong cây, và nút của cây được sắp xếp theo ý tưởng là các nút nào xuất hiện thường xuyên hơn sẽ có cơ hội hơn để chia sẻ nút đó.

Thứ hai, phương pháp khai phá tăng trưởng phân đoạn mẫu dựa trên FP-tree được phát triển bắt đầu từ mẫu thường xuyên kích thước 1( như một mẫu hậu tố khởi đầu), chỉ kiểm tra cơ sở mẫu điều kiện ( một cơ sở dữ liệu con chứa tập các mục thường xuyên cùng xuất hiện với mẫu hậu tố), xây dựng FP-tree và thực hiện khai phá đệ quy với cây Tăng trưởng mẫu đạt được thông qua thao tác kết nối mẫu hậu tố với mẫu hậu tố mới được sinh ra từ cây FP điều kiện Thao tác chính ở đây là đếm bộ tích lũy và điều chỉnh bộ đếm tiền tố, do đó sẽ ít tốn kém hơn so với việc sinh các ứng cử viên và so khớp mẫu được thực hiện trong thuật toán kiểu Apriori

Thứ ba, kỹ thuật tìm kiếm thực hiện dựa trên phân đoạn, chia và trị chứ không phải là kết hợp sinh các tập mục thường xuyên từ dưới lên theo kiểu Apriori Do đó làm giảm kích thước cơ sở mẫu điều kiện được sinh ra ở mức tiếp sau của việc tìm kiếm

3.2 Thiết kế và xây dựng cây m ẫ u thư ờ ng xuyên

Cho I = {a1, a2, …, am} là một tập các mục, DB = <T1, T2, …, Tn> là một cơ sở dữ liệu giao dịch, trong đó Ti (với i = 1, 2, …, n) là một giao dịch chứa tập các mục trong I Độ hỗ trợ hay tần suất xuất hiện của mẫu A (tập các mục) là số giao dịch chứa A trong DB Chú ý rằng, độ hỗ trợ ở đây là con số tuyệt đối chứ không phải tỉ

lệ tương đối trong cơ sở dữ liệu như các thuật toán truyền thống A được gọi là mẫu thường xuyên nếu độ hỗ trợ của nó không nhỏ hơn độ hỗ trợ tối thiểu

Cho cơ sở dữ liệu giao dịch DB và độ hỗ trợ tối thiểu minsup, bài toán đi tìm tập đầy

đủ các mẫu thường xuyên được gọi là bài toán khai phá mẫu thường xuyên

3.2.1 Cây mẫ u thư ng xuyên ờ

Để thiết kế một cấu trúc dữ liệu nén cho bài toán khai phá mẫu thường xuyên, chúng

ta quan sát một ví dụ

Ví dụ 1: DB là cơ sở dữ liệu giao dịch cho trong bảng 3.1 và minsup = 3

Trang 25

Bảng 3.1: Một cơ sở ữ liệu giao dịch d

Vì các mục thường xuyên đóng một vai trò quan trọng trong khai phá mẫu thường xuyên nên cần phải duyệt DB một lần để nhận diện tập các mục thường xuyên Nếu chúng ta lưu trữ tập các mục thường xuyên của mỗi giao dịch trong cấu trúc nén nào đó thì có thể tránh được phải quét nhiều lần DB

Nếu có nhiều giao dịch chia sẻ một tập mục thường xuyên giống nhau thì chúng có thể được hòa nhập lại làm một với số lần xuất hiện được lưu trong biến count Dễ dàng kiểm tra hai tập có giống nhau hay không nếu các mục thường xuyên trong tất

cả các giao dịch được sắp xếp thông qua một thứ tự định trước

Nếu hai giao dịch cùng có chung phần tiền tố, thông qua một thứ tự sắp xếp các mục thường xuyên, các phần chia sẻ có thể được hòa nhập bằng cách sử dụng một cấu trúc tiền tố miễn là biến count được đăng ký hoàn chỉnh Nếu các mục thường xuyên được sắp xếp theo thứ tự giảm dần của tần suất thì sẽ có nhiều hơn các chuỗi tiền tố được chia sẻ

Dựa trên những phân tích trên, chúng ta có thể xây dựng cây FP như sau:

Bước 1: Duyệt cơ sở dữ liệu lần đầu, tìm tất cả các mục thường xuyên (các mẫu chỉ

có 1 mục) và sắp xếp chúng vào một danh sách L theo thứ tự giảm dần của tần suất

Ví dụ, với cơ sở dữ liệu trên, ta có danh sách L = {f:4, c:4, a:3, b:3, m:3, p:3}, số đằng sau dấu hai chấm ":" là độ hỗ trợ của mục tương ứng

Bước 2: Duyệt cơ sở dữ liệu lần thứ hai, với mỗi giao dịch, sắp xếp các mục thường

xuyên của nó theo thứ tự trong L và đưa nó vào cây FP

Minh họa việc xây dựng cây FP đối với cơ sở dữ liệu trên:

Bước 1: Duyệt DB lần đầu để sinh ra danh sách L

Trang 27

Cây FP kết quả:

nh 3 : Cây FP kết quả2

Định nghĩa FP-tree là một cây mẫu thường xuyên có c u trúc như sau:

Nó bao gồm một nút gốc gán nhãn "null", một tập các cây con tiền tố như là các con của nút gốc và một bảng header mục thường xuyên

Mỗi nút trong cây con tiền tố mục bao gồm có ba trường: tên mục (item name), bộ đếm (count) và con trỏ nút (node link) Tên mục cho biết mục mà nút biểu diễn, bộ -đếm cho biết số giao dịch được biểu diễn một phần từ nút gốc cho tới nút này và con trỏ nút chỉ tới nút tiếp theo trong cây mà nó có cùng tên hoặc con trỏ nút sẽ là null nếu không có nút cùng tên nào khác

-Mỗi entry trong bảng header mục thường xuyên có hai trường: (1) tên mục (itemname) và (2) head của nút con trỏ

Trang 28

-Thuật toán xây dựng FP-tree:

Phương pháp tiến hành như sau:

Duyệt cơ sở dữ liệu giao dịch DB lần 1 Thu thập tất cả các mục thường xuyên F và

độ hỗ trợ của nó Sắp xếp F theo thứ tự giảm dần của độ hỗ trợ, ta có danh sách L các mục thường xuyên

Tạo ra nút gốc của cây FP, T, gán nhãn null cho nó Với mỗi giao dịch Trans trong

DB, ta làm như sau:

Chọn và sắp xếp các mục thường xuyên trong Trans theo thứ tự của L Gọi danh sách các mục thường xuyên đã được sắp xếp trong L là [p|P], trong đó p là phần tử đầu tiên và P là phần còn lại của danh sách Gọi thủ tục insert_tree([p|P], T)

Thủ tục insert_tree([p|P], T) được thực hiện như sau: Nếu T có một con N sao cho N.item-name = p.item-name thì tăng bộ đếm của N lên 1; ngược lại tạo nút mới N và gán giá trị 1 cho bộ đếm của nút N mới này, nút mới này sẽ được link tới bởi T Nó

sẽ được link tới bởi nút có cùng tên thông qua cấu trúc nút con trỏ Nếu P vẫn chưa rỗng thì ta gọi đệ quy insert_tree(P, N)

Phân tích

Từ cách xây dựng cây FP trên đây, ta thấy rằng chỉ cần duyệt qua cơ sở dữ liệu hai lần: lần đầu thu thập các tập mục thường xuyên và lần thứ hai xây dựng cây FP Chi phí cho việc chèn một giao dịch T vào cây FP là O(|T|), trong đó |T| là số mục thường xuyên trong giao dịch T

3.2.2 Tính đầ y đ và tính cô đọ của cây FP ủ ng

Một vài tính chất quan trọng của FP tree có thể được quan sát trong quá trình xây dựng

-Bổ đề 2.1 Cho một cơ sở dữ liệu giao dịch DB và một ngưỡng minsup, cây FP

tương ứng của nó chứa đầy đủ thông tin của DB trong ngữ cảnh khai phá mẫu thường xuyên

Cơ sở khoa học Dựa trên quá trình xây dựng cây FP, mỗi giao dịch trong DB được

ánh xạ vào một đường dẫn trong cây FP, và thông tin tập mục thường xuyên trong mỗi giao dịch được lưu trữ đầy đủ trong cây FP Hơn nữa, một đường dẫn trong cây

FP có thể biểu diễn các tập mục thường xuyên trong nhiều giao dịch mà không có nhập nhằng vì đường dẫn biểu diễn mỗi giao dịch phải xuất phát từ gốc của mỗi cây con tiền tố item Do đó, chúng ta có bổ đề này

Trang 29

Bổ đề 2.2 Không tính nút gốc, kích thước của một cây FP bị ràng buộc bởi tất cả sự

xuất hiện của các mục thường xuyên trong cơ sở dữ liệu, và chiều cao của cây bị giới hạn bởi số mục thường xuyên dài nhất của giao dịch trong cơ sở dữ liệu

Cơ sở khoa học Dựa trên quá trình xây dựng cây FP, với bất kỳ giao dịch T trong

DB luôn tồn tại một đường dẫn trong cây FP xuất phát từ item tiền tố của cây con tương ứng sao cho tập các nút trong đường dẫn bằng tập các mục trong T Không có mục thường xuyên nào trong các giao dịch có thể tạo ra hơn một nút trong cây, nút gốc (null) là nút duy nhất được tạo ra không phải do các mục thường xuyên Mỗi nút chứa một con trỏ nút và một bộ đếm thông tin Do đó, chúng ta có giới hạn về kích thước của cây Chiều cao của bất kỳ cây con tiền tố item nào cũng là số lượng nhiều nhất các mục thường xuyên có trong giao dịch

Bổ đề 2.2 chỉ ra một lợi ích quan trọng của cây FP: kích thước của cây được giới hạn

bởi kích thước của cơ sở dữ liệu tương ứng Mỗi giao dịch đóng góp nhiều nhất một đường dẫn cho cây FP với chiều dài bằng số lượng mục thường xuyên của giao dịch

đó Bởi vì các giao dịch chia sẻ khá nhiều mục thường xuyên nên kích thước của cây dường như nhỏ hơn rất nhiều so với cơ sở dữ liệu gốc của nó Không giống như các phương pháp kiểu Apriori sinh ra số lượng hàm mũ các ứng cử viên trong trường hợp tồi nhất, FP tree không xảy ra trường hợp đó.- FP-tree là cấu trúc cực nén để lưu

trữ thông tin phục vụ khai phá mẫu thường xuyên

Các mục trong tập mục thường xuyên được sắp xếp theo thứ tự độ hỗ trợ giảm dần: các mục xuất hiện thường xuyên hơn được xếp ở gần đỉnh của cây hơn và do đó có thể được chia sẻ nhiều hơn Một số thực nghiệm cũng đã chứng minh tỉ lệ nén cao của cấu trúc FP-tree Tuy nhiên, cũng không thể khẳng định chắc chắn rằng FP-tree luôn ở gọn trong bộ nhớ với bất kỳ cơ sở dữ liệu lớn nào

3.3 Khai phá m ẫ u thư ờ ng xuyên s ử ụ d ng cây FP

Xây dựng một cây FP nén đảm bảo rằng các bước khai phá tiếp theo có thể được thực hiện với cấu trúc dữ liệu nén hơn Tuy nhiên, điều này không tự nhiên đảm bảo một cách chắc chắn rằng việc sinh các ứng cử viên sẽ hiệu quả hơn nếu chúng ta chỉ đơn giản sử dụng cây FP để sinh và kiểm tra các mẫu ứng cử

Phần này sẽ trình bày một phương pháp khai phá hiệu quả tập đầy đủ các mẫu thường xuyên

Một số tính chất của FP tree sẽ giúp ích cho việc khai phá các mẫu thường xuyên:

Trang 30

-Tính chất 1.(-Tính chất nút liên kết) Với bất kỳ mục thường xuyên a- i, tất cả các mẫu thường xuyên chứa ai có thể thu được bằng cách men theo các liên kết nút của ai, bắt đầu từ mục ai trong header của cây FP.

Tính chất này dựa trên quá trình xây dựng cây FP

<c:1, b:1> Hai đường dẫn tiền tố này của p {<f:2, c:2, a:2, m:2>, <c:1, b:1>} tạo thành cơ sở mẫu con (subpattern base) của p hay cơ sở mẫu có điều kiện (conditional pattern base) của p (chữ điều kiện ở đây ngụ ý sự hiện diện của p) Xây dựng cây FP trên cơ sở mẫu có điều kiện này của p, gọi là cây FP có điều kiện, sẽ dẫn tới chỉ có một nhánh (c:3) Do đó, chúng ta thu được một mẫu thường xuyên nữa là (cp:3) Như vậy, chúng ta tìm được hai mẫu thường xuyên có chứa p là (p:3) và (cp:3)

Với nút m, chúng ta thu được một mẫu thường xuyên đầu tiên là (m:3) và hai đường dẫn là <f:4, c:3, a:3, m:2> và <f:4, c:3, a:3, b:1, m:1> Chú ý là p cũng xuất hiện cùng với m nhưng chúng ta không quan tâm tới p ở đây, do những gì liên quan đến p đã được thực hiện ở trên Tương tự như trên, cơ sở mẫu có điều kiện của m là {(f:2, c:2, a:2 , f:1, c:2, a:1, b:1 } Xây dựng cây FP trên cơ sở này, chúng ta thu ) ( )được cây FP điều kiện của m <f:3, c:3, a:3> là một đường dẫn mẫu thường xuyên đơn Gọi thủ tục khai phá dựa trên cây FP đệ quy mine(<f:3, c:3, a:3>|m) chúng ta sẽ thu được các mẫu thường xuyên chứa m và các mục f, c, a Diễn giải thủ tục này như sau: mine(<f:3, c:3, a:3>|m) liên quan đến ba mục (a), (c) và (f)

Đầu tiên, ta thu được một mẫu thường xuyên (am:3) và gọi thủ tục mine(<f:3, c:3>|am)

Thứ hai, ta tu được một mẫu thường xuyên (cm:3) và gọi mine(<f:3>|cm)

Trang 31

Các bước đệ quy xa hơn gọi mine(<f:3, c:3>|am) thu được (cam:3), (fam:3) và gọi mine(<f:3, >|cam) Gọi mine(<f:3, >|cam) sẽ thu được mẫu thường xuyên (fcam:3) Tương tự như vậy, gọi (<f:3>|cm) sẽ thu được mẫu (fcm:3)

Do đó, tất cả các mẫu thường xuyên có chứa m là {(m:3), (am:3), (cm:3), (fm:3), (cam:3), (fam:3), (fcam:3), (fcm:3)} Điều này chỉ ra rằng, một cây FP chỉ có một đường dẫn đơn có thể được khai phá bằng cách đưa ra tất cả sự kết hợp của các mục trong đường dẫn

Với nút b, ta thu được (b:3) và ba đường dẫn <f:4, c:3, a:3, b:1>, <f:4, b:1> và

<c:1, b:1> Vì cơ sở mẫu có điều kiện của b gồm {(f:1, c:1, a:1), (f:1), (c:1)} không sinh ra mục thường xuyên nào nên việc khai phá ở đây bị dừng lại

Với nút a, chúng ta thu được một mẫu thường xuyên (a:3) và một cơ sở mẫu

có điều kiện của a {f:3, c:3}, do đó có cây FP có điều kiện đơn đường dẫn Tổ hợp chúng lại, ta có các mẫu thường xuyên có chứa a: {(fa:3), (ca:3), (fca:3)} Như vậy,

có 4 mẫu thường xuyên chứa a là {(a:3), (fa:3), (ca:3), (fca:3)}

Với nút c, chúng ta có mẫu thường xuyên (c:4) và một cơ sở mẫu có điều kiện {(f:3)} Tập các mẫu thường xuyên liên kết với (c:3) là {(fc:3)}

Nút f cho ta một mẫu thường xuyên là (f:4) và không có cơ sở mẫu điều kiện

Bảng 3.3: Cơ sở ẫu và cây FP có điều kiện củ m a các m c

Tính đúng đắn và tính đầy đủ của quá trình xử lý trong ví dụ trên nên được hiệu chỉnh Chúng ta có một vài tính chất quan trọng liên quan đến quá trình khai phá

Tính chất 2 (Tính chất đường dẫn tiền tố) Để tính toán các mẫu thường xuyên cho

một nút ai trong một đường dẫn P thì chỉ cần tính toán đường dẫn con tiền tố của nút

ai trong P, và tần suất của mỗi nút trong đường dẫn tiền tố nên bằng giá trị đếm của nút ai

Trang 32

Dựa trên tính chất này, đường dẫn phía trước của nút ai trong một đường dẫn P có thể được sao chép và biến đổi thành một đường dẫn con tiền tố đã hiệu chỉnh số đếm bằng cách hiệu chỉnh số đếm của tất cả các nút trong đường dẫn con tiền tố bằng với

số đếm của nút ai Những đường dẫn đã biến đổi này được gọi là đường dẫn tiền tố

đã biến đổi của ai trong đường dẫn P

Chú ý rằng, tập các đường dẫn tiền tố đã biến đổi của ai tạo thành một cơ sở dữ liệu nhỏ các mẫu đồng thời xuất hiện cùng ai Cơ sở dữ liệu mẫu xuất hiện với ai được gọi là cơ sở mẫu điều kiện của ai, ký hiệu "cơ sở mẫu | ai" Chúng ta có thể tính toán tất cả các mẫu thường xuyên liên kết với ai trong cơ sở mẫu điều kiện ai này bằng cách tạo ra một cây FP nhỏ gọi là cây FP có điều kiện của ai và ký hiệu là "FP tree | -

ai" Các bước tiếp theo có thể được thực hiện trên cây FP có điều kiện nhỏ này Quá trình xây dựng cơ sở mẫu có điều kiện và cây FP có điều kiện đã được minh họa qua

ví dụ trên

Quá trình được thực hiện một cách đệ quy, và các mẫu thường xuyên có thể thu được bằng phương pháp tăng trưởng mẫu (pattern growth) dựa trên bổ đề và hệ quả sau:

Bổ đề (Tăng trưởng phân đoạn) Cho α là một mục trong DB, B là cơ sở mẫu điều

kiện của α và β là một mục trong B Khi đó, độ hỗ trợ của α∪β trong DB tương đương độ hỗ trợ của β trong B

Hệ quả (Tăng trưởng mẫu) Cho α là một mục thường xuyên trong DB, B là cơ sở

mẫu có điều kiện của α và là một mục trong B Khi đó, α∪β β là thường xuyên trong DB khi và chỉ khi là thường xuyên trong B.β

Dựa trên hệ quả này, việc khai phá có thể được thực hiện bằng cách, đầu tiên nhận diện các 1-tập mục thường xuyên, α, trong DB, xây dựng cơ sở mẫu điều kiện của chúng và sau đó khai phá 1-tập mục, , trong các cơ sở mẫu có điều kiện này.β Điều này chỉ ra rằng, tiến trình khai phá các mẫu thường xuyên có thể được xem như là khai phá các 1-tập mục thường xuyên trước và sau đó tăng trưởng mỗi tập mục đó bằng cách khai phá cơ sở mẫu có điều kiện của nó Do đó, chúng ta biến đổi thành công bài toán khai phá k-tập mục thường xuyên thành một chuỗi bài toán khai phá 1-tập mục thường xuyên thông qua một tập các cơ sở mẫu có điều kiện Cuối cùng, chúng ta có tính chất về khai phá tất cả các mẫu khi cây FP chỉ chứa một đường dẫn đơn

Bổ đề (Sinh mẫu đường dẫn cây FP đơn) Giả sử cây FP T chỉ có một đường dẫn

đơn P Tập đầy đủ các mẫu thường xuyên của T có thể được sinh ra bằng cách liệt kê

Trang 33

tất cả các tổ hợp của đường dẫn P với độ hỗ trợ là dộ hỗ trợ tối thiểu của các mục trên đường dẫn

Dựa trên các bổ đề và tính chất trên, chúng ta có thuật giải khai phá mẫu thường xuyên sử dụng cây FP

Đầu vào: Cây FP được xây dựng dựa trên thuật giảisử dụng DB và ngưỡng tối thiểu minsup

Đầu ra: Tập đầy đủ các mẫu thường xuyên

Phương pháp: Gọi thủ tục FP growth(FP tree, null)

Procedure FP-growth(Tree, α)

{

(1) if Tree chứa một đường dẫn đơn P

(2) then for each tổ hợp (ký hiệu là ) của các nút trong đường dẫn P β do

(4) else for each αitrong header của Tree do{

(5) sinh ra mẫu β α = i ∪ α với độ hỗ trợ = αi.support;

3.4 Đánh giá thực nghiệm và nghiên cứu hiệu năng

Jiawei Han và các cộng sự trong [15] tiến hành thực nghiệm, cài đặt thuật toán growth và so sánh nó với các phương pháp phát hiện tập mục thường xuyên truyền thống như Apriori Tất cả các thực nghiệm được thực hiện trên máy tính 450MHz Pentium, 128MB Ram, hệ điều hành WINNT và chương trình của họ được viết trên Visual C++6.0 Ở đây, các tác giả không so sánh trực tiếp các con số về thời gian chạy vì trên các hệ thống máy khác nhau thì điều này cũng sẽ rất khác nhau

FP-Các tác giả thực hiện trên hai tập dữ liệu Tập dữ liệu thứ nhất là T25.I10.D10K với 1K items, ký hiệu là D1 Trong tập này, kích thước giao dịch trung bình và kích thước tập mục t ường xuyên tiềm năng cực đại trung bình được thiết lập là 25 và 10 htrong khi số giao dịch trong tập dữ liệu là 10K Tập dữ liệu thứ hai, ký hiệu là D2, là T25.I20.D100K với 10K items Có một số lượng lớn tập mục thường xuyên trong cả

Trang 34

hai tập dữ liệu khi ngưỡng hỗ trợ giảm dần Có ít tập mục thường xuyên dài và một lượng lớn các tập mục thường xuyên ngắn

Hình 3.4 so sánh FP-growth và Apriori khi ngưỡng độ hỗ trợ giảm từ 3% xuống 0.1%

Khả năng của FP growth hơn hẳn Apriori Khi ngưỡng hỗ trợ giảm số lượng c- ũng như chiều dài của các tập mục thường xuyên tăng một cách đáng kể Tập các ứng cử viên mà Apriori phải kiểm soát trở nên cực lớn và so khớp mẫu với một lượng lớn ứng cử viên bằng cách tìm kiếm qua các giao dịch trở nên rất tốn kém

Hình 3.4: Thời gian thực hiện và ngưỡng hỗ ợ tr

Hình 3.5 thể hiện kết quả khi thực hiện các thuật toán với số lượng giao dịch khác nhau Cả hai thuật toán đều tăng tuyến tính với số lượng giao dịch từ 10K đến 100K khi số lượng giao dịch tăng lên thì khoảng cách giữa hai phương pháp trở nên xa hơn

Hình 3.5: Thời gian thực hin và s giao d ch ố ị

Trang 35

Chương 4: Lu t k t h p m r ng ậ ế ợ ở ộ

Chương 4 trình bày những khía cạnh nâng cao của bài toán phát hiện luật kết hợp Phần đầu, chúng tôi giới thiệu về luật kết hợp đa mức trong cơ sở dữ liệu giao dịch Phần thứ hai giới thiệu bài toán phát hiện luật kết hợp định lượng và phần còn lại giới thiệu bài toán phát hiện luật kết hợp mờ

4.1 Khai phá luật k t h ế ợ p đa m c ứ

Trong một số trường hợp, tồn tại phân cấp là-một trên các mục của cơ sở dữ liệu Luật kết hợp đa mức sử dụng các phân cấp khái niệm để tạo ra các luật kết hợp khác nhau tại các mức khác nhau Hình 4.1 chỉ ra ví dụ về phân cấp khái niệm Ở đây, đồ uống được chia thành các loại như cà phê, chè, bia và nước hoa quả Nước hoa quả lại được chia thành các loại như cam, táo, nho Cà phê lại chia thành cà phê đen và

cà phê sữa Khi sinh ra các luật kết hợp, chúng ta có thể sinh ra ở bất cứ mức nào Nếu luật được sinh ra cho các mục ở mức cao hơn thì độ hỗ trợ sẽ tăng và có khả năng độ tin cậy cũng tăng Trong một cơ sở dữ liệu giao dịch cho trước, có thể có rất nhiều loại phân cấp khái niệm khác nhau cho các mục khác nhau hoặc nhiều phân cấp khái niệm cho cùng một mục

Hình 4.1: Phân cấp khái niệm đồ ống u

4.1.1 Phát biểu bài toán

Luật kết hợp đa mức được định nghĩa tương tự như luật kết hợp thông thường Cho I

= {I1, I2,…, Im} là một tập các mục G là một đồ thị có hướng không chu trình trên các mục này Một cạnh trong G biểu diễn quan hệ là một và G biểu diễn một tập các -phân cấp khái niệm Nếu một cạnh trong G từ điểm p tới điểm c thì p được gọi là một nút cha của c và c là một nút con của p (p là tổng quát hóa của c) Chúng ta mô hình hóa phân cấp khái niệm như là một đồ thị có hướng không có chu trình (DAG) hơn là mô hình hóa bằng rừng cây để cho phép có nhiều phân cấp khái niệm

Trang 36

Chúng ta sử dụng các chữ cái thường ký hiệu cho các mục và các chữ cái hoa ký hiệu cho tập các mục (tập mục) Gọi xˆlà một tổ tiên của x và x là hậu duệ của xˆ nếu tồn tại một cạnh từ xˆ đến x Chú ý rằng, vì đồ thị là đồ thị không có chu trình nên một nút không thể là tổ tiên của chính nút đó

Gọi D là một tập các giao dịch, trong đó mỗi giao dịch T là một tập các mục,tức là T

⊆ I Giả sử một giao dịch T hỗ trợ một mục x I nếu x có trong T hoặc x là tổ tiên ∈của một mục nào đó trong T Chúng ta nói rằng một giao dịch T hỗ trợ tập X ⊆ I nếu

T hỗ trợ mọi mục trong X

Một luật kết hợp đa mức có dạng X Y, trong đó X ⇒ ⊂ I, Y I, X Y = và không ⊂ ∩ ∅

có mục nào trong Y là tổ tiên của bất cứ mục nào trong X Luật X Y trong cơ sở dữ ⇒liệu giao dịch D có độ hỗ trợ là s nếu có s% giao dịch trong D hỗ trợ X Y Luật ∪X⇒Y trong cơ sở dữ liệu giao dịch D có độ tin cậy là c nếu có c% giao dịch trong D

hỗ trợ X thì cũng hỗ trợ Y Lý do cho ý "không có mục nào trong Y là tổ tiên của bất

cứ mục nào trong X" là vì một luật "x ⇒ tổ tiên(x)" là một luật tầm thường với độ tin cậy là 100%

Bài toán đặt ra là: cho cơ sở dữ liệu giao dịch D và một tập các phân cấp khái niệm

G, phát hiện các luật có độ hỗ trợ và độ tin cậy lớn hơn ngưỡng tương ứng xác định bởi người dùng (minsup và minconf)

Ví dụ: cho hai phân cấp khái niệm như sau:

Hình 4.2: Hai phân c p khái niấ ệm

I = {Footwear, Shoes, Hiking Boots, Clothes, Outerwear, Jackets, Ski Pants, Shirts}

và G là phân cấp khái niệm như trên Cho minsup là 30% (tức là phải có 2 giao dịch)

và minconf là 60% Cơ sở dữ liệu và các tập mục thường xuyên tìm được như trong hình 4.3 dưới đây Chú ý rằng luật "Ski Pants ⇒ Hiking Boots" và "Jackets ⇒Hiking Boots" không đạt độ hỗ trợ tối thiểu, tuy nhiên luật "Outerwear ⇒ Hiking Boots" thì lại đạt

Footwear

Shirts

Ski Pants Jackets

Clothes

Trang 37

Cơ sở ữ ệ d li u D Transaction Items Bought

Hình 4.3: Ví dụ

Quan sát Gọi Pr(X) là xác suất tất cả các mục trong X có mặt trong một giao dịch Khi đó, support(X ⇒Y) = Pr(X Y) và confidence(X Y) = Pr(Y∪ ⇒ X) Nếu một tập {x, y} đạt độ hỗ trợ tối thiểu thì {x, yˆ}, {xˆ, y}, {xˆ, yˆ} cũng đạt độ hỗ trợ tối thiếu Tuy nhiên, nếu luật x ⇒ y đạt độ hỗ trợ và độ tin cậy tối thiểu thì chỉ khẳng định được luật x ⇒ yˆđạt cả độ hỗ trợ tối thiểu và độ tin cậy tối thiểu, trong khi các luật khác như xˆ⇒ y, xˆ⇒yˆ đạt độ hỗ trợ tối thiểu nhưng chưa chắc đã đạt độ tin cậy tối thiểu

Độ hỗ trợ của một mục trong một phân cấp khái niệm không bằng tổng các độ hỗ trợ của các nút con của nó bởi vì rất có thể một số nút con cùng xuất hiện trong một giao dịch Do đó, chúng ta không thể suy trực tiếp ra các luật về các mục ở mức cao hơn của phân cấp khái niệm từ các luật ở nút lá

a Các luật thú vị

Thế nào là luật có ích hay luật thú vị? Các nghiên cứu trước đây thường định lượng tính có ích hay tính thú vị của một luật dựa trên độ hỗ trợ của luật hơn là dựa trên độ

Trang 38

hỗ trợ của phần đầu luật và thân luật Cũng có ý kiến đưa ra rằng một luật X ⇒Y là không thú vị nếu độ hỗ trợ của nó xấp xỉ support(X) x support(Y) Tuy nhiên, theo thực nghiệm trên tập dữ liệu thực thì 1% luật được tìm thấy là dư thừa Trong phần này, chúng ta sử dụng phân cấp khái niệm để tạo ra một thước đo độ thú vị mới mà

có thể loại bỏ được từ 40% đến 60% luật dư thừa

Chúng ta xét luật sau:

Milk ⇒ Cereal (độ ỗ ợ 8% và độ h tr tin c y 70%) ậ

Nếu "Milk" là nút cha của "Skim Milk" và khoảng ¼ giao dịch của "Milk" là "Skim Milk", chúng ta hi vọng luật:

Skim Milk ⇒ Cereal

sẽ đạt độ hỗ trợ 2% và độ tin cậy 70%

Nếu thực sự độ hỗ trợ và độ tin cậy của luật "Skim Milk ⇒ Cereal " là khoảng 2%

và 70% thì luật có thể được xem là dư thừa vì nó không truyền đạt bất cứ thông tin nào hơn và ít tổng quát hơn luật trên Chúng ta nắm bắt khái niệm "thú vị" ở đây nghĩa là tìm các luật mà độ hỗ trợ lớn hơn R lần giá trị mong đợi hoặc độ tin cậy lớn hơn R lần giá trị mong đợi với hằng số R xác định bởi người dùng

Gọi Zˆlà tổ tiên của Z (trong đó Zˆ và Z đều là tập con của I) nếu chúng ta có thể nhận được Zˆ từ Z bằng cách thay thế một hoặc nhiều mục trong Z với tổ tiên của chúng, Zˆ và Z có cùng số mục Chúng ta gọi các luật Xˆ⇒Yˆ, Xˆ⇒Y, X ⇒Yˆlà các

tổ tiên của luật X Y Cho một tập các luật, chúng ta gọi ⇒ Xˆ⇒Yˆlà tổ tiên gần nhất của X Y nếu không tồn tại luật X'⇒ ⇒Y' sao cho X'⇒Y' là tổ tiên của X⇒Y và

Xˆ⇒Yˆlại là tổ tiên của X'⇒Y'

Định nghĩa tương tự cho X⇒YˆvàXˆ⇒Y

Xét luật X⇒Y và cho Z=X Y Độ hỗ trợ của Z sẽ bằng độ hỗ trợ của luật X⇒Y ∪Gọi Ezˆ[Pr(Z)]là giá trị mong đợi của Pr(Z) cho bởi Pr(Zˆ), trong đó Zˆ là tổ tiên của

Z Cho Z={z1, z2,…,zn}, Zˆ={ˆz1,…, zˆj, zj+1,…, zn} với 1 ≤ j n, ≤ zˆjlà tổ tiên của zj Khi đó, chúng ta định nghĩa giá trị mong đợi của Pr(Z) cho bởi tập mục Zˆnhư sau:

)Pr(

)ˆPr(

)Pr(

)ˆPr(

)Pr(

zZ

Cho Y={y1,…,yn} và Yˆ={ ˆy1,…, yˆj, yj+1,…,yn} với 1 ≤ j n, ≤ yˆjlà tổ tiên của yj Khi

đó chúng ta định nghĩa:

)

|ˆPr(

)ˆPr(

)Pr(

)ˆPr(

)Pr(

)]

|[Pr(

1

1 ˆ

y

yy

yX

YE

j

j Y

Chú ý rằng, E [Pr(Y|X)]=Pr(Y|X)

Trang 39

Chúng ta gọi luật X⇒Y là R-thú vị đối với một tổ tiênXˆ⇒Yˆnếu độ hỗ trợ của luật X⇒Y bằng R lần giá trị mong đợi (độ hỗ trợ/độ tin cậy) dựa trên Xˆ⇒Yˆ

Định nghĩa luật thú vị

Cho một tập luật S và độ thú vị tối thiểu R, một luật X⇒Y là thú vị trong S nếu nó không có tổ tiên nào hoặc nó là R thú vị đối với các tổ tiên gần nhất của nó trong các -

tổ tiên thú vị của nó Chúng ta nói rằng một luật X⇒Y là thú vị bộ phận trong S nếu

nó không có tổ tiên hoặc nó là R thú vị đối với ít nhất một tổ tiên gần nhất giữa các

-tổ tiên thú vị của nó Quan sát một ví dụ sau để giải thích lý do tại sao lại chỉ xem xét các tổ tiên gần nhất giữa tất cả các tổ tiên thú vị

Bảng bên phải thể hiện độ hỗ trợ cho các mục trong phần đầu luật Giả sử phân cấp khái niệm của chúng ta giống như ví dụ trên Luật 1 không có tổ tiên, do đó nó là thú

vị Độ hỗ trợ cho luật 2 bằng 2 lần độ hỗ trợ mong đợi dựa trên luật 1 và do đó, nó là thú vị Độ hỗ trợ cho luật 3 bằng chính xác độ hỗ trợ mong đợi dựa trên luật 2, bằng

2 lần độ hỗ trợ dựa trên luật 1 Chúng ta không muốn xem luật 3 là thú vị vì độ hỗ trợ của nó có thể được dự đoán dựa trên luật 2, thậm chí độ hỗ trợ của nó hơn cả mong đợi nếu chúng ta bỏ qua luật 2 và nhìn trực tiếp vào luật 1

b Phát biểu bài toán

Cho một tập các giao dịch D và một độ thú vị tối thiểu xác định bởi người dùng gọi

là min-interest, bài toán khai phá luật kết hợp với phân cấp khái niệm là đi tìm tất cả các luật kết hợp thú vị có độ hỗ trợ và độ tin cậy lớn hơn hoặc bằng độ hỗ trợ tối thiểu (minsup) và độ tin cậy tối (minconf) thiểu xác định bởi người dùng

Trong một số ví dụ, có thể chúng ta muốn tìm các luật thú vị bộ phận Chú ý rằng, nếu min-interest = 0 thì tất cả các luật tìm được đều thú vị

4.1 .2 Thuật toán

Vấn đề phát hiện luật kết hợp đa mức có thể chia thành 3 phần:

(1) Tìm tất cả các tập mục có độ hỗ trợ lớn hơn hoặc bằng độ hỗ trợ tối thiểu xác định bởi người dùng Những tập mục này gọi là tập mục thường xuyên

(2) Sử dụng các tâp mục thường xuyên để sinh ra các luật mong muốn nếu độ tin cậy của nó lớn hơn hoặc bằng độ tin cậy tối thiểu

Trang 40

(3) Loại bỏ các luật không thú vị

Ở đây, chúng ta sẽ xem xét các thuật giải phát hiện các tập mục thường xuyên mà các mục có thể ở bất kỳ mức nào của phân cấp khái niệm Các thuật giải kinh điển có thể sinh ra các luật từ tập mục thường xuyên này

a Thuậ t toán cơ b n ả

Xét bài toán quyết định liệu một giao dịch T có hỗ trợ tập mục X Công việc chỉ đơn thuần là kiểm tra xem với mỗi mục x X thì x hoặc con cháu của x có mặt trong ∈giao dịch không Nhiệm vụ trở nên đơn giản hơn nếu đầu tiên chúng ta thêm tất cả các tổ tiên của từng mục trong T vào T, giao dịch này gọi là giao dịch mở rộng T' T

hỗ trợ X khi và chỉ khi T' là siêu tập của X Hình 4.5 thể hiện thuật toán:

Hình 4.5:Thuật toán cơ bản

Bước đầu tiên của thuật toán là đếm sự xuất hiện của mục để tìm ra các 1 tập mục thường xuyên Chú ý rằng, các mục trong tập mục có thể là bất kỳ mức nào trong phân cấp khái niệm Ở các bước tiếp theo, gọi là bước k, bao gồm 2 pha Đầu tiên, các tập mục thường xuyên Lk-1có được trong bước (k 1) được sử dụng để sinh ra các -tập mục ứng cử Ck bằng cách sử dụng hàm sinh ứng cử viên apriori Tiếp theo, cơ sở

-dữ liệu được quét và độ hỗ trợ của các ứng cử viên trong Ck được đếm Để đếm nhanh, chúng ta cần quyết định một cách hiệu quả các ứng cử viên trong Ck có trong giao dịch t không Chúng ta sử dụng cấu trúc hash tree để làm việc này

b Thuật toán Cumulate

Thuật toán Cumulate chỉnh sửa một số chỗ trong thuật toán cơ bản để làm cho nó tốt hơn

begin

ng m c trong t vào t, lo s trùng l p Thêm tất cả các tổ tiên của từ ụ ại bỏ ự ặ

ng viên trong CTăng bộ đếm của tất cả các ứ kmà có mặt trong t end

Lk:=Tất cả ứ ng viên trong Ck đạt độ ỗ trợ ối thiể h t u

k:=k+1;

end

Câu trả ờ l i :=kL k

Ngày đăng: 22/01/2024, 17:01

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

TÀI LIỆU LIÊN QUAN