Phân tích thử nghiệm, so sánh về độ phức tạp thời gia n

Một phần của tài liệu (LUẬN văn THẠC sĩ) khai phá phụ thuộc hàm xấp xỉ sử dụng phủ tối thiểu và lớp tương đương (Trang 51)

2.3.3.1. Phân tích thử nghiệm.

Theo kết quả của chạy cả hai thuật (TANE sửa đổi và AFDMCEC), trên các tập dữ liệu UCI [9], cùng một tập các phụ thuộc hàm xấp xỉ đã đƣợc tạo ra. Cho thấy các kết quả về thời gian thực tế của thuật toán TANE sửa đổi và thuật toán AFDMCEC với các tập dữ liệu UCI với số thuộc tính và các bộ dữ liệu thay đổi cùng với các giá trị ngƣỡng ε khác nhau trong việc phát hiện tất cả các AFDs.

Bảng 2.4 mô tả thời gian thực hiện cho thuật toán TANE sửa đổi và thuật toán AFDMCEC đối với một số tập dữ liệu do J.Atoum (2009) thực nghiệm với các ngƣỡng khác nhau.

Từ bảng 2.4 cùng một tập AFDs đƣợc tìm thấy hiệu quả hơn bằng cách sử dụng thuật toán AFDMCEC so với thuật toán TANE sửa đổi. Có kết quả nhƣ vậy là do có nhiều lớp tƣơng đƣơng hơn và dẫn tới có nhiều tập thuộc tính tƣơng đƣơng hơn.

Nhiều tập thuộc tính tƣơng đƣơng hơn dẫn đến giảm bớt số các AFDs cần kiểm tra. Tuy nhiên lƣu ý là khi giá trị ngƣỡng  càng cao thì thời gian chạy đòi hỏi của hai thuật toán sẽ càng giảm đi. Đây là điều đúng vì, với giá trị ngƣỡng  cao hơn thì tỷ lệ sai số đƣợc phép nhiều hơn và số các bộ cần loại bỏ ít hơn trong việc tính g3.

2.3.3.2. So sánh về độ phức tạp thời gian (theo [8])

Chúng ta có sự so sánh về độ phức tạp thời gian đƣợc tính toán trƣớc đó cho thuật toán AFDMCEC và thuật toán TANE sửa đổi nhƣ sau:

Database Name # of Attribute # Of Tuples Modified Tane 2 3

s( r + R )+K R AFDMCEC 2 3 r +s R + R Abalone 9 4,177 2304512 46378 Balance-scale 5 625 22588 1550 Breast-cancer 11 699 2501246 249838 Bridge 13 108 7260882 1386753 Chess 7 28,056 3614034 34671 Echocardiogram 13 132 7457490 1386777 Glass 11 214 1507966 249353 Iris 5 150 7388 1075 Nursery 9 12,960 6801408 55161 Machine 10 209 640233 103609

Đánh giá kết quả chứng minh rằng thuật toán AFDMCEC thực hiện tốt hơn phiên bản sửa đổi của thuật toán TANE. Thuật toán này hoạt động tốt với các quan hệ lên đến hàng trăm ngàn bộ dữ liệu, và hƣớng tới việc cực tiêu hóa thời gian đòi hỏi của các thuật toán nhằm phát hiện các phụ thuộc hàm xấp xỉ trong các CSDL lớn.

CHƢƠNG 3

THỰC NGHIỆM KHAI PHÁ PHỤ THUỘC HÀM XẤP XỈ 3.1. Xây dựng chƣơng trình thực nghiệm

3.1.1. Giới thiệu bài toán

Khi thiết kế cơ sở dữ liệu quan hệ, cần chọn ra tập các lƣợc đồ quan hệ tốt nhất dựa trên một số tiêu chí nào đó. Để có thể thiết kế đảm bảo không có sự dƣ thừa dữ liệu, đảm bảo tính nhất quán của dữ liệu cần quan tâm đến mối ràng buộc giữa các dữ liệu trong quan hệ, đó chính là các phụ thuộc hàm. Phụ thuộc hàm là một công cụ dùng để biểu diễn một cách hình thức các ràng buộc toàn vẹn. Phƣơng pháp biểu diễn này có rất nhiều ƣu điểm, và đây là một công cực kỳ quan trọng, gắn chặt với lý thuyết thiết kế cơ sở dữ liệu.

