Khai thác trên cơ sở dữ liệu phân tán dọc

Một phần của tài liệu Khai thác dữ liệu phân tán bảo toàn tính riêng tư (Trang 62 - 127)

2.2.1. Cách thực hiện

Giả sử chúng ta có hai bên tham gia vào quá trình khai thác luật (một bên gọi là Master và bên kia gọi là Slave). Nhƣ vậy, hiển nhiên một bên sẽ phải gửi dữ liệu của mình cho phía bên kia để mỗi bên đều có dữ liệu của nhau. Sau khi đã nhận đƣợc dữ liệu từ phía bên kia, các bên cùng tiến hành thực hiện phép kết giữa hai thành phần dữ liệu theo một mã khóa thống nhất trƣớc để sinh ra dữ liệu mới có sự kết hợp dữ liệu giữa hai bên. Từ bảng dữ liệu đó, mỗi bên có thể tiến hành khai thác dữ liệu theo các phƣơng pháp truyền thống.

Hình 2.1 Mô hình hoạt động khai thác luật trên CSDL phân tán

Trong trƣờng hợp có nhiều bên tham gia (n bên) với các cơ sở dữ liệu của mỗi bên lần lƣợt là (DB1, DB2,…,DBn), chúng ta cũng chọn một bên là Master để nhận dữ liệu của các bên còn lại và tiến hành khai thác dữ liệu trƣớc, sau đó lần lƣợt các

Master (DB1)

Slave (DB2) gửi dữ liệu cho nhau

Ví dụ 2.1 : Bảng 2.1 và 2.2 làthể hiện về CSDL của hai bên tham gia khai thác dữ liệu trên cơ sở dữ liệu phân tán dọc. Trong ví dụ này, miền của các TID là 10. Bảng 2.1 là CSDL của Master và bảng 2.2 là CSDL của Slave. Sau khi nhận đƣợc dữ liệu của nhau, các bên đều thực hiện phép kết theo một mã khóa thống nhất trƣớc (trong ví dụ này là TID) để tái thiết CSDL và có đƣợc dữ liệu nhƣ bảng 2.3.

Từ CSDL này các bên có thể sử dụng các thuật toán khai thác để sinh tập phổ biến và từ đó sinh luật. TID a B c d 1 1 1 2 1 1 6 1 1 1 7 1 1 1 9 1 1 1

Bảng 2.1 Cơ sở dữ liệu của Master

TID E f G h i J 1 1 1 1 2 1 1 1 1 1 4 1 1 1 6 1 1 1 1 1 7 1 1 1 10 1 1 1

Bảng 2.2 Cơ sở dữ liệu của Slave

TID a B c d E f g h I J

1 1 1 1 1 1

2 1 1 1 1 1 1 1

6 1 1 1 1 1 1 1 1

7 1 1 1 1 1 1

Nhận xét phƣơng pháp thực hiện

Với cách thực hiện nhƣ trong 2.2.1 là phƣơng pháp khai thác luật trên cơ sở dữ liệu phân tán dọc mà chƣa quan tâm đến bảo toàn tính riêng tƣ về dữ liệu của các bên tham gia quá trình khai thác. Hiển nhiên, khi các bên gửi dữ liệu cho nhau thì việc tiết lộ hoàn toàn thông tin của bên này cho bên đối diện là chắc chắn. Vấn đề đặt ra là: trong thực tế, có những bên rất muốn khai thác đƣợc luật phục vụ cho công việc của bên mình mà không muốn tiết lộ thông tin riêng cho phía bên kia biết. Khi thực hiện việc kết cơ sở dữ liệu của hai bên thành cơ sở dữ liệu DB để khai thác (DB=DB1 DB2 ) nhƣ trong 2.2.1 sẽ phát sinh ra cơ sở dữ liệu DB rất lớn (trong trƣờng hợp dữ liệu các bên tham gia là lớn) làm ảnh hƣởng trực tiếp đến thời gian khai thác ra các tập phổ biến. Nhƣ đã trình bày trong chƣơng 1, chúng ta thấy thuật toán Apriori thực thi tốt bằng việc giảm không gian thực thi dựa vào tính chất Apriori. Tuy nhiên, thuật toán phải quét cơ sở dữ liệu max + 1 lần với max là chiều dài của tập phổ biến dài nhất.Với trƣờng hợp số tập phổ biến đƣợc sinh ra lớn, max lớn hay minSup nhỏ dẫn đến tập ứng viên sinh ra rất lớn và mất nhiều lần quét cơ sở dữ liệu thì thuật toán tốn nhiều chi phí. Trong thực tế, cần phải sinh (trong trƣờng hợp xấu nhất) 2100 ứng viên để tìm tập phổ biến có kích thƣớc 100. Để khắc phục việc sinh ra dữ liệu lớn sau phép kết và tránh việc phải quét cơ sở dữ liệu nhiều lần, trong [2] các tác giả đã dựa vào phƣơng pháp IT-Tree để đề xuất hai thuật toán (left_join và full_outerjoin) khắc phục đƣợc một phần các nhƣợc điểm nêu trên.

