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

Tìm hiểu và cài đặt thuật toán phát sinh tập phổ biến bằng giải thuật FP-Growth

30 1,1K 5

Đ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 30
Dung lượng 803,67 KB

Nội dung

Trong hầu hết các bài toán tìm luật kết hợp thì công đoạn phát sinh tập phổ biến là làm hao tốn nhiều tài nguyên của máy tính nhất.. Chương I: Cơ Sở Lý Thuyết I.1 Giới thiệu: Khai thác t

Trang 1

MỤC LỤC



LỜI NHẬN XÉT

Trang 2

LỜI MỞ ĐẦU



Môn học: “Khai Phá Tri Thức” đã mở rộng hơn việc tìm hiểu, khám phá các tri thức tiềm ẩn trong các cơ sở dữ liệu (CSDL) khổng lồ và phân tích khai thác hiệu quả nguồn thông tin từ các CSDL đó, hỗ trợ cần thiết cho tiến trình trích lọc, sản sinh những tri thức hữu ích mang tính khái quát, tính quy luật cho việc ra quyết định thông minh nhất giúp nhà sản xuất và kinh doanh giảm thiểu chi phí và gia tăng lợi nhuận trong tương lai

Trong tiểu luận này, tôi xin trình bày khái quát một trong các kỹ thuật khai phá dữ liệu là: Tìm ra quy luật giữa các thông tin để biến chúng thành những tri thức, một trong

Trang 3

những cách tìm ra các quy luật này là kỹ thuật “Khai thác tập phổ biến và luật kết

hợp” Có rất nhiều thuật toán tìm luật kết hợp như Apriori, Apriori cải tiến, sử dụng

hash… Các thuật toán này đóng góp vai trò rất quan trọng cho quá trình tìm kiếm luậtkết hợp

Trong hầu hết các bài toán tìm luật kết hợp thì công đoạn phát sinh tập phổ biến là

làm hao tốn nhiều tài nguyên của máy tính nhất Do đó để cải tiến bài toán theo cách tốthơn, trước tiên chúng ra hãy đặt vấn đề làm giảm chi phí cho công đoạn tìm tập phổ biếnnày Dùng các thuật toán liên quan đến Tree thường cho kết quả rất tốt, vì bản thân treenói lên phương pháp thực hiện phân hoạch thông tin, chia để trị

Ở đây, để minh họa cho kỹ thuật khai phá tập phổ biến và luật kết hợp, tôi xin trình

bày “TÌM HIỂU VÀ CÀI ĐẶT THUẬT TOÁN PHÁT SINH TẬP PHỔ BIẾN

BẰNG GIẢI THUẬT FP-GROWTH””.

Tôi chân thành cảm ơn Thầy PGS.TS.Đỗ Phúc đã truyền đạt những kiến thức quýbáu về khái niệm, ý nghĩa, các tài liệu và ứng dụng của môn học này, mở ra nhiều hướngnghiên cứu chuyên sâu vào từng lĩnh vực ứng dụng đặc thù với những đặc trưng riêng./

Chương I: Cơ Sở Lý Thuyết

I.1 Giới thiệu:

Khai thác tập phổ biến và luật kết hợp là tiến trình khám phá các tập giá trị thuộc tínhxuất hiện phổ biến trong các đối tượng dữ liệu.Từ tập phổ biến có thể tạo ra các luật kếthợp giữa các giá trị thuộc tính trong tập các đối tượng Luật kết hợp là tri thức quantrọng nhất tiềm ẩn trong CSDL

Một luật kết hợp X -> Y phản ánh sự xuất hiện của tập X dẫn đến sự xuất hiện đồng thờitập Y Luật kết hợp giúp các nhà hoạch định hiểu rõ xu hướng thị trường, xu thế bánhàng, tâm lý khách hàng… từ đó đưa ra các chiến lược bố trí mặt hàng, kinh doanh, tiếpthị, tồn kho…phù hợp

Ví dụ các luật kết hợp tiêu biểu như sau:

Trang 4

KH mu

a tôm cầu tre

KH mua

cả 2

KH mua Beer 333

- Có 78% khách hàng mua sữa hộp Vinamilk thì mua tra Lipton

- Có 67% khách hàng mua bia 333 thì mua bánh tôm Cầu Tre

I.2 Các khái niệm cơ bản:

I.2.1 Khái niệm:

Cho I = {i1, i2, i3, …, in} là tập hợp các trường gọi là items

D: tập các giao tác có các giao tác Ti mà Ti ⊆ I

T chứa X nếu X ⊆ T (X là tập có các phần tử ⊆ I)