Trong khuôn khổ thực nghiệm của luận văn, tác giả thực nghiệm tìm phụ thuộc hàm xấp xỉ trên tập dữ liệu của công ty tin học Ánh Sao trên địa bàn thành phố Hải Dƣơng. Công ty thực hiện triển khai các dự án tại các địa điểm khác nhau, mỗi dự án do một phòng chuyên môn đảm nhiệm và có nhân viên phụ trách, thực hiện trên một khoảng thời gian (số tháng). Bảng 4.1 biểu diễn dữ liệu quản lý triển khai các dự án tại các địa phƣơng. Vấn đề đặt ra là, từ dữ liệu quản lý triển khai các dự án, phát hiện mối liên hệ giữa các thuộc tính (chính là phụ thuộc hàm).

Bài toán: Cho tập dữ liệu quản lý triển khai các dự án và ngƣỡng sai số

. Tìm ra các phụ thuộc hàm xấp xỉ có sai số không vƣợt quá  .

3.1.2. Dữ liệu thử nghiệm

Trong quý I và II của năm 2015, CSDL quản lý triển khai các dự án lớn. Để thử nghiệm khai phá, ở đây chỉ trích chọn một phần nhỏ của dữ liệu thực.

Tên dự án Địa điểm dự án Tên phòng ban Tên nhân viên

Thời gian

ProjectA TP Hải Dƣơng Giải pháp mạng Quỳnh Anh 7

ProjectB TP Hải Dƣơng Phần mềm ngoại Quỳnh Anh 5

ProjectD Chí Linh Phần mềm nội Quỳnh Anh 8

ProjectD Chí Linh Phần mềm nội Lan Anh 9

ProjectA TP Hải Dƣơng Giải pháp mạng Hồng Anh 6

ProjectB Sao Đỏ Phần mềm ngoại Lan Anh 6

ProjectD Ninh Giang Phần mềm nội Hải Hà 9

ProjectE Kim Thành Chăm sóc KH Hồng Anh 5

Bảng 3.1: Dữ liệu trích chọn để khai phá.

Chuyển đổi dữ liệu để khai phá:

Để chuẩn bị dữ liệu cho khai phá phụ thuộc hàm xấp xỉ, các thuộc tính đƣợc mã hóa bởi tập số tự nhiên (tức là ánh xạ sang các số tự nhiên).

Thuộc tính

Tên dự án (TenDA) A

Địa điểm dự án (DiadiemDA) B

Tên phòng ban (TenPB) C

Tên nhân viên (TenNV) D

Thời gian (Thoigian) E

Bảng 3.2: Bảng mã hóa các thuộc tính

Tiếp đến, dữ liệu đƣợc tiền xử lý đƣa về dạng Text, ghi trên tệp BANG.txt. Mỗi giao tác đƣợc mô tả thành một dòng text trong tệp BANG.txt nhƣ sau: Liệt kê mã giá trị các thuộc tính, các mã cách nhau một dấu cách. Hình 3.1 là tệp

BANG.txt biểu diễn một phần dữ liệu trong bảng 3.1.

Hình 3.1: Dữ liệu đã mã hóa chuẩn bị cho khai phá

Tệp BANG.txt biểu diễn dữ liệu đã tiền xử lý, chuẩn bị cho khai phá phụ thuộc hàm xấp xỉ. Kết quả sẽ đƣợc ánh xạ ngƣợc lại để xác định tên thuộc tính.

3.1.3. Xây dựng chương trình thực nghiệm

Chƣơng trình sử dụng thuật toán để khai phá phụ thuộc hàm xấp xỉ sử dụng phủ tối thiểu và lớp tƣơng đƣơng, đƣợc trình bày trong chƣơng 2.

Chƣơng trình đƣợc xây dựng trên ngôn ngữ Free Pascal IDE và cài đặt trên môi trƣờng hệ điều hành Windows 7 bản 32bit. Máy tính thực nghiệm có cấu hình tối thiểu nhƣ sau:

- Tốc độ CPU: 2.0GHz; Dung lƣợng bộ nhớ RAM: 512MB - Không gian trống trên ổ cứng: 1GB

Chƣơng trình đƣợc dịch thành tệp AFDMCEC.EXE. Để khởi động chƣơng trình, nhấp đúp chuột vào biểu tƣợng AFDMCEC.EXE đƣợc đặt ở ổ C trong thƣ mục ThucNghiem của chƣơng trình.

