Một số thuật toán song song khác không thể xếp vào hai mô hình trên, mặc dù có cùng ý tưởng nhưng chúng lại có những đặc tính khác biệt. Ta xem xét qua các thuật toán sau.
Candidate Distribution
Thuật toán Candidate Distribution (tạm dịch là phân phối tổ hợp) [Agrawal1996] cố gắng làm giảm sự đồng bộ và tràn giao tiếp trong hai thuật toán CD và DD.
Tại lần duyệt l, nó chia các tập phổ biến Ll-1 giữa các bộ xử lý theo cách mà một bộ xử lý có thể phát sinh một tập duy nhất của các tổ hợp độc lập với các bộ xử lý khác. Tại cùng thời điểm, CSDL được phân chia lại vì vậy một bộ xử lý có thể thống kê được các tổ hợp đã được phát sinh độc lập. Tùy thuộc vào đặc tính của sự phân chia tổ hợp mà các phần CSDL có thể được tái tạo lại trên một số bộ xử lý.
Sự phân chia các tập phần tử được tiếp tục bằng cách nhóm lại dựa trên các tiền tố. Sau khi phân chia tổ hợp, mỗi bộ xử lý một cách độc lập chỉ thống kê các tổ hợp thuộc phần chia của nó bằng cách chỉ dùng phân vùng CSDL cục bộ. Không có sự giao tiếp (thống kê hoặc dữ liệu) nào được yêu cầu. Ngay trước khi phân chia tổ hợp có thể dùng hoặc là thuật toán phân chia số đếm hoặc thuật toán phân chia dữ liệu hoặc thuật toán phân chia tổ hợp, nên thuật toán này là một kiểu lai giữa hai mô hình trên.
SH
Trong SH [Harada1998], các tổ hợp không được phát sinh từ các tập phổ biến trước đó, điều này dường như khác với thuật toán tuần tự Apriori.
Thay vì các tổ hợp được tạo độc lập bởi mỗi bộ xử lý trong suốt quá trình duyệt phân vùng CSDL, tại bước lặp k, mỗi bộ xử lý phát sinh và thống kê các tập k phần tử từ các giao tác có trong phân vùng dữ liệu của chúng. Chỉ mọi tập k phần tử của các tập
con (k-1) phần tử mà phổ biến toàn cục là được phát sinh. Tại điểm cuối mỗi bước lặp, mọi bộ xử lý trao đổi các tập k phần tử và các local count của chúng, nhận global count của tất cả các tập k phần tử.Tập k phần tử phổ biến được xác định và ảnh (bitmap) của các tập phổ biến cũng được lập trên mỗi bộ xử lý.
Trong trường hợp việc thống kê không được thực hiện cân bằng, các giao tác được chuyển từ các bộ xử lý quá tải sang các bộ xử lý khác rảnh hơn. Trường hợp không đủ bộ nhớ, các tập k phần tử hiện tại sẽ được lưu trữ và đợi trên đĩa, và các tổ hợp k phần tử mới được phát sinh và thống kê cho đến hết phân vùng CSDL. Tại thời điểm cuối của mỗi bước lặp, các local count của mọi tập k phần tử được kết hợp và trao đổi với các bộ xử lý khác để nhận được các global count.
SH có vẻ như dựa trên thuật toán khác với Apriori nhưng lại rất tương đồng với thuật toán này. Đầu tiên, nó cũng lặp lại như trong Apriori, nghĩa là chỉ tại điểm cuối của bước lặp thì sự gia tăng các tổ hợp mới (có kích thước mới) mới được phát sinh. Điểm khác so với Apriori là SH tạo các tổ hợp trong quá trình lặp còn Apriori tạo tại điểm cuối bước lặp. Điểm thứ hai nữa là các tổ hợp được phát sinh bởi SH cũng chính xác như trong Apriori nếu CSDL là phân tán đều, chỉ khi CSDL là vô cùng lệch thì việc phát sinh các tổ hợp mới dẫn đến sự khác biệt.
Ví dụ, nếu A và B không bao giờ xuất hiện cùng nhau (A và B có thể vẫn là phổ biến) trên phần chia dữ liệu i, nghĩa là thống kê của nó bằng 0, SH sẽ không phát sinh AB như một tổ hợp ở bước thứ hai trên bộ xử lý i. Nhưng nếu AB xuất hiện cùng nhau một lần, AB sẽ được phát sinh như một tổ hợp bởi thuật toán SH. Vì thế ta có thể xếp SH vào mô hình thuật toán Data Parallelism với việc kiểm soát lệch và không đủ bộ nhớ chính.
HD (Hybrid Distribution)
HD được đề xuất trong [Han1997] kết hợp cả hai mô hình. Thuật toán giả sử có p bộ xử lý được sắp xếp trong mảng 2 chiều có r hàng và p/r cột. CSDL được phân bổ tương tự nhau cho p bộ xử lý này. Tập tổ hợp Ck được phân chia lên các cột của mảng (nghĩa là p/n phần chia với mỗi cột có một phần chia của các tập tổ hợp) và phần chia của các tập tổ hợp trên mỗi cột được sao lại trên tất cả các bộ xử lý theo mỗi hàng của cột.
Bây giờ bất kỳ thuật toán phân bổ dữ liệu nào đều cũng có thể áp dụng độc lập trên mỗi cột của mảng và các global count của mỗi tập con của Ck nhận được bằng thao tác giảm theo mỗi hàng của mảng như trong mô hình Data Parallelism.
Kiến trúc lưới như trên được xem như là mô hình tổng quát của cả hai mô hình trên: nếu số cột là một thì đây là mô hình Task Parallelism; nếu số hàng là một: mô hình Data Parallelism. Theo HD, sự tràn giao tiếp khi di chuyển CSDL được giảm xuống, vì các phân vùng CSDL chỉ cần di chuyển theo các cột thay vì trên toàn bảng.
Thuật toán HD cũng có thể tự động chuyển thành CD trong lần duyệt tiếp theo nhằm làm giảm thiểu hơn nữa tràn giao tiếp.
KẾT LUẬN:
Cả hai mô hình Data và Task đều có những mặt mạnh và yếu riêng của mình. Mô hình Data Parallelism đơn giản hơn trong việc giao tiếp và vì thế sẽ ít bị tràn giao tiếp hơn. Nó chỉ cần trao đổi các local count của tất cả các tổ hợp tại mỗi vòng lặp.
Thuật toán CD có thể được cải tiến hơn nữa bằng kỹ thuật băm (PDM), kỹ thuật tách tổ hợp (DMA) và thống kê ngắn mạch (CCPD). Tuy nhiên mô hình Data Parallelism yêu cầu mọi tổ hợp phải được nạp vừa đủ trong bộ nhớ chính của mỗi bộ xử lý. Nếu trong một vài vòng lặp nào đó, số tổ hợp cần nạp quá lớn so với bộ nhớ, mọi thuật toán dựa trên mô hình này đều không làm việc (ngoại trừ SH) hoặc hiệu suất của chúng sẽ giảm xuống. Riêng SH cố gắng giải quyết hiện tượng này bằng cách chuyển các tổ hợp xuống đĩa. Một vấn đề có thể xáy ra thêm đối với SH là có quá nhiều tổ hợp cần phải ghi lên đĩa, như vậy tổng số các local count trong mọi quá trình trên dẫn đến cần nhiều thao tác I/O. Thêm nữa, SH có thể xảy ra trường hợp tràn tính toán khi phát sinh tổ hợp trong khi đang thực hiện trực tuyến. Ví như khi thuật toán cần kiểm tra mọi tập con (k-1) của tập k phần tử trong mỗi giao tác là phổ biến hay không bằng cách tìm kiếm ảnh của các tập phần tử phổ biến (k-1); trong khi Apriori chỉ cần kiểm tra tập các phần tử là kết nối của hai tập Lk+1.
Mô hình Task Parallelism ban đầu được đề xuất nhằm tăng khả năng sử dụng bộ nhớ chính của máy tính song song. Nó phân chia và phân tán các tổ hợp giữa các bộ xử lý trong mỗi vòng lặp vì thế nó dùng bộ nhớ chính của mọi bộ xử lý và có thể không xảy ra trường hợp thiếu bộ nhớ với số lượng bộ xử lý ngày càng tăng. Bởi vậy lớp thuật toán này được dùng để tìm các luật kết hợp với ngưỡng minsupp rất thấp. Tuy nhiên, Task Parallelism yêu cầu di chuyển các phân vùng dữ liệu để trao đổi.
Thông thường, CSDL được dùng tìm luật là rất lớn, vì vậy việc di chuyển dữ liệu sẽ làm xảy ra lỗi tràn giao tiếp rất khủng khiếp. Như vậy lớp thuật toán này gặp vấn đề đối với các CSDL rất lớn. Trong thuật toán cơ bản của mô hình này, độ phức tạp di chuyển dữ liệu là O(p2) với p là số lượng bộ xử lý. Thuật toán IDD dùng kiến trúc vòng và các giao tiếp diễn ra đồng thời trên các phầhn tử kề nhau vì vậy độ phức tạp chỉ còn O(p). HPA dùng kỹ thuật băm để di chuyển trực tiếp các phân vùng dữ liệu, vì vậy nó chỉ di chuyển các giao tác (chính xác là các tập con của các giao tác) đến bộ xử lý đích thích hợp. Tương tự như các tổ hợp được phân bổ bởi hàm băm, các tập con của các giao tác cũng được lưu trữ bởi cùng một hàm băm, vì vậy độ phức tạp chỉ là O(p).
Những nghiên cứu trong [Agrawal1996], [Park1995a], [Cheung1996], [Cheung1998], [Zaki1996]. [Han1997] và [Shintani1996] về hiệu suất của cả hai mô hình đều chỉ ra rằng chúng tỷ lệ tuyến tính theo kích thước CSDL và số lượng bộ xử lý. Mô hình Task Parallelism không đạt quy mô tốt như mô hình Data nhưng có thể đạt hiệu quả với ngưỡng minsupp thấp. Điều này không thể quản lý được với mô hình Data Parallelism hoặc có thì rất thấp.
Một hướng đi đầy triển vọng cho tương lai là việc kết hợp cả hai mô hình trên. Phân tán lai (HD) [Han1997] thì scalable hơn mô hình Task Parallelism và làm giảm bớt hiện tượng thiếu bộ nhớ chính. Tất cả các thuật toán song song để tìm luật kết hợp đều dựa trên thuật toán tuần tự Apriori. Khi Apriori được cải tiến bởi nhiều thuật toán khác, đặc biệt khi giảm số lượng CSDL cần duyệt, các thuật toán song song đã cải tiến được trông chờ đem lại những thành quả tốt đẹp hơn.
4. So sánh các thuật toán
Không gian: được đánh giá bằng số lượng tối đa các tổ hợp được thống kê trong suốt quá trình duyệt bất kỳ trên CSDL.
Thời gian: thống kê số lượng tối đa các lần duyệt CSDL (ước lượng I/O) và số lượng tối đa các phép toán so sánh (ước lượng CPU).
Do hầu hết các CSDL giao tác đều được lưu trữ trên đĩa thứ yếu và và việc tràn thao tác I/O là quan trọng hơn tràn CPU nên trọng tâm là số lần duyệt trên CSDL đầu vào. Trường hợp xấu nhất xảy ra khi mỗi giao tác trong CSDL đều có tất cả các phần tử. Gọi m là số phần tử trong mỗi giao tác, Lk là tập phổ biến gồm có k phần tử trên CSDL
D thì số tập phổ biến tối đa là 2m.
Trong các các kỹ thuật level-wise (như AIS, SETM, Apriori), mọi tập phổ biến trong
L1 nhận được trong quá trình duyệt CSDL lần đầu tiên. Tương tự, mọi tập phổ biến trong L2 cũng được nhận dạng trong lần duyệt thứ hai, và cứ thế tiếp tục. Mọi thuật toán đều dừng khi không có thêm phần tử nào thuộc tập phổ biến được phát sinh bởi vậy CSDL đầu vào cần duyệt nhiều nhất là (m+1) lần.
Apriori-TID duyệt CSDL trong lần duyệt đầu tiên, sau đó dùng Ck thay cho CSDL tại bước thứ (k+1). Tuy nhiên điều này không giúp ích được gì trong trường hợp xấu nhất. Nguyên nhân do Ck sẽ chứa mọi giao tác cùng với các phần tử của chúng trong suốt quá trình xử lý đầu vào. OCD duyệt CSDL đầu vào chỉ một lần tại thời điểm bắt đầu thuật toán để xác định tập phổ biến trong L1. Sau này, OCD và Sampling chỉ dùng một phần của CSDL đầu vào và các thông tin nhận được trong lần duyệt đầu tiên dùng để tìm tổ hợp các tập phần tử của Lk với 1 ≤ k ≤ m. Trong lần duyệt thứ hai, các thuật toán này tính support cho mỗi tổ hợp phần tử. Bởi vậy sẽ chỉ có hai lần duyệt trong trường hợp xấu nhất. Kỹ thuật PARTITION làm giảm bớt tràn I/O bằng cách giảm số lượng CSDL cần duyệt xuống còn 2. CARMA cũng tương tự như vậy.
Sự tinh túy của thuật toán dựa trên tính chính xác của số lượng các tổ hợp “đúng” mà nó phát hiện. Như đã đề cập ở trên, mọi thuật toán sử dụng các tập phổ biến của một (hoặc nhiều) lần duyệt trước nhằm phát sinh các tập tổ hợp. Các tập tổ hợp này được đưa vào bộ nhớ chính để xác định tập tổ hợp các phần tử và tập này một lần nữa được nạp vào bộ nhớ để nhận được các support của chúng. Khi không đủ bộ nhớ, các thuật toán đề xuất những phương pháp quản lý bộ đệm và cấu trúc lưu trữ khác nhau.
AIS đề nghị Lk-1 có thể giữ ở trên đĩa, nếu cần thiết. Theo SETM, nếu Ck quá lớn để nạp vào bộ nhớ chính thì ghi nó xuống đĩa với cơ chế quản lý FIFO. Lớp thuật toán Apriori khuyến cáo giữ Lk-1 trên đĩa và mang lên bộ nhớ từng khối một tại một thời điểm nhằm tìm Ck. Tuy nhiên, Ck phải nằm trong bộ nhớ chính để xác định support ở cả hai thuật toán Apriori-TID và Apriori-Hybrid. Tuy vậy, mọi kỹ thuật khác đều giả sử rằng có đủ lượng bộ nhớ để quản lý các vấn đề dạng này. Tất cả các kỹ thuật tuần tự khác (như PARTITION, Sampling, DIC và CARMA) cân nhắc một phần thích hợp nào đó của dữ liệu để nạp vừa đủ trong bộ nhớ chính. Lớp thuật toán Apriori đề xuất cấu trúc dữ liệu cây băm hoặc mảng cho các tập phổ biến tuy nhiên AIS và SETM lại
không đưa ra hướng giải quyết cụ thể nào. Cấu trúc dữ liệu đề nghị cho từng thuật toán cụ thể được trình bày trong bảng 6.
Về phương diện thương mại, kỹ thuật Apriori là được tin dùng hơn cả để khai phá các luật kết hợp.
Một số thuật toán sẽ phù hợp hơn khi đạt được những điều kiện cụ thể. AIS không đạt được hiệu quả tốt khi khi số lượng phần tử trong CSDL lớn bởi vậy phù hợp với những CSDL giao tác có số phần tử trong tổ hợp nhỏ. Apriori tốn ít thời gian thực hiện hơn so với Apriori-TID ở những lần duyệt đầu, nhưng Apriori-TID lại làm tốt hơn Apriori ở những lần duyệt về sau. Vì vậy thuật toán Apriori-Hybrid là sự lựa chọn tốt vì nó có thể chuyển qua Apriori-TID từ thuật toán Apriori. Tuy nhiên, cần xác định khi nào và trả giá như thế nào khi chuyển từ Apriori sang Apriori-TID. Mặc dù OCD sử dụng kỹ thuật gần đúng nhưng nó rất hiệu quả để tìm các tập phổ biến với ngưỡng support
thấp. CARMA là hướng kỹ thuật tương tác người dùng trực tuyến có sự hồi đáp thích hợp nhất khi chuỗi giao tác được nhận từ mạng máy tính.
Bảng 4: So sánh các thuật toán đã trình bày
Thuật toán Duyệt Cấu trúc dữ liệu Chú thích
AIS m+1 không xác định Thích hợp cho CSDL có số yếu tố trong tổ hợp thấp; Vế thứ hai chỉ đơn thuộc tính.
SETM m+1 không xác định tương thích với SQL
Apriori m+1 Lk-1: bảng băm Ck: cây băm
CSDL giao tác có số yếu tố trong tổ hợp vừa phải;
Thực hiện tốt hơn AIS và SETM; Thuật toán cơ bản cho các thuật toán song song.
Apriori- TID m+1 Lk-1: bảng băm Ck: mảng sắp xếp theo TID C k:cấu trúc tuần tự ID: bitmap
Rất chậm với số lượng lớn của Ck Thực hiện tốt hơn Apriori với số lượng C
k nhỏ. Apriori- Hybrid m+1 Lk-1: bảng băm Pha thứ nhất: Ck: cây băm Pha thứ hai: Ck: mảng sắp theo TID C k : cấu trúc tuần tự ID: bitmap
Tốt hơn Apriori. Tuy nhiên, rất tốn để chuyển từ Apriori sang Apriori-TID
OCD 2 không xác định Thích hợp trong CSDL lớn với ngưỡng
support thấp.
Partition 2 Bảng băm Thích hợp cho CSDL lớn với số yếu tố
trong tổ hợp lớn.
Đồng bộ dữ liệu phân tán.
Sampling 2 không xác định Được áp dụng cho CSDL rất lớn với
support thấp. DIC Tuỳ thuộc vào kích thước của interva
Cây tiền tố (prefix-tree) CSDL được xem như là các interval của các giao tác;
Sự tăng trưởng các tổ hợp phát sinh tại điểm cuối của một interval.
l
CARMA 2 Bảng băm Có thể dùng được đối với các giao tác tuần
tự được đọc từ Network; Trực truyến, người dùng nhận được thông tin phản hồi liên tục và thay đổi support và/hoặc
confidence bất kỳ thời điểm nào trong suốt
quá trình xử lý.
CD m+1 bảng băm và cây Data Parallelism
PDM m+1 bảng băm và cây Data Parallelism với việc tách sớm tổ hợp.
DMA m+1 bảng băm và cây Data Parallelism với việc tách tổ hợp.
CCPD m+1 bảng băm và cây Data Parallelism; trên bộ nhớ dùng chung.
DD m+1 bảng băm và cây Task Parallelism; phân chia vòng robin.
IDD m+1 bảng băm và cây Task Parallelism; phân chia theo phần tử đầu tiên
HPA m+1 bảng băm và cây Task Parallelism; phân chia bởi hàm băm