Là thuật toán lặp đơn giản để chia CSDL thành k nhóm k do người dùng chỉ định... N} trong đó xi d là điểm dữ liệu thứ i.. Thuật toán bắt đầu bằng cách chọn k điểm làm trọng tâm.. Kỹ thuậ
Trang 1Là thuật toán lặp đơn giản để chia CSDL thành k nhóm (k do người dùng chỉ định).
Được phát triển bởi nhiều nhà nghiên cứu khác nhau, điển hình là Lloyd (1957, 1982), Forgey (1965), Friedman và Rubin (1967), McQueen (1967).
Trang 22.1 Thuật toán
Thuật toán thao tác trên một tập các vectơ d-chiều, D = {xi| i = 1 N} trong đó xi d là điểm dữ liệu thứ i Thuật toán bắt đầu bằng cách chọn k điểm làm trọng tâm Kỹ thuật để chọn các điểm hạt giống này là “ngẫu nhiên” Sau đó thuật toán gọi hai bước sau cho đến khi hội tụ (không còn thay đổi nữa):
Bước 1 Gán dữ liệu: Mỗi điểm dữ liệu được gán vào nhóm nào gần nhất Đây là việc phân chia dữ liệu
Bước 2 Tính lại trọng tâm: đại diện của mỗi nhóm được tính lại bằng với trung bình (mean) của các điểm dữ liệu thuộc nhóm Nếu các điểm dữ liệu được tính bởi xác suất (probability measure / weights) thì đại diện được tính bằng giá trị kì vọng (expectation) của dữ liệu
Trang 32.1 Thuật toán - ví dụ minh họa
Trang 42.1 Thuật toán – Vấn đề tối ưu cục bộ
Việc chọn giá trị khởi đầu cho các trọng tâm của k-means sẽ quyết định đến việc hội tụ “cục bộ” hay “toàn cục” của dữ liệu
Trang 52.2 Khoảng cách giữa hai đối tượng
Khoảng cách Minkowski:
Trong đó i = (xi1, xi2, …, xip) và j = (xj1, xj2, …, xjp) là
dương
p p
q q
j
x i
x j
x i
x j
x i x j
i
2 2
1 1
|
|
|
|
|
| ) ,
(
2 2
1
i x j
i d
Trang 62.2 Khoảng cách giữa hai đối tượng
Nếu q = 2, d là khoảng cách Euclidean:
d(i,i) = 0
d(i,j) = d(j,i)
d(i,j) d(i,k) + d(k,j)
)
|
|
|
|
| (|
) ,
2 2
2 1
i x j
i d
Trang 72.3 Ví dụ minh họa
Với k = 2 và n = 5 {A(1,2), B(0,3), C(3,1), D(4,2), E(4,0)}
Gọi M1, M2 là trọng tâm của hai nhóm, ta có kết quả như sau:
Bước 1: Gán M1 = A, M2 = B
Bước 2:
Xét C: d(C,M1) =
d(C,M2) =
C thuộc Nhóm 1 Xét D: d(D,M1) =
5 )
2 1 ( ) 1 3
13 )
3 1 ( ) 0 3
3 )
2 2 ( ) 1 4
Trang 8Xét C: d(C,M1) =
d(C,M2) =
C thuộc Nhóm 1 Xét D: d(D,M1) =
d(D,M2) =
D thuộc Nhóm 1 Xét E: d(E,M1) =
d(E,M2) =
E thuộc Nhóm 1 Vậy: Nhóm 1 gồm {A, C, D, E}
Nhóm 2 gồm {B}
5 )
2 1 ( ) 1 3
13 )
3 1 ( ) 0 3
3 )
2 2 ( ) 1 4
17 )
3 2 ( ) 0 4
M1 = A, M2 = B
13 )
2 0 ( ) 1 4
23 )
3 0 ( ) 0 4
{A(1,2), B(0,3), C(3,1), D(4,2), E(4,0)}
Trang 9Bước 2:
Xét A: d(A,M1)=
d(A,M2)=
A thuộc nhóm 2 Xét B: B là M2
B thuộc nhóm 2
Bước 3:
Tính lại trọng tâm M1 =
M2 = (0,3)
) 4
5 , 4 (
) 4
2 1 2 , 4
4 4 3 1 (
16
153 )
4
5 2 ( ) 4 1
2 )
3 2 ( ) 0 1
Trang 10Bước 2 (tt):
Xét C: d(C,M1)=
d(C,M2)=
C thuộc nhóm 1 Xét D: d(D,M1)=
d(D,M2)=
D thuộc nhóm 1 Xét E: d(E,M1)=
d(E,M2)=
E thuộc nhóm 1
16
17 )
4
5 1 ( ) 4 3
13 )
3 1 ( ) 0 3
4
5 ) 4
5 0 ( ) 4 4
23 )
3 0 ( ) 0 4
4
3 ) 4
5 2 ( ) 4 4
17 )
3 2 ( ) 0 4
{A(1,2), B(0,3), C(3,1), D(4,2), E(4,0)}
Trang 11Bước 2:
Xét A: d(A,M1)=
d(A,M2)=
A thuộc nhóm 2 Xét B: d(B,M1)=
d(B,M2)=
Bước 3:
Tính lại trọng tâm M1 =
M2 =
) 1
, 3
11 (
) 3
2 1 , 3
4 4 3 (
9
73 )
1 2 ( ) 3
11 1
2
1 )
2
5 2 ( ) 2
1 1
) 2
5 , 2
1 (
) 2
2 3 , 2
1 0 (
9
133 )
1 3 ( ) 3
11 0
1 )
5 3 ( )
1 0
Trang 12Bước 2 (tt):
Xét C: d(C,M1)=
d(C,M2)=
C thuộc nhóm 1 Xét D: d(D,M1)=
d(D,M2)=
D thuộc nhóm 1 Xét E: d(E,M1)=
d(E,M2)=
E thuộc nhóm 1 Không còn thay đổi nữa, dừng
3
2 ) 1 1 ( ) 3
11 3
13 )
3 1 ( ) 0 3
9
10 )
1 0 ( ) 3
11 4
23 )
3 0 ( ) 0 4
9
10 )
1 2 ( ) 3
11 4
17 )
3 2 ( ) 0 4
{A(1,2), B(0,3), C(3,1), D(4,2), E(4,0)}
Trang 132.4 Hướng tiếp theo
-Có thể xem xét một số cách tiếp cận “trung bình” theo mô hình khả xuất thay vì dựa vào các điểm
-Vấn đề gom nhóm mờ (c-mean)
-Cần nghiên cứu giải pháp tăng tốc độ khi dữ liệu lớn