j ti i i
2.3.3 Thuật toán k-means
Hai thuật toán tiêu biểu nhất trong phương pháp phân hoạch là thuật toán k- means và k-medoids. k-means định nghĩa một nguyên mẫu là một trọng tâm (hay còn gọi là centroid), thường là trung tâm của một nhóm và được ứng dụng cho
những đối tượng trong một không gian n chiều liên tục. k-medoids định nghĩa một nguyên mẫu là một medoid, là đối tượng đại diện nhất cho một nhóm và có thể áp dụng cho một phạm vi dữ liệu rộng vì nó chỉ địi hỏi một phép đo lân cận cho một cặp đối tượng. Trong khi centroid không bao giờ tương ứng với một đối tượng dữ liệu thật sự thì một medoid phải là một đối tượng dữ liệu thật sự. Trong phần này, chúng tôi chỉ tập trung đến thuật toán k-means, một trong những phương pháp được sử dụng phổ biến nhất. Chúng tôi sử dụng thuật toán này trong việc gom nhóm các ảnh khn mặt trong tập dữ liệu dữ liệu.
• Mơ tả thuật tốn k-means
Chúng ta bắt đầu mơ tả thuật tốn k-means như sau: đầu tiên ta chọn k
trọng tâm, với k là số nguyên dương được chọn bởi người dùng, gọi là số nhóm.
Sau đó, mỗi đối tượng được gán với một trọng tâm gần nhất và mỗi tập đối tượng được gán với một trọng tâm là một nhóm. Ta lặp lại việc gán và cập nhật các bước cho đến khi khơng cịn đối tượng nào thay đổi nhóm nữa.
Thuật tốn k-means: Cho số k nguyên dương, mỗi nhóm được biểu diễn
bằng giá trị trung bình của dữ liệu trong nhóm .
B1: Chọn ngẫu nhiên k đối tượng làm các trọng tâm ban đầu của các nhóm. B2: Tạo k nhóm bằng cách gán mỗi đối tượng đến trọng tâm gần nhất của nó. B3: Tính lại giá trị trọng tâm của từng nhóm.
B4: Nếu các trọng tâm nhóm khơng có gì thay đổi thì dừng. Ngược lại quay về B2.
Bảng 2 : Thuật toán k-means Thuật toán được minh họa cụ thể trong hình 2.14.
Kết hợp thêm một số hàm lân cận (hàm tính độ đo khoảng cách giữa trọng tâm và các đối tượng khác) và các loại trọng tâm, k-means luôn luôn hội tụ về kết quả cuối cùng, nghĩa là k-means đạt đến một trạng thái trong đó khơng có đối
tượng nào dịch chuyển từ nhóm này sang nhóm khác và do đó, các trọng tâm khơng thay đổi. Tuy nhiên, điều kiện của vịng lặp trong B4 của thuật toán bên trên thường được thay bởi một điều kiện yếu hơn, chẳng hạn, lặp cho đến khi chỉ có 1% các điểm thay đổi nhóm. Ta xét mỗi bước trong thuật toán k-means một cách chi tiết hơn.
Chọn 3 trọng tâm của nhóm bất kỳ k1, k2, k3 Gán từng điểm vào nhóm có trọng tâm nhóm gần nhất Di chuyển trọng tâm từng nhóm về điểm trung bình mới của nhóm
Gán lại các điểm cho gần với các trọng tâm nhóm mới
Ba điểm được gán lại
Hình 2.14 – Gom tập dữ liệu thành 3 nhóm dùng thuật tốn k-means. • Gán các đối tượng đến trọng tâm gần nhất
Để gán một đối tượng đến trọng tầm gần nhất, ta cần một phép đo độ lân cân để xác định khái niệm “gần nhất”. Một nhóm các phép đo lân cận phổ biến như độ đo khoảng cách cho biến tỉ lệ theo khoảng dùng để xác định sự tương đồng (giống nhau hay khác nhau) giữa hai đối tượng là khoảng cách Minkowski:
( , ) (| | | | ... | | ) 1 1 2 2 q q q q d i j x x x x x x i j i j ip jp = − + − + + − (2.22)
với i = (xi1, xi2, …, xip) và j = (xj1, xj2, …, xjp) là các đối tượng dữ liệu p-chiều và q là số nguyên dương.
Nếu q = 1, độ đo khoảng cách là Manhattan:
( , ) | | | | ... | |
1 1 2 2
d i j x x x x x x
i j i j ip jp
= − + − + + − (2.23)
Nếu q = 2, độ đo khoảng cách là khoảng cách Euclide:
Di chuyển trọng tâm nhóm về giá trị trung bình nhóm mới,…
2 2 2( , ) (| | | | ... | | ) ( , ) (| | | | ... | | ) 1 1 2 2 d i j x x x x x x i j i j ip jp = − + − + + − (2.24)
Khoảng cách Euclide (L2) thường được dùng cho những đối tượng trong khơng gian Euclide. Tuy nhiên, có thể có nhiều phép đo độ lân cận thích hợp cho một nhóm dữ liệu được cho. Chẳng hạn, khoảng cách Manhattan (L1) có thể dùng cho dữ liệu Euclide, trong khi phép đo Jaccard thường dùng cho những tài liệu hay các biến nhị phân. Các kiểu dữ liệu khác nhau, yêu cầu độ đo sự khác nhau cũng khác nhau, các biến tỷ lệ theo khoảng thì dùng khoảng cách Euclide, các biến nhị phân thì dùng hệ số so khớp hay hệ số Jaccard, các biến tên, thứ tự, tỷ lệ thì dùng khoảng cách Minkowski, các dạng hỗn hợp thì dùng cơng thức trọng lượng.
Thơng thường, những phép đo lân cận dùng cho k-means thường đơn giản vì thuật tốn tính tốn lặp đi lặp lại sự lân cận của mỗi điểm với trọng tâm. Tuy nhiên, trong một số trường hợp, khi dữ liệu nằm trong không gian Euclide có số chiều nhỏ, có thể tránh được việc tính tốn nhiều sự lân cận, do đó tăng đáng kể tốc độ của thuật toán k-means. Bisecting k-means [15, 22] là một cách tiếp cận khác làm tăng tốc độ của k-means bằng cách giảm số lượng tính tốn lân cận.
Ký hiệu Mơ tả x Ci ci c mi m k Một đối tượng. Nhóm thứ i
Trọng tâm của nhóm Ci.
Trọng tâm của tất cả các điểm. Số đối tượng trong nhóm thứ i. Số đối tượng trong tập dữ liệu. Số nhóm.
• Những trọng tâm và hàm mục tiêu
Trong bước 3 của thuật tốn k-means, vì trọng tâm có thể thay đổi, tùy thuộc trên phép đo lân cận cho dữ liệu và mục đích của việc gom nhóm. Mục đích của việc gom nhóm được biểu diễn bởi một hàm mục tiêu - hàm dùng để đo chất lượng của phép gom nhóm - tùy thuộc trên độ lân cận của các đối tượng với nhau hay với trọng tâm của nhóm. Chẳng hạn, cực tiểu hóa khoảng cách bình phương của mỗi với trọng tâm gần nhất của nó. Tuy nhiên, điểm quan trọng là một khi ta đã chỉ rõ phép đo lân cận và một hàm mục tiêu, trọng tâm có thể được tính tốn.
• Dữ liệu trong không gian Euclide
Xét dữ liệu với phép đo lân cận là khoảng cách Euclide. Với ta dùng hàm mục tiêu với độ đo là tổng sai số bình phương (sum of the squared error-SSE). Nói cách khác, ta tính tốn sai số của mỗi đối tượng dữ liệu, nghĩa là, khoảng cách Euclide của nó đến trọng tâm gần nhất và sau đó tính tốn tổng các sai số bình phương. Cho hai tập hợp nhóm khác nhau được tạo bởi hai lần chạy thuật tốn k- means khác nhau, ta chọn tập hợp có sai số bình phương nhỏ nhất vì điều này có nghĩa là những trọng tâm của phép gom nhóm này la biểu diễn tốt cho các điểm trong nhóm của chúng. Dùng ký hiệu trong bảng 3, SSE được định nghĩa như sau:
21 1 ( , ) i K i i x C SSE dist c x = = (2.25)
với dist là khoảng cách Euclide (L2) giữa hai đối tượng trong khơng gian Euclide. Có thể nói rằng, trọng tâm tối thiểu hóa SSE của nhóm là trung bình. Dùng ký hiệu trong bảng 3, trọng tâm của nhóm thứ i được định nghĩa như sau:
1 i i x C i c x m = (2.26)
Ví dụ 2.4: trọng tâm của một nhóm chứa ba điểm hai chiều (1, 1), (2, 3), và
Bước 2 và bước 3 của thuật tốn k-means cố gắng tối thiểu hóa SSE (tổng quát hơn là hàm mục tiêu). Bước 2 tạo ra các nhóm bằng cách gán các đối tượng đến trọng tâm gần nhất của chúng, mà tối thiểu SSE với tập hợp trọng tâm được cho. Bước 3, tính tốn lại các trọng tâm để tối thiểu hóa SSE hơn nữa. Tuy nhiên, hoạt động của k-means trong bước 2 và 3 chỉ được đảm bảo để tìm cực tiểu địa phương đối với SSE vì chúng dựa trên việc tối ưu hóa SSE cho những lựa chọn cụ thể của trọng tâm và nhóm hơn là cho tất cả những lựa chọn có thể.
• Chọn các trọng tâm ban đầu
Khi khởi tạo các trọng tâm ngẫu nhiên, các lần chạy khác nhau của k-means sinh ra các tổng SSE khác nhau. Ta minh họa điều này với tập hợp các điểm hai chiều trong hình 2.15 với ba nhóm điểm. Hình 2.15(a) biễu diễn một cách gom nhóm với cực tiểu tồn cục của SSE cho ba nhóm, trong khi hình 2.15(b) biễu diễn một cách gom nhóm khơng tối ưu với chỉ một cực tiểu địa phương.
Hình 2.15 – Gom nhóm tối ưu và khơng tối ưu.
Chọn những trọng tâm ban đầu chính xác là bước quan trọng của thuật tốn k-means. Một cách tiếp cận thông thường là chọn những trọng tâm ban đầu một cách ngẫu nhiên, nhưng những kết quả thường xấu.
Ví dụ 2.5: Những trọng tâm ban đầu xấu. Những trọng tâm ban đầu được
chọn ngẫu nhiên có thể xấu. Ta có một ví dụ minh họa điều này dùng cùng bộ dữ liệu như trong hình 2.15 và hình 2.16. Hình 2.16 và hình 2.17 biểu diễn các nhóm dẫn đến hai lựa chọn đặc biệt những trọng tâm ban đầu. (Ở cả hai hình, vị trí của
những trọng tâm nhóm trong những vịng lặp khác nhau được biểu diễn bởi dấu gạch chéo).
Ví dụ 2.6: Việc khởi tạo ngẫu nhiên có những giới hạn nhất định. Một kỹ
thuật được dùng thông thường để giải quyết vấn đề chọn những trọng tâm ban đầu là thực hiện nhiều lần chạy, mỗi lần với một bộ khác nhau các trọng tâm ban đầu được chọn ngẫu nhiên, và sau đó chọn ra tập hợp các nhóm với SSE nhỏ nhất. Cách này có thể khơng thực hiện tốt, tùy thuộc vào tập dữ liệu và số nhóm được tìm kiếm. Chúng ta có thể biểu diễn điều này với bộ dữ liệu mẫu cho trong hình 2.18(a). Dữ liệu bao gồm hai cặp nhóm. Với các nhóm trong mỗi cặp (trên-dưới) gần nhau hơn các nhóm trong cặp khác. Hình 2.18(b-d) chỉ ra rằng nếu ta bắt đầu với hai trọng tâm ban đầu đối với mỗi cặp nhóm, thì thậm chí khi tất cả trọng tâm ở trong một nhóm duy nhất, những trọng tâm sẽ được phân phối lại để tìm được các nhóm đúng. Tuy nhiên hình 2.19 chỉ ra rằng nếu một cặp nhóm chỉ có một trọng tâm ban đầu và cặp khác có ba thì hai trong các nhóm đúng sẽ kết hợp và một nhóm đúng sẽ được chia ra.
Hình 2.17 – Chọn trọng tâm ban đầu khơng tốt.
Lưu ý rằng một phép gom nhóm tối ưu sẽ đạt được cho đến khi hai trọng tâm ban đầu rơi vào trong một cặp nhóm, vì các trọng tâm sẽ được phân phối lại đến mỗi nhóm.
Vì những vấn đề với việc dùng những trọng tâm ban đầu được chọn ngẫu nhiên, mà những lần chạy lặp lại có thể khơng vượt qua. Một cách tiếp cận hiệu quả là lấy một mẫu các đối tượng và gom nhóm chúng dùng kỹ thuật gom nhóm hierarchical. k nhóm rút ra từ phép gom nhóm hierarchical và những trọng tâm của những nhóm đó được dùng như những trọng tâm ban đầu. Cách này thường hoạt động tốt, nhưng thực hiện được nếu (1): bộ mẫu tương đối nhỏ (vài trăm đến vài ngàn) và (2): k tương đối nhỏ so với kích thước mẫu.
Sau đây là một cách khác để chọn những trọng tâm ban đầu. Chọn ngẫu nhiên đầu tiên hay lấy trọng tâm của tất cả các điểm. Sau đó, chọn điểm xa nhất đối với các trọng tâm ban đầu đã chọn. Theo cách này, ta có được một tập các trọng tâm ban đầu được đảm bảo khơng chỉ được chọn ngẫu nhiên mà cịn tách rời nhau. Khơng may là cách như vậy có thể có chọn những giá trị ngoại lệ hơn là các điểm trong nhóm. Nó cũng tốn kém để tính tốn điểm xa nhất từ tập các trọng tâm ban đầu hiện tại. Để khắc phục vấn đề này, cách này thường dùng cho một bộ mẫu các điểm. Vì những giá trị ngoại lệ hiếm khi xảy ra, chúng có khuynh hướng khơng xuất hiện trong một mẫu ngẫu nhiên. Ngược lai, các điểm từ mỗi nhóm có thể được bao gồm trừ phi kích thước mẫu rất nhỏ. Việc tính tốn liên quan đến
việc tìm những trọng tâm ban đầu cũng được giảm đáng kể vì kích thước mẫu nhỏ hơn nhiều so với số điểm.
Hình 2.18 – Hai cặp nhóm vói mỗi cặp trọng tâm ban đầu thuộc một nhóm.
Hình 2.19 – Hai cặp nhóm, mỗi cặp có ít hơn hoặc nhiều hơn hai trọng tâm ban đầu.
• Ưu và khuyết điểm của thuật tốn k-means
Thuật toán k-means đơn giản, dễ hiểu, tương đối hiệu quả và có thể dùng cho rất nhiều loại dữ liệu. Nó thật sự hiệu quả thậm chí thực hiện nhiều lần chạy. Một số biến thể bao gồm bisecting k-means thậm chí hiệu quả hơn và ít bị ảnh hưởng hơn trong vấn đề khởi tạo trọng tâm ban đầu. Các đối tượng tự động gán vào các nhóm. Yêu cầu về thời gian thực hiện k-means tương đối - tuyến tính với số đối tượng dữ liệu. Cụ thể thời gian đòi hỏi là O(tkn), với n là số đối tượng, k là số cụm, và t là số lần lặp. Thông thường k, t << n. Thường kết thúc ở điểm tối ưu cục bộ; có thể tìm được tối ưu tồn cục dùng các kỹ thuật như thuật tốn di truyền. Bên cạnh đó, k-means cũng có một số khuyết điểm sau: k-means có thể áp dụng chỉ khi xác định được trị trung bình của các đối tượng, cần chỉ định trước số k (số các nhóm), tất cả các đối tượng phải gán vào các nhóm, phụ thuộc vào việc chọn các nhóm đầu tiên, khơng phù hợp với tất cả các loại dữ liệu, không thể xử lý dữ liệu chuỗi và outliers - các đối tương bất tương tự với phần dữ liệu cịn lại, khơng
phù hợp để khám phá các nhóm với dạng khơng lồi, nhóm có kích thước và mật độ khác nhau.
Chương 3