Mỗi giao tác Ti có chỉ danh là TID

Luật kết hợp là một mối liên hệ điều kiện giữa hai tập các hạng mục dữ liệu X và Ytheo dạng sau: Nếu X thì Y, và ký hiệu là X ⇒ Y Chúng ta có luật kết hợp X ⇒ Y, nếu

X ⊂ I, Y ⊂ I và X ∩ Y = ∅

Thước đo giá trị của một luật kết hợp là độ tác động và độ tin cậy (support là s và

confidence là c).

I.2.2 Độ tác động (Support):

Thể hiện phạm vi ảnh hưởng của luật trên tòan bộ CSDL

Luật X=>Y có độ support là s nếu s% số giao tác trong D có chứa X∪Y Hay là :

Support(X=>Y) = Support(X Y) = Card(X Y) / Card(D)% = s%

Với :

Card(X ∪ Y) tập các giao tác trên CSDL có chứa cả vế trái lẫn vế phải của luật

Card(D) : Tập tất cả các dòng trên CSDL

Trang 5

I.2.3 Độ tin cậy (Confidence):

Thể hiện độ chính xác, tính đúng đắn, hay khả năng tin cậy của luật trong phạm vi ảnhhưởng của luật (xác định bởi độ đo support)

Luật X=>Y có độ tin cậy là c (confidence) nếu có c% số giao tác trong D chứa X ∪ Y sovới tổng số giao tác có trong D chỉ chứa X Khi đó ta có :

Confidence(X=>Y) = Card(X Y) / Card(X)% = c%

Với :

Card(X ∪ Y) tập các giao tác trên CSDL có chứa cả vế trái lẫn vế phải của luật

Card(X) : Tổng số dòng chứa vế trái của luật trên CSDL

Tập các hạng mục dữ liệu gọi là ItemSet có độ support lớn hơn hay bằng giá trị ngưỡngnhỏ nhất (gọi là minsupp) được gọi là Large ItemSet Các ItemSet còn lại được gọi làcác Small ItemSet

Với mỗi một Large ItemSet - L, và A là một tập con khác rỗng của L, nếu tỉ lệ phầntrăm giữa support của L so với support của A lớn hơn hay bằng độ tin cậy nhỏ nhất (gọi

là minconf) thì ta có luật kết hợp A ⇒ (L\A)

=> Tóm lại tìm luật kết hợp là đi tìm những luật X=>Y trong CDSL sao cho luật thỏanhững giới hạn tối thiểu support và confidence cho trước

II.2.4 Ví dụ: (minh họa 2 đại lượng minsupp và minconf)

Trang 6

Tìm ra được 2 luật kết hợp thỏa mãn minsupp và minconf

(1): Age (30 39) and (Married: Yes) ⇒ NumCars = 2 (s = 40%, c = 100%)

Để rút ra được luật trong CSDL cần tiến hành 5 bước sau:

B1: Xác định khoảng phân chia của mỗi thuộc tính khi cần phân tích

B2: Kết hợp mỗi khoảng thuộc tính đã phân chia ở bước B1 với một số nguyên để

thực hiện các thuật toán được nhanh, dễ dàng

B3: So sánh các support của các item với minsupp, tạo tập Largeitemset

B4: ABCD và AB là Large itemset ta rút ra được luật

AB ⇒ CD khi support(ABCD)/support(AB) >= minconf

B5: Xác định chọn những luật phù hợp

II.3.2 Vậy có thể nói thuật toán tìm tập phổ biến được xây dựng 2 bước sau:

Bước 1 : Liệt kê tất cả các tập con P của I (tập tất cả các thuộc tính của cơ sở dữ

liệu) sao cho P÷ > 1

Bước 2 : Với mỗi tập con P, liệt kê tất cả các tập con X khác trống của P

Luật R được hình thành bởi :

R : X P \ X

Chọn các luật R thỏa ngưỡng minsup và minconf

Các tập thuộc tính P thỏa điều kiện support(P) > minsup được gọi là các large item set

Trang 7

II.3.3 Ví dụ: Bài toán tìm luật kết hợp

Cho CSDL bán hàng của siêu thị như sau:

- Gọi I (viết tắt của Items) là tập tất cả các thuộc tính ( tập gồm tất cả "mặt hàng" ) có

thể có trong cơ sở dữ liệu (trong cơ sở dữ liệu trên thì I = {1,2,3,4,5})

- Tính giá trị 2 độ đo là support (độ hỗ trợ) và confidence (độ đáng tin cậy) để thẩm địnhgiá trị của một luật kết hợp

