Ễn thỊ li - dlib.ptit.edu.vndlib.ptit.edu.vn/bitstream/123456789/875/1/ttlv nguyen thi...

12
24 Về mặt thực nghiệm demo xây dựng cây Fp-tree từ dữ liệu cho trước và khai phá các tập phổ biến theo hai cách là khai phá tuần tự (QFP-growth) và khai phá song song (cải tiến QFP-Growth). Qua việc thực nghiệm đã cho thấy QFP-Growth và cải tiến QFP-growth là những thuật toán mang lại hiệu quả tốt so với các thuật toán trước đó. Huớng nghiên cứu tiếp theo Trên cơ sở những nghiên cứu đã được trình bày trong luận văn, tiếp tục nghiên cứu sâu hơn các thuật toán khai phá luật kết hợp song song , tìm cách cải tiến nhằm khắc phục các nhược điểm của các thuật toán song song hiện có và các thuật toán khai phá dữ liệu song song khác để áp dụng vào một số bài toán khai phá dữ liệu ph ù hợp cho giai đoạn hiện nay như: quy luật thị truờng, chứng khoán và bất động sản, dự đoán rủi ro tín dụng, định huớng kinh doanh, y tế…. 1 HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG ---------------------------------------- NGUYỄN THỊ LI ÊN KHAI PHÁ TẬP PHỔ BIẾN SỬ DỤNG THUẬT TOÁN SONG SONG QFP-GROWTH Chuyên ngành: Truyền dữ liệu và Mạng máy tính Mã số: 60.48.15 Người hướng dẫn khoa hoc: PGS.TS Lê Hữu Lập TÓM TẮT LUẬN VĂN THẠC SỸ HÀ NỘI – 2011

Upload: vandien

Post on 21-Jun-2018

214 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ỄN THỊ LI - dlib.ptit.edu.vndlib.ptit.edu.vn/bitstream/123456789/875/1/TTLV Nguyen Thi Lien.pdfTuy nhiên theo thống kê thì chỉ ... thương mại điện tử, quản lý

24

Về mặt thực nghiệm demo xây dựng cây Fp-tree từ dữ

liệu cho trước và khai phá các tập phổ biến theo hai cách là

khai phá tuần tự (QFP-growth) và khai phá song song (cải tiến

QFP-Growth). Qua việc thực nghiệm đã cho thấy QFP-Growth

và cải tiến QFP-growth là những thuật toán mang lại hiệu quả

tốt so với các thuật toán trước đó.

Huớng nghiên cứu tiếp theo

Trên cơ sở những nghiên cứu đã được trình bày trong

luận văn, tiếp tục nghiên cứu sâu hơn các thuật toán khai phá

luật kết hợp song song , tìm cách cải tiến nhằm khắc phục các

nhược điểm của các thuật toán song song hiện có và các thuật

toán khai phá dữ liệu song song khác để áp dụng vào một số bài

toán khai phá dữ liệu phù hợp cho giai đoạn hiện nay như: quy

luật thị truờng, chứng khoán và bất động sản, dự đoán rủi ro tín

dụng, định huớng kinh doanh, y tế….

1

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG ----------------------------------------

NGUYỄN THỊ LIÊN

KHAI PHÁ TẬP PHỔ BIẾN SỬ DỤNG THUẬT TOÁN SONG SONG QFP-GROWTH

Chuyên ngành: Truyền dữ liệu và Mạng máy tính

Mã số: 60.48.15

Người hướng dẫn khoa hoc: PGS.TS Lê Hữu Lập

TÓM TẮT LUẬN VĂN THẠC SỸ

HÀ NỘI – 2011

Page 2: ỄN THỊ LI - dlib.ptit.edu.vndlib.ptit.edu.vn/bitstream/123456789/875/1/TTLV Nguyen Thi Lien.pdfTuy nhiên theo thống kê thì chỉ ... thương mại điện tử, quản lý

2

MỞ ĐẦU

Trong nhiều năm qua, cùng với sự phát triển của công

nghệ thông tin và ứng dụng của công nghệ thông tin trong

nhiều lĩnh vực của đời sống xã hội, thì lượng dữ liệu được các