3.2. Thực nghiệm khai phá phụ thuộc hàm xấp xỉ

Trong hình 3.2 cho thấy ứng với ngƣỡng sai số ε = 0,3 có 8 phụ thuộc hàm xấp xỉ đƣợc khai phá trên một số giao tác với 05 thuộc tính.

Ở phụ thuộc hàm thứ 7, cho kết quả: AD → B, ánh xạ ngƣợc lại tên thuộc tính, ta có PTH xấp xỉ: {TenDA, TenNV} → {DiadiemDA}.

Hình 3.2: Giao diện kết quả đƣợc khai phá phụ thuộc hàm xấp xỉ

3.3. Kết quả thực nghiệm

Chƣơng trình ứng dụng khai phá phụ thuộc hàm xấp xỉ đã thực hiện thành công, cho ta kết quả tìm đƣợc các phụ thuộc hàm biểu diễn mối liên hệ giữa các thuộc tính với ngƣỡng sai số ε = 0,3.

Kết quả thử nghiệm khai phá dữ liệu trên đã khẳng định những vấn đề lý thuyết trong khai phá phụ thuộc hàm xấp xỉ đã trình bày ở chƣơng 2.

Kết quả khai phá phụ thuộc hàm xấp xỉ do chƣơng trình thực nghiệm tìm đƣợc sẽ giúp cho việc thiết kế CSDL quản lý việc triển khai các dự án đƣợc tốt hơn, cụ thể là giúp cho việc chuẩn hóa, tách lƣợc đồ quan hệ, đƣa về dạng không dƣ thừa dữ liệu, đảm bảo tính nhất quán dữ liệu, đạt dạng chuẩn cao hơn.

KẾT LUẬN 1. Những kết quả chính của luận văn

Phụ thuộc hàm biểu diễn mối quan hệ giữa các thuộc tính của một cơ sở dữ liệu, một phụ thuộc hàm chỉ ra rằng giá trị của một thuộc tính đƣợc xác định duy nhất bởi giá trị của một số thuộc tính khác. Phụ thuộc hàm đóng vai trò quan trọng trong chuẩn hóa cơ sở dữ liệu, phát hiện các phụ thuộc hàm cũng có thể giúp các nhà thiết kế cơ sở dữ liệu tách một lƣợc đồ quan hệ thành nhiều lƣợc đồ quan hệ đạt dạng chuẩn cao hơn.

Qua quá trình nghiên cứu đề tài “Khai phá phụ thuộc hàm xấp xỉ sử dụng phủ tối thiểu và lớp tương đương”, luận văn đã đạt đƣợc một số kết quả:

- Tìm hiểu tổng quan về khai phá dữ liệu, khai phá phụ thuộc hàm trong cơ sở dữ liệu quan hệ, mở rộng khai phá phụ thuộc hàm xấp xỉ và một số vấn đề về độ đo lỗi của phụ thuộc hàm xấp xỉ.

- Tìm hiểu thuật toán TANE sửa đổi khai phá các phụ thuộc hàm và phụ thuộc hàm xấp xỉ trong cơ sở dữ liệu, thuật toán AFDMCEC khai phá phụ thuộc hàm xấp xỉ sử dụng phủ tối thiểu và lớp tƣơng đƣơng. Nhận xét và đánh giá về độ phức tạp của hai thuật toán.

- Cài đặt chƣơng trình Demo, khai phá các phụ thuộc hàm xấp xỉ sử dụng phủ tối thiểu và lớp tƣơng đƣơng trên tập dữ liệu quản lý các dự án của Công ty Ánh Sao, TP Hải Dƣơng.

2. Hƣớng nghiên cứu tiếp theo của luận văn

- Cải tiến chƣơng trình Demo để thực hiện trên cơ sở dữ liệu lớn hơn. - Nghiên cứu các phƣơng pháp mới để khai phá các phụ thuộc hàm và phụ thuộc hàm xấp xỉ trong cơ sở dữ liệu có hiệu quả cao hơn.

TÀI LIỆU THAM KHẢO Tiếng Việt:

