Phân cụm mờ Fuzzy C-means (FCM) do Bezdek [70] đề xuất là một thuật toán phân cụm dữ liệu hiệu quả và ngày càng được sử dụng rộng rãi trong nhiều lĩnh vực khác nhau, bao gồm cả lĩnh vực dự báo [28]. Tư tưởng chính của thuật toán được miêu tả như sau:
Cho tập dữ liệu chuỗi thời gồm n quan sát X = {𝑥1, 𝑥2, … , 𝑥𝑛}, FCM cho phép một đối tượng dữ liệu có thể thuộc hai hoặc nhiều cụm với các cấp độ thuộc khác nhau trong khoảng [0, 1]. Thuật toán này tìm các tâm cụm dựa trên việc cực tiểu hàm mục tiêu (1.12) với các ràng buộc được xác định theo công thức (1.13).
𝐽(𝑈, 𝑉) = ∑ ∑ 𝑢𝑗𝑖𝑚 𝑐 𝑖=1 𝑛 𝑗=1 𝑑𝑗𝑖2(𝑥𝑗, 𝑣𝑖) (1.12) 𝑢𝑗𝑖 ∈ [0,1]; ∑ 𝑢𝑗𝑖 = 1; ∑ 𝑢𝑖𝑗 < 𝑛 . 𝑛 𝑗=1 𝑛 𝑗=1 (1.13) Trong đó; n là số lượng quan sát trong tập dữ liệu X, m là tham số mũ (là trọng số của mỗi cấp độ thuộc mờ), c là số lượng cụm (2 ≤ c ≤ 𝑛), 𝑣𝑖 là tâm cụm thứ i
thuộc vào tập tâm cụm V = {𝑣1, 𝑣2, … , 𝑣𝑐},𝑢𝑗𝑖 là cấp độ thuộc của 𝑥𝑗 thuộc vào cụm
i và 𝑑𝑗𝑖2(𝑥𝑗, 𝑣𝑖) hay 𝑑𝑗𝑖 là khoảng cách giữa quan sát 𝑥𝑗 và tâm cụm 𝑣𝑖. U là ma trận độ thuộc có kích thước n × c, V là vector tâm cụm.
Thuật toán phân cụm FCM được trình bày thành 5 bước chính dưới đây và biển diễn dưới dạng sơ đồ khối như trong Hình 1.10.
Đầu vào: Tập dữ liệu {𝑥𝑗},(1 ≤ 𝑗 ≤ 𝑛 )
Đầu ra: Giá trị các cụm và tâm cụm 𝑣𝑖 (1 ≤ 𝑖 ≤ 𝑐 )
Bước 1- Xác định số cụm c, khởi tạo ngẫu nhiên tâm cụm 𝑉(0), thiết lập (t = 0,
m = 2, và 𝜀 = 0.0001).
Bước 2- Khởi tạo ma trận phân hoạch 𝑈(0)∈ (0,1) dựa vào công thức (1.14) 𝑢𝑗𝑖(𝑡) = 1 ∑ (𝑑𝑗𝑖(𝑡) 𝑑𝑗𝑘(𝑡)) 2 𝑚−1 𝑐 𝑘=1 ; 1 ≤ 𝑖 ≤ 𝑐, 1 ≤ 𝑗 ≤ 𝑛 (1.14) Với 𝑑𝑗𝑖 = ‖𝑥𝑗 − 𝑣𝑖‖2 là khoảng cách giữa quan sát 𝑥𝑗 và tâm cụm 𝑣𝑖 (Khoảng cách Euclid).
- Nếu 𝑑𝑗𝑖(t) = 0 thì 𝑢𝑗𝑖 = 1 và 𝑢𝑗𝑟 = 0 (r ≠ j).
Bước 3- Tăng t = t+1. Cập nhật tâm cụm 𝑣𝑖 dựa vào công thức (1.15) 𝑣𝑖(𝑡 + 1) = ∑𝑛𝑗=1𝑢𝑗𝑖𝑚(𝑡)∗𝑥𝑗
∑𝑛𝑗=1𝑢𝑗𝑖𝑚(𝑡) (1.15)
Bước 4- Cập nhật các giá trị của ma trận độ thuộc 𝑈𝑖𝑗 theo công thức (1.14)
Bước 5- Nếu max {|𝑢𝑗𝑖(𝑡 + 1) − 𝑢𝑗𝑖 (𝑡)|} < ε dừng FCM, trái lại quay lại Bước 3.
Kết thúc
Hình 1.10: Sơ đồ thuật toán phân cụm bằng FCM