cơ quan thu thập và lưu trữ ngày một nhiều lên. Người ta lưu

trữ những dữ liệu này vì cho rằng nó ẩn chứa những giá trị nhất

định nào đó. Tuy nhiên theo thống kê thì chỉ có một lượng nhỏ

của những dữ liệu này (khoảng từ 5% đến 10%) là luôn được

phân tích, số còn lại họ không biết sẽ phải làm gì và có thể làm

gì với những dữ liệu này, nhưng họ vẫn tiếp tục thu thập và lưu

trữ vì hy vọng những dữ liệu này sẽ cung cấp cho họ những

thông tin quý giá một cách nhanh chóng để đưa ra những quyết

định kịp thời vào một lúc nào đó. Chính vì vậy, các phương

pháp quản trị và khai thác cơ sở dữ liệu truyền thống ngày càng

không đáp ứng được thực tế đã làm phát triển một khuynh

hướng kỹ thuật mới đó là Kỹ thuật phát hiện tri thức và khai

khai phá dữ liệu (KDP)

Kỹ thuật phát hiện tri thức và khai phá dữ liệu đã và

đang được nghiên cứu, ứng dụng trong nhiều lĩnh vực khác

nhau trên thế giới như thiên văn học, phân lớp văn bản, tóm tắt

văn bản tin sinh học, thương mại điện tử, quản lý quan hệ

khách hàng, viễn thông, thể thao, giải trí, đầu tư... Tại Việt

Nam kỹ thuật này còn tương đối mới mẻ tuy nhiên cũng đang

23

KẾT LUẬN VÀ KIẾN NGHỊ

Luận văn đề cập đến các nội dung về phát hiện tri thức,

khai phá dữ liệu. Ứng dụng của khai phá dữ liệu là rất rộng và

có ích trong các hoạt động sản xuất, kinh doanh và trợ giúp cho

việc hoạch định chiến lược của các nhà quản lý cũng như hỗ trợ

ra quyết định. Tuy vậy vẫn còn rất nhiều những khó khăn,

thách thức trong việc ứng dụng và nghiên cứu các kỹ thuật khai

phá dữ liệu.

Về mặt lý thuyết, khai phá dữ liệu là một công đoạn

trong tiến trình lớn, tiến trình khám phá tri thức từ CSDL.

Phương pháp khai phá dữ liệu có thể là: phương pháp sử dụng

cây quyết định và luật, phương pháp phát hiện luật kết hợp, các

phương pháp dựa trên mẫu, các phương pháp phân lớp và hồi

quy phi tuyến tính…, Các phương pháp trên có thể áp dụng trên

dữ liệu thông thuờng và trên tập mờ.

Trong luận văn đã trình bày chi tiết các vấn đề về khai

phá luật kết hợp: từ các khái niệm cơ sở, bài toán xuất phát đến

mô hình hình thức, các thuật toán khai phá luật kết hợp cơ sở

luật kết hợp

Về thuật toán khai phá luật kết hợp, luận văn trình bày

một số thuật toán tuần tự tiêu biểu về khai phá luật kết hợp như:

Apriori, Fp-tree, Fp-growth, qfp- growth.

Page 3: ỄN THỊ LI - dlib.ptit.edu.vndlib.ptit.edu.vn/bitstream/123456789/875/1/TTLV Nguyen Thi Lien.pdfTuy nhiên theo thống kê thì chỉ ... thương mại điện tử, quản lý

22

Khai phá tuần tự và song song

Đọc file cơ sở dữ liệu và tạo FP-tree

3

được nghiên cứu và bắt đầu đưa vào một số ứng dụng thực tế.

Vì vậy, hiện nay ở nước ta vấn đề phát hiện tri thức và khai phá

dữ liệu đang thu hút được sự quan tâm của nhiều người và

nhiều công ty phát triển ứng dụng công nghệ thông tin.

Trong luận văn này, tôi trình bày thuật toán FP-growth

và một số thuật toán cải tiến (của tác giả Yong-Jie LAN, Yong

Qiu Trường Thông tin & Kỹ thuật điện tử, Sơn Đông Viện

Kinh doanh và Công nghệ, YanTai264005, Trung Quốc) nhằm

