Hình 3.2 Sơ đồ hoạt động của thuật toán
Ví dụ 3.1: Từ CSDL thực của 2 bên trong bảng 3.1
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 Master Slave
Bảng 3.1 CSDL thực của hai bên Master và Slave
Slave Tất cả các Tids thật
Master
3rd party
TID= TID(M) ∩ TID(S)
Trả về |TID(X) ∩ TID| (chính là sup của itemset
tƣơng ứng) Tất cả các Tids thật TID(X) Trả lời Là m vớ i d ữ li ệu g iả
CSDL giả đƣợc tạo ra từ CSDL thực bằng cách thêm vào các TID giả cho cả hai bên Master và Slave (dữ liệu giả là các TID chƣa sử dụng trong khoảng [1..n], n là số lƣợng các TID) ta có dữ liệu nhƣ trong bảng 3.2 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 5 1 1 1 5 1 1 6 1 1 1 6 1 1 7 1 1 7 1 1 8 1 1 8 1 9 1 9 1 1 1
Bảng 3.2 CSDL giả của cả hai bên Master và Slave
Trƣớc tiên, các bên gửi các TID thực của mình (Master gửi MTID = 1234689, Slave gửi STID = 12345678) cho bên thứ 3, bên thứ 3 sẽ tính TID = MTID
STID = 123468. Sau đó, Master sẽ tính lớp tƣơng đƣơng [] bằng cách gửi TID của các item đơn của các bên cho bên thứ 3 để thực hiện việc tính phần giao giữa TID giả của mỗi bên với TID của bên thứ 3. Kết quả trả về của bên thứ 3 cho bên đang khai thác chỉ là độ phổ biến (để phục vụ việc sinh luật sau này). Cụ thể nhƣ sau:
- Bên Master:
Xét item A: TID(A) = 13469 (TID thực) sẽ đƣợc gửi qua bên thứ 3, bên thứ 3 sẽ tính 13469 123468 = 1346 và gửi về 4. Nhƣ vậy (A) = 4. Tƣơng tự,
(B) = 6, (C) = 4. - Bên Slave:
Xét item D: gửi TID = 579 (TID giả) sang bên thứ 3 và nhận về |579123468| = 0 nên không thoả minSup = 3 loại. Tƣơng tự ta có (E)
Nhƣ vậy, ta có kết quả nhƣ sau:
Hình 3.3 Kết quả tạo ra lớp tƣơng đƣơng
Sau đó, áp dụng phƣơng pháp IT-tree để sinh ra tất cả các tập phổ biến bằng cách gửi TID của các itemset X cho bên thứ 3 và nhận về (X). Nếu (X) minSup thì thêm X vào lớp tƣơng đƣơng [Pi]. Ta có kết quả nhƣ hình 3.4.
Hình 3.4 Kết quả khai thác trên CSDL phân tán dọc bảo toàn tính riêng tƣ Nhận xét thuật toán
Về khả năng tiết lộ thông tin: Sự tiết lộ thông tin của thuật toán phụ thuộc vào việc có sự tiết lộ thông tin từ bên thứ 3 không? Điều này là không thể xảy ra vì bên thứ 3 không có dữ liệu của cả 2 bên tham gia quá trình khai thác tập phổ biến.
Trong trƣờng hợp này chúng tôi xác định tính riêng tƣ cần đƣợc bảo toàn trong trƣờng hợp này là khả năng bên Master phát hiện ra các TID giả trong số các TID do Slaver gửi sang. Nhƣ vậy dụng tiêu chí đánh giá việc bị lộ thông tin là xác suất của việc nhận ra một giao dịch là thật hay giả của bên khai thác với dữ liệu của bên kia.
Gọi L là tập tất cả các TID thực từ CSDL của Master, A là tập bất kỳ thuộc các TID thực từ CSDL của Master A L. Cho m là độ hỗ trợ tối thiểu và lA là kích thƣớc của A. Cho Q: L → (T,F) là 1 kết quả đƣợc tính toán bởi bên thứ 3 và cho P(A)T là xác suất mà Master sẽ nhận ra rằng 1 giao dịch a A là một giao dịch thực trong CSDL của Slave. Với khái niệm này, các tác giả có thể định nghĩa số lƣợng của các thông tin bị tiết lộ bởi thuật toán nhƣ sau:
Trong quá trình tính toán hỗ trợ tập A, nếu Q(A) = T, xác suất mà Master phát hiện ra 1 giao dịch là giao dịch thực là
A T
l m A
P( ) . Nếu m = lA, thì P(A)T = 1 suy ra CSDL bị tiết lộ hoàn toàn. Nếu Q(A) = F, chúng ta không có khả năng tìm ra xác suất chính xác của A từ thông tin này. Chúng ta chỉ có thể nói rằng
A T l m A P( ) 1 . Nhƣ vậy trƣờng hợp Master có thể xác định tập A là giao dịch thực xảy ra khi độ hỗ trợ tối thiểu (minsup) bằng với độ hỗ trợ của A. Lúc này tập A chứa toàn bộ các TID thật. Giả sử rằng độ hỗ trợ tối thiểu m=4 khi Master gửi đến bên thứ 3 một tập hợp 4 TID và kết quả trả về là 4. Điều đó có nghĩa là 4 TID vừa gửi đi là các TID thật. Tiếp theo, Master sẽ giữ lại 3 TID thật trong số 4 TID đó, và đối với mỗi TID j khác Master gửi đến bên thứ 3 tập hợp chứa 3 TID thật và TID j. Nếu câu trả lời của bên thứ 3 là 3 thì Master đã xác định đƣợc TID j là giả. Lần lƣợt nhƣ vậy Master sẽ tìm đƣợc tất cả các TID giả và thông tin của Slave sẽ bị lộ hoàn toàn.
Về thời gian thực hiện: Thuật toán do tác giả đề xuất đã cải tiến theo hƣớng giảm khối lƣợng dữ liệu phải trao đổi giữa các máy trong quá trình khai thác luật do đó giảm chi phí trên đƣờng truyền. Do thuật toán sử dụng phƣơng pháp IT-Tree nên
nên việc truyền / nhận dữ liệu từ Master với máy thứ 3 sẽ giảm hơn so với thuật toán [16]. Ngoài ra phƣơng pháp đề xuất của tác giả luận án đã cải tiến khi cho bên thứ 3 trả về độ hỗ trợ của các tập ứng viên, từ đó bên Master có độ hỗ trợ để sinh luật nhằm phục vụ đƣợc công việc thực tế của mình (thay vì chỉ khai thác đƣợc tập phổ biến).
Thực nghiệm thuật toán
Chúng tôi đã tiến hành cài đặt thực nghiệm thuật toán trên 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 ngẫu nhiên cho bên Slaver là 9.203 sản phẩm và bên Master là 9.921 sản phẩm cùng các giao dịch tƣơng ứng.
Quá trình thực nghiệm đƣợc thực hiện kết nối giữa 3 máy, ngôn ngữ lập trình sử dụng là C# trong Visual Studio 2005:
Máy 1: cấu hình CPU: Intel Core I3 M380, 2.53GHz, RAM 1GB đóng vai trò Slave truyền dữ liệu giả sang máy Master và truyền các TID thật của nó sang máy thứ 3.
Máy 2: cấu hình CPU: Intel Core 2 Duo P860, 2.4GHz, RAM 2GB đóng vai trò là bên thứ 3 hỗ trợ quá trình khai thác luật.
Máy 3: cấu hình CPU: Intel Core I3 M370, 2.4GHz, RAM 4GB đóng vai trò Master, sau khi kết nối xong, lần lƣợt thực hiện việc truyền các TID(i) sang máy thứ 3 và nhận về độ hỗ trợ của tập i từ máy này. Trƣớc khi truyền, dữ liệu kiểu chuỗi đƣợc chuyển sang dạng bit để giảm chi phí truyền. Kết quả thực nghiệm so sánh với thuật toán [18] ở bảng 3.3.
Minsup(%) Thuật toán [18] (s) Thuật toán đề xuất(s) 20 597.63 256.32
10 746.35 378.76
Qua thực nghiệm, số lƣợng và các tập phổ biến thu đƣợc của 2 thuật toán là giống nhau nhƣng thời gian chạy của thuật toán do tác giả luận á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 [18].