CHƯƠNG 1 : GIỚI THIỆU TỔNG QUAN
2.5. Các kỹ thuật khai phá song song luật kết hợp
Lý thuyết về xử lý song song (parallel processing) bắt đầu cuối những năm 1940 khi J.Von Neumann giới thiệu một số mô hình hạn chế của tính toán song song có tên otomat tế bào mà chủ yếu là một mảng hai chiều các bộ xử lý trạng thái hữu hạn được tương kết theo dạng hình lưới. Từ đó đến nay, lý thuyết về xử lý song song trở thành lĩnh vực nghiên cứu quan trọng và ngày càng đem lại những dấu hiệu khả quan trong việc xây dựng một mô hình lập trình mới có những tính năng vượt trội so với mô hình lập trình tuần tự truyền thống. Việc ứng dụng lập
trình song song trong giải quyết các bài toán khai phá dữ liệu từ lâu đã được nhiều nhà nghiên cứu quan tâm. Đối với lĩnh vực khai phá luật kết hợp cũng không phải là một ngoại lệ Có nhiều thuật toán khai phá song song luật kết hợp đã được nghiên cứu, trong đó đáng chú ý phải kể đến các thuật toán dựa trên nền tảng của thuật toán Apriori do Agrawal và C.Shafer đề xuất [2-3]. Các thuật toán này được thiết kế trên các hệ thống tính toán song song sử dụng kiến trúc không chia sẻ (shared- nothing architecture) với đặc điểm như sau:
o Hệ có N bộ xử lý (processor), mỗi bộ xử lý Pi có bộ nhớ trong (RAM) và bộ nhớ ngoài (thường là ổ đĩa) độc lập với các bộ xử lý còn lại trong hệ thống.
o N bộ xử lý này có thể giao tiếp với nhau thông qua một mạng truyền thông và sử dụng cơ chế truyền thông điệp (message passing).
Hình 2.4: Minh họa giải thuật ph n ph i độ hỗ trợ tr n 03 bộ xử lý song song [2]
Thuật toán đầu tiên phải kể tới đó chính là thuật toán ph n phối độ hỗ trợ
(count distribution). Thuật toán này dựa trên nền tảng của thuật toán Apriori. Hệ thống tính toán gồm N bộ xử lý P1, P2,…, PN. Cơ sở dữ liệu giao dịch D ban đầu được chia ra làm N phần D1, D2,…,DN, mỗi phần được giao cho một bộ xử lý. Thuật toán này hoạt động tương tự như thuật toán Apriori, tức là tại bước thứ k của thuật toán, mỗi bộ xử lý sẽ kết nối các tập phổ biến có độ dài k-1 để tạo ra các tập ứng viên có độ dài k. Sau đó, mỗi bộ xử lý Pi sẽ duyệt cơ sở dữ liệu giao dịch Di của riêng nó để xác định độ hỗ trợ cục bộ cho mỗi ứng viên. Các bộ xử lý sẽ trao đổi thông tin cho nhau để cập nhật độ hỗ trợ toàn cục cho các ứng viên (quá trình
đồng bộ hóa). Cuối cùng các bộ xử lý sẽ căn cứ vào minsup để chọn ra tập những tập phổ biến k từ tập ứng viên Ck. Quá trình này được lặp lại nhiều lần. Chú ý là tại bước đầu tiên k = 1 của thuật toán, mỗi bộ xử lý đều nhận được 1 là tập các tập phổ biến có độ dài 1 và đều xuất phát từ các tập phổ biến có độ dài 1 này để tạo các tập ứng viên có độ dài 2,… Do có cùng xuất phát điểm và tại mỗi bước của thuật toán đều có thao tác đồng bộ hóa nên các bộ xử lý đều thu được tập các tập phổ biến k giống hệt nhau sau mỗi bước của thuật toán.
Ưu điểm của giải thuật phân phối độ hỗ trợ là không yêu cầu phải có sự trao đổi các bộ dữ liệu giữa các bộ xử lý mà chỉ trao đổi thông tin về độ hỗ trợ. Do đó, các bộ xử lý có thể hoạt động một cách độc lập và bất đồng bộ trong quá trình đọc dữ liệu. Tuy nhiên, nhược điểm của giải thuật này là không khai thác được sức mạnh tổng hợp bộ nhớ của toàn hệ thống một cách hiệu quả. Giả sử rằng mỗi bộ xử lý có bộ nhớ với dung lượng là |M|. Số lượng các ứng viên tốt đa có thể đếm qua mỗi lần lặp được giới hạn bởi |M|. Khi chúng ta tăng số lượng các bộ xử lý từ 1 đến N, hệ thống sẽ có bộ nhớ tổng thể với dung lượng là N x |M|, nhưng chúng ta vẫn chỉ đếm được |M| tập ứng viên qua mỗi lần lặp bởi vì do tính chất của thuật toán phân phối độ hỗ trợ là mỗi bộ xử lý đều tính toán trên tập ứng viên Ck giống hệt nhau. Chính vì thế, thuật toán ph n phối liệu (data distribution) đã được đề xuất như một bước cải tiến nhằm khai thác tốt hơn sức mạnh tổng hợp của bộ nhớ hệ thống khi số lượng bộ xử lý tăng lên.
Hình 2.6: Mô hình khai phá song song luật kết hợp từ dữ liệu truy cập webBộ xử lý P1 Bộ xử lý P1 Phân định các phiên truy cập Gắn nhãn thời gian Lọc dữ liệu Tách các trường dữ liệu Phân định các phiên truy cập Gắn nhãn thời gian Lọc dữ liệu Tách các trường dữ liệu Phân định các phiên truy cập Gắn nhãn thời gian Lọc dữ liệu Tách các trường dữ liệu
Phân chia tập các tập phổ biến cho N bộ xử lý
. . . . . . CSDL giao dịch D1 CSDL giao dịch D2 CSDL giao dịch DN Bộ xử lý P2 Bộ xử lý PN Tập các tập phổ biến F
Sinh tập phổ biến dựa trên thuật toán xử lý song song
Bộ xử lý P1 Bộ xử lý P2 Bộ xử lý PN
F1 F2 . . . FN
. . .
Tập các luật kết hợp mạnh
Sinh luật song song
Tiền xử lý liệu . . . . . . Phần dữ liệu 1 Phần dữ liệu 2 Phần dữ liệu N
Trong thuật toán này, mỗi bộ xử lý sẽ tiến hành cập nhật độ hỗ trợ cho một số các tập thuộc tính ứng cử viên của riêng nó. Do đó, khi số bộ xử lý trong hệ thống tăng lên, thuật toán này có thể cập nhật độ hỗ trợ cho rất nhiều các tập thuộc tính ứng cử viên trong mỗi lần lặp. Nhược điểm của thuật toán này là mỗi bộ xử lý phải truyền và nhận dữ liệu trong mỗi lần lặp nên nó chỉ khả thi khi hệ thống có một môi trường truyền thông nhanh và ổn định giữa các nút trong hệ thống. Thuật toán song song phân phối dữ liệu (data distribution) cũng dựa trên nền thuật toán Apriori. Hệ thống tính toán gồm N bộ xử lý P1, P2,…, PN. Cơ sở dữ liệu giao dịch D ban đầu cũng được chia ra làm N phần D1, D2,…,DN, mỗi phần được giao cho một bộ xử lý. Đầu tiên, mỗi bộ xử lý sẽ đều xuất phát từ tập các tập phổ biến có độ dài 1 giống nhau. Tại mỗi bước của thuật toán, mỗi bộ xử lý Pi sẽ tạo tập ứng viên Ck bằng cách kết nối các tập phổ biến có độ dài k trong k. Tập Ck sau đó được chia đều cho N bộ xử lý, còn Pi chỉ giữ lại 1 phần i
k
C . Sau khi đếm xong độ hỗ trợ, mỗi bộ xử lý Pi chọn ra những tập phổ biến cục bộ i k F từ i k C tương ứng. Các bộ xử lý tiến hành trao đổi i k
F cho nhau sao cho tất cả các bộ xử lý đều nhận được Fk để sinh Ck+1 cho lần lặp tiếp theo. Quá trình này cũng được lặp đi lặp lại nhiều lần.
Tuy có cải tiến nhưng hạn chế của cả hai thuật toán trên (count distribution và data distribution) là ở chỗ do mọi giao dịch (hoặc bản ghi) trong cơ sở dữ liệu giao dịch đều có thể hỗ trợ một tập ứng viên nào đó nên các giao dịch hay bản ghi phải được đối sánh với tất cả các tập ứng viên. Điều này dẫn đến việc thuật toán phân phối độ hỗ trợ phải lưu giữ tập các tập ứng cử viên giống nhau trên mọi bộ xử lý và thuật toán phân phối dữ liệu yêu cầu các bộ xử lý phải gửi dữ liệu cho nhau trong quá trình cập nhật độ hỗ trợ. Hơn nữa, hai thuật toán này phải tiến hành đồng bộ hóa ở cuối mỗi pha thực hiện song song để trao đổi độ hỗ trợ cục bộ hoặc tập các tập phổ biến cho nhau. Yêu cầu đồng bộ hóa trong suốt thời gian thực hiện của thuật toán sẽ làm giảm hiệu suất thực hiện của hệ thống do các bộ xử lý hoàn thành công việc sớm phải chờ đợi các bộ xử lý hoàn thành công việc muộn hơn. Nguyên nhân của vấn đề này là do hai thuật toán trên mới chia công việc cho các bộ xử lý một cách công bằng chứ chưa chia một cách vừa công bằng vừa khôn ngoan . Chính về thế thuật toán ph n phối tập ứng viên (candidate distribution) được đề xuất nhằm hạn chế những nhược điểm trên. Thuật toán này cố gắng chia tập ứng viên sao cho các bộ xử lý có thể độc lập làm việc và hạn chế tối đa công việc đồng bộ hóa. Bắt đầu một pha l nào đó (l được xác định dựa theo kinh nghiệm), thuật
toán sẽ chia tập phổ biến Fl-1 cho các bộ xử lý sao cho mỗi bộ xử lý Pi có thể tạo ra tập ứng cử viên i
m
C (m ≥ l) độc lập với các bộ xử lý khác i j
m m
C C (với mọi i≠j). Đồng thời, dữ liệu cũng được chia lại sao cho mỗi bộ xử lý Pi có thể cập nhật độ hỗ trợ cho các tập ứng cử viên trong i
m
C độc lập với các bộ xử lý khác. Đồng thời, dữ liệu cũng được phân chia lại sao cho mỗi bộ xử lý Pi có thể cập nhật độ hỗ trợ cho các tập ứng viên trong i
m
C một cách độc lập với các bộ xử lý còn lại trong hệ thống. Nhớ rằng, sự phân chia dữ liệu phụ thuộc rất nhiều vào bước phân chia tập ứng cử viên trước đó. Nếu phân chia tập ứng cử viên không khéo léo thì chúng ta không thể có một phân hoạch dữ liệu cho các bộ xử lý mà chỉ có một phân chia tương đối – nghĩa là có thể có những phần dữ liệu trùng lặp trên các bộ xử lý. Sau khi phân hoạch Fk-1, các bộ xử lý làm việc độc lập với nhau. Việc cập nhật độ hỗ trợ cho tập các ứng cử viên cục bộ không đòi hỏi các bộ xử lý phải truyền thông với nhau. Chỉ có một sự phụ thuộc duy nhất giữa các bộ xử lý là chúng phải gửi cho nhau những thông tin cần cho việc cắt tỉa các ứng cử viên không cần thiết. Tuy nhiên, những thông tin này có thể được truyền cho nhau theo chế độ dị bộ và các bộ xử lý không cần phải đợi để nhận đầy đủ thông tin này từ các bộ xử lý khác. Các bộ xử lý cố gắng cắt tỉa được càng nhiều càng tốt nhờ vào những thông tin đến từ các bộ xử lý khác. Những thông tin đến muộn sẽ được sử dụng cho lần cắt tỉa tiếp theo. Chúng ta xem xét cách phân chia dữ liệu của thuật toán này thông qua một ví dụ đơn giản sau đây. Cho F3 = {ABC, ABD, ABE, ACD, ACE, BCD, BCE, BDE, CDE}. Tiếp đó F4 = {ABCD, ABCE, ABDE, ACDE, BCDE}, F5 = {ABCDE} và F6 = ⍉. Chúng ta xét tập ε = {ABC, ABD, ABE} với các thành viên của nó có chung phân đầu là AB. Nhớ rằng, các tập thuộc tính ABCD, ABCE, ABDE và ABCDE cũng có chung tiền tố AB. Do đó, giả sử rằng các thuộc tính trong tập thuộc tính được sắp theo thứ tự từ vựng, chúng ta có thể phân chia các tập phổ biến trong Fk dựa vào tiền tố có độ dài k-1 đầu tiên của các tập, nhờ vậy các bộ xử lý có thể làm việc độc lập với nhau.
Bằng cách áp dụng một trong 03 giải thuật khai phá song song luật kết hợp đã được trình bày ở trên, mô hình khai phá song song luật kết hợp có thể được xây dựng như trong hình 2.6. Theo mô hình này, sau khi tiền xử lý dữ liệu ta sẽ thu được N cơ sở dữ liệu giao dịch con D1, D2,…, DN. Cơ sở dữ liệu giao dịch Di sẽ được xử lý bởi bộ xử lý Pi. Ta phối hợp hoạt động của N bộ xử lý bằng cách áp dụng một trong 03 thuật toán (phân phối độ hỗ trợ, phân phối dữ liệu, phân phối tập
ứng viên) đã được trình bày ở trên. Chú ý là trong mô hình này, tùy theo thuật toán khai phá song song được áp dụng mà có những giai đoạn của thuật toán các bộ xử lý sẽ hoạt động song song và độc lập (hoàn toàn bất đồng bộ), có những giai đoạn các bộ xử lý sẽ phải trao đổi dữ liệu để đồng bộ quá trình xử lý với nhau. Mô hình này đòi hỏi các bộ xử lý phải được kết nối với nhau thông qua một mạng truyền thông tốc độ cao và hệ thống phải được phát triển dựa trên các công cụ hỗ trợ lập trình song song (ví dụ thư viện MPI). Sau khi tìm được tập các tập phổ biến (toàn cục), ta có thể tiếp tục áp dụng thuật toán sinh luật kết hợp song song để tìm các luật kết hợp mạnh bằng cách phân chia tập các tập phổ biến toàn cục cho các bộ xử lý. Thuật toán sinh luật kết hợp song song hoàn toàn dựa trên thuật toán sinh luật kết hợp tuần tự và sẽ được trình bày trong mục 3.6 chương 3. Nhờ áp dụng các thuật toán xử lý song song đã nêu mà mô hình hệ thống như trên hình 2.6 có thể tận dụng tối đa tài nguyên phần cứng và phối hợp được sức mạnh của các bộ xử lý, giúp nâng cao hiệu năng quá trình khai phá so với xử lý tuần tự. Tuy nhiên, việc xây dựng một hệ thống như vậy là tương đối phức tạp (về mặt lập trình) và đòi hỏi chi phí lớn.