Với quan hệ R có R thuộc tính và r bộ. Độ phức tạp thời gian của thuật toán TANE sửa đổi phụ thuộc vào số bộ trong cơ sở dữ liệu r , phụ thuộc vào số tập trong tất cả các mức của dàn các thuộc tính ứng viên
R
s (2 ) và số khóa K (2 /R R ).
Do đó độ phức tạp của thuật toán TANE sửa đổi là:
2 3
(s( r R ) K R )
.
Phần tiếp theo sau trình bày thuật toán tìm phụ thuộc hàm xấp xỉ dựa trên một số khái niệm của lý thuyết thiết kế CSDL quan hệ là phủ tối thiểu và lớp tƣơng đƣơng do tác giả Jalal Atoum (Khoa Khoa học Máy tính, Đại học Công nghệ (PSUT), Jordan) đề xuất và công bố năm 2009 [8]
2.3. 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
2.3.1. Mô tả thuật toán
Thuật toán khai phá phụ thuộc hàm xấp xỉ từ những cơ sở dữ liệu lớn đƣợc trình bày dƣới đây dựa trên độ đo xấp xỉ g . Trong đó có sử dụng một 3 số khái niệm của lý thuyết thiết kế cơ sở dữ liệu quan hệ, cụ thể là các khái niệm phủ tối tiểu và những lớp tƣơng đƣơng (Mining Approximate Functional Dependencies from Databases based on Minimal Cover and Equivalenc
Classes viết tắt là “AFDMCEC”). Thuật toán này làm giảm bớt số các thuộc tính và các phụ thuộc hàm xấp xỉ cần kiểm tra bởi có kết hợp với một vài khái niệm từ lý thuyết thiết kế cơ sở dữ liệu quan hệ.
Những khái niệm đầu tiên bao gồm việc tăng trƣởng tính phủ tối tiểu của các phụ thuộc hàm xấp xỉ trong mỗi giai đoạn phát hiện những phụ thuộc hàm này. Mục đính của cách làm này là để giảm tối thiểu số các phụ thuộc hàm xấp xỉ cần kiểm tra. Trong khi đó khái niệm thứ hai bao gồm việc tính toán về
sự tƣơng đƣơng của các thuộc tính dựa trên bao đóng không tầm thƣờng của chúng. Đối với mỗi cặp thuộc tính có cùng bao đóng, thuật toán loại đi một trong chúng khỏi tập hợp các thuộc tính ứng viên. Nhƣ vậy thuật toán cũng xem hai thuộc tính này là tƣơng đƣơng xấp xỉ . Điều này sẽ làm giảm bớt số thuộc tính cần phải kiểm tra trong mỗi giai đoạn của thuật toán AFDMCEC.
Sau đây là thủ tục chính của 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.
Thuật toán
Input: Tập dữ liệu D và những thuộc tính X , X ,..., X1 2 n của nó
: Ngƣỡng sai số, 0 1
Output: Tập phụ thuộc hàm xấp xỉ tối tiểu MinimalApproximate_FDSet, tập hợp ứng viên cho mức tiếp theo, EQ_Set
1. Bƣớc khởi tạo
Set R=(X , X ,..., X )1 2 n
Nrows = Số hàng trong cơ sở dữ liệu. Set FD_Set =
Approximate_FDSet =
Set EQ_Set =
Set Candidate_Set = {X , X ,..., X }1 2 n 2. While Candidate_Set Do
For all Xi Candidate_Set Do
Approximate_FDSet=ComputeMinimaiApproximate_FD(X )i
GenerateNextLevelCandidates(Candidate_Set) 3. Display ApproximateFD_Set
hàm xấp xỉ tối tiểu ComputeMinimalApproximate_FD(X )i cho mỗi X i trong tập ứng viên. Với mỗi thuộc tính Y,Y R - Xi, nếu g (X3 i Y)
thì bổ sung Xi Y vào tập phụ thuộc hàm xấp xỉ Approximate_FDSet, và nếu bao đóng xấp xỉ của X bằng với bao đóng xấp xỉ của Y thì bổ sung i
i
YX vào tập phụ thuộc hàm xấp xỉ Approximate_FDSet, bổ sung
i
X Y vào tập EQ_Set và loại bỏ Y khỏi tập ứng viên Candidate_Set. Sau đây là các thủ tục đƣợc sử dụng trong chƣơng trình chính.
Thủ tục ComputeMinimalApproximate_FD(X )i : // Thủ tục tính phụ thuộc hàm xấp xỉ tối tiểu
Procedure ComputeMinimalApproximate_FD(Xi)
Max = 0
TempList =
For each Y R - Xi do
i
M ?X // Tập các lớp tƣơng đƣơng của thuộc tính Xi i
M ?X Y // Tập các lớp tƣơng đƣơng của thuộc tính XiY For all SN do
For all TM do if TS then
W=WT
if Max<Len(T) then Max<Len(W)
Add Max to Templist For I = 1 to Len(Templist)
J = J + Templist(I) Result = 1 – J/Nrows If Result ε Then
Add Xi Y to ApproximateFD_Set
If (approximate closure(Xi) = approximate closure (Y)) then Add YXi to ApproximateFD_Set
Add Xi to closure [Y] Add XiY to EQ_Set Remove Y from candidate_set
Thủ tục GenerateNextLevelCandidates procedure: //Thủ tục sinh các ứng viên mức tiếp
Procedure GenerateNextLevelCandidates(CANDIDATE_SET)
For each Xi Candidate_Set do For each Xj Candidate_Set do
If (Xi[1]Xj[1],...,Xi[k-2]Xj[k-2] and Xi[k-1]Xj[k-1]) then Set XijXi join Xj
If Xij TempList then Delete Xij
else
Compute the partition Xij of Xij
2.3.2. Độ phức tạp của 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 dụng phủ tối thiểu và lớp tương đương
Thuật toán AFDMCEC đề xuất sẽ kiểm tra toàn bộ bảng gồm r bộ để tìm tất cả những lớp tƣơng đƣơng với độ phức tập thời gian tỷ lệ với r . Sau đó phần chính của thuật toán AFDMCEC có một vòng lặp lặp lại R lần. Vì
vậy, phần chính này có độ phức tạp thời gian tỷ lệ với R . Trong mỗi lần lặp của vòng lặp, có một lần gọi cho mỗi thủ tục sau.
lần lặp. Trong mỗi lần lặp có một vòng lặp kiểm tra toàn bộ những ứng viên trong mức đó có kích thƣớc s = 2R. Do đó tổng thời gian của bƣớc này là
s* R
2. GenerateNextLevelCandidates(Candidate_set) thủ tục này thực hiện hai vòng lặp lồng nhau, mỗi vòng lặp vớiR lần lặp, cần một tổng thời gian bằng
2
R . Vì vậy, tổng độ phức tạp thời gian đòi hỏi giải thuật AFDMCEC là:
2 2 3
O( r R (s R R ))O( r s R R )
2.3.3. Phân tích thử nghiệm, so sánh về độ phức tạp thời gian . 2.3.3.1. Phân tích thử nghiệm. 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 Mã
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/