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.