Tải bản đầy đủ (.doc) (84 trang)

nghiên cứu các phần tử ngoại lai

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (814.46 KB, 84 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM HÀ NỘI 2

TRẦN VIỆT CƯỜNG

NGHIÊN CỨU
CÁC PHẦN TỬ NGOẠI LAI

LUẬN VĂN THẠC SĨ MÁY TÍNH

HÀ NỘI, 2015


BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM HÀ NỘI 2

TRẦN VIỆT CƯỜNG

NGHIÊN CỨU
CÁC PHẦN TỬ NGOẠI LAI
Chuyên ngành: Khoa học Máy tính
Mã số: 60 48 01 01

LUẬN VĂN THẠC SĨ MÁY TÍNH

Người hướng dẫn khoa học: GS.TS. Vũ Đức Thi

HÀ NỘI, 2015


1



LỜI CẢM ƠN
Em xin chân thành gửi lời cảm ơn tới GS.TS Vũ Đức Thi, thầy đã nhiệt
tình hướng dẫn và giúp đỡ em trong quá trình hoàn thành luận văn này.
Em xin chân thành gửi lời cảm ơn tới các thầy cô trong Viện CNTT
thuộc Viện Khoa học Hàn lâm Việt Nam đã tận tình giảng dạy, chỉ bảo và
giúp đỡ em trong quá trình học tập tại trường cũng như trong thời gian hoàn
thành luận văn này.
Em xin chân thành gửi lời cảm ơn tới các thầy cô phòng Sau Đại học,
khoa CNTT và thư viện trường ĐHSPHN2 đã tận tình giúp đỡ và truyền đạt
những kiến thức quý giá trong quá trình học tập cũng như trong quá trình
hoàn thành cuốn luận văn này.


2

LỜI CAM ĐOAN
Tôi xin cam đoan tất cả các số liệu và kết quả nghiên cứu trong luận
văn này là hoàn toàn trung thực và không trùng lặp với các đề tài khác. Tôi
cũng xin cam đoan rằng mọi sự giúp đỡ cho việc thực hiện luận văn này đã
được cảm ơn và các thông tin trích dẫn trong luận văn đã được chỉ rõ nguồn
gốc.

Tác giả luận văn

Trần Việt Cường


3


MỤC LỤC
TRẦN VIỆT CƯỜNG.......................................................................................1
NGHIÊN CỨU..............................................................................................1
CÁC PHẦN TỬ NGOẠI LAI.......................................................................1
HÀ NỘI, 2015...................................................................................................1
TRẦN VIỆT CƯỜNG.......................................................................................2
NGHIÊN CỨU..............................................................................................2
CÁC PHẦN TỬ NGOẠI LAI.......................................................................2


4

BẢNG KÝ HIỆU CÁC CHỮ VIẾT TẮT
Từ viết tắt

Tiếng Anh

Nghĩa tiếng Việt

Knowledgement
Discovery in Database

Khám phá tri thức trong cơ sở dữ liệu

DB

Distance Based

Dựa trên khoảng cách


LOF

Local Outlier Factor

Yếu tố ngoại lai cục bộ

KDD


5

MỞ ĐẦU
1. Lý do chọn đề tài
Trong cuộc sống hiện đại ngày nay, chúng ta ngày càng phải đối mặt
với nhiều vấn đề cần giải quyết như: Làm thế nào để phát hiện những thẻ rút
tiền bất thường trong hệ thống ngân hàng, những bất thường trong thị trường
chứng khoán, những tuyến đường bất ổn không hợp lý trong giao thông,
những ứng dụng trong hệ thống an ninh, dự báo thời tiết, trong lĩnh vực thể
thao…vv. Tuy nhiên, với số lượng dữ liệu tập trung và lưu trữ trong cơ sở dữ
liệu ngày càng lớn thì việc tìm kiếm các phần tử ngoại lai trở nên cần thiết
hơn nhiều trong cuộc sống.
Xuất phát từ yêu cầu và ý nghĩa thực tiễn đó, đồng thời mong muốn
được tìm hiểu và nghiên cứu vấn đề này, tôi đã lựa chọn và thực hiện luận văn
này với đề tài “Nghiên cứu các phần tử ngoại lai”. Đây là lĩnh vực tương đối
mới, tôi hy vọng đề tài trên đây với sự hướng dẫn của GS.TS Vũ Đức Thi,
cùng sự góp ý của các chuyên gia sẽ giúp giải quyết một số bài toán thực tế
phục vụ cho xã hội ngày càng phát triển trong công cuộc Công nghiệp hóa và
Hiện đại hóa đất nước.
2. Mục đích nghiên cứu
- Cung cấp một số giải thích hoặc mô tả về không gian dữ liệu mà trong

đó xuất hiện phần tử ngoại lai.
- Cung cấp một số thông tin về mối quan hệ giữa các phần tử ngoại lai.
- Đưa ra những ứng dụng liên quan đến phần tử ngoại lai nhằm giải
quyết những vướng mắc trong thực tế.
3. Nhiệm vụ nghiên cứu
- Tìm hiểu các khái niệm về khám phá tri thức và khai thác dữ liệu.


6

- Tìm hiểu các khái niệm về phần tử ngoại lai theo cách nhìn địa phương
và toàn cục.
- Tìm hiểu các thuật toán tìm kiếm phần tử ngoại lai trên dữ liệu lớn,
nhiều chiều.
- Kiểm tra, đánh giá thuật toán trên cơ sở dữ liệu thực của tập dữ liệu
khách hàng trong Ngân hàng Nông nghiệp và Phát triển Nông thôn
Agribank.
4. Đối tượng và phạm vi nghiên cứu
- Nghiên cứu phần tử ngoại lai, mối quan hệ giữa phần tử ngoại lai và
khai thác dữ liệu và những ứng dụng của các phần tử ngoại lai.
- Tìm hiểu thuật toán Nested-Loop, thuật toán đánh giá theo ô đồng thời
đánh giá độ phức tạp của thuật toán trong việc tìm kiếm các phần tử
ngoại lai.
5. Phương pháp nghiên cứu
- Tham khảo các tài liệu có liên quan đến lĩnh vực nghiên cứu các phần
tử ngoại lai trong việc khai thác và xử lý dữ liệu.
- Tham khảo các ý kiến các chuyên gia, của thầy hướng dẫn trong lĩnh
vực nghiên cứu.
- Lập kế hoạch, lên quy trình và tiến độ thực hiện đề tài.
6. Đóng góp mới của đề tài:

- Hệ thống hóa và đi sâu vào vấn đề nghiên cứu.
- Có thể sử dụng những kết quả đã nghiên cứu để phát triển thành ứng
dụng giải quyết một số bài toán vướng mắc trong thực tế.


7

NỘI DUNG
CHƯƠNG 1: KHÁM PHÁ TRI THỨC TRONG CƠ SỞ DỮ LIỆU
VÀ PHẦN TỬ NGOẠI LAI
Trong chương này, chúng tôi giới thiệu quá trình khám phá tri thức, khai
thác dữ liệu và các ứng dụng trong thực tế khai thác dữ liệu có sự hỗ trợ của
các kỹ thuật khai thác dữ liệu (Data minning). Tiếp theo chúng tôi trình bày
các khái niệm về phần tử ngoại lai, mối quan hệ giữa lĩnh vực khai thác dữ
liệu và lĩnh vực khám phá phần tử ngoại lai, cuối cùng tôi xin trình bày các
ứng dụng của phần tử ngoại lai.
1.1 Khám phá tri thức
Hiện nay, với sự phát triển và tiến bộ ngày càng cao của khoa học kỹ
thuật, của công nghệ thông tin và nhu cầu thiết yếu con người ngày càng tăng
đã tạo nên một thời đại bùng nổ thông tin trong mọi lĩnh vực của đời sống xã
hội. Với lượng thông tin ngày càng nhiều (có thể nói là “khổng lồ”) và phức
tạp thì cần có các kỹ thuật và phương pháp khai thác dữ liệu hiệu quả để lấy
ra những thông tin cần thiết cho công việc. Việc sử dụng một số các ngôn ngữ
truy vấn nhằm lấy ra những thông tin theo yêu cầu của người sử dụng, nhưng
hầu hết các ngôn ngữ này chỉ lấy ra được những dữ liệu theo những yêu cầu
đơn giản, tầm thường, hay các kiểu dữ liệu đa phương tiện được hệ thống hỗ
trợ như: Dữ liệu âm thanh, hình ảnh,… Nhưng kết quả này không thể đáp ứng
được khi yêu cầu của con người sử dụng ngày càng cao và phức tạp. Do đó,
nhu cầu tìm kiếm tri thức trong cơ sở dữ liệu đã hình thành một lĩnh vực mới
đó là Khám phá tri thức trong cơ sở dữ liệu; Khám phá tri thức là toàn bộ quá

trình tìm kiếm tri thức từ dữ liệu, bao gồm các bước sau:
- Chuẩn bị dữ liệu: Dữ liệu được tập trung vào trong cơ sở dữ liệu, các kho
lưu trữ dữ liệu. Dữ liệu đó có thể là “chưa sạch” tức là có cả dữ liệu không


8

phù hợp, nhiễu, sai xót và các dữ liệu không đầy đủ thông tin. Trong bước
này dữ liệu được làm sạch để loại bỏ các dữ liệu không liên quan, dữ liệu
không phù hợp, công việc này có thể được tiến hành trước hoặc sau khi phát
hiện dữ liệu “chưa sạch” (bị nhiễm bẩn). Sau khi dữ liệu được làm sạch, dữ
liệu sẽ được bổ sung các thông tin cần thiết, sau đó dữ liệu được biến đổi
theo các dạng phù hợp để thực hiện quá trình khai thác dữ liệu.
- Khai thác dữ liệu: Khai thác dữ liệu là một bước quan trọng trong quá trình
khám phá tri thức, bước này sử dụng các kỹ thuật và các phương thức thông
minh để xác định các mẫu dữ liệu theo yêu cầu người dùng. Khai thác dữ liệu
được định nghĩa là quá trình khai thác, khám phá những thông tin hữu ích,
chưa được biết trước, tiềm ẩn và không tầm thường từ những tập dữ liệu lớn.
Khai thác dữ liệu bao gồm:
♦ Tìm kiếm các luật kết hợp: Sử dụng các luật đơn giản để biểu diễn tri
thức. Tìm kiếm những mối quan hệ có ích của dữ liệu.
♦ Phát hiện phần tử ngoại lệ: Tìm kiếm và xác định các đối tượng dữ liệu
lỗi, bất thường và các phần tử ngoại lai.
♦ Nhận dạng và phân lớp mẫu: Tìm kiếm, xác định các mẫu theo yêu cầu,
phân chia các mẫu thành các lớp nhằm phục vụ cho mục đích sử dụng.
♦ Dự báo: Xác định các hàm hổi quy.
Môi trường khám phá tri thức nhằm mục đích hỗ trợ quá trình khai thác dữ
liệu. Do đó, hai thuật ngữ “khai thác dữ liệu” (Data Mining) và “khám phá tri
thức” (Knowledge Discovery) thường được sử dụng để thay thế cho nhau.
- Đánh giá: Trong bước này bao gồm 2 bước nhỏ là đánh giá mẫu và biểu

diễn tri thức. Đánh giá mẫu là tìm ra những mẫu quan tâm từ các mẫu đã có
trong bước khai thác dữ liệu, có thể sử dụng các ngưỡng cần thiết để lọc ra


9

các mẫu cần khai thác. Biễu diễn tri thức là quá trình cho phép người sử dụng
tương tác với hệ thống bằng các nhiệm vụ hoặc các truy vấn tìm kiếm dữ liệu
cụ thể, cung cấp thông tin nhằm mục đích trợ giúp việc tìm kiếm và thực hiện
khai thác dữ liệu chi tiết dựa trên dữ liệu đã được khai thác. Ngoài ra, biểu
diễn tri thức cho phép người sử dụng trình duyệt các lược đồ cơ sở dữ liệu
hoặc các cấu trúc dữ liệu.
Hình 1.1 Trình bày tổng thể quy trình khám phá tri thức trong cơ sở dữ
liệu (KDD), không chỉ bao gồm khai thác dữ liệu mà còn có các bước khác để
có được kết quả. Các bước khai thác dữ liệu thường tiêu tốn thời gian và phức
tạp nhất của qui trình, tuy nhiên các bước tiền xử lý và hậu xử lý cũng không
đơn giản và có thể tiêu tốn nhiều thời gian hơn so với các thuật toán khai thác
dữ liệu.
Chúng tôi thực hiện hầu hết các bước trên hình 1.1 trong việc tìm kiếm
các phần tử ngoại lai DB. Một số bước tiền xử lý liên quan đến việc tìm các
giá trị khởi tạo hợp lý cho p và D. Hậu xử lý có thể được thực hiện bởi
chuyên gia. Nhưng sự lựa chọn thích hợp được thực hiện trong các bước tiền
xử lý bởi cả người sử dụng và máy có thể giảm nhiều thời gian liên quan đến
bước khai thác dữ liệu và có thể giảm công việc thủ công trong phần hậu xử
lý. Bằng cách lựa chọn các giá trị thích hợp cho p và D, quy trình khám phá
tri thức trong cơ sở dữ liệu (KDD) có thể làm cho các phần tử ngoại lai có
nhiều ý nghĩa hơn đối với người sử dụng và giảm thời gian xác định p và D.


10


KNOWLEDGE

Đánh giá và
biểu diễn

Khai thác dữ liệu
Các mẫu
trích chọn

Trích chọn và
biến đổi dữ liệu

Làm sạch và
tích hợp dữ liệu

Các cơ sở
dữ liệu

Các File bằng

Hình 1.1 Qui trình Khám phá tri thức trong cơ sở dữ liệu
1.2 Những ứng dụng sử dụng kỹ thuật khai thác dữ liệu.
Có rất nhiều ứng dụng trong các lĩnh vực khác nhau sử dụng các kỹ thuật
khai thác dữ liệu nhằm hỗ trợ cho mục đích sử dụng.


11

Ví dụ: Trong thương mại, tổ chức hay công ty nào đó họ có thể sử dụng

các kỹ thuật khai thác dữ liệu để tặng khuyến mãi cho các khách hàng dựa
vào tần xuất mua hàng, số lượng hàng đã mua ở các lần trước hay tần suất
truy cập website, kiểu khách hàng. Trong các công ty bảo hiểm, sử dụng kỹ
thuật khai thác dữ liệu để xác định các lỗi và các trường hợp rủi ro có thể xảy
ra. Trong ngân hàng, người ta sử dụng các kỹ thuật khai thác dữ liệu để xác
định các rủi ro thường gặp về thẻ tín dụng hay các lỗi trong quá trình giao
dịch. Các tổ chức chống tội phạm sử dụng các kỹ thuật khai thác dữ liệu để
tìm kiếm, nhận dạng và phát hiện tội phạm. Các công cụ tìm kiếm thông tin,
tìm kiếm Website áp dụng các kỹ thuật thông minh để có thể tìm kiếm được
những thông tin, Website với độ chính xác cao theo yêu cầu của người sử
dụng giúp người dùng thuận tiện trong việc xử lý thông tin. Ngoài ra, kỹ thuật
khai thác dữ liệu còn được áp dụng trong các lĩnh vực khai thác như phân tích
thị trường chứng khoán, dự báo tỷ lệ thay đổi ngoại tệ, tìm kiếm các gene
trong chuỗi DNA, dự báo thời tiết, nhận dạng ảnh và văn bản…
1.3 Phần tử ngoại lai.
1.3.1 Khái niệm phần tử ngoại lai
Trong các tập dữ liệu thường tồn tại các đối tượng dữ liệu không tuân
theo một hình thức hoặc một mô hình dữ liệu chung, các đối tượng dữ liệu mà
giá trị dữ liệu được xem là nằm ngoài phạm vi hoặc không liên quan tới tập
dữ liệu còn lại. Những đối tượng có đặc tính như vậy được gọi là phần tử
ngoại lai.
Có nhiều định nghĩa được đưa ra để định nghĩa phần tử ngoại lai như định
nghĩa của Barnet và Levis: “Một phẩn tử ngoại lai là một đối tượng xuất hiện
không nhất quán với tập dữ liệu còn lại”. Với Hawkins thì mô tả định nghĩa
trực quan về phần tử ngoại lai có thể là “Một đối tượng mà nó lệch hướng rất


12

nhiều với đối tượng khác do đó dẫn đến sự nghi ngờ rằng chúng được tạo ra

bởi một kỹ thuật khác” [10]. Nói cách khác, các đối tượng không cùng một
mô hình tạo sinh với tập dữ liệu còn lại được xem là phần tử ngoại lai.
Các phần tử ngoại lai có thể do lỗi thực hiện hoặc lỗi do phép đo gâp ra.
Ví dụ việc hiển thị một người có tuổi 1000 có thể là do việc thiết lập mặc định
chương trình không giới hạn tuổi dữ liệu. Mặt khác, các phần tử ngoại lai có
thể là kết quả của quá trình tự nhiên.
Có nhiều thuật toán khai thác dữ liệu cố gắng làm cực tiểu hóa sự ảnh
hưởng của các phần tử ngoại lai, loại bỏ chúng cùng một lúc. Tuy nhiên, điều
đó có thể làm mất những thông tin tiềm ẩn quan trọng khi “nhiễu của người
này lại là tín hiệu của người khác”.
Một phần tử ngoại lai có thể là một đối tượng dữ liệu trong một số trường
hợp sau:
 Là đối tượng dữ liệu được tạo sinh có sai sót.
 Nằm trong một phân bố khác với phân bố của tập dữ liệu còn lại.
 Là một đối tượng có giá trị hợp lệ nhưng không phải là đối tượng mong
muốn.
Đối với các trường hợp các phần tử ngoại lai có thể là đối tượng hợp lệ
nhưng chúng có giá trị không mong muốn, ta không cẩn thiết phải loại bỏ
chúng khỏi tập dữ liệu nhưng các đổi tượng này phải được xác định hay nhận
dạng. Draper và Smith nhận xét rằng “Một phẩn tử ngoại lai có thể cung cấp
thông tin mà các đối tượng khác không thể bởi vì nó xuất hiện từ sự kết hợp
bất bình thường của một số trường hợp rất có ý nghĩa” [9].
Nếu một phần tử ngoại lai không phải là một đối tượng hợp lệ (có thể do
nó được đánh giá và đưa vào không đúng) thì nó có thể được phát hiện, khắc


13

phục và đánh giá bởi các chuyên gia. Do đó, nó phụ thuộc vào từng ngữ cảnh
các phần tử ngoại lai có thể được loại bỏ từ tập dữ liệu để làm tăng tính thuần

nhất của tập dữ liệu còn lại.
Nói tóm lại, các phẩn tử ngoại lai là những đối tượng đủ khác với hầu hết
các đối tượng còn lại. Tuy nhiên, không có một định nghĩa nào về phẩn tử
ngoại lai nào được chấp nhận rộng rãi, các phần tử ngoại lai thường được xem
là các điểm không thỏa mãn mô hình dữ liệu đang xét. Việc phần tử ngoại lai
có bị loại bỏ hay không còn phụ thuộc vào từng chương trình ứng dụng và
quyết định bởi các chuyên gia.
1.3.2 Những ứng dụng của phần tử ngoại lai
Đối với một số ứng dụng khám phá tri thức, thường các sự kiện hiếm có,
khó có thể nhận biết bằng mắt thường được quan tâm hơn các sự kiện thông
thường, chẳng hạn như việc phát hiện các thẻ tín dụng giả, theo dõi các hoạt
động thương mại điện tử, xác định các rủi ro về thẻ tín dụng, tìm kiếm nhận
dạng tội phạm,…
Sau sự tấn công mạng Internet và các trang web những năm gần đây, đặc
biệt là sự kiện khủng bố tấn công nước Mỹ ngày 11/9/2001 hơn 13 năm về
trước, người ta quan tâm nhiều hơn đến việc bảo mật thông tin máy tính, bao
gồm cả phần cứng, phần mềm và cả hệ thống mạng (như phát hiện ra sự xâm
nhập trái phép vào hệ thống mạng). Bảo mật hệ thống mạng bao gồm tần suất
của các tấn công dịch vụ mà một sự kiện bên ngoài được phát hiện trong gói
dữ liệu hệ thống mạng (như phát hiện ra số lượng lớn, không bình thường các
gói dữ liệu từ một nguồn lạc danh), các công cụ thống kê có thể được dùng để
tìm ra những thói quen là ngoại lệ tương ứng với một lịch sử đã biết (ví dụ:
những thói quen điển hình theo đăng nhập, cách thức truy xuất dữ liệu…).


14

Với các hệ thống thanh toán điện tử bao gồm các ứng dụng như thẻ ngân
hàng, thẻ thông minh, thẻ điện thoại, và thẻ tín dụng, chúng ta quan tâm tới
việc làm sao để phát hiện ra các loại thẻ giả, thẻ không hợp lệ trong hệ thống

thanh toán điện tử.
Thêm một ứng dụng nữa trong việc phát hiện phần tử ngoại lai là ứng
dụng để nghiên cứu cổ phiếu, chứng khoán. Nhiều cá nhân và công ty đã từng
thử dự đoán giá trị các cổ phiếu được niêm yết dựa trên việc tìm kiếm các
phần tử ngoại lai (ví dụ: Giả sử phần lớn giá các cổ phiếu ở một ngành đang
lên cao ở một thị trường ảo và có các thị trường khác (trong cùng một ngành)
mà giá cổ phiếu biến động đột ngột, các phẩn tử ngoại lai như thế nên được
xác định và sau đó các nhà phân tích có thể dựa vào các nguyên nhân để giải
thích sự quá nóng hoặc quá lạnh của thị trường, để xác định khuynh hướng
của cố phiếu có thể mua vào hay bán ra hoặc tích lũy). Sự có mặt của các
phần tử ngoại lai trong các cổ phiếu của các quỹ chung, có thể giúp làm đa
dạng hóa bảng niêm yết cổ phiếu trên sàn chứng khoán trong cùng một loại.
Trên các thị trường chứng khoán thế giới, các giao dịch được thực hiện
mỗi ngày lên đến con số hàng triệu giao dịch, các nhà quản lý bảng niêm yết,
các doanh nhân và các nhà tư vấn đầu tư tìm mua các cổ phiếu xuống thấp và
có thể có tín hiệu tốt trong tương lai để kiếm lời. Các hãng kinh doanh ở phố
Wall là một trong những nhà chứng khoán sành sỏi nhất thế giới về phần
cứng và phần mềm máy tính tiên tiến ứng dụng trong lĩnh vực chứng khoán
như phân tích, dự báo, thống kê, (ví dụ công ty Insighful nhà sản xuất phần
mềm thống kê S-PLUS bán các máy công cụ thống kê và khai thác dữ liệu
siêu việt cho rất nhiều khách hàng trong lĩnh vực đầu tư).
Trong thể thao chuyên nghiệp các ông bầu ai cũng muốn xây dựng cho
mình một đội hình mạnh nhất, nhưng chi phí dẻ, hợp lý với nguồn tài chính cố


15

định và một đội hình tài năng, đa dạng được xác định bằng những sự thống kê
hiệu suất và sự trình diễn kỹ thuật của các cầu thủ, ví dụ một ông bầu có thể
chấp nhận các cầu thủ chưa nổi danh (có thể mua tương đổi dẻ) hay những

cầu thủ có phong cách thi đấu tốt và ấn tượng, tùy vào việc huấn luyện viên
có nhu cầu từng vị trí.
1.4 Mối quan hệ giữa phần tử ngoại lai và khai thác dữ liệu.
Trước khi các kỹ thuật khai thác dữ liệu ra đời, thông tin hữu ích phục vụ
cho người dùng chỉ được khai thác hiệu quả trên các tập dữ liệu có cỡ và số
chiều nhỏ. Do vậy, để có thể khai thác dữ liệu một cách hiệu quả với khối
lượng thông tin dữ liệu lớn thì cần phải có các công dụng khai thác dữ liệu
tốt, các thuật toán khai thác dữ liệu thông minh, tự động, thời gian thực hiện
nhanh.
Trong thực tế, các chương trình ứng dụng khai thác dữ liệu thường phải
khai thác dữ liệu trên các tập dữ liệu rất lớn với khối lượng thông tin khổng
lồ, không phù hợp với bộ nhớ chính, dữ liệu đó được nằm ở bộ nhớ ngoài
(Disk-resident Data).
Trong luận văn này vấn đề được quan tâm lớn nhất là tìm hiểu các thuật
toán khai thác, tìm kiếm các phần tử ngoại lai trong các tập dữ liệu lớn, nhiều
chiều. Hiện nay, một số các kỹ thuật phát hiện phần tử ngoại lai nhằm các
mục đích sau:
♦ Cung cấp một số thông tin về mối quan hệ giữa các phần tử ngoại lai
♦ Cung cấp một số giải thích hoặc mô tả về không gian dữ liệu mà trong
đó xuất hiện phần tử ngoại lai.
Và một vấn đề khác chúng tôi cần quan tâm đó là việc liên quan tới ý
nghĩa của các phần tử ngoại lai. Cho đến nay, chưa có một định nghĩa nào có


16

thể định nghĩa một cách đầy đủ và chính xác về phần tử ngoại lai, việc xác
định các phần tử ngoại lai trong mỗi lĩnh vực là khác nhau, bởi vì ý nghĩa
ngoại lai của các phần tử ngoại lai mang tính chất và đặc trưng của từng lĩnh
vực áp dụng (có thể nhiễu của người này nhưng lại là tín hiệu tốt của người

khác), nên rất khó có thể đưa ra được một định nghĩa hoàn chỉnh và chính xác
về phần tử ngoại lai.


17

CHƯƠNG 2: MỘT SỐ THUẬT TOÁN TÌM KIẾM PHẦN
TỬ NGOẠI LAI DỰA TRÊN KHOẢNG CÁCH
Trong chương này chúng tôi sẽ trình bày khái niệm các phần tử ngoại lai
theo cách nhìn toàn cục, đồng thời giới thiệu thuật toán Nested Loop và hai
phiên bản của thuật toán đánh giá theo ô để tìm kiếm các phần tử ngoại lai
dựa trên các tập dữ liệu chính nhiều chiều nằm trong bộ nhớ trong và nằm
trong bộ nhớ ngoài. Chúng tôi đánh giá độ phức tạp về thời gian của các thuật
toán và trình bày thực nghiệm với chương trình ứng dụng sử dụng thuật toán
Nested Loop trên cơ sở dữ liệu thực của ngân hàng Nông nghiệp và Phát triển
Nông thôn Agribank đồng thời so sánh thời gian thực hiện trên từng tập dữ
liệu.
2.1 Định nghĩa các phần tử ngoại lai dựa trên khoảng cách
Cho N là số lượng các đối tượng trong tập dữ liệu T. Gọi d là hàm
khoảng cách giữa một cặp đối tượng bất kì trong tập dữ liệu. Với một đối
tượng O, gọi S(o) là tập các lân cận của o bao gồm tất cả các đối tượng q thỏa
mãn điều kiện: d(o,q)< D, trong đó, D là tham số đầu vào.
Có nghĩa là: S(o) = {q€T | d(o,q) ≤ D}
S(o) được gọi là tập hợp các lân cận của điểm O theo khoảng cách D.
Định nghĩa: Một đối tượng O trong một tập cơ sở dữ liệu T được gọi là một
phần tử ngoại lai dựa trên khoảng cách DB(p,D) (DB là viết tắt của từ
Distance Based) nếu có ít nhất p phần trăm các đối tượng trong T mà khoảng
cách giữa chúng với O lớn hơn D. Điều đó có nghĩa là lực lượng của tập hợp
S(o) là nhỏ hơn hoặc bằng (100 - p)% cỡ của T.
Gọi M là số lượng lớn nhất các đối tượng thuộc S(o) mà một đối tượng

ngoại lai có thể có.


18

Theo định nghĩa các phần tử ngoại lai dựa trên khoảng cách DB(p,D) thì
M=(1 - p)*N. Việc tìm kiếm tất cả các phần tử ngoại lai sẽ được bắt đầu từ
việc tìm kiếm các đối tượng thuộc S(o) của tất cả các điểm O trong tập dữ
liệu. Trong quá trình tìm kiếm nếu số lượng của S(o) lớn hơn M thì O được
gọi là không ngoại lai. Ngược lại sau khi kết thúc quá trình tìm kiếm mà lực
lượng của S(o) ≤ M thì thông báo O là phần tử ngoại lai
2.2 Thuật toán Nested-Loop.
2.2.1 Tư tưởng thuật toán.
Để tìm kiếm tất cả các phần tử ngoại lai dựa trên khoảng cách DB(p,D)
trên tập dữ liệu lớn, nằm ở bộ nhớ ngoài, thuật toán Nested Loop chia tập dữ
liệu thành các khối sử dụng các vòng lồng nhau để tìm kiếm. Cụ thể, giả sử có
một bộ nhớ trung gian cỡ b% tập dữ liệu, tư tưởng thuật toán chia bộ nhớ
thành hai phần gọi là mảng A và mảng B, mỗi mảng cỡ b/2% cỡ của tập dữ
liệu, chia tập dữ liệu thành n=[2*100/b] khối để mỗi khối có thể được chứa
trong mỗi mảng của bộ nhớ.
Trước tiên, đọc một khối vào mảng A, với mỗi đối tượng O trong mảng
A, thuật toán lưu lại số lượng các đối tượng thuộc S(o), việc tính toán sẽ kết
thúc cho một đối tượng cụ thể ngay khi số lượng các đối tượng thuộc S(o)
vượt quá M và thông báo O không phải là phần tử ngoại lai. Tiếp theo, đọc
lần lượt các khối còn lại vào trong mảng B, với mỗi đối tượng O thuộc mảng
A chưa được thông báo là không ngoại lai và các đối tượng q thuộc khối nằm
trong mảng B, chúng ta sẽ tiến hành tính toán khoảng cách d(o,q) để xem xét
q có là lân cận thuộc S(o) hay không, khi số lượng của S(o) lớn hơn M thì
thông báo P là không ngoại lai. Ngược lại, sau khi thực hiện tính toán với tất
cả các khối còn lại mà số lượng S(o) ≤ M thì thông báo O là ngoại lai. Bằng



19

cách đổi vai trò hai mảng (mảng A và mảng B) cho nhau, thuật toán sẽ lần
lượt tính toán và đánh giá được tất cả các điểm thuộc các khối còn lại.
Xét thuật toán Nested Loop với bộ nhớ trung gian là 50% cỡ cơ sở dữ
liệu. Gọi x1, x2, x3, x4 lần lượt là 4 khối logic 1/4 chứa tập dữ liệu. Chúng ta
đưa các khối vào các mảng theo thứ tự dưới đây và so sánh:
1. x1 với x1, sau đó các khối x2, x3, x4. Tổng số là 4 khối được đọc.
2. x4 với x4, sau đó với các khối x1 (không yêu cầu đọc x2, x3). Tổng
số là 2 khối được đọc
3. x3 với x3, sau đó với các khối x4, x1, x2. Tổng số là 2(x1, x2) khối
được đọc.
4. x2 với x2, sau đó với các khối x3, x1, x4. Tổng số là 2 khối được
đọc.
Do đó, có 10 khối lớn được đọc, tức là tập dữ liệu được đọc 10/4=2,5
lần. Trong phần 2.3.3.2.3 chúng ta sẽ tính toán số lượng yêu cầu đọc tập dữ
liệu cho quá trình thực hiện thuật toán trong trường hợp chung.
2.2.2 Mô tả thuật toán Nested Loop:
1.

Đưa một khối các điểm dữ liệu từ T vào trong mảng A (có cỡ là

b/2% cỡ của tập dữ liệu).
2. For (mỗi điểm ti trong mảng A) do:
{counti =0;
For (mỗi điểm tj trong mảng A) do:
If (d(ti ,tj )≤D) {counti++;
If (counti >M) {ti =không ngoại lai; break;}

}


20

}
3. While (những khối còn chưa được so sánh với mảng A) do
{
a. Lưu một khối vào mảng B (nhưng sẽ giữ lại một khối mà nó
chưa bao giờ được lưu vào mảng A để tính toán cho lần sau)
b. For (mỗi điểm ti chưa được đánh dấu trong mảng A) do
{for (mỗi điểm tj trong mảng B) do
If (d(ti,tj) ≤ D) {counti++;
if (counti>M) {ti=không ngoại lai; break;}
}
}
}
4. For (mỗi điểm ti chưa được đánh dấu trong mảng A) do ti=ngoại lai;
5. Thuật toán sẽ kết thúc nếu khối đang lưu trong mảng B đã được lưu
vào mảng A ở một thời điểm nào đó trong quá trình tính toán trước
đây; ngược lại, đổi vai trò 2 mảng A và B và quay lại bước 2.
2.2.3 Ước lượng tham số p, D sử dụng phương pháp lấy mẫu
Trong thuật toán Nested Loop tìm kiếm phần tử ngoại lai, chúng ta thấy
có hai tham số người dùng cần định nghĩa đó là p và D, hai tham số này ảnh
hưởng rất lớn đến thời gian thực hiện thuật toán, việc khởi tạo các tham số p
và D không tốt dẫn đến sự lãng phí thời gian tính toán. Để có một ước lượng
tham số hợp lý, trong phần này tôi sẽ trình bày phương pháp tiếp cận dựa trên
thống kê, cụ thể là sử dụng phương pháp lấy mẫu.



21

Ở phần trước, việc định nghĩa tham số khoảng cách sử dụng khoảng
cách Euclid để tính toán các phần tử ngoại lai được quyết định bởi người
dùng. Trong đó tham số D khó xác định hơn rất nhiều so với tham số p, với
việc khởi tạo giá trị p, để dễ dàng ta nên lấy giá trị p sát với 1 và nếu cần thì
giảm giá trị p khi chạy lại, hơn nữa giá trị p gần với 1 sẽ cho thời gian xử lý
nhanh hơn trong các bước khai thác dữ liệu bởi vì giảm được các phép so
sánh trước khi một điểm bị loại trừ từ tập dự tuyển các phần tử ngoại lai và
tốn tại ít bộ nhớ hơn.
Thật vậy, ta xét giải thuật xử lý Nested Loop sau:
1, For(mỗi điểm ti trong mảng A) do:
2,

Counti = 0;

3,

If(d(ti,tj) <= D) do:

4,

Counti ++;

5,

If( Counti> M) {ti = không ngoại lai; Break;}

6,


}// End if

