Giàn giao

Một phần của tài liệu Ứng dụng lý thuyết giàn giao trong khai thác dữ liệu (Trang 61)

Phần này nhắc lại một số khái niệm và kết quả liên quan đến giàn giao. Cho tập hữu hạn U gọi là tập nền, ta kí hiệu Poset(U) là họ toàn thể các tập con của U với thứ tự bộ phận là

phép bao hàm , Poset'(U) = Poset(U) {U}. Một giàn giao G

là một họ các tập con của U đóng với phép giao, cụ thể là,

nếu G = {V1, V2,…,Vk | Vi

Poset(U), i = 1,2,…,k} thì  Vi,

Vj  G: ViVj  G. Khi đó G chứa duy nhất một họ con S sao

cho mọi phần tử của G đều được biểu diễn qua giao của các phần tử trong S, cụ thể là, S là tập con nhỏ nhất của G thỏa tính chất G = {Y | Y = X1  …  Xk , k  0, X1, … , Xk  S}. S được gọi là tập sinh của giàn G và được ký hiệu là Gen(G). Theo

quy ước, giao của một họ rỗng các tập con chính là U, do đó mọi Gen đều không chứa U.

Thuật toán tìm tập sinh của giàn giao

Algorithm Gen

Input – Giàn giao G Output – Tập sinh Gen(G) Method

1. Xây dựng đồ thị có hướng H=(G,E) trong đó G là tập đỉnh. Cung (u,v)  E khi và chỉ khi u là cha trực tiếp của v.

2. return {g  G | d(g)  1}

// d(g) là bậc của đỉnh g, tức là số cung đến đỉnh g

Hình 3.1. Đồ thị của giàn các tập mục thường xuyên P.

Cho (M, ) là một tập hữu hạn có thứ tự bộ phận. Phần tử m trong M được gọi là cực đại nếu từ m  x và xM ta luôn có m=x. Ta ký hiệu MAX(M) là tập các phần

tử cực đại của M. Dễ thấy rằng, với mỗi phần tử x trong M, luôn tồn tại một phần tử

m trong MAX(M) thỏa x  m. Với mỗi họ các tập con của một tập hữu hạn U cho

trước ta xét thứ tự bộ phận . Cho G là một giàn giao trên tập hữu hạn U. Ta ký

hiệu Coatom(G) = MAX(G {U}) và gọi các phần tử trong Coatom(G) là đối nguyên tử của giàn giao G. Trong [3.2.1] phát biểu và chứng minh các kết quả sau. Mệnh đề 1: Với mọi giàn giao G trên tập hữu hạn U, ta có:

MAX(Gen(G)) = MAX(G {U}) = CoatomG

3.4. Các tính chất của tập mục thường xuyên

Cho bảng T gồm N giao tác trên tập mục nền U, P là họ các tập mục thường

xuyên theo ngưỡng  cho trước. Trước hết ta nhận xét rằng, nếu X  Y  U thì (X)  (Y). Hệ thức này thể hiện tính nghịch biến của hàm đo độ hỗ trợ .

Mệnh đề 2: P là một giàn giao. Chứng minh

Giả sử X, Y  P, Z = X  Y. Ta có Z  X, do đó (Z)  (X)  . Vậy Z  P

Mệnh đề 2 cho phép chúng ta vận dụng các tính chất của giàn giao trong xử lý các tập mục thường xuyên. Cụ thể là khi cần ẩn tập mục nhạy cảm H ta sẽ sửa các tập mục lớn nhất chứa H trong giàn giao P, tức là các Coatom chứa H.

Mệnh đề 3: Với mỗi tập mục thường xuyên X trong P, Poset(X)  P và là một giàn

giao đầy đủ với tập Gen gồm các phần tử trên hàng thứ 2.

Hình 3.2. Giàn giao đầy đủ của Poset(ABE)

Chứng minh (adsbygoogle = window.adsbygoogle || []).push({});