nâng cao hiệu quả của FP-Growth như sau:

- Thuật toán song song PFPTC (Parallel FP-tree

Constructing) để tạo đồng thời cây con FP-tree.

- Thuật toán FP-merge dùng để trộn 2 cây FP-tree

thành 1 cây FP-tree.

- Thuật toán QFP-growth, dùng để khai phá dữ liệu

nhưng không sinh ra nhiều kết quả trung gian do đó có thể

tránh được việc tắc nghẽn và tốn kém bộ nhớ, thời gian thực

hiện.

Với thời gian và kiến thức còn hạn chế, luận văn này

không tránh khỏi những thiếu sót, rất mong được sự quan tâm

định hướng của các thày cô giáo, sự góp ý của của các bạn

đồng nghiệp để báo cáo hoàn thiện hơn.

CHƯƠNG 1: TỔNG QUAN VỀ KHAI PHÁ DỮ LIỆU

Page 4: ỄN THỊ LI - dlib.ptit.edu.vndlib.ptit.edu.vn/bitstream/123456789/875/1/TTLV Nguyen Thi Lien.pdfTuy nhiên theo thống kê thì chỉ ... thương mại điện tử, quản lý

4

Chương này trình bày khái niệm khai phá dữ liệu, quá

trình khai phá dữ liệu và tóm tắt các phuong pháp khai phá dữ

liệu phổ biến. Trong các phương pháp khai phá dữ liệu, khai

phá các luật kết hợp là một trong những lĩnh vực đang đuợc

quan tâm và nghiên cứu mạnh mẽ.

1.1.Khái niệm và quá trình khai phá dữ liệu

1.1.1.Khái niệm

Khai phá dữ liệu là một tập hợp các kỹ thuật đuợc sử dụng

để tự động khai thác và tìm ra các mối quan hệ lẫn nhau của dữ

liệu trong một tập hợp dữ liệu khổng lồ và phức tạp, đồng thời

cung tìm ra các mẫu tiềm ẩn trong tập dữ liệu đó. Về bản chất

nó là giai đoạn duy nhất rút trích và tìm ra đuợc các mẫu, các

mô hình hay thông tin mới, tri thức tiềm ẩn có trong CSDL chủ

yếu phục vụ cho mô tả và dự đoán.

1.1.2. Quá trình khai phá dữ liệu

Khai phá dữ liệu là một bước của quá trình phát hiện tri

thức (KDP). Quá trình phát hiện tri thức trải qua 5 giai đoạn

khác nhau mà khai thác dữ liệu chỉ là một giai đoạn phát hiện

tri thức. Sau đây là 5 giai đoạn của phát hiện tri thức

21

4.2. Chương trình minh hoạ

4.2.1 Dữ liệu thử nghiệm

f, a, c, d, g, i, m, p

a, b, c, f, l, m, o

b, f, h, j, o, p

b, c, k, s, p

a, f, c, e, l, m, n

p, b, c

4.2.2. Chương trình minh hoạ

Giao diện chính

Page 5: ỄN THỊ LI - dlib.ptit.edu.vndlib.ptit.edu.vn/bitstream/123456789/875/1/TTLV Nguyen Thi Lien.pdfTuy nhiên theo thống kê thì chỉ ... thương mại điện tử, quản lý

20

CHƯƠNG 4: ỨNG DỤNG VÀ THỬ NGHIỆM THUẬT

TOÁN QFP-GROWTH

4.1.Giới thiệu chung về lập trình song song

Các bài toán tính toán thường có các đặc tính chung như

sau: Cho phép chia nhỏ một công việc lớn thành nhiều phần

việc nhỏ hơn và có thể được giải quyết đồng thời ; tại một thời

điểm, có thể thực thi nhiều chỉ thị chương trình; thời gian xử lý

bài toán sẽ giảm xuống, bởi vì nhiều tài nguyên tính toán được

sử dụng.

Vậy tính toán song song được áp dụng do 2 lý do chính

sau đây: tiết kiệm thời gian, giải quyết được bài toán lớn. Ngoài

ra, còn có một số lí do khác như: tận dụng được các tài nguyên

