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

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



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

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
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 = {i
1
, i
2
, …, i
m
} 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={i
1
, i
2
,…,i
k
} 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 );
}
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 (XY) =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:
8
Support (XY)  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, L
k
={x
1
, x
2,…,
x
k

}
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, C
k
.
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
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 a
i
trong bảng Header của Tree
{
Tạo β = a
i
 α ;
β.support = a
i
.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(
AB
ABCD
ABC
ABCD
 <
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

)'sup(
)sup(
)sup(
)sup(
cl
l
cl
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ứ 10
4
tập 1-mục phổ biến thì thuật toán Apriori sẽ cần sinh
ra hơn 10
7
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 (2
l
-2 ) các mẫu
phổ biến tiềm năng. Vớ dụ l=100, chẳng hạn là {a
1
,a
2
, ,a
100
},
nó phải sinh ra tổng số 2
100
 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
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:
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
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

×