Trong [1] tác giả luận án đã trình bày một thuật toán khai thác tập phổ biến trên cơ sở dữ liệu phân tán dọc dựa vào phƣơng pháp IT-tree. Điểm mạnh của thuật toán là chỉ quét cơ sở dữ liệu một lần và dựa vào phần giao giữa các Tidset (Transaction identify set) để tính nhanh độ phổ biến. Đối với cơ sở dữ liệu phân tán, việc truyền / nhận dữ liệu giữa các bên cũng mất rất nhiều thời gian. Vì vậy, việc ứng dụng IT- tree trong khai thác tập phổ biến sẽ làm giảm đƣợc số lần gửi/nhận giữa các bên tham gia (chỉ cần một lần gửi/nhận dữ liệu).
Thuật toán:
Đầu vào: CSDL DB1 của bên Master với tập các item là I1, DB2 của bên Slave với tập các item là I2 và ngƣỡng phổ biến minSup.
Kết quả: tập FI gồm tất cả các tập phổ biến của CDSL D thỏa minSup.
Bƣớc đầu tiên lấy TID chung bằng TID của DB1 giao với TID của DB2 (TID= TID(DB1) TID(DB2)). Từ đó xây dựng lớp tƣơng đƣơng ban đầu gồm các Item
đơn của DB1 và DB2 thỏa minsup. Từ lớp tƣơng đƣơng ban đầu đó, thực hiện khai thác theo phƣơng pháp IT-Tree để sinh ra các tập phổ biến thỏa ngƣỡng minsup.
Hình 2.8 Thuật toán phát sinh tập phổ biến thỏa ngƣỡng minSup
Ví dụ 2.3(minh họa thuật toán): Xét CSDL ở 2 bên nhƣ sau:
TID A B C TID D E F G 1 1 1 1 1 1 2 1 1 2 1 3 1 1 3 1 1 4 1 1 1 4 1 6 1 1 1 5 1 1 8 1 1 6 1 1 9 1 7 1 1 8 1 Bên A Bên B
Bảng 2.7 Cơ sở dữ liệu của 2 bên tham gia khai thác
Giả sử chúng ta có 2 cơ sở dữ liệu là: DB1 ở bên (site) A và DB2 ở bên (site) B, Trong các cơ sở dữ liệu, miền giá trị của các TID đều giống nhau. Chúng ta cần khai thác các tập phổ biến gồm các thuộc tính tồn tại trong cả 2 cơ sở dữ liệu để từ đó có thể khai thác luật kết hợp. Lớp tƣơng đƣơng [] ban đầu chứa các item đơn phổ biến có từ 2 cơ sở dữ liệu ở 2 bên. Sau đó gọi hàm ENUMERATE_ FREQUENT(P) với đầu vào là lớp tƣơng đƣơng [P]. Nó xét mỗi li [P] với tất cả
ECLAT()
TID = TID(DB1) TID(DB2)
[] = {i I1: |TID(i) TID| minSup} {i I2: |TID(i) TID| minSup}
ENUMERATE_FREQUENT([]) ENUMERATE_FREQUENT([P])
for all li [P] do [Pi] =
for all lj [P] with j > i do I = li lj
T = t( li ) t( lj ) if |T| minSup then
[Pi] = [Pi] {IT}
các lj đứng sau nó để kết hợp thành một tập mới, nếu tập này thỏa minSup thì bổ sung với lớp tƣơng đƣơng con [Pi] (ban đầu đƣợc khởi tạo bằng rỗng) và gọi đệ qui để sinh các tập phổ biến ở các mức cao hơn.
Bảng 2.8 Cơ sở dữ liệu của bên A kết với bên B (DB1 DB2 )
Từ CSDL sinh bởi DB1 DB2, ta thấy số dòng dữ liệu là 6. Nhƣ vậy, với
minSup = 50%, những tập mục nào có từ 3 dòng dữ liệu trở lên mới thỏa minSup. Ta có cây biểu diễn các mục đơn của DB1 và DB2 nhƣ hình 2.8.
Các bƣớc tiếp theo thực hiện tƣơng tƣ nhƣ các thuật toán 2.2.2 và 2.2.3 (đã trình bày ở trên) ta có hình 2.9 và hình 2.10 mô tả các bƣớc thực hiện và kết quả là các nút của cây chính là các tập phổ biến thu đƣợc.
Khi thực hiện khai thác trên CSDL phân tán dọc với n bên với CSDL lần lƣợt là (DB1, DB2, ...,DBn), một bên bất kỳ sẽ đƣợc coi là Master để thực hiện quá trình khai thác, nhƣ vậy các bên tham gia sẽ gửi dữ liệu cho bên Master khai thác, sau đó nhận kết quả từ Master trả về. Khi một bên nào đó trong số các bên muốn tiến hành khai thác theo yêu cầu riêng thì các bên còn lại sẽ gửi dữ liệu cho bên đó tiến hành khai thác TID A B C D E F G 1 1 1 1 1 2 1 1 1 3 1 1 1 1 4 1 1 1 1 6 1 1 1 1 1 8 1 1 1
Hình 2.9 Cây biễu diễn các mục đơn của DB1 và DB2
Nhận xét các thuật toán
Vào năm 2005 tác giả M.J.Zaki và các cộng sự đã đề xuất ra phƣơng pháp IT- Tree [29] để khai thác tập phổ biến trên CSDL tập trung. Trong qua trình nghiên cứu các yêu cầu khai thác dữ liệu trên CSDL phân tán, tác giả luận án đã thấy đƣợc ƣu điểm khi áp dụng phƣơng pháp này để thực hiện khai thác trên CSDL phân tán dọc là, sẽ không cần thực hiện các phép kết dữ liệu giữa các bên tham gia, điều đó rất có lợi khi không làm sinh ra CSDL lớn (do phép kết các CSDL tạo thành) từ đó sẽ làm giảm thời gian khai thác trên CSDL phân tán dọc. Các thuật toán 2.2.2, 2.2.3, 2.2.4 do tác giả luận án đề xuất đều thực hiện khai thác tập phổ biến trên CSDL phân tán dọc và sau khi tạo đƣợc lớp tƣơng đƣơng ban đầu thì đều thực hiện các bƣớc tiếp theo tƣơng tự phƣơng pháp IT-Tree. Đóng góp của tác giả luận án trong ba thuật toán này là đề xuất việc tạo ra lớp tƣơng đƣơng ban đầu cho các thuật toán khác nhau từ các yêu cầu thực hiện các phép kết khác nhau (left join, outer join, inner join) trên CSDL phân tán dọc.
Thực nghiệm thuật toán
Phần thực nghiệm 3 thuật toán đề xuất, tác giả chỉ chọn thực nghiệm một thuật toán 2.2.4 (thuật toán khai thác CSDL phân tán dọc bằng phép kết tự nhiên) để so sánh về thời gian thực hiện với thuật toán khai thác do tác giả Zaki đề xuất (1.2.1.4). Hai thuật toán còn lại (2.2.2, 2.2.3) cũng sẽ cho tỷ lệ chênh lệnh về kết quả thời gian gần tƣơng tự, do trong hai thuật toán (2.2.2,2.2.3) khi tạo ra lớp tƣơng đƣơng ban đầu, mặc dù theo các phép kết khác nhau (kết ngoại và kết ngoại 2 chiều) thì lớp này có số phần tử khác nhau, nhƣng cũng tƣơng ứng khi thực hiện với thuật toán của Zaki [29] trên CSDL tập trung với cùng phép kết. Vì vậy, tỷ lệ thời gian thực hiện cả ba thuật toán này so với [29] là gần tƣơng tự nhau. Chúng tôi tiến hành thực nghiệm thực hiện trên 2 máy có cấu hình nhƣ sau:
Máy 1: cấu hình CPU: Intel Core I3 M380, 2.53GHz, RAM 1GB đóng vai trò khác nhau trong 2 thuật toán: truyền toàn bộ dữ liệu sang máy 2 (trong trƣờng hợp sử dụng phƣơng pháp IT-tree của Zaki) và truyền các Itemset và Tidset của nó sang
Máy 2: cấu hình CPU: Intel Core I3 M370, 2.4GHz, RAM 4GB đóng vai trò nhận dữ liệu từ máy 1 sau đó thực hiện phép kết dữ liệu để sinh ra CSDL tập trung rồi thực hiện thuật toán 1.2.1.5 để khai thác. Trong trƣờng hợp thực hiện theo thuật toán đề xuất (2.2.4) máy 2 chỉ nhận các itemset và Tidset của chúng từ máy 1 rồi tiến hành khai thác.
Dữ liệu thực nghiệm là CSDL bán hàng của siêu thị CO-OP Mart TP. Hồ Chí Minh, chi nhánh Đinh Tiên Hoàng đã thực hiện giao dịch trong năm 2006. Tổng số mẫu tin tham gia khai thác luật là 1.046.175 mẫu tin với số sản phẩm tham gia trong các giao dịch là 19.124 sản phẩm. Chúng tôi chia dọc CSDL ngẫu nhiên làm hai phần: cho bên máy 1 là 9.203 sản phẩm và bên máy 2 là 9.921 sản phẩm. Tất cả dữ liệu đƣợc chuyển sang dạng bit để giảm chi phí truyền.
Thời gian thực hiện bắt đầu tính từ khi máy 1 bắt đầu quét dữ liệu, truyền dữ liệu cho bên máy 2 và kết thúc khi máy 2 khai thác xong tập phổ biến, hiển thị kết quả khai thác ra màn hình. Kết quả thực nghiệm trong bảng 2.9
Minsup(%) Thuật toán 1.2.1.4 (s) Thuật toán 2.2.4 (s) 20 468.32 213.23 10 623.45 325.52
Bảng 2.9 Kết quả thực nghiệm trên CSDL CO-OP Mart TP.HCM
Từ kết quả thực nghiệm chúng tôi thấy thời gian chạy của thuật toán đề xuất là thấp hơn nhiều so với thời gian thực hiện của thuật toán IT-Tree [29]. Do phải thực hiện việc truyền dữ liệu với khối lƣợng lớn từ DB1 sang DB2, sau đó thực hiện phép kết để sinh ra CSDL chung và tiếp tục quét trên CSDL lớn này để sinh ra lớp tƣơng đƣơng ban đầu nên thuật toán 1.2.1.4 tốn nhiều thời gian thực hiện hơn.