Tải bản đầy đủ (.doc) (23 trang)

PHƯƠNG PHÁP KHAI PHÁ LUẬT KẾT HỢP SONG SONG TRONG KHAI PHÁ DỮ LIỆU

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 (930.78 KB, 23 trang )

TRƯỜNG
ĐẠI
HỌC BÁCH
TIỂU
LUẬN
MÔN KHOA
HỌC HÀ NỘI
VIỆN CÔNG NGHỆ THÔNG TIN

TRÍ TUỆ NHÂN TẠO NÂNG CAO
Nội dung:

Phương pháp học tăng cường và ứng dụng
TIỂU LUẬN MÔN HỌC
Giáo viên hướng dẫn:

TS. Nguyễn Thanh Thủy

TRÍ TUỆ
NHÂN
NÂNG
Nhóm học
viên thực TẠO
hiện: Nguyễn
Trung CAO
Kiên
Nội dung:

Lớp cao học CNTT

: 10B CNTT-HV



PHƯƠNG PHÁP KHAI PHÁ LUẬT KẾT HỢP SONG SONG
TRONG KHAI PHÁ DỮ LIỆU

Giáo viên hướng dẫn

: GS.TS. Nguyễn Thanh Thủy

Nhóm học viên thực hiện : Đinh Thái Sơn
Phạm Đức Thọ
Lớp cao học CNTT

: 10B CNTT-HV

PHÚ THỌ 12-2010


PHƯƠNG PHÁP KHAI PHÁ LUẬT KẾT HỢP SONG SONG
TRONG KHAI PHÁ DỮ LIỆU
I.Các thuật toán song song
1.1. Nguyên lý thiết kế thuật toán song song
Những thuật toán, trong đó có một số thao tác có thể thực hiện đồng thời
được gọi là thuật toán song song. Tổng quát hơn, thuật toán song song là một
các tập tiến trình hoặc các tác vụ có thể thực hiện đồng thời và có thể trao đổi
dữ liệu với nhau để kết hợp cùng giải một bài toán đặt ra . Có năm nguyên lý
chính trong việc thiết kế thuật toán song song:
1
1. Các nguyên lý lập lịch: Giảm thiểu các bộ xử lý sử dụng trong thuật
toán sao cho thời gian tính toán không tăng (xét theo khía cạnh độ phức tạp).
2

2. Nguyên lý hình ống: Nguyên lý này được áp dụng khi bài toán xuất
hiện một dãy các thao tác {T1, T2,…, Tn}, trong đó Ti+1 thực hiện sau khi Ti kết
thúc.
3
3. Nguyên lý chia để trị: Chia bài toán thành những phần nhỏ hơn, tương
đối độc lập với nhau và giải quyết chúng một cách song song.
4
4. Nguyên lý đồ thị phụ thuộc dữ liệu: Phân tích mối quan hệ dữ liệu
trong tính toán để xây dựng đồ thị phụ thuộc dữ liệu và dựa vào đó để xây dựng
thuật toán song song.
5
5. Nguyên lý điều khiển tranh đua: Nếu hai tiến trình cùng muốn truy
cập vào cùng một dữ liệu thì chúng phải tương tranh với nhau, nghĩa là chúng
có thể cản trở lẫn nhau.
Ngoài ra, khi thiết kế thuật toán song song cần quan tâm đến các vấn đề sau:
- Hiệu quả thực hiện của thuật toán song song có thể rất khác nhau, mà
yếu tố quan trọng nhất ảnh hưởng tới độ phức tạp tính toán là cấu hình tôpô liên
kết mạng của các đơn vị xử lý.
- Thuật toán song song phải được thiết kế dựa trên những kiến thức về
kiến trúc máy tính, ngôn ngữ lập trình song song và các phương pháp tính toán.
1.2. Hướng tiếp cận chính trong thiết kế thuật toán khai phá luật kết hợp
song song
Hai hướng tiếp cận chính trong thiết kế thuật toán khai phá luật kết hợp song
song đó là:
(1) Mô hình song song dữ liệu và
(2) Mô hình song song thao tác.
1.2.1. Mô hình song song dữ liệu


Hình 1.1. Mô hình song song dữ liệu

Mô hình song song dữ liệu thực thi thao tác giống nhau hay thực thi chỉ lệnh
trên một tập con dữ liệu cùng một thời điểm. Tất cả các bộ xử lý thực hiện
chương trình giống nhau. Tuy nhiên, trong chương trình này, ta có thể sử dụng
cấu trúc điều khiển if – then – else để chỉ định lệnh nào được thực thi với bộ
xử lý nào, tức là một số phần chương trình chỉ được thực hiện trên một hoặc
một vài bộ xử lý. Trong mô hình song song dữ liệu, dữ liệu cần phải phân chia
thành các tập con dữ liệu để tăng tốc đạt được bằng cách giảm khối lượng dữ
liệu cần được xử lý trên mỗi bộ xử lý. Thuật toán được thiết kế dựa vào mô
hình song song dữ liệu dễ dàng thực thi, ít phụ thuộc vào kiến trúc máy tính
song song và năng suất cao. Tuy nhiên, nó cũng gặp khó khăn trong việc cân
bằng tải công việc do sự chênh lệch dữ liệu.
1.2.2. Mô hình song song thao tác
Trong mô hình song song thao tác, mỗi bộ xử lý thực thi tập chỉ thị khác
nhau. Các chương trình phối hợp với nhau để hoàn thành cùng một mục tiêu. Ý
tưởng của mô hình song song giao tác là giảm độ phức tạp giao tác bằng cách
chia thao tác thành các thao tác nhỏ hơn để thực thi. Tập dữ liệu hoạt động
trong mỗi chương trình không nhất thiết giống nhau. Các thuật toán song song
được thiết kế dựa vào mô hình song song thao tác có độ phức tạp tính toán nhỏ
hơn so với các thuật toán tuần tự do thao tác được chia thành những thao tác
nhỏ hơn để dễ xử lý. Tuy nhiên, việc thực thi các thuật toán này lại phụ thuộc
vào kiến trúc máy tính song song và mang tính chuyên dụng.
1.3. Một số thuật toán khai phá luật kết hợp song song
1.3.1 Thuật toán Count Distribution (CD)
Thuật toán sử dụng kiến trúc không chia sẻ, mỗi bộ xử lý có một bộ xử
lý chính và bộ nhớ phụ riêng. Các bộ xử lý này được kết nối với nhau bởi một
mạng truyền thông và có thể được truyền thông tin cho nhau bằng việc truyền
thông điệp. Dựa trên mô hình song song dữ liệu, dữ liệu được phân hoạch cho
các bộ xử lý, mỗi bộ xử lý thực thi công việc giống như thuật toán Apriori tuần
tự nhưng thông tin bởi các bộ xử lý trên các phân hoạch dữ liệu của nó. Số đếm
hỗ trợ tổng thể được thiết lập thông qua môi trường truyền thông điệp MPI.



