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 SỬ DỤNG FPGROWTH

23 1,8K 16

Đ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 23
Dung lượng 1,81 MB

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.. Trong phạm vi một bài tiểu luận, em chỉ tập trung chủ

Trang 1

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN

BÁO CÁO THU HOẠCH

MÔN KHAI PHÁ DỮ LIỆU VÀ KHO DỮ LIỆU

Trang 2

TÌM HIỂU VÀ CÀI ĐẶT THUẬT TOÁN PHÁT SINH TẬP PHỔ BIẾN SỬ DỤNG FP-GROWTH

Trang 3

GIỚI THIỆU



Khai khoáng dữ liệu (Data mining) thực hiện chất lọc và tìm ra trong tập muônvàng thông tin trong cơ sở dữ liệu để tìm ra những tri thức đóng góp vai trò quangtrọng cho việc phân tích và 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 Một trongnhững vấn đề quang trọng trong data mining 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 những cách tìm ra các quy luật

này là tìm luật kết hợp – association rules 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 vaitrò rất quang trọng cho quá trình tìm kiếm luật kế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ốt hơn, trước tiênchúng ra hãy đặt vấn đề làm giảm chi phí cho công đoạn tìm tập phổ biến này

Trong bài thu hoạch này chúng ta sẽ “TÌM HIỂU VÀ CÀI ĐẶT THUẬT

TOÁN PHÁT SINH TẬP PHỔ BIẾN SỬ DỤNG FP-GROWTH” Có thể nhận

xét rằng hầu hết các thuật toán liên quan đến Tree thường cho kết quả rất tuyệtvời, bởi vì bản thân tree nói lên phương pháp thực hiện khác thường so với cácphương pháp thông thường, đó là phân hoạch thông tin, chia để trị

Em rất chân thành cám ơn thầy Đỗ Phúc, dạy môn học này đã cho em biếtthêm các kiến thức về khái niệm, ý nghĩa, các tài liệu và ứng dụng của môn họcnày

Trong phạm vi một bài tiểu luận, em chỉ tập trung chủ yếu vào giải thuật Growth dựa trên Fp-Tree để tìm tập phổ biến chứ không tìm hiểu toàn bộ bài toánluật kết hợp

Fp-Tất cả các source codes download tại địa chỉ

http://code.google.com/p/cdomaster/downloads/list

Ngày 14 tháng 09 năm 2011

Đỗ Văn Cang

Trang 4

Mục Lục

GIỚI THIỆU 3

Nội Dung 5

I/ Luật kết hợp – asscociation rules 5

1.1/ Một số khái niệm: 5

1.2/ Bài toán tổng quát 7

1.3/ Thuật toán Apriori 7

II/Thuật toán tìm tập phổ biến FP-Growth 9

2.1/ FP-Tree 9

2.2/ Thuật toán FP-Growth 15

III/ Cài đặt thử nghiệm thuật toán 19

Kết luận 22

Trang 5

Nội Dung



I/ Luật kết hợp – asscociation rules

Giai đọan khám phá trong tiến trình KDD là giai đọan khó khăn và quantrọng nhất Data mining không là kỹ thuật đơn giản, với ý tưởng có nhiều tri thứctiềm ẩn bên trong dữ liệu hơn là thể hiện ra bên ngoài Với bất kỳ ứng dụng kỹthuật nào vào việc phát hiện ra tiềm ẩn thì kỹ thuật đó có ích, do đó các kỹ thuậtdata mining là một nhóm hỗn hợp Có một số bài toán điển hình vế data miningsau :

• Bài toán khám phá luật kết hợp (association rules)

• Bài toán phân lọai(classification) dữ liệu

• Bài toán gom nhóm(clustering) dữ liệu

• Bài toán lập mô hình

• Bài toán dự báo

Trong đó luật kết hợp là tri thức quan trọng nhất tiềm ẩn trong CSDL

Luật kết hợp là một trong những kỹ thuật được nghiên cứu tốt nhất cũngnhư quan trọng nhất của khai mỏ dữ liệu, nó được giới thiệu lần đầu tiên vào năm

