Đánh giá độ phức tạp của thuật toán xác định giá trị LOF

Một phần của tài liệu Nghiên cứu các phần tử ngoại lai luận văn thạc sĩ máy tính (Trang 70)

Khi tính toán các giá trị LOF trong miền giữa MinptsLB và MinptsUB, với n đối tượng trong cơ sở dữ liệu D, chúng ta phải thực hiện hai bước: Bước thứ nhất xác định các lân cận MinptsUB-nearest, và bước thứ hai là tính các giá trị LOF.

Trong bước thứ nhất các lân cận MinptsUB-nearest của mọi điểm p được tìm thấy vùng với khoảng cách của chúng tới p, kết quả của bước này là

do việc thực hiện cơ sở dữ liệu M cỡ n*MinptsUB khoảng cách. Một lưu ý nhỏ là cỡ của kết quả tức thời này phụ thuộc vào số chiều của dữ liệu nguồn. Độ phức tạp thời gian của bước này là O(n*thời gian truy vấn k-nn), với truy vấn k-nn(k-nearest-neighbor) chúng ta có nhiều sự lựa chọn khách nhau: Với dữ liệu có số chiều thấp, chúng ta sử dụng và tiếp cận dựa trên ô để có được truy vấn k-nn trong thời gian hằng số, dẫn đến thời gian chạy là O(n) cho việc thực hiện bước này. Với dữ liệu có số chiều từ trung bình đến trung bình khá thì chúng ta có thể sử dụng một chỉ số, cho ta độ phức tạp trung bình để có được truy vấn k-nn là O(logn), dẫn đến độ phực tạp cho bước này là O(n*logn), với số chiều cao chúng ta nên quét tuần tự, với độ phức tạp là O(n), vì vậy dẫn đến độ phức tạp của cả bước này là O(n2). Trong các thực nghiệm, chúng ta chỉ sử dụng tập dữ liệu với số chiều cỡ trung bình nên độ phức tạp là O(n*logn), đồng thời ta thấy việc thực hiện gần như tuyến tính đối với dữ liệu từ 2 đến 5 chiều nhưng lại suy biến với các tập dữ liệu từ 10 đến 20 chiều.

Trong bước thứ hai, các giá trị LOF được tính toán bằng việc thực hiện cơ sở dữ liệu M, cơ sở dữ liệu nguồn D không cần cho bước này bởi vì cơ sở dữ liệu M có đủ thông tin để tính toán các giá trị LOF và cơ sở dữ liệu M được duyệt 2 lần với một giá trị của Minpts giữa MinptsLB và MinptsUB. Trong lần duyệt đầu tiên các mật độ cục bộ đạt được của mọi đối tượng được tính toán và trong lần duyệt thứ hai các giá trị LOF cuối cùng được tính toán và ghi ra file, các giá trị này sau đó sẽ được sử dụng để sắp xếp các đối tượng theo giá trị lớn nhất của LOF nằm trong MinptsLB và MinptsUB. Do vậy, độ phức tạp thời gian của bước này là O(n).

CHƯƠNG 4: CÀI ĐẶT VÀ THỬ NGHIỆM 4.1 Yêu cầu cài đặt

Chương trình “Thuật toán Nested Loop” được viết bằng ngôn ngữ C# trên bộ Visual Studio 2010 sử dụng phiên bản .Net Framewok 4.0. Yêu cầu tối thiểu của hệ thống khi sử dụng chương trình:

- .Net Framework phiên bản 4.0 trở lên. - Hệ điều hành tối thiểu Windows XP SP2. - Sql Server phiên bản 2000 trở lên.

Phiên bản .Net Framework 4.0 hỗ trợ hệ điều hành Windows XP SP3 trở lên, để cài đặt trên Windows XP SP2, cần cài đặt thêm phần mở rộng Windows Imaging Component (WIC) trước khi cài đặt .Net Framework 4.0.

Mã nguồn đã được biên dịch thành tệp thực thi .exe trên môi trường Windows nên chỉ cần cài đặt bộ thư viện yêu cầu ở trên là có thể chạy được chương trình.

4.1.1 Cấu trúc tệp dữ liệu đầu vào

Chương trình sử dụng file Excel để chứa dữ liệu đầu vào. Cấu trúc file như sau:

+ Tên file excel: Tùy ý theo quy chuẩn đặt tên file của hệ điều hành Windows.

+ Gồm 1 sheet chứa dữ liệu:

Sheet1: Chứa dữ liệu toàn bộ các bản ghi, dòng thứ nhất là tiêu đề cột có cấu trúc: (MaKH; TenKH; SoTienPheDuyet; SoGocDaThu; SoLaiDaThu) lần lượt là tên cột dữ liệu, các dòng tiếp theo là các bản ghi chứa dữ liệu xử lý.