7, }// End for
Trong đó, M = (1 - p)*N; Như vậy với p càng gần 1 kéo theo M càng
nhỏ. Khi đó trong dòng lệnh thứ 5 trong giải thuật trên giá trị Count i càng có
cơ hội vượt qua M, điều này dẫn đến phần tử t i được loại khỏi tập dự tuyển
ngoại lai, do vậy nó sẽ không phải so sánh với các phần tử khác nữa trong bộ
dữ liệu, điều này sẽ giảm thời gian xử lý của chương trình.
Với mục tiêu xác định giá trị khởi đầu tốt cho tham số D, ta xem xét
tính toán khoảng cách giữa các điểm đối với không gian mẫu, với N đối
tượng, có N(N-1)/2 khoảng cách cần xem xét. Như vậy, với N lớn thì số
khoảng cách cần tính toán là rất lớn, để giải quyết trường hợp này, ta sử dụng


22

phương pháp xác định không gian mẫu gồm các đối tượng tiềm năng cho việc
xác định khoảng cách. Với việc xác định không gian mẫu, ta gặp phải một vấn
đề là cần xác định kích cỡ mẫu là bao nhiêu để đảm bảo giá trị p không quá
lệch với độ lệch chuẩn bình thường. Trong đó độ lệch chuẩn được tính như
sau:

p

=

Trong đó:
N: Kích thước dữ liệu ban đầu
n: Kích thước dữ liệu mẫu
P: giá trị tham số thật của p trong tập dữ liệu

p

: Độ lệch chuẩn.

Với giá trị N lớn, n là tương đối nhỏ thì

1. Khi đó công thức

xác định độ lệch chuẩn được rút gọn thành:

(*)

p

Với t là độ lệch chuẩn bình thường, d là phần trăm khoảng không gian
không chắc chắn thì ta có công thức:

p

=


23

Ví dụ: với N = 10000, p = 0.99 và d = 0.5% và cần 95% không gian

chắc chắn (khi đó t = 2) thì

n


p

0.99*0.01/0.00252

=

= 0.0025, vậy khi đó:

1584

Vậy ta chỉ cần lấy mẫu với 1584 phần tử để tính toán khoảng cách đại
diện.
2.2.4 Đánh giá độ phức tạp của thuật toán Nested Loop.
Trong bước đầu của thuật toán chỉ có một khối được đọc vào bộ nhớ
trong nên thời gian của bước này là thời gian hằng. Tuy nhiên, điều này còn
tùy thuộc vào tốc độ xử lý của CPU và tốc độ vào ra (I/O), do một mảng chứa
b/2% cỡ của cơ sở dữ liệu T nên mỗi khối có x=(b/2)*(N/100) đối tượng, hàm
tính khoảng cách d(x,y) có độ phức tạp tuyến tính với số chiều của dữ liệu K
nên ở trong bước thứ 2 mất thời gian tính toán là O(x 2*k), trong bước 3.b mất
thời gian là O(x2*k). Do đó, độ phức tạp trong bước 3 là O((n-1)*x 2*k) với n
là tổng số các khối dữ liệu. Ở bước thứ 4 mất thời gian là O(x). Như vậy, tổng
thời gian thực hiện thuật toán của các bước 2, bước 3 và bước 4 là O((n1)*x2*k). Trong bước 5, hai mảng A và B được trao đổi vai trò cho nhau và
quay lại bước 2, bước này có số vòng lặp là (n-1) lần tương ứng với n-1 khối
nằm trong mảng đóng vai trò là mảng A. Do vậy, ta có độ phức tạp của toàn
bộ thuật toán Nested Loop là: O((n-1)2*x2*k)=O(N2*k).
Sau đây, chúng tôi sẽ trình bày 2 phiên bản của thuật toán đánh giá theo
ô (Cell Based Algorithms). Thuật toán này có độ phức tạp tuyến tính với N,
nhưng lại lũy thừa đối với k, do đó thuật toán này chỉ áp dụng đối với các giá
trị k bé. Mục đích quan trọng là làm tăng tính hiệu quả việc sử dụng quá trình



×