1993 Mục đích của luật kết hợp là rút ra những mối liên quan thú vị, những tậpmẫu phỏ biến, những cấu trúc kết hợp hay cấu trúc ngẫu nhiên giữa những tập hợpItem trong các transaction database hoặc trong những kho dữ liệu Ví dụ : Vikhuẩn Staphylococcus aureus có trong chất dịch khí quản của bệnh nhân sẽ khángthuốc (lờn thuốc) Oxacillin,Clindamycin,Erythromycin ở tháng thứ 4 Với kết luậnnày sẽ giúp cho viêc kiểm soát nhiễm trùng bệnh viện tốt hơn

1.1/ Một số khái niệm:

• D là tập giao tác, ở đó mỗi giao tác Ti là tập các item Ti ⊆ I

• Ta gọi 1 giao tác T chứa X nếu X ⊆ T (Với X ⊆ I)

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

• Luật kết hợp là một mối quan hệ điều kiện giữa hai tập các hạng mục dữliệu X và Y theo 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 =∅

Có hai đơn vị đo cơ bản quan trọng cho luật kết hợp là : support là s vàconfidence là c

• Độ 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à :

Trang 6

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

 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ỏa những giới hạn tối thiểu support và confidence cho trước

Trang 7

1.2/ Bài toán tổng quát

Bài toán tìm luật kết hợp tổng quát ta có thể thực hiện các bước cơ bản sau

Bước 1: Biến đổi CSDL thành các số

nguyênPhân chia các giá trị của thuột tính thànhnhững khoảng và ứng với mỗi khoảng liên kết nó với một giá trị nguyên dương

để dễ dàng thao tác trên các thuột tính

Bước 2: Tìm tập phổ biến

Dựa vào dữ liệu đầu vào là tất cả các giao tác (transactions) chứa các giá trị đãthực hiện ở bước 1 (ví dụ danh sách các hóa đơn chứa các mặt hàng các hóa đơn đó) và minsupport cho trước để tìm ra tập phổ biến lớn nhất

Tập phổ biến là tập một hoặc nhiều danhsách các giá trị mà có mức độ xuất hiện đáng kể ( >= minsupport) trong các giao tác

Bước 3: Tìm tập kết hợp

Ứng với mỗi tập phổ biến tìm được ở trên thực hiện việc tìm luật như sau:

• Tìm tất cả các luật R: X=>Y sao cho :

Support(R) ≥ minsup và confidence(R) ≥ minconf

o Bước 1 : Liệt kê tất cả các tập con P của I : | P | > I

o Bước 2 : Với mỗi tập con P, liệt kê tất cả các tập con X kháctrống của P ( X khác P ) Luật R hình thành bởi :

R : X => P\X

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

1.3/ Thuật toán Apriori

Trong bài tổng quát, có thể thấy rằng bước 2/ Tìm tập phổ biến là tốn kém nhiề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 của nó cũng có thể nói góp phần giảm chi phí đáng kể

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 trongthuật toán Apriori

Trang 8

Bước 1/ Duyệt tất cảcác giao tác

(transactions) và dựavào ngưỡng

minsupport để tìm ratập ban đầu

Bước 2/ Giả sử tại bước k-1, đã có được tập phổ biến F-

1 khác rỗng Tại bước k, phát sinh tậpứng viên

Ck(Candidate itemset) dựa vào tổ hợp các phần tử trong tập F-1 Tập kết quả chứa các giátrị không bị trùng lắp

k-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

Bước 4/ Nếu tập phát sinh

Fk khác rỗng thì quay lại thực hiện các bước 2 và 3 cho bước k+1…

Nếu tập phát sinh Fk là rỗng, thì tập phổ biến kết quả sẽ là tập cuối cùng trước đó.Kết thúc quá trình

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ại mỗ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

Trang 9

các giao tác

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

Như đã đề cập phần trên, trong thuật toán Apriori bước tìm tìm tập phổ biến là tốn kém rất nhiều chi phí và nặng nề nhất Do đó phải có một cách nào đó 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) phải tận dụng được cấu trúc đó để tìm các giá trị support đó một cách trực tiếp từ cấu trúc trên 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úc Frequent Pattern Tree (FP-Tree)

2.1/ FP-Tree

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 lá

