3.2.1 Thuật toán phân cụm tuần tự
Giả sử tất cả các véctơ chỉ đƣợc tham gia một lần trong thuật toán và số lƣợng cụm là không biết trƣớc.
Gọi d(x,C) là khoảng cách từ một véctơ đặc trƣng x tới một cụm C. Điều này có thể đƣợc định nghĩa bằng cách đƣa vào tính toán tất cả các véctơ thuộc C hoặc một Véctơ đại diện cho nó.
Các tham số cần thiết do ngƣời dùng định nghĩa cho thuật toán này đó là ngƣỡng không tƣơng tự và số lƣợng tối đa các cụm cho phép là q.
Ý tƣởng cơ bản của thuật toán nhƣ sau:
Đối với mỗi Vectơ mới, nó sẽ đƣợc gắn vào các cụm có sẵn hoặc tạo một cụm mới tuỳ thuộc vào khoảng cách của nó tới các cụm có sẵn.
Gọi m là số cụm mà thuật toán đã tạo lập cho đến thời điểm hiện tại, khi đó thuật toán đƣợc khởi tạo nhƣ sau:
m = 1 Cm = {x1} For i = 2 to N Find Ck: d(xi, Ck) = min 1 j m d(xi,Cj) If (d(xi,Ck) > ) And (m<q) then m = m + 1 Cm = {xi} Else Ck = Ck {xi}
** Nếu cần thiết sẽ cập nhật đại diện
End {If}
End {For}
Những sự lựa chọn khác nhau của d(x,C) dẫn tới những thuật toán khác nhau. Khi C đƣợc đại diện bởi một Vectơ, d(x,C) trở thành:
d(x,C) = d(x,mC) (3.4)
Với mC là đại diện của C. Trong trƣờng hợp Vectơ trung bình đƣợc sử dụng nhƣ là đại diện, việc cập nhật có thể xảy ra theo kiểu lặp lại nhƣ sau:
new Ck old Ck new k new n x m nc ( 1) mCk (3.5)
Trong đó nCknew là nhân tố chủ yếu của C sau khi gán thêm x vào cho nó và
new
Ck
m (moldCk ) là đại diện của Ck sau (trước) khi cập nhật x vào.
Các thuật toán mà mỗi cụm đƣợc đại diện bởi một Véctơ đƣợc gọi là dựa trên tiêu chuẩn phân cụm toàn cục còn thuật toán mà tất cả các Véctơ đều đƣợc sử dụng sẽ đƣợc gọi là tiêu chuẩn phân cụm địa phƣơng.
Không khó để nhận ra rằng thứ tự mà các Véctơ đƣợc bố trí trong thuật toán BSAS đóng vai trò quan trọng đối với kết quả phân cụm. Những thứ tự sắp xếp khác nhau có thể dẫn tới những kết quả phân cụm hoàn toàn khác nhau, trong giới hạn số lƣợng các phân cụm tốt nhƣ chính bản thân những phân cụm.
Một yếu tố quan trọng nữa ảnh hƣởng tới kết quả của thuật toán phân cụm đó là cách chọn ngƣỡng . Giá trị này ảnh hƣởng trực tiếp tới số lƣợng các cụm đƣợc thiết lập bởi BSAS. Nếu quá bé, những cụm không cần thiết sẽ đƣợc tạo lập. Mặt khác, nếu quá lớn thì số lƣợng cụm tạo lập sẽ nhỏ hơn số cụm cần thiết. Trong cả hai trƣờng hợp, số lƣợng các cụm phù hợp nhất đối với tập dữ liệu sẽ bị bỏ qua.
Nếu số q của lƣợng tối đa cho phép các cụm không bị ràng buộc, chúng ta để tuỳ cho thuật toán lựa chọn số lƣợng cụm phù hợp nhất.
Xét ví dụ tại hình 1, nơi ba khối và các cụm tách biệt đƣợc tạo thành từ điểm X. Nếu số lƣợng tối đa các cụm đƣợc thiết đặt là 2, khi đó BSAS sẽ không thể phân thành ba cụm. Khả năng là thuật toán sẽ nhóm hai nhóm phía bên phải thành một cụm.
Hình 3.1: ba cụm đƣợc tạo thành từ các Véctơ đặc trƣng. Khi q bị ràng buộc bởi giá trị nhỏ hơn 3, thuật toán BSAS sẽ không phát hiện đƣợc chúng.
Mặt khác, nếu q không bị ràng buộc bởi thuật toán BSAS thì khi đó sẽ tạo thành ba cụm (với một sự lựa chọn phù hợp), ít nhất đối với trƣờng hợp Véctơ trung bình đƣợc sử dụng nhƣ một đại diện. Tuy nhiên, ràng buộc q trở nên cần thiết khi xử lý với sự thi hành nơi mà nguồn lực tính toán sẵn có là hạn chế.
Trong phần tiếp theo, một kỹ thuật đơn giản đƣợc đề xuất để xác định số lƣợng các phân cụm.
Ghi chú:
Lược đồ BSAS có thể được sử dụng với sự tương tự thay vì đánh giá không tương tự với sự sửa đổi phù hợp, đó là thay thế toán tử min bởi max.
Với thuật toán BSAS, với việc chỉ ra cụm đại diện, phù hợp với các cụm liên kết chặt. Vì vậy, đó là điều không được gợi ý nếu các loại cụm khác được biểu diễn rõ ràng.
3.2.2 Ƣớc lƣợng số lƣợng các phân cụm
Trong phần này, một phƣơng pháp đơn giản đƣợc mô tả để xác định số lƣợng các phân cụm. Phƣơng pháp này phù hợp với BSAS nhƣ các thuật toán khác, đối với nó, số lƣợng cụm không cần đƣa nhƣ một tham số đầu vào.
Trong phần tiếp theo, BSAS() có nghĩa là thuật toán BSAS với ngƣỡng không tƣơng tự đƣợc xác định là .
For = a to b step c
Thực hiện s lần thuật toán BSAS(), mỗi lần cho dữ liệu vào với các thứ tự khác nhau.
Ước lượng số cụm, mnhư là số thường xuyên là kết quả từ s lần thực hiện BSAS().
Giá trị a và b là các mức khác biệt nhỏ nhất và lớn nhất trong số tất cả các cặp Vectơ trong X, đó là, a = mini,j=1…N d(xi,xj) và b = maxi,j=1…N d(xi,xj).
Lựa chọn của c trực tiếp và bị tác động của d(x,C). Nhƣ những giá trị s liên quan, một giá trị s lớn hơn, một tập ví dụ thống kê lớn hơn và vì thế, sẽ cho một kết quả đúng đắn hơn.
Phần tiếp theo, chúng ta sẽ phác họa số lƣợng cụm m đối với . Phác hoạ này gồm một số miền phẳng. Điều đó cho hy vọng rằng ít nhất trong trƣờng hợp mà các véctơ đƣợc phân thành các cụm riêng rẽ tốt thì đó chính là số lƣợng cụm mong muốn. Chúng ta sẽ giải thích điều này một cách trực giác.
Giả sử rằng dữ liệu tạo thành hai tập và tách biệt tốt là C1 và C2. Khoảng cách bé nhất giữa hai Véctơ trong C1(C2) là r1 (r2) và giả sử rằng r1 < r2. Ta cũng cho rằng r (>r2) là giá trị nhỏ nhất trong số tất cả các khoảng cách d(xi,xj), trong đó xi C1 và xj C2. Điều rõ ràng là đối với [r2, r - r2], số lƣợng các cụm tạo bởi BSAS là 2. Thêm vào đó, nếu r >> r2, với đầu vào trong phạm vi lớn và vì vậy, nó phù hợp với một miền phẳng lớn trong phác hoạ của mT đối với . Ví dụ 2 sẽ minh hoạ rõ thêm ý này.
Ví dụ 2: xem xét hai phân bố Gauxơ hai chiều với giá trị nằm trong [0,0]T
và [20,20]T một cách độc lập. Ma trận hiệp phƣơng sai là = 0.5I cho cả hai phân bổ với I là ma trận nhận dạng 2 x 2. Tạo 50 điểm cho mỗi phân bố, số lƣợng cụm cơ sở là 2. Biểu đồ kết quả từ ứng dụng mô tả phía trên đƣợc biểu thị ở hình 3.2b với a = mini,j=1…N d(xi,xj), b = maxi,j=1…N d(xi,xj) và c 0,3. Nó có thể đƣợc nhìn thấy miền phẳng lớn nhất phù hợp với số 2, đó là số lƣợng cụm cơ sở.
Trong thủ tục đã đề cập, chúng ta ngầm giả định rằng các Vectơ đặc trƣng lập nên các cụm. Nếu không xảy ra trƣờng hợp này, phƣơng pháp sẽ vô ích.
Thêm vào đó, nếu các Vectơ tạo thành các cụm liên kết chặt chẽ mà không phân chia rõ ràng, thủ tục có thể cho kết quả không đáng tin cậy, từ đó sẽ
không chắc chắn cho đồ thị của m đối với để chứa đựng những vùng phẳng rộng.
Hình 3.2: (a) tập dữ liệu; (b) phác hoạ của số lƣợng các cụm đối với . Nó có thể nhìn thấy đối với một vùng rộng của các giá trị của , số lƣợng các cụm, m = 2.
Trong một số trƣờng hợp, nó có thể thích hợp để xem xét tất cả các số lƣợng cụm, m mà phù hợp với mọi miền phẳng của kích cỡ lớn trong mô tả m đối với . Nếu, chẳng hạn chúng ta có 3 cụm và hai cụm đầu tiên nằm gần nhau và cách xa cụm thứ 3, miền phẳng nhất có thể xuất hiện đối với m = 2 và miền phẳng thứ hai đối với m = 3. Nếu chúng ta loại bỏ miền phẳng nhất thứ 2, chúng ta có thể bị mất giải pháp phân thành 3 cụm.
3.2.3. Một thuật toán BSAS cải tiến
Nhƣ đã phát biểu trƣớc, ý tƣởng chính sau thuật toán BSAS đó là mỗi Véctơ đầu vào x đƣợc gán vào một cụm đã tạo lập từ trƣớc hoặc một cụm mới đƣợc tạo lập. Tuy nhiên, một quyết định đối với Vectơ x đƣợc với lấy trƣớc khi cụm cuối cùng đƣợc tạo lập, nó đƣợc xác định sau khi tất cả các Vectơ đã đƣợc biểu thị. Quá trình tinh chế của thuật toán BSAS sau đây đƣợc gọi là MBSAS, khắc phục những trở ngại đó. Cái giá để thực hiện thuật toán này đó là mỗi véctơ thuộc X đều đƣợc biểu thị hai lần trong thuật toán. Lƣợc đồ thuật toán bao gồm hai giai đoạn: giai đoạn thứ nhất liên quan đến việc xác định
25 15 5 -5 -5 5 15 25 40 30 20 10 0 0 10 20 30
các cụm thông qua việc gán một số véctơ thuộc X cho các cụm; Trong giai đoạn thứ 2, các véctơ chƣa gán cho các cụm đƣợc biểu thị lần thứ 2 trong thuật toán và gán cho cụm phù hợp. Thuật toán MBSAS đƣợc viết nhƣ sau: Thuật toán BSAS cải tiến:
Xác định các cụm m = 1 Cm = {x1} For i = 2 to N Find Ck: d(xi,Ck) = min1<=j<=md(xi,Cj) If (d(xi,Ck) > ) AND (m<q) Then m = m + 1 Cm = {xi} End {If} End {For} Phân loại For I = 1 to N
If (xi chƣa đƣợc gán cho cụm nào) Then Find Ck: d(xi,Ck) = min1<=j<=md(xi,Cj) Ck = Ck {xi}
** Nếu cần thiết, sẽ cập nhật véctơ đại diện
End {If} End {For}
Số lƣợng các cụm đƣợc xác định qua giai đoạn thứ nhất và nó ổn định, vì vậy quyết định đƣợc thực hiện ở giai đoạn 2 đối với mỗi Véctơ là tính toán với tất cả các cụm.
Khi Véctơ trung bình của cụm đƣợc sử dụng nhƣ đại diện của nó, cụm đại diện thích hợp sẽ đƣợc điều chỉnh bằng cách sử dụng công thức (3.5), sau khi gán mỗi Véctơ vào một cụm.
Cũng nhƣ BSAS, thuật toán MBAS cũng nhạy cảm với vấn đề thứ tự của các véctơ thực hiện.
Cuối cùng, điều đƣợc tuyên bố đó là, sau khi chỉnh sửa lỗi, MSAS có thể đƣợc sử dụng khi một độ đo tƣơng tự đƣợc dùng.
3.2.4. Sơ đồ tuần tự với hai ngƣỡng
Nhƣ đã trình bày trên, kết quả của BSAS và MBSAS phụ thuộc mạnh vào thứ tự của các Véctơ khi thực hiện thuật toán, cũng nhƣ giá trị của . Nếu lựa chọn không thích hợp, có thể dẫn tới một kết quả phân cụm không có ý nghĩa. Có một cách để vƣợt qua khó khăn này đó là định nghĩa một “vùng xám”. Điều này đạt đƣợc nhờ vào việc định nghĩa hai ngƣỡng 1 và 2 (>1). Nếu độ sai khác của d(x,C) của véctơ x với cụm C gần nhất nhỏ hơn 1 thì x sẽ đƣợc gán vào C. Nếu d(x,C) 2 , một cụm mới sẽ đƣợc tạo lập và x sẽ đƣợc đặt ở đó. Trƣờng hợp còn lại, 1 d(x,C) 2 , sẽ xuất hiện sự không chắc chắn và việc gán x cho cụm sẽ đƣợc thực hiện ở giai đoạn sau. Đặt class(x) nhƣ một cờ xác định x đã phân cụm (1) hay chƣa (0). Ngoài ra, chúng ta biểu thị m là số cụm đã đƣợc tạo lập cho đến thời điểm hiện tạ1. Trong phần sau, chúng ta giả thiết là không có giới hạn cho các cụm (ví dụ: q = N). Thuật toán đƣợc thực hiện nhƣ sau:
Thuật toán TTSAS (Two-Threshold Sequential Algorithm Scheme) m = 0
class(x)= 0, x X prev_change = 0 cur_change = 0 exist_change= 0
While (có ít nhất một véctơ đại diện x với clas(x) = 0) do
For I = 1 to N
If (clas(xi) = 0) AND (đây là vòng lặp đầu tiên của While .. Loop) AND (exist_change = 0) Then m = m + 1 Cm = {xi} Clas(xi) = 1 Cur_change = cur_change + 1 Else If clas(xi) = 0 then Find d(xi,Ck) = min 1<=j<=m d(xi,Cj) If d(xi,Ck) < 1 then Ck = Ck {xi} Clas(xi) = 1 cur_change = cur_change + 1 Else If d(xi,Ck) > 2 then m = m + 1 Cm = {xi} Clas(xi) = 1 cur_change = cur_change + 1 End {If} Else If clas(xi) = 1 then cur_change = cur_change + 1 End {If} End {For}
prev_change = cur_change cur_change = 0
End {while}
Biến exist_change kiểm tra liệu có ít nhất một véctơ đã đƣợc phân loại tại lần duyệt qua X hiện tại (chẳng hạn như vòng lặp hiện tại của while … loop). Điều này đạt đƣợc bằng cách so sánh số lƣợng véctơ đã đƣợc phân loại cho đến thời điểm duyệt qua X hiện tại, curr_change với số lƣợng véctơ đã đƣợc phân loại ở lần duyệt qua trƣớc của X, prev_change. Nếu exist_change = 0, khi đó, không có véctơ nào đã đƣợc phân loại cho cụm trong lần quyệt qua trƣớc của X, véctơ đầu tiên chƣa đƣợc phân loại đƣợc sử dụng để tạo một cụm mớ1.
Điều kiện If đầu tiên trong vòng lặp Loop đảm bảo rằng thuật toán sẽ dừng sau N bƣớc duyệt qua X (N lần thực hiện của vòng lặp While ... Loop) là nhiều nhất. Thực sự điều kiện này ép buộc véctơ đầu tiên mà chƣa phân loại tới một cụm mới nếu không có véctơ nào đã đƣợc gán cho tới lần duyệt qua trƣớc của X. Điều này tránh đƣợc trƣờng hợp không có véctơ nào đƣợc gán trong toàn vòng lặp.
Tuy nhiên, trong thực hành, số lƣợng vòng lặp cần thiết thƣờng nhỏ hơn N rất nhiều, điều đó chỉ ra rằng mô hình này hầu nhƣ thƣờng xuyên có độ tốn kém ít nhất là bằng hai mô hình trƣớc bởi vì về tổng thể nó cần ít nhất hai lần duyệt qua X. Thêm vào đó, sự ấn định của véctơ bị chối bỏ cho đến lúc có đƣợc thông tin đầy đủ, nó cho thấy rằng thuật toán này không nhạy cảm với thứ tự của dữ liệu thực th1.
Nhƣ đã trình bày ở phần trƣớc, với những sự lựa chọn khác nhau của độ khác biệt giữa véctơ và cụm sẽ cho kết quả khác nhau. Thuật toán này cũng thích hợp với những cụm chặt (compact) khi đƣợc sử dụng với việc chỉ ra cụm đại diện.
Chú ý rằng đối với tất cả các thuật toán sẽ không xuất hiện trạng thái deadlock. Điều đó cho thấy không có thuật toán nào đi vào trạng thái có tồn tại véctơ chưa được gán mà không thể gán cho một cụm đã tồn tại hoặc tạo cụm mới, bất chấp số lượng dữ liệu đưa vào thực hiện thuật toán. BSAS và MBSAS đảm bảo sẽ ngừng sau một hoặc hai vòng lặp qua X. Với TTSAS, tình trạng deadlock bị loại bỏ, như chúng ta gán tuỳ ý véctơ chưa được gán đầu tiên ở vòng lặp hiện tại cho cụm mới nếu không có véctơ nào được gán ở vòng lặp trước.
Ví dụ 3:
Giả sử chúng ta có các véctơ x1 = [2,5]T, x2 = [6,4]T, x3 = [5,3]T, x4 = [2,2]T, x5
= [1,4]T, x6 = [5,2]T, x7 = [3,3]T và x8 = [2,3]T. Khoảng cách từ véctơ x tới cụm C đƣợc tính bởi khoảng cách Ơclit giữa x với véctơ trung bình của C. Nếu chúng ta thực thi các véctơ trên theo đúng thứ tự nhƣ trên đối với thuật toán MBSAS và chúng ta đặt = 2.5, chúng ta sẽ đƣợc ba cụm C1 = {x1, x5, x7, x8}, C2 = {x2, x3, x6} và C3 = {x4} (hình vẽ 3.a).
Mặt khác, nếu chúng ta thực thi các véctơ theo thứ tự trên bằng thuật toán TTSAS với 1 = 2.2 và 2 = 4, chúng ta đƣợc hai cụm C1 = {x1, x5, x7, x8, x4}, C2 = {x2, x3, x6} (hình 3.b). Trong trƣờng hợp này, tất cả các véctơ đƣợc gán cho các cụm ngay từ lần đầu tiên duyệt qua X trừ x4, nó đƣợc gán cho C1 khi
x1 x5 x8 x7 x2 x3 x6 x4 x1 x5 x8 x7 x4 x2 x3 x6
thực hiện lần duyệt thứ 2 qua X. Tại mỗi lần duyệt, chúng ta có ít nhất một véctơ gán cho mỗi cụm, vì vậy, không có véctơ nào bị ép tạo nên cụm mới một cách tuỳ ý.
Một điều rõ ràng là thuật toán này cho một kết quả hợp lý hơn MBAS, tuy nhiên điều cần chú ý đó là thuật toán MBAS cũng cho cùng kết quả nếu thứ tự các véctơ đầu vào theo thứ tự x1, x2, x5, x3, x8, x6, x7, x4.
3.2.5. Thực hiện tinh chỉnh
Trong các thuật toán nêu trên, có thể xảy ra trƣờng hợp hai cụm đƣợc phân rất gần với nhau và nó có thể cần thiết để hợp lại thành một cụm. Điều này không thể thực hiện bằng các thuật toán nêu trên. Có một cách để thực hiện điều này đó là thực hiện thuật toán hợp đơn giản sau đây sau khi kết thúc các thuật toán phân cụm nêu trên.
Thuật toán hợp cụm:
(A) Find Ci, Cj (i<j) thoả mãn d(Ci, Cj) = min k,r=1…m, kr d(Ck,Cr) If d(Ci, Cj) ≤ M1 then
Merge Ci, Cj to Ci và loại bỏ Cj
Cập nhật đại diện cụm của Ci (nếu có sử dụng véctơ đại diện)
Đổi tên lần lƣợt Cj+1 …. Cm thành Cj …. Cm-1