Hình 1.2 Sơ đồ thuật toán Count Distribution
Các kí hiệu sử dụng trong thuật toán
I: Tập các mục phân biệt trong CSDL giao dịch D
D1, D2,…, Dp: Các phân hoạch CSDL, p là số các bộ xử lý
minsup: Độ hỗ trợ tối thiểu
L: Tập các tập mục phổ biến
Nội dung thuật toán:
Dữ liệu vào: I, minsup, D1, D2,..., Dp
Ra: L
Phương pháp:
C1 = I;
for (k=1; Ck ≠ φ; k++) do begin
// bước 1: Tính các số đếm hỗ trợ cục bộ
count(Ck, Di); // bộ xử lý thứ i
// bước 2: Trao đổi các số đếm hỗ trợ với các bộ xử lý khác để
// thu được các số đếm hỗ trợ trong D
forall tập mục X ∈ Ck do begin
p
X.count = ∑ j =1 Xj.Count ;
end;
// bước 3: Xác định các tập mục phổ biến và sinh các tập mục
// ứng viên Ck+1
Lk = {c c ∈ Ck |c,count ≥ minsup *| D ∪ D2 ∪ … ∪ Dp};
Ck+1 = apriori_gen(Lk);
end;
return L = L ∪ L2 ∪ … ∪ Lk;
Giải thích thuật toán
Trong thuật toán CD,CSDL D được phân hoạch thành {D1, D2,…, Dp} và phân

bố lần lượt cho các bộ xử lý Pi (1 ≤ i ≤ p). Thuật toán gồm 3 bước cơ bản sau:
Bước 1: Mỗi bộ xử lý Pi quét phân hoạch CSDL cụ bộ Di để tính các số
đếm hỗ trợ cục bộ cho các tập mục ứng cử C k.


Bước 2: Mỗi bộ xử lý trao đổi các số đếm hỗ trợ cục bộ của các tập mục
ứng cử trong CSDL D bằng cách sử dụng lệnh MPI_Allreduce trong MPI.
Bước 3: Các tập mục phổ biến tổng thể Lk được xác định dựa vào
ngưỡng hỗ trợ minsup và các tập mục ứng cử Ck+1 được sinh ra từ Lk bằng cách
áp dụng thuật toán apriori_gen() trên mỗi bộ xử lý một cách độc lập. Thuật
toán CD lặp lại bước 1 → 3 cho đến khi không còn tập mục ứng cử nào được
sinh ra.
Ví dụ: Cho CSDL giao dịch D, minsup = 33%. Phân hoạch D cho 3 bộ xử lý
P0, P1 và P2, mỗi bộ xử lý có hai giao dịch (bảng a), k chỉ số vòng lặp.

Hình 1.3. Phát hiện các tập mục phổ biến bởi thuật toán song song CD
1.3.2. Thuật toán Data Distribution (DD)
Trong thuật toán DD, CSDL D được phân hoạch thành {D1, D2,…, Dp}
nên mỗi bộ xử lý làm việc với một tập dữ liệu không đầy đủ, do đó việc trao
đổi dữ liệu giữa các bộ xử lý là cần thiết. Ngoài ra, các tập mục ứng cử cũng
được phân hoạch và phân bố cho tất cả các bộ xử lý, mỗi bộ xử lý làm việc với
tập mục ứng cử Ci khác nhau.

Hình 1.4. Sơ đồ mô tả thuật toán Data Distribution


Nội dung thuật toán:
Dữ liệu vào: I, minsup, D1, D2,…, Dp
Dữ liệu ra: L
Phương pháp:

C 1j =1/p * | I |;
for (k=1; ≠ φ; k++) do begin
// bước 1: tính các số đếm hỗ trợ cục bộ
j
count(C k , Di); // bộ xử lý thứ i
// bước 2: truyền các phân hoạch cơ sở dữ liệu cục bộ đến các bộ
// xử lý khác, nhận các CSDL cục bộ từ các bộ xử lý truyền đến,
// quét Dj (1 ≤ i ≤ p, j ≠ i) để tính số đếm hỗ trợ tổng thể
broadcast(Dj);
for (j=1; (j≤ p and j ≠ i); j++) do begin
receive(Dj); //từ bộ xử lý j
count(C kj , Dj); end;
i
i
// bước 3: xác định các tập mục phổ biến L k từ C k ,
// trao đổi với các bộ xử lý để thu được các tập mục phổ biến L k.
// sinh tập mục ứng cử Ck+1
// phân hoạch Ck+1 và phân bố cho tất cả các bộ xử lý
L ik = {c | c ∈ C ik | c.count ≥ s * |D1 ∪ D2 ∪ … ∪ Dp|};
p

Lk = 

L ik ;

i =1

Ck+1 = apriori_gen(Lk);
i
C k +1 = 1/p * | Ck+1|; // phân hoạch lại các tập mục ứng viên

end;
return L = L1 ∪ L2 ∪ … ∪ Lk;
Thuật toán Data Disbution có 3 bước cơ bản sau:
Bước 1: Mỗi bộ xử lý quét phân hoạch CSDL cục bộ để tính các số đếm
hỗ trợ cục bộ của các tập mục ứng cử được phân bổ cho nó.
Bước 2: Mỗi bộ xử lý truyền phân hoạch CSDL của nó đến các bộ xử lý
khác và nhận các phân hoạch CSDL từ các bộ xử lý khác truyền đến, Sau đó
quét các phân hoạch CSDL nhận được, để tính các số đếm hỗ trợ tổng thể của
các tập mục ứng cử trong CSDL D.
Bước 3: Mỗi bộ xử lý các định các tập mục phổ biến từ phân hoạch tập
mục ứng cử của nó, trao đổi với các bộ xử lý khác để nhận được tất cả các tập
mục phổ biến Lk và sau đó sinh ra tập mục ứng cử Ck+1 từ Lk, từ phân hoạch
Ck+1 và phân bố các phân hoạch ứng cử đó cho tất cả các bộ lý. Thuật toán DD
lặp lại bước 1 → 3 cho đến khi không còn tập mục ứng cử nào được sinh ra.


Phân bố dữ liệu cục bộ của thuật toán
Thuật toán thông báo đến p-1 hàm nhận đồng bộ MPI để nhận dữ liệu từ
các bộ xử lý. Nếu dữ liệu là tập mục được nhận từ bộ xử lý khác, trước tiên bộ
xử lý sẽ xử lý dữ liệu nhận được trước khi xử lý dữ liệu cục bộ của nó. Điều
này tránh tắc nghẽn dữ liệu trong đường truyền thông hay bộ đệm. Nếu không
có dữ liệu được nhận, bộ xử lý sẽ đọc một tập mục (giao dịch) từ dữ liệu cục bộ
và cập nhật số đếm hỗ trợ cho tập mục ứng cử. Khi tất cả dữ liệu đều được sử
dụng để cập nhật tập mục ứng cử cục bộ, giai đoạn tiếp theo sẽ tìm tập mục ứng
cử cho xử lý tiếp theo.
Ví dụ: Cho CSDL giao dịch D, minsup = 33%. Phân hoạch D cho 3 bộ xử lý
P0, P1 và P2, mỗi bộ xử lý có hai giao dịch (bảng a), k chỉ số vòng lặp.
Thuật toán DD thực hiện (theo thứ tự a, b, c, d, e, f, g, h, i) như sau:

Hình 1.5: Sơ đồ luồng thuật toán Data Distribution

1.3.3. Thuật toán Candidate Distribution
Thuật toán Candidate Distribution thực hiện phân hoạch cả dữ liệu lẫn
các tập mục ứng cử. Theo cách này, mỗi bộ xử lý có thể xử lý độc lập. Trong l
giai đoạn ( l là giá trị heuristic), thuật toán này chia các tập mục phổ biến L l −1
cho các bộ xử lý sao cho mỗi bộ xử lý Pi có thể sinh ra một C im (m ≥l ) duy nhất
độc lập với các bộ xử lý khác (C im ∩ C mj = φ, i ≠ j). Trong cùng một thời điểm,
dữ liệu được phân chia lại sao cho một bộ xử lý có thể sinh các tập mục ứng cử
trong một cách độc lập với tất cả các bộ xử lý khác. Tùy vào tính tối ưu của
việc phân chia tập mục, một số phần cơ sở dữ liệu có thể có các bản sao trên
một số bộ xử lý.


Hình 1.6: Phát hiện các tập mục phổ biến bởi thuật toán song song
Nội dung thuật toán
Giai đoạn k Giai đoạn k = 1:
1) Phân hoạch Lk+1 cho các bộ xử lý sao cho các tập Lk-1 cân bằng nhau.
2) Bộ xử lý Pi sinh ra C kj từ phân hoạch Lk-1 đã gán cho nó. Lưu ý, Pi có


thể truy xuất đến Lk-1 đầy đủ và do đó có thể sử dụng phương pháp cắt tỉa
chuẩn khi sinh ra C kj trong giai đoạn này.
j
3) Pi tính các số đếm hỗ trợ tổng thể cho các tập mục ứng cử trong C k
và CSDL được phân hoạch lại thành các Di tại thời điểm này.
4) Sau khi Pi đã xử lý tất cả các dữ liệu cục bộ của nó và mọi dữ liệu
nhận được từ các bộ xử lý khác. Các L kj này cần cho việc cắt tỉa C kj +1 trong
bước cắt tỉa sinh tập ứng cử.
j
j

5) Bộ xử lý Pi sinh L k từ C k và truyền dị bộ đến N-1 bộ xử lý khác
bằng cách sử dụng N-1 phép chuyển dị bộ.
Giai đoạn k >l :
1) Bộ xử lý Pi tập hợp tất cả các tập mục phổ biến mà các bộ xử lý khác
chuyển đến nó. Chúng được sử dụng trong bước cắt tỉa khi sinh tập mục ứng cử
nhưng không được sử dụng trong bước kết nối. Các tập mục đã nhận được từ
bộ xử lý Pj sẽ có độ dài bằng k-1 hoặc nhỏ hơn k-1 (nếu bộ xử lý P j chậm hơn)
hoặc lớn hơn k-1 (nếu bộ xử lý Pj nhanh hơn). Bộ xử lý Pi lưu giữ một phần
trong các tập mục phổ biến được chuyển đến cho mỗi bộ xử lý P j bởi nó. Các bộ
đệm dùng để nhận mỗi tập mục phổ biến sẽ phản hồi lại sau khi xử lý.
j
2) Pi sinh ra C kj bằng cách sử dụng L k −1 cục bộ. Ta biết rằng Pi có thể
j
không nhận được L k −1 từ tất cả các bộ xử lý khác, nên Pi phải thận trọng trong
lúc cắt tỉa. Nó cần phải nhận biết được một tập mục (một tập con k-1-itemset
của một tập mục ứng cử) không có mặt trong bất kỳ nào với một tập mục có
j
mặt trong một số L k −1 nhưng tập này chưa nhận được bởi bộ xử lý Pi. Pi nhận
j
biết bằng cách khảo sát L l −1 sử dụng phần tiền tố với độ dài 1-1 của các tập
j
mục cần xem xét, bằng cách tìm kiếm bộ xử lý nào trả lời và kiểm tra nếu L k −1
nhận được từ bộ xử lý này.
3) Pi thiết lập một giai đoạn trên Di và đếm. Sau đó Pi sinh L ik từ C ik và
truyền dị bộ L ik đến các bộ xử lý khác bằng N-1 phép chuyển dị bộ.
Phân hoạch CSDL
Có thể mô tả thuật toán phân hoạch Lk qua ví dụ sau:
Cho L3 là {ABC, ABD, ABE, ACD, ACE, BCD, BCE, BDE, CDE}.
Sau đó: L4 = {ABCD, ABCE, ABDE, ACDE, BCDE}
L5 = {ABCDE}; L6 = {}

Để ý đến tập con của L3, Z = {ABC, ABD, ABE} có phần tiền tố chung là AB
và các tập ứng cử ABCD, ABCE, ABDE, ABCDE cũng có phần tiền tố là AB.
Hàm apriori_gen() sinh ra các tập mục ứng cử này bằng cách nối các item của
Z. Do đó, giả sử rằng, các mục trong tập mục đã được sắp thứ tự, ta có thể phân
chia các tập mục trong L3 dựa vào phần tiền tố chung có độ dài (k-1). Đảm bảo
rằng không có một phân hoạch nào được gán cho nhiều hơn một bộ xử lý có thể
sinh ra các tập mục ứng cử một cách độc lập (chưa tính đến bước cắt tỉa). Việc


phân chia lại CSDL giao dịch theo cách: Bất kỳ một bó giao dịch nào mà hỗ trợ
cho một tập mục chứa trong Lk mà tập mục đó đã được gán cho một bộ xử lý
thì bó giao dịch đó sẽ được sao chép sang ổ đĩa cục bộ của bộ xử lý đó. Chính
vì vậy mà các bộ xử lý có thể xử lý toàn bộ dị bội.
1.3.4. Thuật toán song song Fp-Growth
Thuật toán này, ta xây dựng một số Fp-tree cục bộ trong môi trường bộ
nhớ phân tán và sử dụng mô hình “Chủ - Tớ”. Dựa trên chiến lược lập lịch làm
việc động trong giai đoạn hợp nhất các mẫu điều kiện cơ sở và giai đoạn khai
phá để cân bằng khối lượng công việc trong quá trình thực thi.
Khai phá tập mục song song
Thuật toán khai phá mẫu phổ biến song song gồm hai nhiệm vụ chính sau:
(1) Xây dựng song song FP-Tree Giai đoạn đầu của thuật toán khai phá
song song là xây dựng các FP-Tree đồng thời trên mỗi bộ xử lý. Tương tự như
thuật toán CD, ta chia CSDL giao dịch D cho P bộ xử lý. Đảm bảo rằng mỗi bộ
xử lý có N/P giao dịch (DN/P), N và P lần lượt là tổng số giao dịch trong CSDL
và số các bộ xử lý. Việc phân hoạch CSDL D cho P bộ xử lý được thực hiện
một cách ngẫu nhiên. Sau khi phân hoạch dữ liệu, công việc tiếp theo là xác
định 1- itemset phổ biến (F1-itemset) trước khi xây dựng một FP-Tree cục bộ, Mỗi
bộ xử lý tính toán đếm hỗ trợ (flocal(i)) của mỗi mục i bằng cách quét phân
hoạch CSDL cục bộ DN/P, tất cả các bộ xử lý đếm flocal(i) cục bộ đến bộ xử lý
Chủ. Bộ xử lý Chủ tập hợp tất cả các mục và kết hợp chúng lại để sinh số đếm