• Bảng Header có số dòng bằng số item Mỗi dòng chứa 3 thuộc tính: name, item-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 đó

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

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

o 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 giao tác (transaction) – thứ tự ưu tiên này được quy định lần đầu tiên trong tập phần tử trong F1 có support sắp xếp giảm dần

o 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ại node trong tree thì lần theo node đó, ngược lại thì

bổ sung node con ngay sau nodecủa phần tử trước đó

Các bước xây dựng FP-Tree

Trang 10

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

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

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

Duyệt CSDL lần 2 để xây dựng

FP-Tree(chú ý rằng các item trong mỗi giao

tác được xử lý theo trật tự F1)

Trang 14

 Input:

CSDL giao tác DNgưỡng min-sup

 Output:

Cây FP-Tree

 Method

1 Duyệt D lần đầu để thu được tập F gồm các frequent item và support

count của chúng Sắp xếp các item trong F theo trật tự giảm dần của supprort count ta được danh sách F1.

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;

Trang 15

12 H[p].count ++;

13 If (P-p) != null then

14 Call Insert_Tree(P-p, N) ; }

2.2/ Thuật toán FP-Growth

Tính chất của FP-Tree

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àngtìm ra tất cả các tập phổ biến có chứa ai bằng cách duyệt FP-tree một lần theo cácnút liên kết với ai

Ví dụ: chúng ta hãy xem xét quá trình khám phá các tập phổ biến dựa trên FP-tree

Table 1: A transaction database as running example

Frequent-item Header Table

Item Head of node-links

f:4

c:4

Ro ot

Trang 16

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ấthiệ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 hailầ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 trong các giao táccủ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ựa trê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ủap) chỉ có một nhánh là c:3 do đó chỉ tìm được một tập phổ biến là cp:3 Sự tìmkiếm các tập phổ biến có chứa p chấm dứt.

Với nút m, chúng ta có mẫu phổ biến là (m:3) và hai đường đi đến m là (f:4; c:3;a:3;m:2) và (f:4; c:3; a:3; b:1;m:1) Tương tự như nút p đã phân tích ở trên, chúng

ta có cơ sở điều kiện của m là "{(f:2; c:2; a:2), (f:1; c:1; a:1; b:1)}" Xây dựng tree dựa trên cơ sở điều kiện này, chúng ta có một FP-tree theo điều kiện của m cónhánh là (f:3; c:3; a:3), một đuờng đi đơn qua các mẫu phổ biến Sau đó chúng ta