Giả sử X  P và Y  X. Ta có ngay (Y)  (X)  . Từ đây suy ra Y  P, nghĩa là mọi tập con của X đều là tập mục thường xuyên. Do Poset(X) chứa mọi tập con của X nên Poset(X) là đầy đủ và đương nhiên đóng với phép giao. Theo mệnh đề 1 ta thấy với mọi mục AX, X{A} chỉ khuyết duy nhất một phần tử, do đó chúng có duy nhất một cha. Mọi tập con còn lại trong Poset(X) đều khuyết từ hai phần tử trở lên do đó chúng có ít nhất là hai cha. Vậy Gen(X) bao gồm các phần tử đứng trên hàng thứ hai trên đồ thị biểu diễn giàn đã cho.

Do Gen(X) chỉ gồm các tập con khuyết một phần tử của X nên thuật toán xác định Gen(X) khá đơn giản.

Thuật toán Gen sau đây được sử dụng để xác định tập sinh trong giàn giao đầy đủ Gen(X)

Thuật toán xác định tập sinh trong giàn giao đầy đủ Gen(X)

Algorithm Gen

Input: Tập mục X  U

Output: Họ các tập sinh G của giàn giao đầy đủ X Method

G = ;

for each item A in X do

Add X{A} to G;

endfor;

return G;

EndGen.

Mệnh đề 3 và tính chất nghịch biến của hàm  cho ta thấy rằng các phần tử trong Gen(X) có độ hỗ trợ nhỏ nhất trong Poset(X){X}. Nếu X  P, với mỗi mục A  X ta xét hàm L(A,X) cho giá trị nhỏ nhất trong số các độ hỗ trợ của các tập con

đúng (tức là tập con của X và khác X) và chứa A của X,

L(A,X) = min {(Y) | A  Y, Y  X}

Dựa vào nhận xét trên ta thấy có thể tính L(A,X) thông qua các tập chứa A

trong Gen(X).

Mệnh đề 4: Nếu tập mục thường xuyên X bị ẩn thì mọi tập mục thường xuyên Y

Chứng minh

Nếu X bị ẩn thì (X) < . Giả sử X  Y. Ta có, (Y)  (X) < , nghĩa là Y

cũng bị ẩn theo.

Mệnh đề 5:Nếu X  P thì mọi Update(A,X,d), A  X đều kéo theo Update(A,Y,d), Y  X, A  Y.

Chứng minh

Để ý rằng thao tác Update(A,X,1) sẽ xóa một xuất hiện của mục A trong tập

mục X, nghĩa là thay X bằng X{A}. Từ đó suy ra rằng mọi tập mục con chứa A của

X cũng sẽ giảm số lần xuất hiện 1 đơn vị.

Các tập mục Y như mô tả trong mệnh đề 5 được gọi là các tập mục chịu hiệu

ứng phụ khi cập nhật (xóa) mục A tập mục X. Mệnh đề này cho thấy nếu cập nhật

mục A trong tập mục X thì cần chú ý đến các tập mục con đúng và chứa A của X. (adsbygoogle = window.adsbygoogle || []).push({});

Nếu độ hỗ trợ của chúng lớn hơn ngưỡng  không nhiều thì chúng sẽ có nguy cơ bị ẩn theo.

3.5. Thuật toán ẩn tập mục nhạy cảm

Dựa vào các mệnh đề 1 … 5, phần này trình bày thuật toán Itemhide ẩn một tập mục nhạy cảm H. Việc mở rộng thuật toán để ẩn nhiều tập mục nhạy cảm là khá dễ dàng.

Cho bảng T gồm N giao tác trên M mục, cho ngưỡng hỗ trợ  và giả thiết rằng ta đã xây dựng được họ các tập mục thường xuyên P. Cho tập mục nhạy cảm H 

P. Khi đó thuật toán ẩn tập mục H được thực hiện qua các bước sau đây.

Bước 1: Xác định họ V các tập mục chứa H trong Coatom(P) ,

V = {X  Coatom(P) | H  X }

Bước 2: Với mỗi mục A  H và với mỗi X trong V lượng giá xem có nên sửa mục A trong X không? Tiêu chuẩn đặt ra là việc sửa mục A trong X không gây hiệu ứng