* Chẳng hạn luật {1, 2 } → {3} trên cơ sở dữ liệu đã cho có độ support là 25% vì chỉ có

1 dòng (300) trên tổng số 4 dòng có chứa đủ cả {1,2,3} Còn luật {2} → {5} thì có độsupport đến 75% vì có 3 dòng (200,300,400) trên 4 dòng chứa đủ cả {2, 5}

* Chẳng hạn luật {1,2} → {3} có độ confidence là 100% vì có 1 dòng (300) chứa

{1,2,3} trên tổng số 1 dòng (300) chứa {1,2} Trong khi đó, luật {3} → {5} có độ

confidence là 66,67% vì có 2 dòng chứa {3,5} trên tổng số 3 dòng chứa {3}.

- Ta đã biết cách tính support và confidence của một luật có sẵn Vấn đề tiếp theo là liệt

kê tất cả các luật có thể có từ tập hợp I (tập tất cả các thuộc tính của cơ sở dữ liệu) Quá

trình liệt kê tất cả các luật được diễn ra trong 2 bước

Trang 8

Chương II: Cải tiến thuật toán tìm tập phổ biến

II.1 Nguyên lý chính:

Để tăng tốc thuật toán, ta cần phải tìm cách giải quyết hai "điểm nóng" (các điểm tiêutốn nhiều thời gian thi hành của máy tính) trong thuật toán ở trên là số lần lặp (2n) vàthời gian duyệt cơ sở dữ liệu để tính support và confidence

- Loại bỏ nhanh các tập thuộc tính có support < minsup theo quy tắc nhánh cận

- Tính support dựa vào thông tin từ những lần tính trước

- Xây dựng cơ sở dữ liệu tương đương nhưng có tốc độ truy xuất nhanh hơn

II.2 Thuật toán Apriori:

II.2.1Trình bày thuật toán:

Trong ý tưởng thuật toán tìm tập phổ biến trên, có thể thấy rằng ở bước 2 là tốn kémnhiều chi phí nhất trong những cơ sở dữ liệu lớn trong thực tế Thuật toán Apriori vàmột số cải tiến tốc độ cũng có thể nói góp phần giảm chi phí đáng kể khi các giao dịch

có nhiều các mẫu (giá trị) thường xuyên và ngưỡng minsupport thấp

Trang 9

Dưới đây là phần trình bày thuật toán tìm Tập Phổ Biến tổng quát cho trong thuật toánApriori

Bước 3:

Tiếp tục cho bước k, đã có trước tập ứng viên Ck Duyệt qua tất cả các giao tác (trong CSDL) để cập nhật giá trị support cho các phần tử trong Ck, đồng thời so sánh với minsupport để chọn ra tập phổ biến Fk

Trang 10

2 Bia, bánh mì

3 Bia, nước ngọt, khăn giấy, sữa

4 Bia, bánh mì, khăn giấy, sữa

5 Nước ngọt, khăn giấy, sữa

F1 = {“bánh mì”, “bia”, “nước ngọt”, “sữa”, “khăn giấy”}

C2 = { {“bánh mì”,“bia”}, {“bánh mì”,“nước ngọt”}, {“bánh mì” , “sữa”}, {“bánhmì”,“khăn giấy”}, {“bia”,“nuớc ngọt”}, {“bia”,”sữa”}, {“bia”,”khăn giấy”}, {“nuớcngọt”,”sữa”}, {“nuớc ngọt”,”khăn giấy”}, {“sữa”,”khăn giấy”} }

F2 = {{“nước ngọt”,”sữa”}, {“sữa”,”khăn giấy”}}

C3 = {{“nuớc ngọt”,”sữa”,”khăn giấy”}}

* Tìm F3 từ C3:

sp({“nuớc ngọt”,”sữa”,”khăn giấy”}) = 2/5 (loại)

Trang 11

conf(R2) = sp(R1)/sp(sữa) = 3/5 : 4/5 = ¾ (75%) (loại)

=> Vậy tìm được 1 luật: “nuớc ngọt” → “sữa”

với minsupp = 50% minconf = 100%

Khách hàng mua “nước ngọt” thì cũng sẽ mua “sữa”

* Các thuật toán cải tiến như AprioriTID cũng dựa trên các bước cơ bản trên, nhưng đểhạn chế truy xuất vào CSDL và tăng tốc độ, thuật toán này đã thực hiện công việc: tạimỗi bước k, ghi lại danh sách các ItemSet cho tất cả các giao tác còn đang xét Giá trịghi này gọi là Set-of-ItemSets Nhằm mục đích sử dụng cho tính toán giá trị support ởbước sau Ngoài ra, có thể kết hợp bộ nhớ cache sử dụng dạng bit Array để lưu trữ lại tất