FP-có thể khai thác dựa trên FP-tree này một cách đệ qui, nghĩa là gọi mine(<f:3;

f:

3

c:

3

Trang 17

a

Đầ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áctậ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 đuờng đi

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

Tính chất 2: (Prefix path property) để tìm ra các tập phổ biến từ một nút ai trên

đuờng đi P, chỉ cần đến đường đi con trước nút ai trên P Và số lần phổ biến của mỗi nút trên đường đi con này phải bằng với số lần phổ biến của nút ai

Dựa trên các tính chất trên, chúng ta có thuật toán tìm các tập phổ biến trên cây FP-tree

Thuật toán tìm tập phổ biến

Input: cây FP-Tree của CSDL D, ngưỡng min_sup

Output: Một tập đầy đủ các mẫu phổ biến F

Method: gọi FP-growth(FP-tree, null)

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

ro ot

f:

3

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

ro ot

f:

3

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

Trang 18

Procedure FP-growth (Tree, α)

{ t toán khai khoáng các mẫu ụng cây FP

1 If Tree chỉ chứa một đường dẫn đơn P then {

2 for each tổ hợp của các nút trong P do {

13 Xây dựng cơ sở có điều kiện của

14 Xây dựng FP-Tree có điều kiện của

15 if !=

16 call FP_growth( , );

17 }

Trang 19

So Sánh FP–growth và Apriori

III/ Cài đặt thử nghiệm thuật toán

Để cài đặt thuật toán FP-Growth, Cấu trúc dữ liệu cần thiết bao gồm các cấu trúc

cơ bản( collection, hashtable, list…) và một số cấu trúc bổ sung như sau:

ItemInfo: thông tin phần tử (chưa hoặc đã số hóa, trong mã nguồn sử dụng string chưa số hóa)

Trang 20

TreeNodeItem : chứa thông tin node của tree như : ItemName, Count, Parent, NextNode (node-link).

FrequentLinkItem : chứa giá trị phần tử trong bảng Header ban đầu chứa thông tin các phần tử, count và node-link

FPTree: chứa tất cả các thông tin của Tree,Header table và MinSupport

FPGrowthFacade : lớp xử lý tìm tập phổ biến bằng FP Tree

Sử dụng:

B1/ Khởi tạo dữ liệu cho Tree :

- Tree.BuildFrequentItemList(itemname, _count);// add

Frequent Item vào Header

- Tree.MinSupCount = minsupport

- Tree.ListStrList : danh sách giao tác ban đầu để

Duyệt tạo cây ( nếu sử dụng CSDL, có thể thay đổi thông tin này thành thông tin kết nối tới CSDL cụ thể và thay đổi lại hàm BuildFPTree).

B2/ Build Tree : Tree.InitializeFPTree

B3/ Chạy FP-Growth tìm tập phổ biến: GrowthFacade.FPGrowth(_fpTree, null ); Kết quả được lưu vào GrowthFacade.FrequentPattern<key,List of ItemSet> :

+ key = k (số phần tử tham gia)

+ ItemSet là một tập kết quả.

Ứng dụng trong thuật toán tìm luật kết hợp (AR) , chỉ cần lấy tập có k lớn nhất.

- Chạy test cho tập dữ liệu đơn giản như sau với support = 40%

Trang 21

- Với support = 50%

Trang 22

Kết luận



Bài nghiên cứu này nhằm mục đích tìm hiểu về thuật toán tìm tập phổ biến dựa trên FP-Tree Thuật toán FP-Growth phát triển là để khắc phục một số nhược điểm của các thuật toán trước đó, tuy nhiên nó lại sinh ra một số nhược điểm khác Sau đây là các ưu điểm và nhược điểm của FP-Growth

Ưu Điểm

 Chỉ cần duyệt 2 lần vào Cơ Sở Dữ Liệu

 Nén tập dữ liệu theo ý nghĩa vào tree

 Không phát sinh tập ứng viên

 Không đếm trùng lắp trên giao tác trong CSDL

 Nhanh hơn nhiều so với Apriori

Nhược điểm

 Bộ nhớ có thể không đủ cấp cho FP-Tree trong trường hợp CSDL to vàchia ra làm quá nhiều nhánh

 Thời gian tạo FP-Tree khá tốn kém

o Thời gian tạo tree khá tốn kém, nhưng chỉ tạo 1 lần và sử dụngnhiều lần

o Khi minsuport càng cao thì thời gian tạo cây dường như càngphí

Về bộ nhớ hiện nay có thể là phần nào đáp ứng cho tree, ngoài ra cấu trúc tree

có thể được lưu xuống đĩa cứng để sử dụng lại sau đó Việc sử dụng có thểthực hiện để thực hiện lại thuật giải tìm hoặc thay đổi ( thêm, xóa, sửa) thôngtin từ CSDL ( các thông tin bị thay đổi) cập nhật lại xuống tree Như vậy bất

cứ quá trỉnh cập nhật nào vào CSDL hằng ngày , hằng tháng cũng sẽ được cậpnhật xuống tree tại một lúc nào đó

Tài liệu tham khảo

 Các slides bài giảng của thấy Đỗ Phúc về khái niệm tập phổ biến

 Dựa vào Tiểu Luận anh Vũ Quang Việt - CH0601100.

 Artificial Intelligence – Machine Learning,Enginyeria i Arquitectura La

Salle,Universitat Ramon Llull

 Jen-Ting Tony Hsiao,Alexandros Ntoulas ,CS 240B May 21, 2002

http://www.scribd.com/doc/51319418/16/Benefits-of-the-FP-tree-Structure

 http://en.wikibooks.org/wiki/Data_Mining_Algorithms_In_R/Frequent_ Pattern_Mining/The_FP-Growth_Algorithm

Ngày đăng: 11/04/2015, 14:50

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

TÀI LIỆU LIÊN QUAN

w