phụ đến các tập con đúng chứa A của X. Giả sử (A,X) đạt giá trị max {L(A,X) | A 

H, X  V} ta gọi thủ tục Update(A, X, d), với d = min {(H) – (–1), (X)} Bước 2 sẽ được lặp đến khi (H) =  – 1.

Thuật toán Itemhide - ẩn tập mục nhạy cảm

Algorithm Itemhide

Input: T bảng trị 0/1 thể hiện các giao tác trên tập mục nền U,

P – họ các tập mục phổ biến của U, ngưỡng hỗ trợ, H tập mục nhạy cảm H (cần ẩn), M  P. Output: bảng kết quả T . Method s = (H); while (s >  – 1) do Compute V = {X  Coatom(P) | H  X };

Let (A, X) = GetMax {L(A,X) | A  H, X  V};

Compute d = min {s – (–1), (X)};

Update(A,X,d);

s = s – d;

endwhile end Itemhide.

3.6. Ví dụ minh họa cho thuật toán

Xét CSDL bao gồm 22 giao tác như sau. 

Bảng 3.2. Các tập mục thường xuyên theo ngưỡng 4

ABCDE ABCDE  1. 10101 2. 10101 3. 11001 4. 11001 5. 01010 6. 00111 7. 10011 12. 01011 13. 00110 14. 10011 15. 01101 16. 11001 17. 11001 18. 01010 A 10 B 11 C 8 D 12 E 18 AB 4

8. 01101 9. 00011 10. 01000 11. 10011 19. 00111 20. 10011 21. 01101 22. 00011 AD 4 AE 10 BE 8 CE 7 DE 9 ABE 4 ADE 4 Bảng T với 22 giao tác

được viết thành hai mảnh

Các tập mục thường xuyên theo ngưỡng  = 4

Tập mục cần ẩn là M = {AE}. Thuật toán được thực hiện như sau: - Tập nền U = ABCDE.

- Tập phổ biến P = {A/10, B/11, C/8, D/12, E/18, AB/4, AD/4, AE/10, BE/8, CE/7, DE/9, ABE/4, ADE/4}.

- Gen(P) = {ABE, ADE, DE, CE, BE, AD, AB, C}. - Tựa giàn tập phổ biến ngưỡng  = 4.

- Coatom(P,M) = {ABE, ADE}. - Với X = ABE ta có: (adsbygoogle = window.adsbygoogle || []).push({});

 Gen(A, ABE) = {AB, AE}.

 Xét A trong ABE, ta có: L(A, ABE) = 4  Xét E trong ABE, ta có: L(E, ABE) = 8 - Với X = ADE ta có:

 Gen(ADE) = {AD, AE, DE}

 Xét A trong ADE, ta có: L(A, ADE) = 4  Xét E trong ADE, ta có: L(E, ADE) = 9 - V = Max{4, 8, 4, 9} = 9.

- Sửa giá trị của E trong các bộ chứa ABE và ADE. Sửa giá trị của E trong các bộ chứa ADE, tại các bộ có gạch chân trong bảng 3.3.

- Lúc đó α(AE) = 10 – 4 = 6 > c.

- Tiếp tục sửa giá trị của E trong các bộ chứa ABE, tại các bộ có gạch chân trong bảng 3.4 (các dòng 3,4,16).

- Sau khi thực hiện sửa 3 lần, ta có α(AE) = 6 – 3 = 3 < c. Lúc này AE đã được ẩn, thuật toán dừng.

- Tập phổ biến sau khi ẩn: P = {DE, CE, BE, AD, AB, A, B, C, D, E}, - Số tập mục bị ẩn nhầm: 0 ⇒ Hiệu ứng phụ = 0.

1. Xét A trong ABE, Min(A, ABE) = 4 2. Xét A trong ADE, Min(A, ADE) = 4 3. Xét E trong ABE, Min(E, ABE) = 8 4. Xét E trong ADE, Min(E, ADE) = 9

= Max = 9.

Bảng 3.3. Sửa giá trị của E trong các bộ chứa ADE.

