Chương 1 TỔNG QUAN
2.3. Thuật toán phân cụm nửa giám sát dựa trên mật độ: SSDBSCAN
Như đã trình bày trong chương 1, thuật tốn DBSCAN là thuật toán rất hiệu quả trong việc phát hiện các cụm có hình dạng bất kỳ, chất lượng phân cụm tốt và có nhiều người sử dụng[7]. Tuy nhiên hạn chế lớn nhất của thuật toán DBSCAN là khả năng làm việc với các tập dữ liệu có các mật độ khác nhau giữa các cụm. Hình 2.8 chỉ ra sự hạn chế của thuật toán này, với 3 cụm có mật độ khác nhau như vậy, khơng có bất kỳ cặp giá trị MinPts và nào để DBSCAN có thể tìm ra 3 cụm này.
Thuật toán SSDBSCAN được giới thiệu năm 2009 là một semi- supervised DBSCAN nhằm cải tiến DBSCAN để có thể làm việc với các tập dự liệu có các cụm với mật độ khác nhau.
Hình 2.8. Dữ liệu với 3 cluster A, B, và C. Tuy nhiên khơng có giá trị phù hợp MinPts và để DBSCAN có thể phát hiện ra đúng cả ba cluster trên [7]
Bằng cách sử dụng một số điểm gán nhãn sẵn đại diện cho các cụm, với giả thiết cung cấp ít nhất mỗi cụm một điểm, SSDBSCAN cần duy nhất một tham số MinPts. Dữ liệu đầu vào sẽ được biểu diễn bởi một đồ thị vơ hướng
có trọng số trong đó mỗi đỉnh tương ứng cho một điểm dữ liệu, cạnh giữa hai đỉnh p và q của đồ thị được xác định bởi giá trị rDist() như sau: rDist() biểu thị cho giá trị nhỏ nhất của sao cho với hai đỉnh p và q thì p và q sẽ có ít
nhất MinPts điểm nằm trong siêu cầu bán kính , hơn nữa p và q có thể kết
nối trực tiếp được với nhau – tức là p nằm trong siêu cầu bán kính của q và ngược lại, rDist() được biểu diễn như sau:
p, q X:
rDist(p,q) = max(cDist(p),cDist(q) d(p,q)) (1)
trong đó d(p,q) là khoảng cách giữa p và q theo độ đo Ơcơlit, và
cDist(o) là khoảng cách nhỏ nhất tính từ o mà ở đó o vẫn chứa đủ MinPts
Sử dụng rDist(), chúng ta xây dựng lần lượt từng cụm C như sau: Sử dụng một seed đầu tiên p, tiếp đó cluster C sẽ được thêm các điểm thỏa mãn
rDist(), quá trình sẽ tiếp tục đến khi gặp một điểm q có nhãn khác với nhãn
của p. Khi đó thuật tốn sẽ tiến hành tìm kiếm ngược lại đến điểm o sao cho
giá trị rDist(o) là lớn nhất. Quá trình xây dựng cluster C hồn thành. Nếu vẫn cịn các seed chưa được xét chúng ta lại tiếp tục tiến hành xây dựng các cụm như trên.
Thuật tốn SSDBSCAN được trình bày như sau:
Thuật tốn 1: SSDBSCAN(D, DL) Input: Data set D, a set of seeds DL Output: A partition of D Process: 1: for all pDL 2: for all qD 3: key q 4: key p 0 5: QD 6: while Q 7: qEXTRACT MIN Q( ) 8: list.insert(q)
9: if (qDL) and (q label. p label. ) then
10: WRITE-OBJECTS(p,list)
11: break 12: end if
13: for all oAdj q do
14: if (oQ) and (rDist q o( , )key o ) then 15: key o rDist q o( , ) 16: end if 17: end for 18: end while 19: end for 20: end for
Thuật toán 2: WRITE-OBJECTS(p,list) Process:
1: iarg max list xx ( )
2: for o=1 to i-1
3: list[o].label = p.label 4: write(list[o]) 5: list.clean()
Thuật toán bắt đầu xây dựng một MST theo thuật toán Prim từ một đỉnh bất kỳ pDL và quá trình dừng lại khi hoặc là tất cả các đối tượng được thêm vào MST hoặc khi một đối tượng với một nhãn khác với nhãn của p được thêm vào cây. Khi một đối tượng q với một nhãn khác được thêm vào cây thì thuật tốn sẽ tìm kiếm cạnh lớn nhất hiện tại kết nối p và q trong tập hợp các điểm đã được thêm vào trước q đến cụm MST hiện tại. Trong dịng 8 của thuật tốn chúng ta giữ một danh sách của tất cả các đối tượng đã được thêm vào MST, chúng được sắp xếp theo thứ tự. Danh sách này được đưa vào WRITE-OBJECTS theo nguyên mẫu cùng với thư mục gốc của MST (danh sách và p tương ứng). Hai đối tượng với nhãn khác nhau đã được thêm vào và đối tượng được thêm vào với cạnh của giá trị rDist cao nhất là giá trị nhỏ nhất mà hai đối tượng kết nối. Trong thủ tục WRITE-OBJECTS, chỉ mục (ký hiệu bởi i) của đối tượng trong danh sách có trật tự sẽ được trả về (đối tượng được biểu thị bởi x), và tất cả các đối tượng từ đầu danh sách đến x, trừ x, được ghi vào một tệp tin đầu ra, gán cùng nhãn với đối tượng gốc p. Sau khi ghi các đối tượng vào một tệp, các cấu trúc dữ liệu được khởi tạo lại và tồn bộ q trình được lặp lại cho một đối tượng khác trong DL. Cuối cùng, tất cả các đối tượng thuộc một cụm được ghi vào một tệp tin đầu ra, trong khi các
đối tượng chưa được phân cụm bị bỏ lại. SSDBSCAN có thể được xem như là một thủ tục gọi các thuật toán của Prim một số lần bằng với số lượng các đối tượng được dán nhãn. Khi tập dữ liệu có nhãn là hữu hạn, thuật toán cuối cùng sẽ dừng.
SSDBSCAN gọi thuật toán của Prim một số lần bằng với số đối tượng trong bộ dữ liệu được dán nhãn. Độ phức tạp của thuật toán Prim là O(E lgV), trong trường hợp của chúng ta tương ứng với O(N2lgN), đối với SSDBSCAN, độ phức tạp thời gian cuối cùng là O(nN2 lg N), trong đó n là số nhãn các đối tượng trong bộ dữ liệu có dán nhãn. Độ phức tạp thời gian này có thể được cải thiện bằng cách thay đổi việc thực hiện thuật toán của Prim. Nếu chúng ta sử dụng Fibonaci để thực hiện hàng đợi ưu tiên, thời gian chạy của chúng ta được cải thiện thành O(nN2 + nN lg N), tức là O (nN2). Trong thực tế chúng ta thấy n có giá trị nhỏ.
Thuật tốn SSDBSCAN có 4 đặc tính thú vị như sau:
- Thuật tốn chỉ yêu cầu một tham số dữ liệu đầu vào duy nhất. - Không cần bất kỳ sự can thiệp nào của người dùng.
- Tự động tìm ra các đối tượng là nhiễu dựa theo mật độ.
- Có thể tự động tìm ra cấu trúc của các cụm ngay cả khi mật độ trong các cụm khác nhau.
Bằng việc sử dụng một số seed (để gán nhãn dữ liệu), với giả thiết cung cấp ít nhất cho mỗi cụm một seed, thuật toán phân cụm nửa giám sát dựa trên mật độ SSDBSCAN cần duy nhất một tham số MinPts để tiến hành phân cụm. Từ đó, thuật tốn cho hiệu suất tốt hơn, khắc phục được các hạn chế của thuật toán DBSCAN đặc biệt là trong các trường hợp phân cụm trong các tập dữ liệu có mật độ khác nhau giữa các cụm.