hỗ trợ tổng thể (fglocal(i)). Sau đó, các mục có hỗ trợ nhỏ hơn ngưỡng hỗ trợ
minsup được lược bỏ. Tập các 1-itemset phổ biến thu được sẽ được truyền cho
tất cả các bộ xử lý trong nhóm. Bước tiếp theo là xây dựng các FP-Tree cục bộ,
Mỗi bộ xử lý quét CSDL cục bộ DN/P của nó và chèn các mục phổ biến vào
trong cây FP-Tree, Việc xây dựng FP-Tree bởi mỗi bộ xử lý với CSDL cục bộ
của nó giống như trong thuật toán tuần tự .
Ví dụ: Cho một CSDL với 12 giao dịch và 10 mục (0, 1,…, 9) như trong
hình 1.7. CSDL D được phân hoạch cho 3 bộ xử lý P0, P1, P2. Mỗi bộ xử lý có
số giao dịch bằng nhau. Với ngưỡng hỗ trợ là 6, ta có thể xác định nhanh số
đếm hỗ trợ cho các mục như sau {3:11, 8:9, 5:8, 6:7, 0:7, 7:7}. Hình 1.7 chỉ ra
các FP-Tree cục bộ ban đầu được xây dựng bởi P0, P1, P2
.


Hình 1.7: Các phân hoạch CSDL và các FP-Tree cục bộ ban đầu
(2) Khai phá song song và sinh tập mục phổ biến
Phương pháp khai phá bao gồm một số giai đoạn sau: Trong giai đoạn
đầu, ta xét toàn bộ FP-Tree và tạo ra các mẫu điều kiện cơ sở. Trong giai đoạn
tiếp theo, ta tập hợp các mẫu điều kiện cơ sở từ các bộ xử lý để xây dựng FPTree điều kiện cơ sở (CFPT) cho mỗi mục phổ biến. Giai đoạn cuối cùng là
thực thi việc khai phá bằng cách xây dựng đệ qui các mẫu điều kiện cơ sở và
các CFPTs cho đến khi nó sinh tất cả các tập mục phổ biến.
Xây dựng các mẫu điều kiện cơ sở
Mỗi bộ xử lý thăm bảng tiêu đề (1-itemset phổ biến cục bộ) của nó theo
hướng từ trên xuống và tạo ra các mẫu điều kiện cơ sở cho mỗi mục phổ biến.
Quá trình xây dựng các mẫu điều kiện cơ sở được minh họa trong bảng 1.8.
Xây dựng FP-Tree điều kiện cơ sở
Khi tất cả các mẫu điều kiện cơ sở đã tìm được, các FP-Tree điều kiện
được xây dựng bằng cách hợp nhất các mẫu điều kiện cơ sở. Với mỗi mục phổ
biến, các mẫu điều kiện cơ sở được hợp nhất sao cho các số đếm hỗ trợ của các
mục giống nhau được tăng lên để tính số đếm hỗ trợ tổng thể. Nếu số đếm hỗ

trợ tổng thể của một mục mà nhỏ hơn ngưỡng hỗ trợ tối thiểu, mục đó sẽ được
lược bỏ khỏi FP-Tree điều kiện. Quá trình này được minh họa trong bảng 1.8
với ngưỡng hỗ trợ tối thiểu là 6.0.
Để sinh các FP-Tree điều kiện ta sử dụng mô hình Chủ - Tớ. Bộ xử lý Chủ
chuyển các mục cần được khai phá cho các bộ xử lý Tớ. Các bộ xử lý Tớ sinh
các FP-Tree điều kiện cho các mục đó, khi bộ xử lý Tớ hoàn thành việc sinh
FP-Tree điều kiện, nó chuyển một mã thông báo đến bộ xử lý Chủ yêu cầu mục
kế tiếp. Nhiệm vụ của bộ xử lý chủ là lắng nghe các yêu cầu đến từ bất kì bộ xử
lý Tớ. Nó trả lời bằng cách chuyển mục kế tiếp đến bộ xử lý Tớ đó. Khi mà bộ
xử lý Tớ nhận mục kế tiếp từ bộ xử lý Chủ chuyển đến, nó sẽ bắt đầu sinh
CFPT cho mục này. Chi phí truyền thông trong thuật toán này tương đối thấp vì
mỗi bộ xử lý chỉ chuyển mã thông báo. Hơn nữa, khối lượng công việc là cân
bằng giữa các bộ xử lý trong nhóm do mỗi khi một bộ xử lý Tớ nào đó hoàn


thành nhiệm vụ nó nhận một nhiệm vụ khác ngay lập tức.
Items

Các mẫu điều kiện cơ sở

Các FP-Tree điều kiện

P0
7

P1
983:10659
83:1063:1

P2

065983:
165:1

Trước khi lượt bỏ
Sau khi lượt bỏ
6 5 9 8 3 : 1 0 9 8 (3:6, 8:5, 9:5,
(3 : 6)
3:1
5:4, 6:5, 0:4)

0

65983:16
3:1

593:165
983:1

83:165983:
1983:1

(3:7, 8:5, 9: 5,
5:4, 6:4 )

(3 : 7)

6

5983:23:1


5983:1
5:1

5983:2

(3:6, 8:5, 9:5,
5:6)

(3:6, 5:6)

5

983:2

93:198
3:2

983:2

(3:7, 8:6, 9:7)

(3:7, 8:6, 9:7)

9

83:3

3:183:2

83:3


(3:9, 8:8)

(3:9, 8:8)

8
3

3:3


3:2


3:4


(3 : 9)


(3 : 9)


Bảng 1.8: Các mẫu điều kiện cơ sở và các FP-Tree điều kiện cơ sở
Sinh các tập mục phổ biến
Sinh các tập mục phổ biến bằng cách xây dựng lầm lượt các mẫu điều
kiện cơ sở và các cây điều kiện FP-Tree bởi mỗi bộ xử lý. Khi một nhánh của
FP-Tree điều kiện được xây dựng, ta thu được các tập hợp các mục khả năng
như trong thuật toán FP-Growth tuần tự .Mô hình song song được áp dụng là
mô hình Chủ - Tớ. Bộ xử lý Chủ chuyển các mục cơ sở cần được khai phá cho

