CHƯƠNG 2. CÁC THUẬT TOÁN TÌM KIẾM PHẦN TỬ NGOẠI LAI
2.2 Thuật toán đánh giá theo ô
2.2.2 Thuật toán FindAllOutsM cho các tập dữ liệu trong bộ nhớ chính
Các đối tượng dữ liệu trong tập dữ liệu được ánh xạ tới các ô phù hợp.
Trong quá trình ánh xạ số lượng các phần tử trong mỗi ô sẽ được lưu lại. Với 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 tầng các 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à ngoại 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 Cx,yUL1(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) ≤ Dmin (tức là q€S(p)) giá trị sl sẽ được tăng lên một đơn vị. Ngay khi sl lớn hơn M thì thông báo p là không ngoại lai. Ngược lại, sau khi tiến hành tính toán khoảng cách với tất cả các đối tượng thuộc L2(Cx,y) mà 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ượng lớn hơn 4 điểm. những ô đó không chứa phân tử ngoại lại. 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 các hình 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 nằm trong các ô thuộc L1.
Hình 2.2.d cho biết rằng 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 ( xem hình vẽ ).
Cuối cùng, chú ý rằng điểm nằm trong ô [6,4] và điểm nằm ở ô[7,5] có nhiều hơn 4 điểm trong các L2 tương ứng. Nhưng điều đó 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 trong 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 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 ô.
2.2.2.2 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++) countq=0;
2. for(mỗi đối tượng p thuộc D) { á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)
{ Cl=hồng;(trong đó Cl là ô thuộc L1(Cr) và chưa được gán màu đỏ)
5. for( mỗi ô màu trắng Cw) do:
a. countw2=countw+∑i € L1(Cw) counti; b. if (countw2>M ) Cw=hồng
c. else {
1. countw3=countw2+∑i € L2(Cw) counti;
2.if(countw3≤M) gán tất cả các đối tượng trong Cw là ngoại
lai. 3.else for (p€Cw)
{
i. countp=countw2; ii. for(q€L2(Cw))
if (dist(p,q)≤Dmin)
{ 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.2.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 tượng không phải là 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 tiến hành tính toán 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 vào L2 của ô Cw để có thể xác định có 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ố 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.
2.2.2.3 Đánh giá độ phức tạp thuật toán trong 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 được 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ó ô nào đượ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 được kiểm tra (tính khoảng cách và so sánh với Dmin) với M đối tượng trong 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 muốn rằng p cực gần tới 1. Đặc biệt là với 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 là rất ổ đị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 được 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ỏ.
Hình 2.2 a
Hình 2.2b
Hình 2.2c
Hình 2.2d 2.2.2.4 Tổng quát 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 tính chất 4 được nêu ra trong phần
2
L
2
2.2.2.1 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= Dmin /(2√K).
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; Cx1, x2,.. xk ≠ Cu1, u2,.. uk };
Đị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) > Dmin hay x=┌
2√K-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|≤ ┌2√K┐)^(|ui-xi|≠1); Cx1, x2,..
xk ≠ Cu1, u2,.. uk };
L2 là tổng quát hóa của 2.2 theo cách này thì tính chất 1 tới tính chất 4 được liêt kết trong phần 2.3.2.1 được bảo toàn.
2.2.2.5 Đánh giá độ phức tạp 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 tới 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à ∏ki=1mi, 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 / Dmin /2*√K = ri*2*√K /Dmin.
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√K┐+1)K)=O(mcKKK/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(mcKKK/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. Câu hỏi này sẽ được xem xét trong phần 2.5.4. Nhưng sẽ đưa ra một số lời giải thích sơ bộ sau đây. Đầ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ị Dmin lớn và giá trị của p lại rất gần tới 1. Giá trị Dmin lớn 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≈ mak. 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 rằng sẽ 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à tương đối 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.