[1] Trần Duy Anh (2007), “Phát hiện các phụ thuộc hàm xấp xỉ theo cách tiếp cận tập thô”, Tạp chí Tin học và Điều khiển học, T. 23, S. 3, tr. 284 - 295. [2] Trần Duy Anh (2014), “Biểu diễn phụ thuộc hàm xấp xỉ theo phân hoạch, ma trận phân biệt được và luật kết hợp”, Tạp chí Tin học và Điều khiển học, 30(2).

[3] Hồ Thuần (chủ biên), Hồ Cẩm Hà (2005), Các hệ cơ sở dữ liệu - Lý thuyết và thực hành, NXB Giáo dục Việt Nam.

[4] Nguyễn Thanh Thủy (2003), “Phát hiện tri thức và khai phá dữ liệu:

Công cụ, phương pháp và ứng dụng”.

Tiếng Anh:

[4]. Kivinen J., and Mannila H. (1995), “Approximate Inference of Functional Dependencies From Relations”. Theoretical Computer Science, Vol. 1, No. 49, pp. 129-149.

[5] Huhtala Y., Karkkainen J., Porkka P., and Toivonen H., (1999). “Tane: An efficient algorithm for discovering functional and approximate dependencies”.

The Computer Journal, Vol. 42, No. 2, pp. 100-111.

[6] Ronald S.King, James J.Legendre (2003), “Discovery of functional and approximate dependencies in relational databases”, Journal of applied mathematics and decision sciences, Vol. 7, No. 1, pp. 49 - 59.

[7] Wenfei Fan and et al (2011), “Discovering conditional functional dependencies”, Ieee International Conference on Data Engineering, Vol. 23, No. 5.

[8] J.Atoum (2009), “Mining Approximate Functional Dependencies from Databases based on Minimal Cover and Equivalenc classes”, European J. of cientific Research, Vol. 33, No. 2, pp. 338-346.

[9] UCI Machine Learning Repository, http://www.ics.uci.edu /~mlearn/ MLRepository.html.

[10] Han J., and Kamber M. (2012), Data Mining: Concepts and

Techniques, Third Edition, Morgan Kaufmann, Series in Data Management

Systems.

[11] Anupama A Chavan, Vijay Kumar Verma (2013), Functional Dependency Mining form Relational Database: A Survey, International Journal of Engineering and Advanced Technology, ISSN: 2249 – 8958, Volume-2, Issue-6.

PHỤ LỤC Mã nguồn chƣơng trình thực nghiệm:

uses crt;

Type mang=array[1..8]of string[8]; Var AFDT:array[1..100] of string[10]; AFDP:array[1..100] of string[10]; EQT:array[1..100] of string[10]; EQP:array[1..100] of string[10]; Can:array[1..100] of string[10]; DL:array[1..50,'A'..'E'] of String[10]; List:array[1..50] of Byte; R:String[5]; f1:text; O:mang; Procedure Nhap; Var a1,a2:Byte; a3:string[10]; Begin assign(f1,'c:\Thucnghiem\BANG.txt'); Reset(f1); for a1:=1 to 8 do Begin readln(f1,a3); DL[a1,'A']:=a3[1]; DL[a1,'B']:=a3[3];

DL[a1,'C']:=a3[5]; DL[a1,'D']:=a3[7]; DL[a1,'E']:=a3[9]; End;

End;

{Thu tuc sinh hoan vi} Procedure Hoanvi; Var max,a,i,j:byte; m,l,o,p,q:char; e:Real; Begin R:='ABCDE'; i:=1;

for m:='A' to 'E' do begin

Can[i]:=m; inc(i); End;

for m:='A' to 'E' do for l:='A' to 'E' do if(m<l)then begin

Can[i]:=m+l; inc(i);

End; for m:='A' to 'E' do for l:='A' to 'E' do

for o:='A' to 'E' do if(m<l)and(l<o)then begin Can[i]:=m+l+o; inc(i); End; for m:='A' to 'E' do

for l:='A' to 'E' do for o:='A' to 'E' do for p:='A' to 'E' do

if(m<l)and(l<o)and(o<p)then begin Can[i]:=m+l+o+p; inc(i); End; Can[i]:='ABCDE'; End;

{Thu tuc phan hoach}

Procedure Phan_Hoach(X:char;var B:mang); var L:array[1..8]of string[8];

j,dem1,dem2,a,i:byte; M1:mang; DLTG:array[1..8,'A'..'E']of string[8]; c:char; xau,xau1:string[8]; Begin