các mục này và sinh các tập mục phổ biến. Trong mô hình này, khi một bộ xử
lý Tớ hoàn thành nhiệm vụ, nó nhận được nhiệm vụ khác ngay lập tức, điều này
làm cho các bộ xử lý bận cho đến khi kết thúc quá trình khai phá. Ở đây, việc
cân đối khối lượng công việc xảy ra trong thời gian thực thi (runtime). Mô hình
Chủ - Tớ được duy trì cho đến khi tất cả các tập mục phổ biến được sinh ra ứng
với mỗi mục phổ biến trong F1-itemset. Sau đó tất cả các bộ xử lý Tớ này chuyển
các tập mục phổ biến mà nó sinh ra đến bộ xử lý Chủ, giai đoạn khai phá kết
thúc.
Tương ứng với mỗi mục i ∈ F1-itemset, các tập mục phổ biến được sinh đệ
quy bởi các mẫu điều kiện cơ sở và các FP-Tree điều kiện được chỉ ra trong
hình 1.9. Ở đây, ta có 3 bộ xử lý và vì thế 2 bộ xử lý Tớ P1, P2 sinh tập mục phổ
biến; Hình 1.9 cũng chỉ ra các tập mục phổ biến của CSDL D.


Hình1.9: Quá trình sinh tập phổ biến bởi 2 bộ xử lý P1 và P2
Nội dung thuật toán FP-Growth
Vào: Các phân hoạch CSDL DN/P và minsup.
Ra: Tập các mục phổ biến
Phương pháp:
1) Quét CSDL cục bộ DN/P;
2) Tính số đếm hỗ trợ cục bộ của mỗi mục i f local(i);
3) if (Bộ xử lý chủ) then
4)
for (mỗi Bộ xử lý Tớ) do
5)
Nhận flocal(i);
6)
Gán F1-itemset = {i| ∑flocal(i); ≥ minsup, ∀ i} và truyền F1-itemset
đến các Bộ xử lý Tớ
7) else Chuyển flocal(i), ∀ i đến Bộ xử lý chủ và Nhận 1-itemset phổ

biến F1-itemset;
8) Xây dựng FP-Tree cục bộ FPTlocal của các mục trong F1-itemset bằng
cách quét DN/P cục bộ.
9)Duyệt toàn bộ FPTlocal và sinh ra các mẫu điều kiện cơ sở và truyền
đến tất cả các bộ xử lý;
10)if (Bộ xử lý chủ) then begin
11)
for(mỗi mục phổ biến i ∈ F1-itemset) do // Lập lịch tạo ra các
CFPTs
12)
Nhận yêu cầu Bộ xử lý Tớ và chuyển mục i;
13)
for(mỗi mục phổ biến i ∈ F1-itemset) do // Lập lịch cho việc khai
phá
14)
Nhận yêu cầu Bộ xử lý Tớ và chuyển mục i cần được


khai phá;
15)
for(mỗi Bộ xử lý Tớ) do
16)
Tập hợp các tập mục phổ biến và xuất tất cả các tập mục
phổ biến;
17) end
18) else do //hợp nhất các mẫu điều kiện cơ sở
19)
Yêu cầu mục i tiếp theo và sinh FP-Tree điều kiện CFPTi
cho mục i;
20) until (hết các mục phổ biến);

21) Truyền CFPTs đến tất cả các Bộ xử lý (từ Bộ xử lý Chủ) và nhận tất
cả các CFPTs;
22) do
23)
Yêu cầu mục i tiếp theo và gọi FP-Growth-OneItem (CFPTs,
null i);
24) until (hết các mục phổ biến);
25) Chuyển các tập mục phổ biến đến Bộ xử lý Chủ; Thủ tục con FPGrowth-OneItem (Tree, α, i)
Phương pháp:
1) if(Tree chứa đường dẫn đơn) and (i ≠ null) then
2)
Sinh tập mục có độ hỗ trợ ≥ minsup đối với mỗi tổ hợp các nút
trong đường dẫn
3) else if(i ≠ null) then
4)
Sinh tập mục β = i ∪ α và Xây dựng các mẫu điều kiện cơ sở
của β và CFPTβ
5) else for mỗi i trong bảng tiêu đề của Cây
6)
Sinh tập mục β = i ∪ α và Xây dựng các mẫu điều kiện cơ
sở của β và CFPTβ
7) if CFPTβ ≠ ∅ then FP-Growth-OneItem(CFPTβ, β, null);
3.3.5 Thuật toán song song Eclat
1) Nhóm tập mục và giao dịch
Phương pháp để nhóm các tập mục phổ biến có liên quan với
nhau bằng cách sử dụng lược đồ phân chia lớp tương đương. Mỗi lớp tương
đương chứa tập các mục ứng cử quan hệ tương đương với nhau. Bên cạnh, ta
cũng sử dụng kỹ thuật tổ chức CSDL theo chiều dọc để nhóm các giao dịch có
liên quan với nhau.
Phân lớp tương đương

Gọi Lk là tập các itemset phổ biến. Không mất tính tổng quát, giả sử L k
được sắp xếp theo thứ tự từ điển. Ta có thể phân hoạch các tập mục trong L k
thành các lớp tương đương như sau: Nếu các phần tử trong L k có k – 1 thành
viên đầu tiên giống nhau thì chúng thuộc cùng một lớp. Ký hiệu: Lớp tương
đương chứa a là Sa = [a].


Trong phạm vi một lớp, ta sinh k-itemset ứng cử bằng cách kết nối tất cả
| Si |(| Si |-1)/2 cặp với tiền tố là định danh của lớp. Trong đó: |S i| là số phần tử
của lớp có định danh là i.
Các k- itemset ứng cử ứng cử được sinh ta từ các lớp khác nhau sẽ độc
lập với nhau.
Tổ chức cơ sở dữ liệu
Thuật toán Eclat sử dụng cách tổ chức dữ liệu theo chiều dọc. Với các tổ
chức dữ liệu theo chiều dọc, một CSDL gồm một danh sách các mục. Mỗi mục
xác định một danh sách các định danh của giao dịch có chứa mục đó, ký hiệu
tid-List. Những ưu điểm của cách tổ chức theo chiều dọc:
- Nếu tid-List đã được sắp theo thứ tự tăng dần thì độ hỗ trợ của
k-itemset ứng cử có thể đã được tính toán bởi phép lấy giao các tid-List của hai
(k-1)-subset bất kỳ, Với cách tổ chức này, thuật toán không cần phải duy trì cấu
trúc dữ liệu phức tạp, không như cây băm và cũng không phải sinh ra tất cả các
k-subset của các giao dịch hoặc thực hiện các thao tác tìm kiếm trên cây băm.
- Các tid-List chứa tất cả các thông tin liên quan về một tập mục, vì vậy,
khi tính độ hỗ trợ cho một tập mục không cần phải quét toàn bộ CSDL. Vì tất
cả các thông tin về một lớp tương đương là được nhóm cùng nhau nên có thể
sinh ra các tập mục phổ biến trước khi chuyển sang lớp tiếp theo.
Ví dụ: Giả sử tid-List của AB, AC là: T(AB) = {1, 5, 7, 10, 50}; T(AC)
= {1, 4, 7, 10, 11} Thì T(AB) ∩ T(AC) sẽ cho T(ABC) = {1, 7, 10} Ta có thể
tính ngay độ hỗ trợ bằng cách đếm số phần tử trong tid-List, nếu số phần tử của
tid-List lớn hơn hoặc bằng độ hỗ trợ tối thiểu thì chèn ABC vào L 3.