ABCDE ABCDE 1. 10101 12. 01011 2. 10101 13. 00110 3. 11001 14. 10011 4. 11001 15. 01101 5. 01010 16. 11001 6. 00111 17. 11001 7. 10011 18. 01010 8. 01101 19. 00111 9. 00011 20. 10011 10. 01000 21. 01101 11. 10011 22. 00011

Kết luận: Sửa E tại ABE và ADE

Bảng 3.4. Sửa giá trị của E trong các bộ chứa ABE.

ABCDE ABCDE Tập mục

thường xuyên

1. 10101 12. 01011 A 10 2. 10101 13. 00110 B 11 3. 11000 - 14. 10010 + *C 8 4. 11000 - 15. 01101 D 12 5. 01010 16. 11000 - E 18/11 6. 00111 17. 11001 *AB 4 7. 10010 + 18. 01010 *AD 4 8. 01101 19. 00111 AE ! 10/3 9. 00011 20. 10010 + *BE 8/5 10. 01000 21. 01101 *CE 7 11. 10010 + 22. 00011 *DE 9/5 ABE ! 4/1 ADE ! 4/0

+ sửa E trên dòng chứa ADE, - sửa E trên dòng chứa ABE, ! Tập mục bị ẩn

Chương 4

CHƯƠNG TRÌNH THỰC NGHIỆM 4.1. Giới thiệu

Trong luận văn này, học viên tập trung nghiên cứu thiết kế và cài đặt một phần mềm quản lý để ẩn các tập mục nhạy cảm. Chương trình được viết bằng ngôn ngữ C# phiên Visual Studio 2010 với các chức năng chủ yếu là ẩn các tập mục

nhạy cảm dựa trên giàn giao. Cơ sở dữ liệu được lưu trữ trong SQL Server 2008. Việc cài đặt chương trình ứng dụng nhằm mục đích mô phỏng các kết quả nghiên cứu của học viên thông qua các ví dụ.

Chương trình có tên ứng “Ẩn tập mục nhạy cảm” (Itemhide.exe) với: Dữ liệu đầu vào bao gồm:

 M: độ dài tập nền  T: bảng trị 0/1  : ngưỡng hỗ trợ

 H: tập mục nhạy cảm cần ẩn

Dữ liệu đầu ra bao gồm: Ẩn các tập mục nhạy cảm và danh mục các tập mục thường xuyên mới.

Bảng trị là file CSDL cho trước (các cấu trúc bao gồm: các mục, các giao tác) có thể nhập dữ liệu trực tiếp từ cửa sổ chương trình, sau đó ghi vào CSDL để sử dụng cho các lần sau.

4.2. Các chức năng chính của chương trình

Dưới đây là các mô tả hoạt động các chức năng chính của chương trình. (adsbygoogle = window.adsbygoogle || []).push({});

Hình 4.1 Giao diện chính chương trình

Hình 4.2 Giao diện chương trình khi tính độ hỗ trợ của tất cả các tập mục  ĐỘ PHỔ BIẾN: Tính độ hỗ trợ của tất cả các tập mục.

Hình 4.3 Giao diện chương trình khi tìm tất cả tập mục thường xuyên

 ĐỘ HỖ TRỢ: Chương trình cho phép nhập độ hỗ trợ. Sau đó tìm và hiển thị tất cả các tập mục thường xuyên.

Hình 4.4 Giao diện chương trình hiển thị các tập mục thường xuyên mới  TẬP MỤC ẨN: Chương trình cho phép nhập vào tập mục nhạy cảm cần ẩn. Sau đó

ẩn tập mục nhạy cảm và hiển thị các tập mục thường xuyên mới.

 Ngoài ra chương trình còn thiết kế một số chức năng khác như: BROWSE, IMPORT, LƯU CSDL, CẬP NHẬT, XÓA, THOÁT.

KẾT LUẬN

1. Kết quả đạt được của luận văn

Ẩn các tập mục nhạy cảm là bài toán quan trọng trong khai thác dữ liệu. Đây là

công việc hiện đang được rất nhiều các nhà nghiên cứu quan tâm. Một trong những vấn đề các nhà nghiên cứu quan tâm khi giải quyết bài toán là giảm các hiệu ứng phụ, tức là ẩn nhầm các tập mục phổ biến khác và giảm số lần truy cập giao tác.

