Để minh họa cho ý tƣởng và các đánh giá khác nhau của thuật toán đánh giá theo ô. Đầu tiên, một phiên bản đơn giản của thuật toán sẽ đƣợc xem xét. Phiên bản này giả sử rằng cả cấu trúc ô nhiều chiều và toàn bộ cơ sở dữ liệu đều có thể lƣu trong bộ nhớ chính. Để dễ dàng cho việc trình bầy, thuật toán đƣợc mô tả để thực hiện với các tập dữ liệu trong không gian hai chiều,
34
và sau đó xử lý trong k chiều. Trong phần sau sẽ trình bầy phiên bản đầy đủ của thuật toán đánh giá theo ô tìm kiếm các phần tử ngoại lai trên các tập dữ liệu lớn nằm trong bộ nhớ ngoài.
Các khái niệm và tính chất liên quan.
Với chiến lƣợc tìm kiếm tất cả các phần tử ngoại lai dựa trên khoảng cách dựa vào ô, mỗi một đối tƣợng trong tập dữ liệu đƣợc ánh xạ hoặc lƣợng tử hóa tới các ô có cạnh l= D/(2 )
Gọi Cx,y là ô giao giữa dòng x và cột y. L1(Cx,y) đƣợc định nghĩa là tầng các lân cận thứ nhất của ô Cx,y bao gồm các ô Cu,v thỏa mãn điều kiện :
L1(Cx,y)={Cu,v }. 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 1 1 2 2 2 2 1 * q 1 S 2 2 p 2 2 r 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 Hình 2.1
35
Hình 2.1: Các ô của cấu trúc ô trong không gian hai chiều, xem xét ô trung tâm ô C[4,4] được ký hiệu bởi dấu *. Các ô thuộc L1 được đánh dấu là số 1. Các ô thuộc L2 được đánh dấu số 2.
Thƣờng thì L1 của ô bao gồm có 8 ô. Chỉ loại trừ những ô ở gần biên của cấu trúc ô.
Tính chất 1:Bất kỳ một cặp đối tƣợng trong cùng một ô thì khoảng cách
giữa chúng lớn nhất D/2.
Tính chất 2: Nếu Cu, v là một ô thuộc L1(Cx,y) thì mỗi P Cu,v và
với mọi q Cx,y ta luôn có khoảng cách giữa chúng là lớn nhất là D.
Tính chất 1 đúng bởi vì khoảng cách giữa hai điểm bất kỳ trong cùng một ô luôn nhỏ hơn độ dài đƣờng chéo của ô có cạnh bằng l=D/(2* ) mà độ dài đƣờng chéo của một hình vuông là *1= (D/2 ))= D/2.
Tính chất 2 cũng đúng vì khoảng cách giữa cặp đối tƣợng bất kỳ trong hai ô không thể lớn hơn hai lần độ dài đƣờng chéo của ô. Các điểm q và r trong hình 2.1 minh họa điều này.
Gọi L2(Cx,y) là tầng các lân cận thứ hai của ô Cx,y bao gồm các Cu,v thỏa mãn điều kiện:
L2(Cx,y)= {Cu,v
Chú ý rằng khoảng cách giữa một số điểm nằm trong L2 và các điểm nằm trong L2 và các điểm nằm trong Cx,y là bé hơn khoảng cách D( ví dụ so sánh khoảng cách các điểm q và s trong hình 2.1)
36 Thông thƣờng L2 của một ô có 72
-32= 40 ô, chỉ loại trừ những ô trên hoặc gần biên của cấu trúc ô. Trong không gian hai chiều L1 có độ dày bằng 1 và L2 có độ dày bằng 2. L2 đƣợc định nghĩa theo cách này để thỏa mãn các tính chất sau đây:
Tính chất 3: Nếu Cu,v Cx,y cũng không thuộc L1 và L2 của ô Cx,y
thì đối tƣợng
P và mọi đối tƣợng q€Cu,v khoảng cách giữa chúng lớn hơn D. Do tổng độ dầy của L1 và L2 là 3 ô nên khoảng cách d(p,q) phải lớn hơn 3l=3*D/(2 )>D. Ví dụ nhƣ các điểm P và q trên hình 2.1.
Tính chất 4:
a. Nếu có quá M đối tƣợng trong Cx,y thì không có ngoại lai trong ô Cx,y
b. Nếu có quá M đối tƣợng trong Cx,yU L1(Cx,y) thì không có ngoại lai trong ô Cx,y.
c. Nếu số lƣợng của các đối tƣợng thuộc Cx,yU L1(Cx,y) U L2(Cx,y) không lớn hơn M thì mọi đối tƣợng trong ô Cx,y là ngoại lai.
Tính chất 4a và 4b là hệ quả trực tiếp từ tính chất 1 và tính chất 2. Và tính chất 4c đƣợc suy ra từ tính chất 3.
Thuật toán FindAllOutsM cho các tập dữ liệu trong bộ nhớ chính.
+ Tƣ tƣởng thuật toán
Các đối tƣợng dữ liệu trong tập dữ liệu đƣợc ánh xạ tới ô phù hợp. Trong quá trình ánh xạ số lƣợng phần tử trong mỗi ô sẽ đƣợc lƣu lại. Với
37
những ô có số lƣợng phần tử lớn hơn M thì sẽ đƣợc tô mầu “đỏ “. Điều này chứng tỏ rằng tất cả các phần tử trong các ô đó là không ngoại lai. Với những ô Cu, v thuộc các tần lân cận thứ nhất của các ô “ đỏ “ mà Cu, v chƣa đƣợc tô mầu đỏ sẽ đƣợc tô mầu “ hồng “. Theo tính chất 4.b tất cả các đối tƣợng nằm trong ô mầu “ hồng “ không phải là ngoai lai. Hơn nữa, cũng theo tính chất 4.b những ô Cx,y thỏa mãn điều kiện : số lƣợng các phần tử thuộc Cx,yU L1(Cx,y) lớn hơn M sẽ đƣợc tô mầu “hồng”. Với các ô chƣa đƣợc tô mầu thỏa mãn điều kiện: số lƣợng các phần tử trong Cx,yUL1(Cx,y) UL2(Cx,y) nhỏ hơn hoặc bằng M thì mọi đối tƣợng trong ô Cx,y đƣợc thông báo là ngoại lai.
Những ô không thỏa mãn các trƣờng hợp trên. Tức là, số lƣợng các đối tƣợng dữ liệu trong Cx,yUL1(Cx,y) UL2(Cx,y) lớn hơn M nhƣng Cx,yUL1(Cx,y) nhỏ hơn M thì thuật toán sẽ lƣu lại số lƣợng (sl) các phần tử trong C(x,y) UL1(Cx,y). Với mỗi đối tƣợng P trong ô Cx,y, thuật toán tiến hành tính toán khoảng cách d(p,q) với q là các đối tƣợng nằm trong ô thuộc L2(Cx,y). Với những điểm q thỏa mãn điều kiện d(p,q) ≤ D ( tức là q € S(p) giá trị sl vẫn nhỏ hơn M thì thông báo P ngoại lai.
Một ví dụ về cách chọn cấu trúc đƣợc trình bầy ở hình 2.2.a. Các ô đỏ là các ô có số lớn hơn 4 điểm. Những ô đó không chứa phần tử ngoại lai. Hơn nữa, tất cả các ô liền kề tức là những ô thuộc vào L1 cũng sẽ không chứa phần tử ngoại lai và đƣợc tô màu hồng. Hình 2.2.b có thêm 3 ô mầu hồng đƣợc xác định bằng mũi tên chỉ tới. Trong hình 2.2.c, chúng ta có một phần tử ngoại lai khả nghi bởi vì không có điểm nào trong các ô thuộc L1. Hình 2.2.d cho biết phần tử ngoại lai tiềm ẩn đó thực chất là phần tử ngoại lai bởi vì chỉ có 3 điểm nằm trong các ô thuộc vào L2. Trong đó L2 là vùng giới hạn bởi L1 và các đoạn thẳng đƣợc gán nhãn L2. Cuối cùng, chú ý rằng điểm nằm trong ô [6,4] và điểm ở ô [7,5] có nhiều hơn 4 điểm trong các L2 tƣơng ứng. Nhƣng điều
38
đó không có nghĩa rằng hai điểm đó không thể là ngoại lai. Nó còn phụ thuộc vào có bao nhiêu điểm L2 thực sự nằm trong tập các lân cận tƣơng ứng của chúng. Vì vậy, ứng với mỗi điểm trong các ô [6,4] và [7,5] phải tiến hành quá trình tính toán khoảng cách giữa các cặp điểm với số lƣợng các điểm ít nhất có thể đƣợc trong L2 của mỗi ô.
Mô tả thuật toán FindAlloutsM ( Find All Outliers in Memory )
Trong bƣớc 2 của thuật toán FindAllOutsM lƣợng hóa mỗi đối tƣợng dữ liệu vào trong ô phù hợp với nó. Bƣớc 3 sẽ gán nhãn tất cả các ô có số lƣợng các đối tƣợng lớn hơn M đối tƣợng bằng mầu đỏ .Điều này tƣơng ứng với tính chất 4.a . Các ô là thuộc L1 của ô đỏ sẽ đƣợc gán nhãn là mầu hồng trong bƣớc 4 và chúng cũng không chứa phần tử ngoại lai vì tính chất 4.b. Những ô khác thỏa mãn tính chất 4.b sẽ đƣợc gán nhãn là mầu hồng trong bƣớc 5.b. Cuối cùng trong bƣớc 5.c.2 của thuật toán, các ô thỏa mãn tính chất 4c sẽ đƣợc xác định.
Thuật toán FindAllOutsM :
1. For (q=1;q≤ m;q++) cuontq=0; 2. For( mỗi đối tƣợng P thuộc T) { ánh xạ P tới ô Cq phù hợp; Lƣu P; Countq } 3. For (q=1;q≤ m;q++) if(countq> M) Cq=đỏ; 4. For (mỗi ô đỏ Cr)
{ C1=hồng;(trong đó C1 là ô thuộc L1(Cr) và chƣa đƣợc gán mầu đỏ)
39
a. Countw2=countw + Counti; b. If (countw2>M ) Cw=hồng
c. Else {
1.countw3=Countw2 + counti;
2.if( countw3≤ M) gán tất cả các đối tƣợng trong Cw là ngoại lai.4 3.else for (P€Cw) { i.Countp=Countw2 ; ii.for (q€L2)(Cw)) if (d(p,q)≤ D ) { Counti ++; If (counti>M)
{ P= không ngoại lai; Quay lại bƣớc 5.c.3} }
iii. P= ngoại lai; } }
Nói tóm lại, tất cả các tính chất trong phần 2.3.1 đƣợc sử dụng để trợ giúp viếc xác định các phần tử ngoại lai và không ngoại lai trên cơ sở quan hệ ô – ô và hơn nữa trên cơ sở tính toán khoảng cách giữa các cặp đối tƣợng. Điều này làm giảm thời gian thực hiện một cách đáng kể bởi vì có thể loại bỏ một cách nhanh chóng một số lƣợng lớn các đối không phải ngoại lai. Đối với các ô không thỏa mãn các tính chất 4 thuật toán tiens hành tính khoảng cách cho các đối tƣợng ứng với các ô đó. Đó là các ô đánh dấu là các ô trắng (Cw). Trong bƣớc 5.c.3 của thuật toán FindAllOutsM, mỗi đối tƣợng P€Cw phải so sánh với mọi đối tƣợng q trong các ô thuộc L2 của ô Cw để có thể xác định bao nhiêu điểm thực sự nằm trong tập các lân cận của P(S(p)). Ngay khi số
40
lƣợng S(p) vƣợt quá M, thì chúng ta sẽ khai báo P không phải là ngoại lai. Còn nếu sau khi kết thúc quá trình tính toán mà số lƣợng tập các lân cận không lớn hơn M thì chúng ta khai báo P là ngoại lai.
Đánh giá độ phức tạp của thuật toán không gian hai chiều.
Bây giờ, chúng ta sẽ đánh giá độ phức tạp của thuật toán FindAllOutsM cho không gian hai chiều.
Bƣớc 1 mất O(m) thời gian, với m là tổng số các ô và m nhỏ hơn rất nhiều so với N.
Bƣớc 2 và bƣớc 3 mất O(N) và O(m) thời gian tƣơng ứng với mỗi bƣớc. Với M là số lƣợng lớn nhất các đối tƣợng có thể xuất hiện trong tập các lân cận (S(p)) của một phần tử ngoại lai vì vậy có nhiều nhất là N/(M+1) ô đỏ. Do đó bƣớc 4 mất O(N/M) thời gian. Độ phức tạp của bƣớc 5 là rắc rối nhất. Trong trƣờng hợp tồi nhất: (i) không có ô nào gán nhãn là ô đỏ hoặc ô hồng trong các bƣớc trƣớc và (ii) bƣớc 5c là cần thiết cho tất cả các ô. Nếu không có ô đƣợc tô mầu (đỏ hoặc hồng) thì mỗi ô chứa nhiều nhất là M đối tƣợng. Do đó, trong bƣớc 5c mỗi đối tƣợng trong một ô yêu cầu kiểm tra ( tính khoảng cách và so sánh với D ) với M đối tƣợng mỗi ô thuộc một trong 40 ô của L2. Do đó, O(40*M2) là thời gian yêu cầu cho mỗi ô. Cho nên, trong bƣớc 5 mất (m*M2
) thời gian. Thực tế chúng ta mong rằng P cực gần tới 1. Đặc biệt là các tập dữ liệu lớn nên O(MN2
(1-p)2) xấp xỉ bằng O(m). Cho nên, độ phức tạp của thuật toán FindAllOutsM trong không gian hai chiều là O(N+m). Chú ý rằng độ phức tạp này đƣa ra rất là ổn định. Bởi vì trong thực tế, cấu trúc ô có nhiều ô mầu đỏ và mầu hồng. Do đó, có rất ít khoảng cách giữa các cặp đối tƣợng so sánh. Do đó, bƣớc 5.c trở thành kém lợi thế và thuật toán yêu cầu thời gian tính toán nhỏ.
41 Hình 2.2.a
42 Hình 2.2.c
L 2
43
Tổng hợp cho trƣờng hợp nhiều chiều
Khi áp dụng thuật toán FindAllOutsM thực hiện với các tập dữ liệu lớn, nhiều chiều. Các tính chất 1 đến 4 đƣợc nêu ra cần đƣợc bảo toàn.Do đó, cạnh của các ô hay là các hình hộp trong không gian K chiều cần phải thay đổi.
Cụ thể, để bảo toàn tính chất 1 và tính chất 2 thì cạnh của hình hộp phải là l=D/(2 ).
Trong không gian k chiều, tầng các lân cận thứ nhất L1 của ô Cx1, X2….Xk đƣợc định nghĩa lại nhƣ sau:
L1(Cx1, x2…xk) = {Cu1, u2…uk | ui = xi ± 1 1≤ i ≤ k ; Cx1, x2…xk ≠ Cu1 , u2…uk};
(2.3)
Định nghĩa L1 trên là sự tổng quát hóa của (2.1)
Để bảo toàn tính chất 3 thì định nghĩa tầng các lân cận thứ 2 (L2) cần đƣợc thay đổi.
Gọi x là độ dầy của L2 trong không gian K chiều. Ta có tổng độ dày của L1 và L2 là x+1. Theo tính chất 3 thì l(x+1) >D hay x=[2 - 1]
Do đó, tầng các lân cận thứ hai của ô Cx1, x2 …xk trong không gian K chiều là:
L2(Cx1, x2…xk) = {Cu1, u2…uk | ui= xi ± 1≤ i ≤ k; Cu1, u2,…uk L1(Cx1, x2…xk); Cx1, x2…xk Cu1, u2…uk }; (2.4)
L2 là tổng quát hóa 2.2 theo cách này thì tính chất 1 tới tính chất 4 đƣợc liên kết trong phần trƣớc đƣợc bảo toàn.
44
Đánh giá độ phức tạp của thuật toán trong không gian nhiều chiều
Trong không gian nhiều chiều, các độ phức tạp về thời gian từ các bƣớc 1 đến 4 trong thuật toán FindAllOutsM đƣợc giữ nguyên. Tuy nhiên, chúng ta thấy rằng m là lũy thừa đối với k và không nhỏ hơn N là bao nhiêu. Cụ thể, số lƣợng các ô trong cấu trúc ô là , với mi là số lƣợng các ô trong chiều i. Hơn nữa, nếu ri là miền giá trị số trong chiều I thì mi = ri / (D/(2* )) = (ri
* 2* )/D.
Mặc dù, độ phức tạp của bƣớc 5 không lớn hơn O(m) nhƣng theo lý thuyết là O(m*2 +1) k) = O(m ck kk/2) với c là một hằng số nhỏ. Do đó, độ phức tạp của toàn bộ thuật toán là O(m+n) nhƣng theo lý thuyết là O(m ck
kk/2 + K*N).
Trong khi độ phức tạp của thuật toán đƣợc trình bầy trong trƣờng hợp tồi nhất thì một câu hỏi đặt ra là thuật toán FindAllOutsM hiệu quả nhƣ thế nào trong thực tế với trƣờng hợp k chiều. Một số giải thích, đầu tiên với việc xác định các phần tử ngoại lai trội, số lƣợng các phần tử ngoại lai tìm thấy không nhiều. Điều này đƣợc khẳng định do giá trị D lớn và giá trị p lại rất gần tới 1. Giá trị D tƣơng ứng với việc có một số lƣợng ô nhỏ các ô trong mỗi chiều. Nếu gọi ma là số lƣợng trung bình các ô trong một chiều thì m ma
k
. Thứ hai, mặc dù hằng số c là lớn hơn 1 nhƣng nó là một hằng số nhỏ. Thứ 3, các giá trị của p khá gần tới 1 suy ra M là nhỏ, có nghĩa là có nhiều ô mầu đỏ và mầu hồng. Điều này có nghĩa là số lƣợng các đối tƣợng yêu cầu so sánh từng cặp là đối tƣợng nhỏ. Điều thứ 4 và cũng là cuối cùng là khi số chiều k tăng lên sẽ làm một số ô là rỗng. Do đó, trong thực tế số lƣợng các ô không rỗng nhỏ hơn m rất nhiều. Điều đó mang lại cho việc thức hiện thuật toán hấp dẫn hơn nhiều so với độ phức tạp thuật toán đƣa ra theo giả thuyết.
45
Tìm kiếm các phần tử ngoại lai DB(p,D) trong các tập dữ liệu lớn, ở bộ nhớ ngoài.
Phân tích tổng quát
Trong phần trƣớc, thuật toán dựa vào ô đƣợc thiết kế để có thể thực hiện đƣợc với các tập dữ liệu nằm trong bộ nhớ trong. Ở đây, thuật toán dựa vào ô đƣợc cải tiến để phù hợp với việc thực hiện trên các tập dữ liệu lớn nằm trên bộ nhớ ngoài. Thuật toán cải tiến này bảo toàn độ phức tạp tuyến tính với N và cũng đảm bảo rằng không nhiều hơn 3 lần đọc toàn bộ cơ sở dữ liệu vào bộ nhớ. Khi thực hiện với các tập dữ liệu lớn, nằm ở bộ nhớ ngoài thì mục đích là làm giảm tối thiểu số lƣợng các trang đƣợc đọc vào bộ nhớ chính hoặc là số lần đọc toàn bộ dữ liệu. Các trang ở đây là một khối dữ liệu nhỏ nhất truyền giữa bộ nhớ ngoài và bộ nhớ chính. Trong thuật toán dựa vào ô, có hai bƣớc cần phải đọc các trang:
+> Quá trình ánh xạ ban đầu của các đối tƣợng vào các ô phù hợp Trong bƣớc 2 của thuật toán FindAllOutsM, mỗi một đối tƣợng đƣợc ánh xạ tới các ô phù hợp, bƣớc này yêu cầu một lần toàn bộ tập dữ liệu của chúng ta.
+> Quá trình tính toán khoảng cách giữa các cặp đối tƣợng. Trong bƣớc 5.c.3, với mỗi đối tƣợng p trong ô trắng Cw và mỗi đối tƣợng trong ô thuộc vào L2 của Cw cần đƣợc đọc để thực hiện công việc tính toán khoảng cách. Do không giả sử rằng các đối tƣợng ánh xạ vào cùng một ô hoặc các ô liền kề tức là các ô thuộc vào L1 của ô đang xét đƣợc phân vào một vùng cần thiết trên đĩa để mỗi cặp đối tƣợng yêu cầu tính toán khoảng cách đƣợc đọc trên cùng một trang. Do đó,