for i:=1 to 8 do M1[i]:=''; dem2:=0;dem1:=1; for dem2:=1 to 8 do Begin xau:=''; for i:=dem1 to 8 do if DL[i,X]<>DL[dem1,X] then begin a:=i; break; end; str(dem1,xau);

for i:= dem1+1 to 8 do

if DL[i,X]=DL[dem1,X] then Begin Str(i,xau1); xau:=xau+xau1; End; M1[dem1]:=xau; dem1:=a; End; for i:=1 to 7 do

for j:=8 downto i+1 do

if (pos(M1[j],M1[i])<>0)and(j>i) then M1[j]:=''; B:=M1;

{Phan hoach hai thuoc tinh}

Procedure PH(A,B:char;var C:mang); var M,N:mang; KT:string[8]; TG:array[1..50] of string[8]; i,j,k,k1,k2,k3:word; Begin Phan_Hoach(A,M); Phan_Hoach(B,N);

for i:=1 to 50 do TG[i]:=''; for i:=1 to 8 do C[i]:=''; k:=1; for i:=1 to 8 do if M[i]<>'' then Begin for j:=1 to 8 do if N[j]<>'' then Begin KT:=''; for k1:=1 to length(M[i]) do for k2:=1 to length(N[j])do if M[i][k1]=N[j][k2] then KT:=KT+N[j][k2]; TG[k]:=KT; inc(k); End; End; k3:=0;

for i:=1 to k do if TG[i]<>'' then Begin k3:=k3+1; C[k3]:=TG[i]; End; End;

{Thu tuc tinh cac phu thuoc ham xap xi} Procedure Tinh_Phu_Thuoc_xap_xi; Var max,a,i,j,k,k1,k2,dem1,dem2:byte; i1,j1:byte; e:Real; c,L:Char; Dau:array[1..5] of boolean; TG,Y:String[5]; M,N,M1,N1:mang; RY:string[100]; Begin e:=0.3;R:='ABCDE'; Nhap; Hoanvi; for i:=1 to 100 do Begin AFDT[i]:=''; AFDP[i]:=''; EQT[i]:='';

EQP[i]:=''; End;

{Tinh Phu thuoc xap xi voi cac ung vien} for a:=1 to 5 do

Begin

RY:='';TG:='';

for i:=1 to 5 do dau[i]:=true; for i:=1 to length(R) do

for j:=1 to length(Can[a]) do

if Can[a][j]=R[i] then dau[i]:=false; for i:=1 to 5 do

if dau[i]=true then RY:=RY+R[i];

for k1:=1 to length(RY) do Begin Phan_Hoach(Can[a][1],M); PH(Can[a][1],RY[k1],N); k:=0; for i:=1 to 8 do if M[i]<>'' then Begin max:=0; for j:=1 to 8 do if pos(N[j],M[i])<>0 then if max<=length(N[j]) then max:=length(N[j]);

k:=k+max;

End; if k=8 then k:=0;

if (1-(k/8))<=e then writeln(' ',Can[a],' -> ',RY[k1]); End; End; for a:=6 to 15 do Begin if length(Can[a])>=2 then Begin RY:='';TG:='';

for i:=1 to 5 do dau[i]:=true; for i:=1 to length(R) do

for j:=1 to length(Can[a]) do

if Can[a][j]=R[i] then dau[i]:=false; for i:=1 to 5 do

if dau[i]=true then RY:=RY+R[i]; for i1:=1 to length(Can[a])-1 do

PH(Can[a][i1],Can[a][i1+1],M); for j:=1 to length(RY[j]) do Begin PH(Can[a][i1],RY[j],N); k:=0; for i:=1 to 8 do if M[i]<>'' then Begin max:=0;

for j1:=1 to 8 do if pos(N[j1],M[i])<>0 then if max<length(N[j1]) then max:=length(N[j1]); k:=k+max; End; if k=8 then k:=0; if (1-(k/8)) <= e then writeln(' ',Can[a],' -> ',RY[j]); End; End; End; End; BEGIN clrscr;

writeln('Phu thuoc ham xap xi tim duoc la '); Tinh_Phu_Thuoc_Xap_Xi;

Readln; END.

Một phần của tài liệu (LUẬN văn THẠC sĩ) khai phá phụ thuộc hàm xấp xỉ sử dụng phủ tối thiểu và lớp tương đương (Trang 51)

Tải bản đầy đủ (PDF)

(69 trang)