phi-cục bộ (non-local); nếu máy tính của chúng ta nối mạng, có

thể sử dụng các tài nguyên tính toán trên mạng diện rộng và

Internet; tiết kiệm chi phí bằng cách sử dụng nhiều tài nguyên

tính toán giá rẻ thay thế cho việc sử dụng một siêu máy tính có

giá thành cao; vượt qua được giới hạn về lượng bộ nhớ mà máy

tính sử dụng, vì nếu sử dụng nhiều máy tính khác nhau, chúng

ta sẽ có lượng bộ nhớ không giới hạn.

5

Thu thập và tiền xử lý dữ liệu Xác định vấn đề: Khai thác dữ liệu Minh hoạ và đánh giá Đưa kết quả vào thực tế 1.2.Một số phương pháp khai phá dữ liệu

Luật kết hợp Khai phá chuỗi theo thời gian Phân lớp và dự đoán Phân cụm / phân đoạn Hồi quy Mô tả khái niệm và tổng hợp hóa

CHƯƠNG 2: LUẬT KẾT HỢP

Trong chương 2 trình bày tổng quan về luật kết hợp, các

định nghĩa, tính chất liên quan đến luật kết hợp: độ hỗ trợ, độ

tin cậy, tập mục phổ biến, phát biểu bài toán khai phá luật kết

hợp.

Khai phá luật kết hợp trong CSDL có thể chia thành hai

bài toán con: (1) Tìm tất cả các tập mục phổ biến từ CSDL. (2)

Sinh ra các luật từ các tập mục phổ biến. Trong chương này

trình bày một số thuật toán cơ bản phát hiện tập mục phổ biến,

phát hiện luật kết hợp từ các tập mục phổ biến nhằm làm tiền

đề cho các nghiên cứu sau này như cải tiến thuật toán, thuật

toán song song.

Nội dung:

2.1. Các khái niệm và tính chất

Page 6: ỄN THỊ LI - dlib.ptit.edu.vndlib.ptit.edu.vn/bitstream/123456789/875/1/TTLV Nguyen Thi Lien.pdfTuy nhiên theo thống kê thì chỉ ... thương mại điện tử, quản lý

6

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

Khái niệm độ hỗ trợ và độ tin cậy

Kí hiệu I = {i1, i2, …, im} là tập các thuộc tính được gọi

là các mục dữ liệu. D là cơ sở dữ liệu của tập các giao tác, mỗi

giao tác T là một tập mục con của tập mục I, T I. Mỗi giao

tác có một định danh duy nhất gọi là TID (Transaction

Identification). X={i1, i2,…,ik} I được gọi là một tập mục hay

một tập k-mục nếu nó chứa k mục. Một giao tác T được gọi là

chứa tập mục X chỉ khi X T. Mỗi giao tác là một bộ <TID,

I>, I là tập mục.

a, Độ hỗ trợ (Suppport)

Định nghĩa 2.1 Độ hỗ trợ của một tập mục X trong cơ

sở dữ liệu D là tỉ số giữa số các giao tác T D có chứa tập X

và tổng số giao tác trong D (hay là phần trăm của các giao tác

trong D có chứa tập mục X), kí hiệu Supp(X).

Ta có 0 suppp(X) 1 với mọi tập X.

Để dễ hình dung ta có thể coi Support chỉ mức độ “phổ

biến xảy ra” của mẫu.

|D|

|T X :D T| (X) Supp (2.1)

19

Tạo mẫu β = ai ;

β . support = ai .support;

F = F β ;

Tạo cây gốc Temp-root với các con là con của ai

;

Call QFP-growth(Temp-root, ai );

}

Page 7: ỄN THỊ LI - dlib.ptit.edu.vndlib.ptit.edu.vn/bitstream/123456789/875/1/TTLV Nguyen Thi Lien.pdfTuy nhiên theo thống kê thì chỉ ... thương mại điện tử, quản lý

18

temp_root>=ξ ) then call QFP-

growth(temp_root, β);

}

3.4 Mở rộng của thuật toán QFP-growth

Như vậy, thay vì tuần tự xét từng đối tượng ai của cây