Trên cơ sở nghiên cứu lý thuyết giàn giao và các hướng nghiên cứu trước đây đây đã được thực hiện để giải quyết bài toán ẩn các tập mục nhạy cảm, luận văn đã đề xuất một hướng tiếp cận để giải quyết bài toán này đó là tiếp cận MaxMin dựa trên lý thuyết giàn giao. Trên cơ sở phân tích các đặc điểm của bài toán, các định lý, mệnh đề của lý thuyết giàn giao từ đó đã chỉ ra được sự liên quan giữa bài toán và lý thuyết giàn giao. Do đó, việc ứng dụng lý thuyết giàn giao để giải quyết bài toán này là hoàn toàn có cơ sở toán học và đảm bảo tính đúng đắn. Từ đó, luận văn đã sử dụng lý thuyết giàn giao để đề xuất hai thuật toán quan trọng: thuật toán tìm Gen(G) và thuật toán ẩn tập mục nhạy cảm M. Thuật toán ẩn tập mục nhạy cảm thực hiện việc ẩn tập mục nhạy cảm bằng cách sửa các mục trong tập biên của tập sinh Gen sao cho ít tác động đến tập sinh Gen nhất, do đó hiệu ứng phụ xảy ra trong CSDL kết quả là ít nhất.

Với số mục vừa phải, chẳng hạn 64 mục, thì thuật toán có thể được cài đặt được với việc quản lý mục thông qua các số nguyên. Ngoài ra, thuật toán có thể đưa ra cài đặt ứng dụng với những bảng cơ sở dữ liệu có số lượng bản ghi là vài chục ngàn. Nếu lựa chọn cấu trúc dữ liệu thích hợp, thuật toán có thể áp dụng được cho các bảng dữ liệu lớn.

2. Hướng nghiên cứu tiếp theo

Trên cơ sở những nghiên cứu đã được trình trình bày trong luận văn, tiếp tục tìm hiểu các thuật toán liên quan. Cài đặt trên các CSDL lớn và chuẩn từ đó so sánh với các thuật toán đã được công bố trước đó.

Mặc dù bản thân đã cố gắng tập trung nghiên cứu và tham khảo các tài liệu, bài báo, tạp chí khoa học trong và ngoài nước, nhưng do trình độ còn nhiều hạn chế nên không thể tránh khỏi những thiếu sót. Rất mong nhận được sự đóng góp của các quý thầy cô và các nhà khoa học để luận văn được hoàn thiện hơn.

TÀI LIỆU THAM KHẢO Tài liệu tiếng Việt

[1] NGUYỄN XUÂN HUY, LÊ QUỐC HẢI, NGUYỄN GIA NHƯ, CAO TÙNG ANH, BÙI ĐỨC MINH, Lý thuyết giàn và ứng dụng trong thuật toán ẩn tập

mục nhạy cảm, Báo cáo tại Hội thảo Quốc gia " Một số vấn đề chọn lọc của

CNTT và truyền thông, Đồng Nai, 5-6 Tháng 8, (2009).

[2] NGUYỄN XUÂN HUY, LÊ ĐỨC MINH, VŨ NGỌC LOÃN, Các ánh xạ đóng và ứng dụng trong cơ sở dữ liệu, Tạp chí Tin học và Điều khiển học, 16, No. 4, 2000, 1-6.

[3] NGUYỄN XUÂN HUY, Giàn giao của ánh xạ đóng, Chuyên san các công trình nghiên cứu - triển khai viễn thông và công nghệ thông tin, số 14, 4-2005, 35-42.

[4] NGUYỄN XUÂN HUY, Các phụ thuộc logic trong cơ sở dữ liệu, Viện KH&CN VN, NXB Thống kê, 2006.

Tài liệu tiếng Anh

[5] George V. Moustakides, Vassilios S. Verykios, A MaxMin Approach for

Một phần của tài liệu Ứng dụng lý thuyết giàn giao trong khai thác dữ liệu (Trang 61)