Hình 4.1 Bảng dữ liệu đầu vào excel 4.1.2 Cấu trúc các lớp chương trình

Mối liên hệ giữa các lớp trong chương trình:

Chương trình thiết kế bao gồm các lớp sau:

ImportData: Thao tác với tệp dữ liệu Excel và đưa vào cơ sở dữ liệu

SQL Server. Ngoài ra, nó còn chứa các phương thức để đọc dữ liệu từ cơ sở dữ liệu vào bộ nhớ xử lý.

Hình 4.3 Lớp ImportData trong chương trình

NestedLoopAlgo: Chứa hai phương thức quan trọng sử dụng trong thuật

toán là ProcessSelf đánh dấu phần tử ngoại lai trong một khối và ProcessOther kiểm tra với các bản ghi thuộc khối khác. Đây cũng là lớp chính thực thi thuật toán Nested Loop.

Hình 4.4 Lớp NestedLoopAlgo trong chương trình

Hình 4.5 Lớp SqlHelper trong chương trình

 NestedLoopMain: Xử lý giao diện của chương trình. 4.2 Thực hiện chương trình và đánh giá kết quả

4.2.1 Sơ đồ thuật toán Nested Loop

a) Bài toán: Cài đặt thuật toán Nested Loop tìm kiếm phần tử ngoại lai

trên tập dữ liệu khách hàng của ngân hàng

• Dữ liệu đầu vào: File excel chứa dữ liệu khách hàng của ngân hàng Nông nghiệp và Phát triển Nông thôn Agribank

• Tham số đầu vào gồm:

p: Phần trăm tối thiểu các đối tượng trong tập dữ liệu mà các đối tượng không ngoại lai

b) Thuật toán Nested Loop: Đưa 1 khối của T vào mảng A i <— 1 d <— 0 j <— 2 i > số phần tử mảng A d(ti,tj)≤D d <— d+1 j > số phần tử mảng A d > M i <— i+1 Đ S S Đ Đ Ti không ngoại lai i <— 1 d <— 0 Đ i > số phần tử mảng A j <— 1 j > số phần tử mảng B d(ti,tj)≤D d <— d+1

d > M Tngoại lai i không Đưa 1 khối của T

vào mảng B S S i <— i+1 Đ j <— j+1 Đ j <— j+1 S Đ S S S Đ Khối đã đc lưu ở A chưa? Kết thúc và đưa ra phần tử ngoại lai chưa đánh dấu

Đ S Khối xét >số khối? S Đ

4.2.2 Thực hiện chương trình và kết quả

Hình 4.7 Màn hình nạp và hiển thị file dữ liệu

4.2.2.1 Nhập dữ liệu:

Bước 1: Chọn tệp dữ liệu đầu vào là file Excel chứa dữ liệu khách hàng của ngân hàng Nông nghiệp và Phát triển Nông thôn Agribank.

Bước 2: Nạp dữ liệu (Dữ liệu sẽ được nạp vào bộ nhớ trong)

Bước 3: Hiển thị dữ liệu (Hiển thị bảng dữ liệu và các thông số như: Số thuộc tính; số bản ghi; kích thước tệp dữ liệu)

Hình 4.8 Màn hình thực hiện thuật toán

4.2.2.2 Thực hiện thuật toán:

Bước 1: Ước lượng tham số p và D Bước 2: Nhập số bản ghi xử lý cùng lúc Bước 3: Thực hiện

4.2.2.3 Kết quả thực nghiệm:

Bước đầu cài đặt thành công thuật toán Nested_Loop và thử nghiệm thuật toán trên bộ số liệu khách hàng của ngân hàng. Sau khi thực hiện thuật toán ta có kết quả như hình 4.8 bao gồm các thông tin tìm kiếm phần tử ngoại lai (Số phần tử ngoại lai; thông tin chi tiết về phần tử ngoại lai; thời gian xử lý thuật toán và cách thức xử lý từng khối dữ liệu).

4.2.2.4 Thông tin phần tử ngoại lai tìm được sau khi thực hiện thuật toán

Hình 4.9 Phần tử ngoại lai tìm được 4.2.3 Đánh giá tốc độ thực hiện

Với số bản ghi cố định là 1000, thay đổi số bản ghi thực hiện xử lý trong cùng một thời điểm

Ta đưa dữ liệu với số bản ghi cố định là 1000, rồi lần lượt thay đổi số bản ghi xử lý cùng thời điểm. Khi thay đổi số bản ghi xử lý cùng thời điểm như vậy đồng nghĩa với việc số khối dữ liệu sẽ thay đổi và nó tỷ lệ nghịch với nhau tức là khi ta tăng số bản ghi xử lý trong cùng một thời điểm thì đồng thời số khối dữ liệu sẽ giảm. Sau khi thay đổi ta có kết quả như bảng sau: STT Số bản ghi xử lý một lần Số khối dữ liệu Thời gian thực hiện (ms)