cả các giao tác

II.3 Thuật toán tìm tập phổ biến FP-Growth:

Trong thuật toán Apriori cũng còn giới hạn ở bước tìm tập phổ biến là tốn kém rất nhiềuchi phí và nặng nề nhất Do đó phải có một cách tổ chức lại cấu trúc của các giá trị( hạng mục – item) và các giao tác (transactions) để tìm các giá trị support đó một cáchtrực tiếp từ cấu trúc mà không cần phải truy xuất vào CSDL

Một trong những cấu trúc tổ chức thực hiện để giải quyết vấn đề trên là cấu trúcFrequent Pattern Tree (FP-Tree)

Trang 12

II.3.1 Thuật toán FP-Tree:

II.3.1.1 Khái niệm:

Cấu trúc FP-Tree được lưu trữ dựa trên các khái niệm sau:

- Nút gốc có nhãn “null”

- Mỗi nút còn lại chứa các thông tin: Item-name, Count, Node-link

o Item-name: Tên của phần tử đại diện cho nút

o Count: Số giao tác chứa mẫu bao gồm các item duyệt từ nút gốc đến nút đang xét

o Node-link: Chỉ đến nút kế tiếp trong cây hay chỉ đến null nếu nút đang xét là nút

- Bảng Header có số dòng bằng số item Mỗi dòng chứa 3 thuộc tính: name, count, node-link

item-o Item-citem-ount: Tổng số biến citem-ount của tất cả các nút chứa item đó

o Node-link: Chỉ đến nút sau cùng được tạo ra để chứa item trong cây

II.3.1.3 Bổ sung phần tử vào tree dựa trên nguyên tắc:

- Mỗi lần bổ sung là một tập các phần tử được sắp xếp theo thứ tự ưu tiên trong mỗi giaotác (transaction) – thứ tự ưu tiên này được quy định lần đầu tiên trong tập phần tử trongF1 có support sắp xếp giảm dần

- Với một lần bổ sung, duyệt theo thứ tự các phần tử, nếu phần tử đang xét đã tồn tạinode trong tree thì lần theo node đó, ngược lại thì bổ sung node con ngay sau node củaphần tử trước đó

II.3.1.4 Các bước xây dựng FP-Tree:

Buớc 1: Duyệt CSDL lần thứ nhất, lấy ra tập F1 các phần tử phổ biến và độ support của

chúng Sắp theo thứ tự giảm dần độ support các phần tử trong tập F, ta được tập F1 Bỏqua các phần tử không thường xuyên

Buớc 2: Tạo một nút gốc cho cây T và gán nhãn là Null Duyệt CSDL lần thứ hai, với

mỗi giao tác trong CSDL, thực hiện hai việc sau:

Trang 13

- Chọn các phần tử phổ biến trong mỗi giao tác sắp xếp support giảm dần theo thứ tựtrong tập F1 Ký hiệu danh sách các phần tử đã sắp xếp là [p|P], trong đó p là phần tửđầu tiên của danh sách, P là các phần tử còn lại.

- Gọi hàm Insert_tree([p|P],T) để đưa các phần tử trong danh sách vào cây T.

II.3.1.5 Xét ví dụ tạo FP-Tree dưới đây

Lần duyệt thứ nhất: Tìm các 1-frequent itemset và sắp xếp chúng theo danh sách với

trật tự giảm dần theo tần số xuất hiện, loại bỏ các item nhỏ hơn ngưỡng min_sup = 3

TID Items Bought Ordered Frequent Items

Trang 14

2.2 Chèn giao dịch đầu tiên: TID =1 (f, c, a, m, p)

2.3 Chèn giao dịch thứ 2, TID =2 với P: (f, c, a, b, m) và T như sau:

Thực hiện Insert_tree([p|P],T): Nếu T đã có cây mà nơi nhãn = p thì tăng nhãn ,

lên 1 Nếu khác nhãn với p tạo nút mới N với n.count = 1

Root

Trang 15

P: (c, a, b, m) T:

Trang 16

P: (b, m) T:

Root f:2

Trang 17

P: () T:

2.4 Sau khi chèn giao dịch thứ 3, TID = 3 với P: (f, b) và T như sau:

2.5 Sau khi chèn giao dịch thứ 4, TID = 4 với P: (f, b, p) và T như sau (FP-Tree):

Trang 18

2.6 Sau khi chèn giao dịch thứ 5, TID = 5 với P: (f, c, a, m, p) và T như sau (FP-Tree):

