Như đã đề cập, tư tưởng cơ bản của thuật toán BSAS là mỗi vector input x
được gán vào một cụm đã tạo từ trước hoặc thành lập nên cụm mới. Do đó, một quyết định cho vector x sẽ đạt được trước khi hình thành cụm cuối cùng, nó được xác định sau khi tất cả vector đã được xét. Sau đây ta sẽ tinh chế thuật toán BSAS,
còn được gọi là thuật toán BSAS sửa đổi (modified BSAS-MBSAS), để khắc phục hạn chế đó. Chi phí phải trả cho việc tinh chế này là tất cả các vector của X được đưa vào thuật toán hai lần.
Thuật toán gồm hai pha. Pha thứ nhất quyết định số cụm sẽ được tạo thành, qua việc gán một số vector của X vào các cụm. Pha thứ 2, các vector còn lại chưa được gán vào cụm nào ở pha thứ nhất tiếp tục đưa vào thuật toán và gán nó vào các cụm thích hợp. Thuật toán MBSAS viết như sau:
Số cụm đã được xác định trong pha thứ nhất là cố định. Do đó, trong suốt pha thứ 2 là lựa chọn các vector còn lại để đưa vào các cụm (đã tạo ra trong pha thứ nhất). Khi vector trung bình được sử dụng làm đại diện cho cụm, nó phải được điều chỉnh theo công thức (2.5) sau khi gán mỗi vector vào cụm.
Cũng như trường hợp BSAS, thuật toán MBSAS bị ảnh hưởng bởi thứ tự các vector được đưa vào thuật toán.
Cuối cùng, phải nói rằng sau sửa đổi nhỏ, MBSAS có thể dùng được độ đo tương tự.
Sơ đồ thuật toán phân cụm tuần tự sửa đổi
(Modified Basic Sequential Algorithmic Scheme - MBSAS)
Pha 1: Xác định số cụm m = 1; Cm ={x1}; // Khởi tạo For i = 2 to N - Tìm Ck: d(xi, Ck) = min1 jmd(xi, Cj) - If (d(xi, Ck)> ) and (m < q) then m = m + 1; Cm= {xi} // Tạo ra một cụm mới - End {if} END {for} Pha 2: Phân loại mẫu
For i = 1 toN
- If <xi chưa được gán vào một cụm>then
Tìm Ck : d(xi, Ck)= min1 j m d(xi,Cj)
Ck = Ck {xi} // Thêm xi vào cụm gần nhất
Cập nhật các vector đại diện của cụm (nếu cần thiết)
- End {if}