K-means là một trong số những phương pháp học không có giám sát cơ bản nhất thường được áp dụng trong việc giải các bài toán về phân cụm dữ liệu. Mục đích của thuật toán k-means là sinh ra k cụm dữ liệu {C1, C2, …,Ck} từ một tập dữ liệu chứa n đối tượng trong không gian d chiều Xi = (xi1, xi2, …, xid) (i1,n), sao cho hàm tiêu chuẩn [5]:
k i x i C x m E i 1 2 đạt giá trị tối thiểu. Trong đó: mi là trọng tâm của cụm Ci, là khoảng cách giữa hai đối tượng [2].
Trọng tâm của một cụm là một véc tơ, trong đó giá trị của mỗi phần tử của nó là trung bình cộng của các thành phần tương ứng của các đối tượng véc tơ dữ liệu trong cụm đang xét. Tham số đầu vào của thuật toán là số cụm k, và tham số đầu ra của thuật toán là các trọng tâm của các cụm dữ liệu. Độ đo khoảng cách d giữa các đối tượng dữ liệu thường được sử dụng là khoảng cách Euclide, bởi vì đây là mô hình khoảng cách dễ để lấy đạo hàm và xác định các cực trị tối thiểu. Hàm tiêu chuẩn và độ đo khoảng cách có thể được xác định cụ thể hơn tuỳ vào ứng dụng hoặc các quan điểm của người dùng.
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
30
Để dễ hình dung về thuật toán k-means ta xét ví dụ đơn giản sau:
Cho tập dữ liệu bao gồm có 15 phần tử thực trong không gian 1 chiều S= {1, 4, 8, 5, 10, 15, 16, 23, 25, 27, 13, 37, 2, 18, 20}, người ta cần phân cụm dữ liệu này ra thành 3 cụm (k=3) theo thuật toán k-means. Các bước thực hiện của thuật toán được trình bày như sau:
Bước khởi tạo: chọn 3 tâm ngẫu nhiên CL1 = 8, CL2= 16, CL3= 23 Ta thu được phân hoạch ban đầu như sau:
Cụm 1, với tâm là CL1, gồm có các phần tử: 1, 2, 4, 5, 8, 10 Cụm 2, với tâm là CL2, gồm có các phần tử: 13, 15, 16, 18 Cụm 3, với tâm là CL3, gồm có các phần tử: 23, 25, 27, 20, 37
(Ở đây độ đo tương tự giữa hai đối tượng được xác định bằng công thức: d(a, b)=|a-b|)
Như vậy, ta có : E = {(1-8)2 + (2-8)2 + (4-8)2+ (5-8)2+ (8-8)2+ (10 - 8)2} + {(13-16)2 + (15-16)2 + (16-16)2+ (18-16)2}+ {(25-23)2 + (23-23)2 + (27- 23)2+ (37-23)2+ (20-23)2} = 353.
Bước lặp thứ nhất:
Cập nhật lại tâm mới: Cl1 = (1+2+4+5+8+10)/6 = 5; Tương tự ta có: CL2=13; CL3=26.4;
Phân hoạch tương ứng với các tâm mới như sau:
Cụm 1, với tâm là CL1 gồm có các phần tử: 1, 2, 4, 5, 8
Cụm 2, với tâm là CL2 gồm có các phần tử: 10, 13, 15, 16, 18 Cụm 3, với tâm là CL3 gồm có các phần tử: 23, 25, 27, 20, 37 Với phân hoạch này ta có giá trị hàm mục tiêu là: E= 249.2.
Do giá trị của hàm mục tiêu này bé hơn sơ với trạng thái của nó trước đó nên ta có bước lặp thứ hai như sau:
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn
31
Bước lặp thứ hai:
Cập nhật lại tâm mới: Cl1 = (1+2+4+5+8)/5 = 4; Tương tự ta có: CL2=14.4; CL3=26.4;
Phân hoạch tương ứng với các tâm mới như sau: Cụm 1, với tâm là CL1 gồm có các phần tử: 1, 2, 4, 5, 8
Cụm 2, với tâm là CL2 gồm có các phần tử: 10, 13, 15, 16, 18, 20 Cụm 3, với tâm là CL3 gồm có các phần tử: 23, 25, 27, 37
Với phân hoạch này ta có giá trị hàm mục tiêu là: E= 224.8
Do giá trị của hàm mục tiêu này bé hơn sơ với trạng thái của nó trước đó nên ta có bước lặp thứ ba như sau:
Bước lặp thứ ba:
Cập nhật lại tâm mới: Cl1 = (1+2+4+5+8)/5 = 4; Tương tự ta có: CL2=15.33; CL3=28;
Phân hoạch tương ứng với các tâm mới như sau: Cụm 1, với tâm là CL1, gồm có các phần tử: 1, 2, 4, 5, 8
Cụm 2, với tâm là CL2, gồm có các phần tử: 10, 13, 15, 16, 20 Cụm 3, với tâm là CL3, gồm có các phần tử: 23, 25, 27, 37 Với phân hoạch này ta có giá trị hàm mục tiêu là: E= 209.33
Chúng ta thực hiện thuật toán với bước tiếp theo do giá trị của hàm mục tiêu thu được vẫn bé hơn giá trị trước đó. Ở bước tiếp theo ta thấy thuật tóan sẽ dừng do tâm mới cập nhật sẽ không bị thay đổi. Như vậy, kết quả phân cụm ta sẽ xác định giá trị của ba tâm như sau: CL1= 4; CL2=15.33; CL3=28;