2.2.2. Thuật toán khai thác trên CSDL phân tán dọc với phép kết ngoại

Giả sử chúng ta cần khai thác trên cơ sở dữ liệu DB = (DB1 LEFT JOIN DB2 ON TID). Nhƣ đã trình bày ở trên (2.2.1), việc phải thực hiện phép kết trong CSDL phân tán dọc sẽ cho ra quan hệ mới chứa khối lƣợng dữ liệu lớn (nếu DB1 và DB2 đủ lớn), việc phải khai thác trên một CSDL lớn sẽ mất rất nhiều thời gian. Dựa vào phƣơng pháp IT-Tree[29] tác giả luận án [2] đã đề xuất thuật toán Eclat_Distribute_ Left_Join không phải thực hiện phép kết để tránh sinh ra CSDL lớn dẫn đến thời gian thực hiện khai thác nhanh hơn so với việc phải thực hiện phép kết sinh ra dữ

đúng 1 lần để sinh ra lớp [] ban đầu. Từ đó gọi hàm Enumerate_Frequent và truyền vào lớp []ban đầu.

Thuật toán:

Đầu vào: cơ sở dữ liệu 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.

Đầu ra: tập FI gồm tất cả các tập phổ biến của CSDL DB thỏa minSup.

Phƣơng pháp thực hiện:

Lớp tƣơng đƣơng [] ban đầu chứa các item đơn phổ biến của DB1 và DB2. Riêng đối với DB2 thì phải lấy TID của mỗi item đơn giao với TID của DB1(do phép kết là Left join). Sau đó thuật toán 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ả 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. Điểm mạnh của thuật toán là chỉ quét cơ sở dữ liệu ở hai bên một lần và dựa vào phần giao giữa các Tidset để tính nhanh độ phổ biến. Nhƣ vậy chúng ta thấy, từ hai CSDL ban đầu (DB1 và DB2), không cần phải thực hiện phép kết chúng ta vẫn có thể khai thác đƣợc từ CSDL có đƣợc do hai CSDL tạo ra.

Hình 2.2 Thuật toánECLAT_DISTRIBUTE_LEFT_JOIN

Ví dụ 2.2 (Minh họa thuật toán): Xét cơ sở dữ liệu ở 2 bên nhƣ sau:

ECLAT_DISTRIBUTE_LEFT_JOIN()

TID = TID(DB1)

[] = {i  I1: |TID(i)| minSup} (adsbygoogle = window.adsbygoogle || []).push({});

 {j  I2: |TID(j)  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}

Bảng 2.4 Cơ sở dữ liệu của 2 bên tham gia khai thác

Giả sử chúng ta muốn thực hiện khai thác tập phổ biến trên CSDL DB= (DB1 Left join DB2) với minsup=40% (3TIDS). Nếu thực hiện phép kết nửa trái (Left join) ta có bảng cơ sở dữ liệu sinh bởi phép nửa kết trái (Left join) dựa trên thuộc tính TID của hai bên nhƣ sau:

TID A B C D E F G 1 1 1 1 1 2 1 1 1 1 3 1 1 1 1 1 4 1 1 1 1 1 6 1 1 1 1 1 8 1 1 1 1 9 1 1

Bảng 2.5 Cơ sở dữ liệu kết ngoại (Left join)

Tuy nhiên để tránh thực hiện phép kết nửa trái này, tác giả luận án đã đề xuất sử dụng thuật toán IT-Tree của tác giả M.J.Zaki và các cộng sự đã đề xuất trong [32]. Từ CSDL ban đầu DB1 của bên Master chúng ta khởi tạo xây dựng cây lớp tƣơng đƣơng nhƣ trong hình 2.3 bằng cách lấy TID của các Item đơn A,B,C thỏa ngƣỡng minsup.