2) Thuật toán song song Eclat
Nội dung thuật toán
Begin
/* Pha khởi tạo*/
1
1) Duyệt qua các phân hoạch CSDL cục bộ
2
2) Tính toán số đếm hỗ trợ cục bộ cho tất cả các 2-itemset
3
3) Xây dựng số đếm hỗ trợ tổng thể cho các tập mục chứa trong
L2
/*Pha biến đổi*/
4) Phân hoạch L2 thành các lớp tương đương
5) Lập lịch L2 trên tập các bộ xử lý
6) Tổ chức phân hoạch dữ liệu cục bộ theo chiều dọc
7) Truyền các tid-List có liên quan tới các bộ xử lý khác
8) L2 cục bộ = nhận các tid-List từ các bộ xử lý khác
/*Pha đồng thời*/
9) forparallel mỗi lớp tương E2 trong L2 cục bộ
Compute_Frequent(E2)


/*Pha rút gọn*/
10) Tập hợp các kết quả đưa ra các kết hợp
end.
Giải thích thuật toán
1) Phần khởi tạo
Pha khởi tạo bao gồm việc tính toán tất cả các 2-itemset phổ biến trong
CSDL cần khai phá. Ta không cần tính số đếm hỗ trợ của các 1-itemset vì việc
xác định số đếm hỗ trợ của 2-itemset có thể đạt được chỉ trong một lần duyệt

CSDL.
Để tính toán cho các 2-itemset, trên mỗi bộ xử lý sử dụng một mảng cục
bộ và tiến hành chỉ số hóa các mục trong CSDL theo cả hai chiều. Mặt khác,
mỗi bộ xử lý tính số đếm hỗ trợ cục bộ cho các 2-itemset và thực hiện phép lấy
tổng rút gọn (sum-reduction) của tất cả các bộ xử lý để xây dựng các số đếm hỗ
trợ tổng thể. Kết thúc pha khởi tạo, tất cả các bộ xử lý đều có những số đếm hỗ
trợ tổng thể của tất cả các 2-itemset phổ biến L 2 trong CSDL.
2) Pha biến đổi gồm 2 bước
Bước 1: Đầu tiên L2 được phân hoạch thành các lớp tương đương.
Sau đó các lớp tương đương này được gán cho các bộ xử lý sao cho cân bằng
nhau.
Bước 2: CSDL đã được biến đổi từ định dạng theo chiều ngang
thành chiều dọc và được phân phối lại. Do đó, trong bộ nhớ cục bộ của mỗi bộ
xử lý, các tid-List của tất cả các 2-itemset trong một lớp tương đương bất kỳ
được nó gán cho nó.
Lập lịch phân lớp tương đương
Đầu tiên, ta phân hoạch L2 thành các lớp tương đương bằng cách
sử dụng tiền tố chung như mô tả ở trên. Tiếp theo, phân chia cho mỗi bộ xử lý
một lớp tương đương. Mỗi lớp tương đương được gán một trọng số dựa vào số
các phần tử trong một lớp. Vì phải khảo sát tất cả các cặp trong bước lặp tiếp
theo, nên ta gán trọng số

cho một lớp với m là số các phần tử của lớp

tương đương tương ứng.
Sắp xếp các lớp dựa theo các trọng số và lần lượt gán cho bộ xử lý đã
nạp ít nhất, nghĩa là bộ xử lý đó có trọng số toàn phần của các lớp nhỏ nhất.
Nếu ước lượng tốt được số các tập mục phổ biến mà có thể nhận được từ một
lớp tương đương thì có thể sử dụng ước lượng này làm một trọng số. Trong
phạm vi một lớp, cũng có thể lấy độ hỗ trợ trung bình của các tập mục làm

trọng số.
Biến đổi CSDL theo chiều dọc
Sau khi phân hoạch các lớp tương đương cân bằng giữa các bộ xử lý, ta
biến đổi CSDL cục bộ từ định dạng theo chiều ngang theo chiều dọc. Điều này
có thể thực hiện được trong 2 bước:


Bước 1: Mỗi bộ xử lý duyệt CSDL cục bộ của nó và xây dựng các
tid-List cục bộ cho tất cả các 2-itemset.
Bước 2: Mỗi bộ xử lý cần xây dựng các tid-List toàn cục cho các tập
mục trong các lớp tương đương của nó. Do đó, nó phải gửi các tid-List này cho
các bộ xử lý khác và nhận các tid-List từ các bộ xử lý khác gửi đến.
3) Pha đồng thời
Cơ sở dữ liệu đã được phân bố lại, vì vậy các tid-List của tất cả các 2itemset trong các lớp tương đương cục bộ của nó là đã thường trú trên đĩa cục
bộ. Mỗi bộ xử lý có thể tính toán tất cả các tập mục phổ biến một cách độc lập.
Nó đọc trực tiếp từ bộ nhớ cục bộ các tid-List của các 2-itemset, sau đó sinh tất
cả các tập mục phổ biến có thể trước khi chuyển sang bước tiếp theo, bước này
bao gồm việc quét phân hoạch CSDL cục bộ đã được biến đổi một lần.
Trong phạm vi mỗi lớp tương đương, cần khảo sát tất cả các cặp 2itemset và thực hiện lấy giao các tid-List tương ứng. Nếu số các phần tử của
tid-List kết quả lớn hơn hoặc bằng độ hỗ trợ tối thiểu thì tập mục mới được bổ
sung vào L3. Sau đó, tiếp tục phân hoạch L3 thành các lớp tương đương dựa
trên các tiền tố chung độ dài bằng 2. Quá trình này được lặp lại thủ tục được
thực hiện như sau:
Begin Compute_Frequent(Ek-1)
for tất cả các itemset I1 và I2 trong Ek-1
if((I1.tidList ∩ I2tidList) ≥ minsup)
Bổ sung (I1 ∪ I2) vào Lk;
Phân hoạch Lk thành các lớp tương đương;
forparallel mỗi lớp tương đương Ek trong Lk
Compute_Frequent(Ek);

End Compute_Frequent
4) Pha rút gọn
Tại thời điểm cuối của pha đồng thời, chúng ta trích rút các kết quả từ
mỗi bộ xử lý và đưa ra kết quả.
Quá trình thực hiện các bước truyền thông khác nhau của thuật toán.
*) Giai đoạn khởi tạo:
Khi đã thu được các số đếm hỗ trợ của tất cả các 2-itemset, ta cần
thực hiện một phép lấy tổng rút gọn để tính số đếm tổng thể. Ta chỉ định một
mảng kích thước (m là số các mục) trên vùng kênh bộ nhớ dùng chung, sau đó
mỗi bộ xử lý truy cập mảng chung này (theo phương thức loại từ lẫn nhau) để
tăng số đếm hỗ trợ hiện hành lên bởi các số đếm hỗ trợ cục bộ của nó và rồi đợi
ở rào chắn cho tới bộ xử lý cuối cùng thực hiện xong việc truy cập mảng dùng
chung để tăng số đếm hỗ trợ. Các số đếm hỗ trợ cục bộ được sử dụng để xây
dựng các tid-List đảo toàn cục.
*) Giai đoạn biến đổi
Mỗi bộ xử lý quét phân hoạch CSDL cục bộ của nó lần thứ hai và