1 50 20 2000

2 100 10 500

3 150 7 300

4 200 5 200

5 250 4 100

Biểu đồ so sánh thời gian thực hiện thuật toán 0 500 1000 1500 2000 2500 1 2 3 4 5 Số bản ghi xử lý một lần Số khối dữ liệu

Thời gian thực hiện (ms)

Hình 4.10 Biểu đồ so sánh thời gian thực hiện thuật toán khi thay đổi số bản ghi xử lý cùng thời điểm

Nhìn vào biểu đồ trên ta thấy, số bản ghi xử lý 1 lần tỷ lệ nghịch với số khối dữ liệu và thời gian thực hiện thuật toán (do số bản ghi thực hiện không đổi, luôn là 1000 bản ghi) nói như vậy có nghĩa là số khối tỷ lệ thuận với thời gian thực hiện thuật toán. Như vậy, số bản ghi đưa vào thực hiện như nhau nhưng khi chúng ta thay đổi số bản ghi thực hiện 1 lần dẫn đến thay đổi số khối và số khối càng ít thì thời gian xử lý thuật toán càng nhanh do ít số lần so sánh hơn.

Với số khối cố định là 4, thay đổi số lượng bản ghi

Ta lần lượt thay đổi số bản ghi trong dữ liệu nhưng luôn giữ số khối dữ liệu là 4. Sau khi thực hiện thì ta thu được bảng giá trị sau:

STT Số bản ghi Thời gian thực hiện (ms) 1 100 1 2 200 50 3 500 100 4 1000 200 5 2000 300

Với số liệu thu được ở trên ta vẽ được biểu đồ sau:

Biểu đồ thời gian thực hiện khi thay đổi số bản ghi

0 500 1000 1500 2000 2500 1 2 3 4 5 Số bản ghi

Thời gian thực hiện (ms)

Hình 4.11 Biểu đồ so sánh thời gian thực hiện thuật toán

Biểu đồ trên cho ta thấy số bản ghi tỷ lệ thuận với thời gian thực hiện của thuật toán tuy nhiên thời gian thực hiện thuật toán tăng chậm hơn rất nhiều so với số bản ghi xử lý khi số khối được giữ nguyên là 4 khối.

KẾT LUẬN

Trên đây, luận văn đã tìm hiểu tổng quan về lĩnh vực khám phá tri thức trong cơ sở dữ liệu, khai thác dữ liệu, đồng thời giới thiệu và đánh giá các thuật toán tìm kiếm các phần tử ngoại lai trên cơ sở dữ liệu lớn, nằm trong bộ nhớ ngoài.

Với các phần tử ngoại lai theo cách nhìn toàn cục, luận văn giới thiệu và trình bày thuật toán Nested Loop và thuật toán đánh giá theo ô nhằm tìm kiếm, phát hiện các phần tử ngoại lai được thực hiện trên các tập dữ liệu lớn, nhiều chiều, nằm trong bộ nhớ ngoài.

Thuật toán Nested Loop là một thuật toán phân chia tập dữ liệu thành các khối dữ liệu, sử dụng các vòng lặp để tính toán khoảng cách, tìm kiếm các phần tử ngoại lai trong các khối, thuật toán Nested Loop có độ phức tạp O(kN2) (với k là chiều và N là cỡ của dữ liệu). Tuy nhiên, số lần đọc tập dữ liệu vào bộ nhớ trong của thuật toán này là không bé hơn n-2 lần đọc nhưng lại nhỏ hơn n-1 lần đọc với n là tổng số khối của tập dữ liệu, do đó thuật toán Nested Loop mất nhiều thời gian đọc dữ liệu.

Thuật toán đánh giá theo ô, chúng tôi đã giới thiệu và trình bày hai phiên bản của thuật toán. Phiên bản đầu tiên mô tả thuật toán áp dụng cho tập dữ liệu lớn, nằm trong bộ nhớ trong và phiên bản thứ hai là cải tiến của phiên bản đầu để thuật toán có thể thực hiện được với cơ sở dữ liệu nằm trong bộ nhớ ngoài. Thuật toán đánh giá theo ô ánh xạ các đối tượng của tập dữ liệu vào các ô phù hợp, sau đó đánh giá các ô và mối quan hệ giữa các ô để tìm kiếm các phần tử ngoại lai. Thuật toán này giảm một cách đáng kể công việc tính toán khoảng cách giữa các cặp điểm và độ phức tạp của thuật toán đánh giá theo ô là tuyến tính với N nhưng lại lũy thừa đối với chiều của dữ liệu: O(m ck kk/2+kN), (với m là một số các ô, c là một hằng số). Luận văn cũng đã