Bƣớc kế tiếp chúng ta sẽ lấy thêm các TID của các Item đơn thuộc CSDL DB2 bằng cách thực hiện phép giao giữa TID của chúng với TID của DB1 (TID(F) =135678  1234689 =1368) và so sanh với minsup, nếu thỏa, thêm các Item này vào lớp tƣơng đƣơng ban đầu. Thực hiện với tất cả các Item đơn của DB ta có kết

TID A B C 1 1 1 2 1 1 3 1 1 4 1 1 1 6 1 1 1 8 1 1 9 1 1 Bên master (DB1) TID D E F G 1 1 1 2 1 1 3 1 1 1 4 1 1 5 1 1 1 1 6 1 1 7 1 1 1 8 1 1 Bên Slaver (DB2)

Bƣớc tiếp theo thuật toán sẽ lần lƣợt lấy phần giao của các Item với các Item thuộc các nhánh bên phải cùng mức (TID(AB)=TID(A)  TID(B)=13469123468 =1346) nếu thỏa minsup thì thêm Item này vào thành nút của cây ở mức kế tiếp. Thực hiện với tất cả các nút của cây, ta có kết quả là các tập phổ biến nhƣ trong cây hình 2.5.

Hình 2.4 Biểu diễn các mục đơn của DB1 và DB2 Hình 2.3 Biểu diễn các mục đơn của DB1

Hình 2.5 Kết quả khai thác trên CSDL phân tán với phép kết Left Join 2.2.3. Thuật toán khai thác CSDLPT dọc với phép kết ngoại hai chiều

Do yêu cầu khai thác dữ liệu khác nhau, nhiều khi chúng ta cần khai thác trên CSDL đƣợc tổng hợp từ DB1 và DB2 nhƣ sau: DB=((DB1[TID]  DB2[TID]) LEFT JOIN DB1 ON TID) LEFT JOIN DB2 ON TID) Nghĩa là, chúng ta cần khai thác cơ sở dữ liệu từ cơ sở dữ liệu đƣợc tổng hợp từ hai cơ sở dữ liệu (bảng 2.4) trong ví dụ 2.2 ở trên nhƣ sau:

TID A B C D E F G 1 1 1 1 1 2 1 1 1 1 3 1 1 1 1 1 4 1 1 1 1 1 5 1 1 1 1 6 1 1 1 1 1 7 1 1 1 8 1 1 1 9 1 1 1

Hình 2.6.Thuật toán ECLAT_DISTRIBUTE_FULL_JOIN

Điểm khác nhau chính giữa thuật toán ECLAT_DISTRIBUTE_LEFT_JOIN (2.2.2) so với thuật toán ECLAT_DISTRIBUTE_FULL_JOIN (2.2.3) ở chỗ việc tính toán các TID của các item đơn thuộc DB2 không cần phải giao với TID của DB1. Điều này nhằm lấy hết những TID có chứa item đơn trong DB2 (do phép kết là phép kết ngoại hai chiều). Nhƣ vậy số lƣợng các item đơn thỏa minsup sẽ tăng lên đáng kể (cụ thể trong ví dụ này là: A,B,C,D,E,F,G so với thuật toán trƣớc là: A,B,C,F,G ), điều này cũng hiển nhiên do yêu cầu khai thác của chúng ta trong thuật toán này ở một CSDL nhiều hơn khi thực hiện phép kết ngoại hai chiều nhằm lấy hết các CSDL có trong DB1 và DB2. Kết quả của thuật toán khi chọn minsup=30% đƣợc thể hiện trong hình 2.7.

ECLAT_DISTRIBUTE_FULL_OUTERJOIN() [] = {i  I1: |TID(i)| minSup}  {j  I2: |TID(j)| 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}

Hình 2.7 Kết quả khai thác tập phổ biến trên CSDL phân tán dọc với phép kết ngoại hai chiều

2.2.4. Thuật toán khai thác CSDLPT dọc bằng phép kết tự nhiên

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). (adsbygoogle = window.adsbygoogle || []).push({});

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: (adsbygoogle = window.adsbygoogle || []).push({});

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

Một phần của tài liệu Khai thác dữ liệu phân tán bảo toàn tính riêng tư (Trang 62 - 127)