II.3.1.6 Thuật toán xây dựng FP-Tree

 Xây dựng cây FP-Tree từ CSDL giao tác

 Input:

- CSDL giao tác D

Trang 19

2 Tạo nút gốc R và gán nhãn “null”

Tạo bảng Header có |F| dòng và đặt tất cả các node –link chỉ đến null

3 For each giao tác T D { // Duyệt D lần 2

Chọn các item phổ biến của T đưa vào P;

Sắp các item trong P theo trật tự F1;

Call Insert_Tree(P, R); }

Procedure Insert_Tree(P, R)

{

1 Đặt P=[p|P-p] , với p là phần tử đầu tiên và P-p là phần còn lại của danh sách

2 if R có một con N sao cho N.item-name = p then

Trang 20

II.3.2 Thuật toán FP-Growth (Dựa vào tính chất của FP-Tree):

II.3.2.1 Tính chất 1: (Node-link property)

Với mỗi phần tử phổ biến ai, tất cả các tập phổ biến có chứa phần tử này có thể tìmđược bằng cách dò theo các nút liên kết bắt đầu từ ai Tính chất này có cơ sở trực tiếp từcách xây dựng FP-tree Nó cho phép dễ dàng tìm ra tất cả các tập phổ biến có chứa aibằng cách duyệt FP-tree một lần theo các nút liên kết với ai

Ví dụ: Tính chất Node-link property khám phá các tập phổ biến dựa trên FP-tree theo

ví dụ mục II.3.1.5 :

Frequent-item Header Table

Item

f:4c:4a:3b:3m:3p:3

Trang 21

- Với nút p, chúng ta thu được mẫu phổ biến (p:3) và hai đường đi trên FP-tree : (f:4;c:3; a:3; m:2; p:2) và (c:1; b:1; p:1)

Đường đi thứ nhất chỉ ra rằng chuỗi "(f; c; a; m; p)" xuất hiện hai lần trong CSDL.Chú ý là mặc dù chuỗi (f; c; a ) xuất hiện ba lần và (f) xuất hiện bốn lần trong CSDL,nhưng chúng chỉ xuất hiện hai lần cùng với p, vì thế số đếm của chuỗi trước p là f:2;c:2; a:2; m:2

Tương tự, đường đi thứ hai chỉ ra rằng chuỗi "(c; b; p)" xuất hiện một lần trongcác giao tác của CSDL huặc chuỗi trước p là c:1; b:1 Cả hai chuỗi truớc p , "{(f:2; c:2;a:2;m:2), (c:1; b:1)}" , tạo thành một "cơ sở điều kiện của p" Xây dựng một FP-tree dựatrên cơ sở điều kiện của p ta có một FP-tree (gọi là cây điều kiện FP của p) chỉ có mộtnhánh là c:3 do đó chỉ tìm được một tập phổ biến là cp:3 Sự tìm kiếm các tập phổ biến

có chứa p chấm dứt

Trang 22

nghĩa là gọi mine(<f:3; c:3;a:3>|m)

Hình dưói đây cho thấy "mine(<f:3; c:3;a:3>|m)" có liên quan đến việc tìm ra ba mẫu(a), (c), (f) theo thứ tự

Cơ sở điều kiện của "m": Cơ sở điều kiện của "am:3":

Trang 23

Cơ sở điều kiện của "cm:3": (f:3) Cơ sở điều kiện của "cam:3": (f:3)

Đầu tiên chúng ta nhận được tập phổ biến (am:3), và gọi "mine(<f:3; c:3>|am)" chúng ta

có tập phổ biến (cm:3), kế đến gọi "mine(<f:3|>cm)" chúng ta có (fm:3)

Gọi đệ qui sâu hơn nữa với "mine(<f:3; c:3>|am)", chúng ta thu đuợc các tập phổ biến(cam:3), (fam:3), sau đó gọi "mine(<f:3>|cam)" chúng ta đuợc tập dài nhất (fcam:3).Tương tự, gọi "mine(<f:3>|cm" chúng ta đuợc (fcm:3)

=> Do đó, tất cả các tập phổ biến liên quan đến 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 đường đi đơn trên FP-tree

có thể xuất ra tất cả các sự kết hợp của các nút trong đường đi

* Bảng kết quả của tất cả các Item

item Conditional pattern base Conditional FP-tree

Cây điều kiện FP của "m" Cây điều kiện FP của "am"

Cây điều kiện FP của "cm" Cây điều kiện FP của "cam"

Ngày đăng: 09/04/2015, 22:52

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

TÀI LIỆU LIÊN QUAN

w