xây dựng các tid-List theo chiều dọc đối với tất cả các 2-itemset phổ biến L 2.
Vì CSDL gốc ban đầu được phân hoạch theo dạng khối nên CSDL đảo của mỗi
bộ xử lý gồm các vùng định danh không liên tiếp. Ta sử dụng thông tin này
cùng với thông tin của các số đếm hỗ trợ cục bộ để đặt tid-List của các bộ xử lý
khác gửi đến vào các khoảng trống thích hợp, vì vậy tid-List toàn cục thu được
xuất hiện theo thứ tự từ điển, Với các lưu giữ này, chúng ta tiết kiệm được chi
phí sắp xếp cho các tid-List các giao dịch được phân tán một cách ngẫu nhiên.
Quá trình biến đổi được hoàn thành qua 2 bước sau:
Bước 1: Biến đổi tid-List cục bộ.
Trước tiên, ta chia L2 thành hai nhóm. Các tập mục thuộc các lớp
tương đương mà được gán cho bộ xử lý cục bộ, kí hiệu là G, các tập mục còn
lại thuộc các lớp tương đương khác, kí hiệu là R. Với mỗi bộ xử lý P i, bộ nhớ

dành ra một vùng nhớ có kích thước

Với g ∈ G, r ∈ R: các tập mục partial_count(r, Pi): Số đếm hỗ trợ của tập mục
r trên bộ xử lý Pi. Sau đó, mỗi bộ xử lý thực hiện việc biến đổi và ghi tid-List
của các phần tử của G vào các khoảng trống thích hợp. Các phần tử của R được
để trống. Hình 1.10 dưới đây mô tả bước biến đổi CSDL trên ba bộ xử lý:

Phân chia L2 thành các lớp tương đương và gán cho các bộ xử lý P 0, P1, P2 P0 –
(12, 13, 15); P1 – (23, 25); P2 – (34, 35).
Kí hiệu: tid- List của P0, P1, P2 lần lượt là:


Hình 1.10: Quá trình chuyển đổi CSDL theo chiều dọc
Bước 2: Truyền tid-List
Một khi việc biến đổi CSDL cục bộ hoàn thành, ta cần phải nhận các tidList của tất cả các 2-itemset trong G từ các bộ xử lý khác truyền đến và truyền
các tid-List của R đến các bộ xử lý khác. Các tid-List đến được sao chép vào
các khoảng trống thích hợp. Vì các phần giao dịch là phân biệt tăng đều, các
tid-List của các tập mục trong G đã được viết ra ngoài đĩa, còn trong R thì bị
loại bỏ. Để truyền các tid-List cục bộ qua kênh bộ nhớ, chúng ta sử dụng lợi thế
của việc truyền thông điệp nhanh ở mức người sử dụng. Mỗi bộ xử lý xác định
kích thước bộ đệm (2MB) cho một vùng truyền, một vùng nhận và dùng chung
một định danh. Việc truyền thông được tiến hành theo cách khóa luân phiên các
pha ghi đọc. Trong pha ghi, mỗi bộ xử lý ghi các tid-List của các tập mục trong
P vào vùng truyền của nó cho đến khi đạt đến giới hạn không gian bộ đệm. Tại
thời điểm này, nó đi vào pha đọc, nó lần lượt quét vùng nhận của mỗi bộ xử lý
và đặt các tid-List này của G vào các khoảng trống thích hợp. Khi vùng đọc đã
được quét xong, nó đi vào pha ghi. Quá trình này được lặp lại cho đến khi nhận
được tất cả các tid-List bộ phận. Tại thời điểm cuối của pha này, CSDL được
định dạng theo chiều dọc. Sau đó, mỗi bộ xử lý đi vào pha đồng thời và tính
toán các tập mục phổ biến như mô tả ở trên. Việc phép rút gọn cuối cùng được

thực hiện tương tự như phép rút gọn trong pha khởi tạo.


1.4. Phân tích, đánh giá và so sánh việc thực hiện thuật toán
1.4.1. Phân tích và đánh giá thuật toán song song
Đánh giá thuật toán tuần tự có thể căn cứ chủ yếu vào thời gian thực hiện
tính theo hàm của kích cỡ dữ liệu vào (input). Hàm này được gọi là độ phức tạp
tính toán thời gian f(n) của thuật toán và được ký hiệu là O(f(n)). Một cách hình
thức, O() được định nghĩa như sau: Một thuật toán có độ phức tạp tính toán
tính toán f(n) = O(g(x)) . Tồn tại số dương C và số nguyên x0 sao cho 0 ≤ f(x) ≤
C * g(x), với mọi số lượng dữ liệu vào x ≥ x0. O(1) ký hiệu cho một hằng số bất
kỳ. Ngoài ra, độ phức tạp tính toán của thuật toán song song còn phụ thuộc vào
kiến trúc máy tính song song và số lượng bộ xử lý được phép sử dụng trong hệ
thống và do vậy phụ thuộc vào thời gian trao đổi dữ liệu giữa các bộ xử lý.
Độ phức tạp thời gian là thước đo quan trọng nhất đánh giá mức độ hiệu
quả của thuật toán song song. Giả sử rằng mô hình tính toán của chúng ta có p
bộ xử lý; dẫn đến mức độ song song có giới hạn; ngược lại, không bị giới hạn
khi số lượng bộ xử lý không bị chặn.
Mức độ hiệu quả của thuật toán được thể hiện ở mức độ song song của
thuật toán. Là số lượng cực đại các phép toán độc lập có thể thực hiện đồng
thời ở mỗi thời điểm thực hiện của thuật toán.
Ký hiệu p(w) là độ song song của thuật toán, thì thuật toán đạt hiệu quả
để giải bài toán có kích cỡ w là thuật toán chỉ cần sử dụng nhiều nhất p(w) bộ
xử lý. Độ phức tạp thời gian của thuật toán song song sử dụng p bộ xử lý để
giải một bài toán có kích cỡ n là hàm f(n, p) xác định thời gian cực đại trôi qua
giữa điểm bắt đầu thực hiện thuật toán bởi một bộ xử lý và thời điểm kết thúc
của các bộ xử lý đối với bộ dữ liệu vào bất kỳ.
Có hai thao tác khác nhau trong các thuật toán song song:
Các phép toán cơ sở như: +, -, *, /, AND, OR,…
Các phép truyền dữ liệu trên kênh truyền.

Vì độ phức tạp thời gian của thuật toán song song được xác định bởi số
các phép toán cơ sở và số các bước truyền tải dữ liệu giữa các bộ xử lý với
nhau. Nên từ đó suy ra, độ phức tạp thời gian của thuật toán song song không
chỉ phụ thuộc vào mô hình tính toán mà còn phụ thuộc vào bộ xử lý được sử
dụng.
Định nghĩa liên quan đến độ phức tạp của giải thuật song song là:
Định nghĩa 1.1: Một thuật toán song song có độ phức tạp tính toán O(t)
với p bộ xử lý khi nó thực hiện nhiều nhất là O(t * p) phép toán cơ sở.
Định nghĩa 1.2: Một thuật toán song song có độ phức tạp tính toán O(t)
sử dụng nhiều bộ xử lý để thực hiện O(e) phép toán cơ sở khi cài đặt với p bộ
xử lý thì sẽ có độ phức tạp thời gian là O([e/p]+t).
Định nghĩa 1.3: Một thuật toán song song có độ phức tạp tính toán O(t)
với p bộ xử lý có thể cài đặt với [p/f] bộ xử lý (1≤ f ≤ p) thì sẽ có độ phức tạp
thời gian là O(f * t). Ngoài ra, trong đánh giá thuật toán song song chúng ta


