Tải bản đầy đủ (.pdf) (12 trang)

Khai phá tập phổ biến sử dụng thuật toán song song qfp growth (tt)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (813.5 KB, 12 trang )

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à

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

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 tố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á

NGUYỄN THỊ LIÊN

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 tố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

KHAI PHÁ TẬP PHỔ BIẾN SỬ DỤNG THUẬT TỐ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

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


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


2

23

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

phá dữ liệu.

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

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

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

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

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

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

định kịp thời vào một lúc nào đó. Chính vì vậy, các phươ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áp quản trị và khai thác cơ sở dữ liệu truyền thống ngày càng


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

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

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

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

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

khai phá dữ liệu (KDP)

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

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

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

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

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

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

luật kết hợp

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

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


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

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

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

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


22

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 tố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

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

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 tố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.

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

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


4
Chương này trình bày khái niệm khai phá dữ liệu, q
trình khai phá dữ liệu và tóm tắt các phuong pháp khai phá dữ

21
4.2. Chương trình minh hoạ
4.2.1 Dữ liệu thử nghiệm

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

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

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

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

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


b, f, h, j, o, p

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

b, c, k, s, p

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

a, f, c, e, l, m, n
p, b, c
4.2.2. Chương trình minh hoạ

để 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ự đốn.
1.1.2. Q 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

Giao diện chính


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 tốn tính tố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 tốn sẽ giảm xuống, bởi vì nhiều tài ngun tính tốn được
sử dụng.

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

Vậy tính tố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 tốn lớn. Ngồi

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

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 ngun tính tố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 ngun
tính tố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.

đị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 tố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


6

19

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

Tạo mẫu β = ai ;



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

β . support = ai .support;

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

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

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


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

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

Supp (X) 

| T  D : X  T|
|D|

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.

(2.1)


18
temp_root>=ξ ) then call QFPgrowth(temp_root, β);

}
3.4 Mở rộng của thuật tốn QFP-growth
Như vậy, thay vì tuần tự xét từng đối tượng ai của cây

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.

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

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

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

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

sau:

Conf (XY) =P(Y/X) =Supp(X  Y)/Supp(X).

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

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

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


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

Ý tưởng:

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

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

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

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

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

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

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.

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 tốn song song:
For ( i = 1; i ≤ n; i++) do ( đồng thời)
{

Bài tố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:


8

17

Support (XY)  minsup và confidence (X Y) 

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

minconf.

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à

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ý

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 tố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 ;

2.2.1.2. Thuật toán Apriori-TID

β . support = ai .support;

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

F=Fβ ;

khác nhau chủ yếu của thuật tốn này so với thuật tốn
Apriori là; nó khơng sử dụng CSDL để tính độ hỗ trợ trong


Tạo cây có gốc tạm thời (temp_root) có
các con là con của ai;

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.

if (temp_root có con) and (Tổng số lần
xuất hiện các con của


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 tố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( ABCD) sup( ABCD)

<
sup( ABC )
sup( AB)


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(


10
– c’) và minconf 

15

sup(l )
sup(l )

, do đó lu ật ( – c’)
sup(l  c) sup(l  c ' )

Output: một FP-tree được chèn.
Method: gọi merge-insert (items train, node, support)

c’ cũng thỏa minconf.

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

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


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

Thuật tố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.

N. count = N.count + num;
Else

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

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

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

N.count = num;

chi phí lớn:

N.parent = T;

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

nếu cứ 10 tập 1-mục phổ biến thì thuật tốn Apriori sẽ cần sinh
7

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

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


3.2.Thuật toán FP-growth

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

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

l

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

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

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

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

100

nó phải sinh ra tổng số 2

 10

30

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


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

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

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

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

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

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 tốn Apriori chỉ thích hợp cho

* Cơ sở có điều kiện của mẫu p (CPB) thoả mãn:


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

11
các CSDL thưa (sparse), với các CSDL dày (dense) thì thuật
tốn thực hiện kém hiệu quả hơn.
Thuật tố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

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

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

n = leaf’s count ;

chia sẻ với các nút xuất hiện ít hơn. CSDL lớn được nén chặt

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

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

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


duyệt qua CSDL.

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)

Thuật tố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.

3.1.3.Thuật toán Merge-Insert

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

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

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

Input: dãy dữ liệu, FP-tree node, count của đối tượng
cuối cùng trong dã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


12


13

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

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

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

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

Output: Cây FP-Tree

link chỉ đến null.

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

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.

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)


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

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
}

N.count = N.count + 1;

3. while(n>1) do

Else
{

Tạo nút mới N;

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

N.item-name = p;

{

N.count = 1 ;


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

treej+1, int(j/2)+1 )

n = n / 2;

}

T.child = N ;

4. Tạo bảng head và liên kết các node giống nhau cho
N.node-link = H[p].Node_link;
H[p].Node_link = N;
}

FP-tree1;
5. Return FP-tree1;
3.1.2 Thuật toán FP-Merge



×