FP-tree ban đầu ta có thể cải tiến để xét đồng thời (song song)

các đối tượng này. Từ các phân tích trên, tôi đề xuất 1 thuật

toán song song dựa vào QFP-growth để khai phá dữ liệu như

sau:

Input: Cây FP-tree và ngưỡng hỗ trợ tối thiểu ξ.

Output: Its frequent pattern tree, FP-TreeOutput: Một tập đầy

đủ các mẫu phổ biến F

Ý tưởng:

- Giả sử CSDL có n đối tượng phổ biến ai với 1 i n.

- Với mỗi đối tượng ai , từ cây FP-tree ban đầu xây

dựng các cây có gốc là root, con là các con của ai (với 1 i

n).

- Sử dụng n bộ xử lý cho việc khai phá. Mỗi bộ xử lý sẽ

tiến hành khai phá 1 cây FP-tree, nếu tạo ra tập đối tượng phổ

biến thì đưa và F.

Thuật toán song song:

For ( i = 1; i ≤ n; i++) do ( đồng thời)

{

7

b, Độ tin cậy

Định nghĩa 2.3 Độ tin cậy của một luật r =X Y là tỉ

số (phần trăm) của số giao tác trong D chứa X Y với số giao

tác trong D có chứa tập mục X. Kí hiệu độ tin cậy của một luật

là conf (r). Ta có 0 conf 1.

Nhận xét: Độ hỗ trợ và độ tin cậy chính là xác suất sau:

Supp(X Y) = P(X Y).

Conf (XY) =P(Y/X) =Supp(X Y)/Supp(X).

2.1.2. Khai phá luật kết hợp

Bài toán khai phá luật kết hợp trên một cơ sở dữ liệu được

chia thành hai bài toán nhỏ. Bài toán thứ nhất là tìm tất cả

các tập mục dữ liệu có độ hỗ trợ thỏa ngưỡng tối thiểu cho

trước, gọi là tập các tập mục dữ liệu thuờng xuyên. Bài toán

thứ hai là tìm ra những luật kết hợp từ những tập mục dữ

liệu thường xuyên thỏa độ tin cậy tối thiểu cho trước.

Bài toán 1: Tìm tất cả các tập mục phổ biến (các tập có

support lớn hơn hoặc bằng ngưỡng minsup)

Dữ liệu vào: Cho trước các tập mục I, cơ sở dữ liệu D,

các ngưỡng minsup và minconf.

Dữ liệu ra: Tìm tất cả các luật kết hợp X Y trên D

thoả mãn:

Page 8: ỄN THỊ LI - dlib.ptit.edu.vndlib.ptit.edu.vn/bitstream/123456789/875/1/TTLV Nguyen Thi Lien.pdfTuy nhiên theo thống kê thì chỉ ... thương mại điện tử, quản lý

8

Support (XY) minsup và confidence (X Y)

minconf.

Bài toán 2: Khai phá luật kết hợp

Dữ liệu vào: I, D, minsup, minconf, Lk={x1, x2,…, xk}

tập các mục phổ biến (thường xuyên)

Dữ liệu ra: Tất cả những luật kết hợp thoả mãn minsup và

minconf

2.2. Một số thuật toán khai phá luật kết hợp

2.2.1.Một số thuật toán sinh tập phổ biến

2.1.1.1.Thuật toán Apriori

- Sinh ra các mẫu phổ biến k+1 từ k

- Kiểm tra các mẫu phổ biến được sinh ra bằng độ tin cậy

- Phương pháp đếm phân tán khai phá luật kết hợp dựa trên sự

song song của Apriori. Đếm phân tán phân chia tĩnh cơ sở dữ

liệu thành các phần theo chiều ngang sau đó quét độc lập để

đếm cục bộ tất cả các ứng cử viên Itemset trên bộ xử lý

2.2.1.2. Thuật toán Apriori-TID

Thuật toán Apriori-TID tương tự thuật toán Apriori, điểm

khác nhau chủ yếu của thuật toán này so với thuật toán

Apriori là; nó không sử dụng CSDL để tính độ hỗ trợ trong

các giai doạn k 1. Thay vào đó nó sử dụng mã khóa của các

tập mục ứng cử đã sử dụng trong giai đoạn truớc, Ck.

17

nhiều thời gian và bộ nhớ. Vì vậy, vấn đề đặt ra là phải tránh

tạo nhiều cây FP-Tree có điều kiện trong khi khai phá. Để giải

quyết vấn đề này, người ta sử dụng thuật toán QFP-growth, là

một phương pháp mở rộng của FP-growth cho việc khai phá dữ

liệu từ cây FP-tree. Thuật toán được mô tả như sau:

Algorithm : QFP-growth [10]

(Khai phá các mẫu phổ biến với cây FP-tree bằng các

mẫu riêng lẻ).

Input: Cây FP-tree và ngưỡng hỗ trợ tối thiểu ξ.

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

Method: call QFP-growth(root, null).

Procedure QFP-growth(gốc Q, FP_prefix α)

for each ai trong cây Q, từ trên xuống dưới

1. ai .support = Tổng số lần xuất hiện của ai có

trong cây gốc Q ;

2. if ai .support > = ξ then

{ Tạo mẫu β = α ai ;

β . support = ai .support;

F = F β ;

Tạo cây có gốc tạm thời (temp_root) có

các con là con của ai;

if (temp_root có con) and (Tổng số lần

xuất hiện các con của

Page 9: ỄN THỊ LI - dlib.ptit.edu.vndlib.ptit.edu.vn/bitstream/123456789/875/1/TTLV Nguyen Thi Lien.pdfTuy nhiên theo thống kê thì chỉ ... thương mại điện tử, quản lý

16

- Gồm các giao tác chứa p. - Để tìm các mẫu phổ biến chứa p ta chỉ cần tìm các mẫu phổ biến trong CPB và thêm p vào các mẫu đó. * FP-Tree có điều kiện của p là cây FP-tree được xây dựng với cơ sở có điều kiện của mẫu p. Input: FP-tree, ngưỡng hỗ trợ tối thiểu ξ. Output: Một tập đầy đủ các mẫu phổ biến F. Phương pháp: gọi FP-growth (FP-tree, null).

Procedure FP-growth (Tree, α) If (Cây chỉ có 1 nhánh đơn P) then For each tổ hợp β của các nút trong P

{ Tạo mẫu p = β α ; p.support = min {support của các nút trong β}; F = F p; }

else For each ai trong bảng Header của Tree

{ Tạo β = ai α ; β.support = ai.support; F = F β; Xây dựng cơ sở có điều kiện của β; Xây dựng FP-Tree có điều kiện là Treeβ của β; if Treeβ ≠ then Call FP_growth(Treeβ, β);

}

3.3 Thuật toán QFP-Growth

Như đã biết ở trên, thuật toán FP-growth để khai phá dữ

liệu phải tạo ra nhiều cây FP-Tree có điều kiện do đó làm tốn

9

2.2.1.3.Thuật toán Apriori-Hybrid

Phương pháp của thuật toán Apriori -Hybrid là sử dụng

thuật toán Apriori ở các giai đoạn đầu và chuyển sang sử

dụng thuật toán Apriori-TID ở các giai đoạn sau, được trình

bày chi tiết trong

2.2.2 Thuật toán sinh luật kết hợp

2.2.2.1 Thuật toán sinh luật đơn giản

Nếu a và luật a ( - a) có độ tin cậy nhỏ hơn minconf

thì ta không cần phải xem xét các luật có tiền đề là a’, a’ a.

Chẳng hạn, nếu ABC D Có độ tin cậy nhỏ hơn minconf thì

ta không cần kiểm tra luật AB CD vì AB ABC nên

sup(AB) sup (ABC) và do đó )sup(

)sup()sup()sup(

ABABCD

ABCABCD

<

minconf

2.2.2.2 Thuật toán sinh luật nhanh

Như đã đề cập ở trên với mỗi tập mục phổ biến , nếu luật a

( – a) không thỏa minconf và a’ a, luật a’ ( – a’)

cũng không thỏa. Nguợc lại, nếu luật (-c) c thỏa minconf

thì tất cả các luật (– c’) c’ cung thỏa minconf, với c’ c.

Bởi vì ( – c) ( – c’) (do c’ c), suy ra sup( – c) sup(

Page 10: ỄN THỊ LI - dlib.ptit.edu.vndlib.ptit.edu.vn/bitstream/123456789/875/1/TTLV Nguyen Thi Lien.pdfTuy nhiên theo thống kê thì chỉ ... thương mại điện tử, quản lý

10

– c’) và minconf )'sup(

)sup()sup(

)sup(cl

lcl

l

, do đó lu ật ( – c’)

c’ cũng thỏa minconf.

CHƯƠNG 3: THUẬT TOÁN QFP-GROWTH

Thuật toán kinh điển Apriori tìm tập mục phổ biến thực

hiện tốt bởi rútt gọn kích thước các tập ứng cử nhờ kỹ thuật tỉa.

Tuy nhiên, trong tình huống mà số các mẫu nhiều, mẫu dài

hoặc độ hỗ trợ cực tiểu thấp, các thuật toán Apriori gặp phải 2

chi phí lớn:

Chi phí cho số lượng khổng lồ các tập ứng cử. Ví dụ:

nếu cứ 104 tập 1-mục phổ biến thì thuật toán Apriori sẽ cần sinh

ra hơn 107 các ứng cử 2-mục và thực hiện kiểm tra sự xuất hiện

của chúng. Hơn nữa, để khám phá được một số mẫu phổ biến

kích thước (độ dài) là l, thuật toán phải kiểm tra (2l-2 ) các mẫu

phổ biến tiềm năng. Vớ dụ l=100, chẳng hạn là {a1,a2,....,a100},

nó phải sinh ra tổng số 2100 1030 các ứng cử (đấy chính là số

tập con của tập có 100 phần tử)

Đòi hỏi lặp lại nhiều lần duyệt CSDL để kiểm tra tập rất

lớn các ứng cử. Số lần duyệt CSDL của thuậtt Apriori bằng độ

dài của mẫu phổ biến dài nhất tìm được. Trong trường hợp mẫu

phổ biến dài hơn và CSDL lớn, có nhiều bản ghi, điều này là

không thể thực hiện được. Thuật toán Apriori chỉ thích hợp cho

15

Output: một FP-tree được chèn.

Method: gọi merge-insert (items train, node, support)

Procedure merge-insert ([p|P], T, num)

1. If (T có 1 nút con N) and (N.item-name = p)

N. count = N.count + num;

Else

{ Tạo nút mới N;

N.count = num;

N.parent = T;

}

1. If P !=NULL then Call merge-insert (P, N, num);

3.2.Thuật toán FP-growth

Thuật toán FP-Growth là một phương pháp khác cho việc xác

định các tập mục thuờng xuyên. Tương phản với những thuật

toán apriori, sử dụng cơ chế sinh-kiểm tra (sinh ra các tập mục

cần xét, và kiểm tra xem mỗi tập mục có phải là thuờng xuyên)

phương pháp tăng trưởng mẫu (pattern-growth) nhận được

itemsets phổ biến trực tiếp từ CSDL mà không mất chi phí cho

việc sinh và kiểm tra độ lớn của các ứng cử viên.

Thuật toán: FP - growth (Khai phá các mẫu phổ biến với FP-tree từ các mẫu riêng lẻ) * Cơ sở có điều kiện của mẫu p (CPB) thoả mãn:

Page 11: ỄN THỊ LI - dlib.ptit.edu.vndlib.ptit.edu.vn/bitstream/123456789/875/1/TTLV Nguyen Thi Lien.pdfTuy nhiên theo thống kê thì chỉ ... thương mại điện tử, quản lý

14

(kết hợp các cây con FP-tree thành 1 cây kết quả, không

tạo bảng chính và node liên kết trong cây kết quả FP-tree )

Input: Hai cây con FP-tree

Output: một cây FP-tree được trộn có tên FP-tree

<result>

Method: call FP-merge(FP-tree1, FP-tree2, result)

Procedure FP-merge(FP-tree1, FP-tree2, result)

1. While FP-tree2 !=NULL do

{ Lấy 1 dãy đối tượng từ lá đến gốc trong

FP-tree2.

n = leaf’s count ;

Coi dãy các đối tượng là [p|P].

Call merge-insert ([p|P], FP-tree1, n).

Xoá dãy đối tượng khỏi FP-tree2;

}

2. Rename FP-tree1 as FP-tree<result>;

(dãy [p|P], trong đó p là đối tượng cuối cùng và P là dãy các đối

tượng ở phía trước)

3.1.3.Thuật toán Merge-Insert

Thuật toán Merge-insert (chèn một dãy dữ liệu vào FP-tree)

Input: dãy dữ liệu, FP-tree node, count của đối tượng

cuối cùng trong dãy.

11

các CSDL thưa (sparse), với các CSDL dày (dense) thì thuật

toán thực hiện kém hiệu quả hơn.

Thuật toán tìm các tập phổ biến hiệu qủa hơn thuật toán

Apriori là thuật toán Fp-tree và Fp-Growth

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

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

3.1.1.1.Thuật toán Fp-tree

Được gọi là cây mẫu phổ biến (frequent pattern tree

hoặc gọi tắt là FP- tree) dùng để nén dữ liệu thích hợp. Chỉ có

các mục độ dài l (l-item) ở trong cây và các nút của cây được

sắp đặt để 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. CSDL lớn được nén chặt

tới cấu trúc dữ liệu nhỏ hơn (FP-tree), tránh được chi phí lặp lại

duyệt qua CSDL.

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

Input: Cơ sở dữ liệu giao dịch DB và ngưỡng hỗ trợ tối

thiểu là ξ.

* Độ hỗ trợ (Support): Support của đối tượng ‘p’ là

tổng số lần xuất hiện của ‘p’ trong tất cả các giao tác.

Output: Cây FP-Tree, cây chứa các mẫu phổ biến.

FP-tree được xây dựng theo các bước sau đây:

1. Duyệt DB lần đầu để thu được tập F gồm các đối

tượng phổ biến (frequent item) và độ hỗ trợ (support count) của

Page 12: ỄN THỊ LI - dlib.ptit.edu.vndlib.ptit.edu.vn/bitstream/123456789/875/1/TTLV Nguyen Thi Lien.pdfTuy nhiên theo thống kê thì chỉ ... thương mại điện tử, quản lý

12

chúng. Sắp xếp các đối tượng (item) trong F giảm dần theo

supprort count ta được danh sách L.

2. Tạo nút gốc T.

Tạo bảng Header H có |F| dòng và đặt tất cả các node –

link chỉ đến null.

3. For each giao tác G DB

a. Chọn các đối tượng phổ biến của G và sắp xếp theo

thứ tự của danh sách L được dạng [p, P], trong đó p là phần tử

đầu tiên và P là danh sách còn lại.

b. Call Insert_Tree([p,P], T);

Procedure Insert_Tree ([p | P], T)

1. If (T có nút con N) and (N.item-name = p) Then

N.count = N.count + 1;

Else

{ Tạo nút mới N;

N.item-name = p;

N.count = 1 ;

T.child = N ;

N.node-link = H[p].Node_link;

H[p].Node_link = N;

}

13

2. If P ≠ then Call insert_tree (P, N). :1

3.1.1.2 Thuật toán song song xây dựng FP-Tree

Input: CSDL giao tác DB và ngưỡng min-sup ξ

Output: Cây FP-Tree

Method: Cây FP-tree được xây dựng theo các bước sau đây:

1. Giả sử có n bộ xử lý (BXL) p1, p2,…,pn; Phân chia

DB thành n phần DB1, DB2, …, DBn với kích thước giống

nhau

2. for ( j = 1; j ≤ n; j++) do ( đồng thời)

{ BXL pj quét CDSL DBj,

Xây dựng cây FP-treej, không tạo bảng

chính và node liên kết

}

3. while(n>1) do

for ( j = 1; j≤n; j=j+2) (đồng thời)

{ BXL pj gọi FP-merge( FP-treej, FP-

treej+1, int(j/2)+1 ) n = n / 2;

}

4. Tạo bảng head và liên kết các node giống nhau cho

FP-tree1;

5. Return FP-tree1;

3.1.2 Thuật toán FP-Merge