(a) học có giám sát, (b,c) học nửa giám sát, và (d) học không giám sát
Phân cụm nửa giám sát là phương pháp sử dụng các thông tin bổ trợ để hướng dẫn cho quá trình phân cụm. Các thơng tin bổ trợ có thể được cho dưới dạng tập các cặp ràng buộc hoặc một tập nhỏ một số dữ liệu được dán nhãn. Công việc xác định những tập ràng buộc hay những tập dữ liệu được dán nhãn được thực hiện bởi người phân cụm. Việc xác định này tuỳ thuộc vào kinh nghiệm của người phân cụm hoặc có thể dựa vào các tiêu chuẩn khác nhau tuỳ theo mục đích của việc phân cụm.
Một số thuật toán phân cụm nửa giám sát cơ bản trong thời gian gần đây: - Thuật toán Seed K-Means, đây là thuật tốn K-Means tích hợp với các dữ liệu đã gán nhãn nhằm trợ giúp trong pha khởi tạo các trọng tâm cho các cụm.
- Thuật toán Constraint K-Means, thuật toán này sử dụng các ràng buộc giữa các điểm vào trong quá trình phân cụm, trợ giúp quá trình tìm kiếm các cụm. - Thuật toán MPC K-Means, thuật toán này sử dụng các ràng buộc để huấn luyện hàm mục tiêu và trợ giúp quá trình tìm kiếm các cụm.
- Thuật toán SSDBSCAN, thuật toán này sử dụng một số điểm đã gán nhãn sẵn cung cấp để giúp cho thuật tốn tìm kiếm được các cụm có mật độ bất kỳ.
- Thuật toán SSGC, đây là thuật toán phân cụm nửa giám sát dựa trên đồ thị, với việc sử dụng một số điểm đã gán nhãn để trợ giúp quá trình phân tách đồ thị thành các thành phần liên thơng lớn nhất.
- Thuật tốn MCSSDBS, thuật toán này cải tiến thuật toán SSDBSCAN bằng cách tích hợp các ràng buộc và các điểm đã gán nhãn sẵn vào trong cùng một quá trình phân cụm làm tăng chất lượng của phân cụm khi so sánh với thuật toán SSDBSCAN.
- Thuật toán MCSSGC, một cải tiến của thuật toán SSGC, tương tự như MCSSDBS, thuật tốn này tích hợp cả hai loại ràng buộc và các điểm đã gán nhãn vào trong cùng một thuật toán để cải tiến chất lượng phân cụm khi so sánh với thuật tốn gốc SSGC
Hiện nay có hai hướng tiếp cận phương pháp phân cụm nửa giám sát đó là: - Huấn luyện khoảng cách giữa các điểm (metric learning): Các thông tin như ràng buộc sẽ được dùng để huấn luyện hàm tính khoảng cách sao cho hai điểm mà thuộc ràng buộc must-link nghĩa là sau khi huấn luyện hai điểm
đó sẽ gần nhau hơn, ngược lại nếu hai điểm là cannot-link sau khi huấn luyện chúng sẽ xa nhau ra.
- Hướng tiếp cận thứ hai là dùng trực tiếp các thông tin về ràng buộc cũng như các điểm đã gán nhãn vào trong quá trình tìm kiếm các cụm. Chẳng hạn trong thuật toán SSDBSCAN, các điểm nhãn sẽ được dùng để ước lượng mật độ địa phương.
Trong phần tiếp theo chúng tơi sẽ trình bày bốn thuật tốn phân cụm nửa giám sát gồm: Seed K-Means, Constraint K-Means, SSDBSCAN, SSGC là các thuật tốn điển hình của phương pháp dựa trên tìm kiếm.
2.2. Thuật toán phân cụm nửa giám sát dựa trên K-Means
2.2.1. Thuật toán COP-KMeans
Thuật toán COP-KMeans được giới thiệu năm 2001 có thể xem như là một trong những thuật toán phân cụm nửa giám sát đầu tiên. Thuật toán này tích hợp các ràng buộc (must-link và cannot-link) vào trong quá trình xây dựng các cụm. Trong q trình lặp để gán nhãn các điểm, sẽ có sự kiểm tra về tính hợp lệ của điểm được gán vào dựa trên các ràng buộc must-link và cannot-link.
Thuật toán COP K-Means đạt kết quả tốt khi thực hiện thử nghiệm trên các tập dữ liệu từ UCI (xem hình 2.2 và 2.3).
Hình 2.2. Minh họa thuật tốn COP-Kmeans [5]
Hình 2.4. Kết quả so sánh của thuật toán COP-KMeans cho tập dữ liệu Soybean [5]
2.2.2. Thuật toán Seed K-Means
Thuật toán Seed K-means giới thiệu năm 2002 là thuật toán sử dụng một số dữ liệu gán nhãn sẵn tên các cụm nhằm trợ giúp quá trình sinh các trọng tâm đầu tiên cho các cụm của thuật toán K-Means [6].
Trong thuật toán Seed K-Means, tác giả đã sử dụng một số seed nhằm vượt qua hạn chế của thuật toán K-Means trong vấn đề lựa chọn các trọng tâm của các cụm – thuật tốn K-Means thường có các kết quả khác nhau sau mỗi lần thực hiện vì chúng phụ thuộc nhiều vào vấn đề lựa chọn các trọng tâm ngẫu nhiên đầu tiên. Ý tưởng cơ bản của thuật toán Seed-KMeans là sử dụng các seed vào ngay bước khởi tạo các trọng tâm và vì vậy thuật tốn sẽ cho ra kết quả tốt hơn chỉ sau duy nhất một lần thực hiện. Thuật tốn Seed K-Means được trình bày trong Algorithm 1.
Algorithm 1: Seed-KMeans; Input:
Tập dữ liệu X = {x1, x2,…,xn}, xi Rn, số lượng cụm k, S = {S1, S2,…Sl}, l = 1,…, k là tập các seed
Output: k cụm của X
Khởi tạo các trọng tâm cho các cụm sử dụng tập các seed S:
Repeat
Gán mỗi điểm x vào cụm h* gần nó nhất; Tính tốn lại các trọng tâm:
t (t+1)
Until (Thỏa mãn điều kiện hội tụ)
Hình 2.5 Thuật toán Seed K-Means[6]
Bằng cách khởi tạo K cụm từ tập giống, thuật toán Seed K-Means đã giúp cho người dùng có thể can thiệp và điều chỉnh q trình phân cụm dữ liệu nhằm đạt được một kết quả phân cụm theo ý muốn của mình một cách nhanh nhất.
Thuật toán dựa trên tập giống Seed K-Means do Basu đề xuất vào năm 2002 là thuật tốn điển hình hiện nay về phân cụm nửa giám sát. Các thông tin bổ trợ đều do người dùng cung cấp. Vậy phân cụm nửa giám sát thực chất là quá trình kết hợp giữa người và máy để làm tăng chất lượng phân cụm.
0 ; ,..., 1 : 1 ) 0 ( x h k t S x Sh h h ( 1) * * * 1 ) 1 ( 1 t h X x t h t h x S
Thuật toán Seed K–Means sử dụng tập giống nhằm vượt qua hạn chế của thuật toán K-Mean trong vấn đề lựa chọn các trọng tâm của các lớp. Các tập giống sẽ được sử dụng trong quá trình khởi tạo các trọng tâm. Vì vậy, thuật tốn sẽ cho ra kết quả xác định sau duy nhất một lần thực hiện.
Trong Seed K-Means, việc chọn tâm do người dùng chỉ định có thể được thay đổi trong q trình thực hiện thuật tốn.
Thuật toán Seed K-Means đã đạt được những kết quả tốt hơn các thuật toán khác như COP-KMeans, và thuật tốn K-Means truyền thống (xem hình 2.6 và 2.7). Hơn nữa khi sử dụng các dữ liệu gán nhãn trong q trình khởi tạo các cụm, thuật tốn chỉ cần thực hiện duy nhất một lần.
Hình 2.7. Kết quả phân cụm cho tập Yahoo[6]
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 tố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.
2.4. Thuật toán phân cụm nửa giám sát dựa trên đồ thị (SSGC)
Thuật toán phân cụm nửa giám sát dựa trên đồ thị (SSGC) được giới thiệu năm 2017[8]. Với việc tích hợp các seed vào đồ thị, kết quả phân cụm đạt được tốt hơn khi so sánh với phương pháp SSDBSCAN. Ý tưởng cơ bản của phương pháp SSGC như sau:
Bước 1: Xây dựng đồ thị k-láng giềng gần nhất.
Bước 2: Phân rã đồ thị thành các thành phần liên thông sao cho trong mỗi thành phần liên thơng chỉ có nhiều nhất một loại seed.
Bước 3: Gán nhãn cho các điểm trong các thành phần liên thơng có các seed bằng nhãn của chính seed đó.
Bước 4: Các thành phần chưa có nhãn (hoặc các điểm đơn) tiếp tục được gán vào các cụm cơ bản.
Thuật toán SSGC chỉ sử dụng một tham số - k láng giềng gần nhất. Hơn nữa, các thí nghiệm cho thấy, bằng cách sử dụng các seed, SSGC không chỉ cho kết quả tốt mà còn cải thiện tốc độ tính tốn so với thuật toán SSDBSCAN.
Đầu tiên, chúng ta xác định đồ thị k-NNG được định nghĩa là một đồ thị vơ hướng có trọng số, trong đó mỗi đỉnh đại diện cho một điểm của tập dữ liệu và sở hữu tối đa k cạnh là k láng giềng gần nhất của nó. Một cạnh được tạo ra giữa một cặp điểm xi và xj khi và chỉ khi hai điểm có chung k láng giềng gần nhất. Trọng số ( ,x xi j) của cạnh nối 2 điểm xi và xj được định nghĩa là số láng giềng gần nhất của cả 2 điểm, được mô tả như sau:
( ,x xi j) |NN x( )i NN x( j) |
Trong đó NN(.) biểu thị tập hợp k láng giềng gần nhất của điểm xác định. Tính chất này được tích hợp tính tốn tự động, giúp thích nghi với việc xử lý tập dữ liệu với mật độ cụm khác nhau.
Dựa trên đồ thị k-NNG được định nghĩa ở trên, thuật toán phân cụm nửa giám sát dựa trên đồ thị được phát triển, gọi tắt là SSGC. Thuật tốn được mơ tả như sau:
Bước 1: Phân chia đồ thị k-NN. Mục đích của bước này là phân chia một đồ thị thành một số thành phần liên thông được kết nối theo điều kiện cắt sau:
- Điều kiện cắt: “Mỗi thành phần liên thơng có nhiều nhất một loại seed”. Để làm được điều này, một ngưỡng được thiết lập để phân chia đồ