còn cần phải xét tới độ tăng tốc và hiệu suất của nó.
1.4.2. So sánh việc thực hiện các thuật toán
Dựa vào việc thực thi của thuật toán trên CSDL khác nhau cho thấy
thuật toán FP-Growth thực thi nhanh nhất, tiếp đến là thuật toán Eclat, thuật
toán Candidate distribution, CD, DD. Việc theo thứ hạng này mang tính tương
đối, mỗi thuật toán đều có những ưu điểm và nhược điểm riêng. Trong số các
thuật toán khai phá dữ liệu luật kết hợp song song, các thuật toán song song
được cài đặt dựa trên thuật toán Apriori (chẳng hạn như thuật toán CD, DD,
Candidate distribution) được sử dụng phổ biến bởi vì thực thi chúng đơn giản
và dễ dàng. Hơn nữa, các luật kết hợp có thể được sinh trực tiếp dựa vào cách
thức khai phá tập mục. Bởi vì các tập mục ứng cử được sinh ta thì tất cả các
thông tin của tập con đều được tính toán. Tốc độ thực hiện các thuật toán này tỉ
lệ với số lượng các giao dịch nhưng có thể gặp khó khăn trong việc xử lý quá
nhiều mục và nhiều mẫu khi CSDL quá lớn.

Thuật toán song song Eclat có ưu điểm là tính toán nhanh độ hỗ trợ
thông qua tập giao dịch tid-List. Thuật toán được thiết kế dựa trên mô hình
song song thao tác, có tốc độ thực thi nhanh trên hệ thống đa bộ xử lý bộ nhớ
phân tán. Hạn chế chủ yếu của thuật toán này là chúng cần phải sinh ra và phân
bố lại các tid-List. Hơn nữa, với một tập mục phổ biến có kích thước lớn, các
phần chung chủ yếu của các tid-List này được lấy giao lặp lại nhiều lần đối với
tất cả các tập con của nó. Để giảm bớt tình trạng này, một cách thiết lập tối ưu
khác là chỉ kiểm tra những thay đổi trong tid-List thay cho việc lưu giữ các tidList toàn cục thông qua các vòng lặp sao cho nó giảm đáng kể khối lượng dữ
liệu được tính toán.
Thuật toán FP-Growth xử ký lượng lớn CSDL rất hiệu quả và có tốc độ
thực thi tỷ lệ rất hiệu quả so với lượng giao dịch lớn, sự lặp lại nhiều lần hay
lặp lại nhiều lần cục bộ các giao dịch sẽ được kết hợp lại tạo thành các nhánh
của FP-Tree. Tuy nhiên ích lợi này không tăng khi tăng thêm số lượng bộ xử lý
bởi vì nhiều FP-Tree cho các tập giao dịch khác nhau là hoàn toàn dư thừa. Lợi
ích này cũng rất hạn chế đối với các CSDL rải rác. Thuật toán này có thể xử lý
một số lượng lớn các mục bằng việc gán mục này cho nhiều bộ xử lý mà không
quan tâm về không gian lưu trữ các tập mục.
II.KẾT LUẬN
1. Kết quả đạt được
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 quy nạp, 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, mô hình phụ thuộc dựa trên đồ thị xác
suất, 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 thường và trên tập mờ.
1
Về thuật toán khai phá luật kết hợp tiểu luận đã trình bày chi tiết các


thuật toán song song như Count Distribution, Data Distribution, Candidate

Distribution, Eclat, FP-Growth. Việc đánh giá thuật toán làm rõ bản chất của
luật kết hợp cũng là một trong những nội dung được trình bày trong tiểu luận.
2. Hướng nghiên cứu tiếp theo
Trên cơ sở những nghiên cứu đã được trình bày trong tiểu luận,nhóm
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ị
trường, chứng khoán và bất động sản, dự đoán rủi ro tín dụng, định hướng kinh
doanh, y tế… Trong quá trình học tập, tìm hiểu và nghiên cứu cùng với khoảng
thời gian làm tiểu luận, nhóm đã cố gắng tập trung tìm hiểu và tham khảo các
tài liệu liên quan. Tuy nhiên do thời gian nghiên cứu có hạn nên không tránh
khỏi những thiếu sót rất mong nhận được sự nhận xét và những đóng góp ý
kiến của thầy để tiểu luận được hoàn thiện hơn.

III.TÀI LIỆU THAM KHẢO
Tiếng việt
1
1. Nguyễn Thanh Thủy (2003), Phát hiện tri thức và khai phá dữ liệu:
Công cụ, phương pháp và ứng dụng, Hà Nội.
2. Nguyễn Thanh Bình (2007), Khai phá dữ liệu: Khái niệm và kỹ thuật,
Huế.
2
3. Đỗ Phúc (2006), Giáo trình khai phá dữ liệu, Nxb Đại học Quốc gia
TP Hồ Chí Minh.
3
4. Hồ Thuần, Hồ Cẩm Hà (2006), Các hệ cơ sở dữ liệu Lý thuyết và
Thực hành, Tập 2, Nxb Giáo dục.
4
5. Đoàn Văn Ban, Nguyên Mậu Hân (2006) Xử lý song song và phân

tán, Nxb Khoa học & Kỹ thuật, Hà Nội.
5
Tiếng Anh
1
6. A. Savaere, E Omiecinski and S.Navathe (1995), An efficient
algorihm for mining association rules in large databases, In 21st VLDB Con&.
2
7. Agrawal and J.Shafer (1996), Parallel mining of association rules, In
IEEE Trans, on Knowledge and Data Engg, pages 8(6): 962 – 969.
3
8. CAI, Chun Hing (1998), Mining Association Rules With Weighted
Items, The Chinese University of Hong Kong, August.
4
9. H.Mannila, H. Toivonen and I.Verkamo (1994), efficient algorithms
for discovering association rules, In AAAI Wkshp, Knowledge Discoverry in
Databases, July.
5
10. J.Han, J.Pei and Y.Yin (2000), Mining Frequent Pattens Without
Candidate Generation, In ACM SIGMOD.


6
11. J.S.Park, M.Chenand P.S.Yu (1995), Efficient parallel data mining
for association rules, In ACM Intl, Conf Information and Knowledge
Management, November.
7
12. Jiamwei Li, Ying Lui, Wei-Keng Liao, Alok Choudhay (2006),
Parallel Data Mining Algorithms for Association Eules and Clustering, by
CRC Press, LLC.
8

13. Kwok-Leung Tsui, Victoria C,P. Chen, Wei Jiang, Y. Alp
Aslandogan, (2001), Data Minning Methods and applications.
Địa chỉ trên Internet
14. />15. />16. MPI home page. />


×