chỉ ra thuật toán này thực hiện nhiều nhất là 3 lần đọc tập dữ liệu từ bộ nhớ ngoài vào bộ nhớ trong.

Ở chương 3 của luận văn chúng tôi đã giới thiệu khái niệm đặc trưng của ngoại lai LOF theo cách nhìn địa phương, khái niệm này nắm bắt chính xác ý nghĩa ngoại lai của các đối tượng trong tập dữ liệu, với mỗi đối tượng nằm sâu trong một vùng, giá trị LOF xấp xỉ bằng 1 và với các đối tượng khác, thì trong chương này của luận văn đã trình bày 2 định lý xác định các cận trên và cận dưới của giá trị LOF liên quan tới việc có hoặc không các đối tượng thuộc tập các lân cận phụ thuộc tham số Minpts đến từ một hoặc nhiều vùng. Ngoài ra, luận văn còn trình bày sự phụ thuộc của giá trị LOF vào tham số Minpts và đưa ra các hướng dẫn thực tế về cách lựa chọn miền giá trị Minpts và đưa ra đánh giá việc sắp xếp các đối tượng theo giá trị LOF lớn nhất của chúng trong miền lựa chọn. Cuối cùng chúng tôi đưa ra đánh giá độ phức tạp của thuật toán tính giá trị LOF.

Hướng phát triển của đề tài

Thứ nhất là cải tiến và phát triển hơn nữa cách thực hiện và tính toán giá trị LOF: hướng phát triển này là sự quan tâm nghiên cứu cách thực hiện LOF có thể kết hợp với thuật toán phân vùng phân cấp, tức là các thuật toán có thể cung cấp thông tin chi tiết về các phần tử ngoại lai từ các vùng liên quan.

Thứ hai là các phân cụm những phần tử ngoại lai: Cho đến nay, các phần tử ngoại lai được báo cáo riêng rẽ và không đặc biệt chú ý tới các phần tử ngoại lai mà có thể là một phân cụm ngoại lai, việc xác minh các phân cụm những phần tử ngoại lai có thể dẫn đến các kiểu khám phá tri thức quan trọng bởi vì thực tế nhiều phần tử ngoại lai có thể dùng chung các đặc điểm tương tự vì vậy có thể cung cấp một cái nhìn thấu đáo mới vào dữ liệu.

Thứ ba là xử lý song song: Khi tìm kiếm các phần tử ngoại lai mạnh nhất, nhiều thực thi của thuật toán FindAllOutsD có thể thực hiện song song, một sự triển khai song song có thể giảm đáng kể tổng thời gian thực hiện của thuật toán và đồng thời làm giảm bớt sự tắc nghẽn I/O, từng khối đĩa trong lần duyệt tập dữ liệu đầu tiên có thể được truyền tới nhiều bộ xử lý.

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

[1] Nguyễn Văn Ba (1996), Lý thuyết Ngôn ngữ và tính toán, NXB Đại

học Quốc Gia Hà Nội.

[2] Nguyễn Văn Ba (2002), Ngôn ngữ hình thức, NXB Khoa học và Kỹ

thuật.

[3] Phan Đình Diệu (2000), Lý thuyết về độ phức tạp tính toán, Viện toán

học.

[4] Vũ Đức Thi (2010), Cơ sở Dữ liệu nâng cao.

[5] Vũ Đức Thi (2012), “Một số vấn đề tính toán liên quan đến cơ sở dữ

liệu và khai phá dữ liệu”, Tạp chí Khoa học và Công nghệ, (50), 679-703 [6] Nguyễn Bá Tường (2001), Cơ sở dữ liệu lý thuyết và thực hành, NXB

Khoa học và kỹ thuật Hà Nội. 2. Tiếng Anh

[7] Breunig, M., Kreigel, H.-P., Ng, R., and Sander, J. (2000), LOF: Identifying density-based local outliers. In Proc.SIGMOD,pp. 93-104

[8] Cochran, W. (1963), Sampling Techniques, John Wiley & Sons, 2nd

edition.

[9] Draper, N. and Smith, H. (1996), Applied Regression Analysis, John Wiley &Sons.

[10] Hawkins, D. (1980), Identification of Outliers, Chapman and Hall,

London.

[11] Johnon, R. and Wichern , D. (1992), Applied Multivariate Statistical

[12] Porkess, R. (1991), The HarperCollins Dictionary of Statistics,

HarperCollins, New York.

[13] Salton, G. and McGill, M. (1983), Introduction to Modern

Information Retrieval, McGraw-Hill.

[14] Weisberg, S. (1985), Applied Linear Regression, John Wiley &Sons, 2nd edition.

Một phần của tài liệu Nghiên cứu các phần tử ngoại lai luận văn thạc sĩ máy tính (Trang 70)

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

(86 trang)