Đúng là K-nghĩa là phân cụm và PCA dường như có những mục tiêu rất khác nhau và thoạt nhìn dường như không liên quan. Tuy nhiên, như được giải thích trong bài viết của K & nghĩa là K & nghĩa là phân cụm thông qua phân tích thành phần chính , có một mối liên hệ sâu sắc giữa chúng.
Trực giác là PCA tìm cách biểu diễn tất cả vectơ dữ liệu dưới dạng kết hợp tuyến tính của một số lượng nhỏ các hàm riêng, và thực hiện nó để giảm thiểu lỗi tái tạo bình phương trung bình. Ngược lại, K-có nghĩa là tìm cách biểu diễn tất cả n vectơ dữ liệu thông qua số lượng nhỏ các cụm sao, nghĩa là biểu diễn chúng dưới dạng kết hợp tuyến tính của một số lượng nhỏ các vectơ trung tâm cụm trong đó trọng số kết hợp tuyến tính phải bằng 0 trừ 1 đơn lẻ . Điều này cũng được thực hiện để giảm thiểu lỗi tái tạo bình phương trung bình.viết sai rồiviết sai rồi1
Vì vậy, K-nghĩa có thể được coi là một PCA siêu thưa thớt.
Những gì giấy của Đinh & He làm, nó làm cho kết nối này chính xác hơn.
Thật không may, bài viết của Ding & He chứa một số công thức cẩu thả (tốt nhất) và có thể dễ dàng bị hiểu lầm. Ví dụ, có vẻ như Đinh & Ông tuyên bố đã chứng minh rằng các cụm trung tâm của giải pháp phân cụm K-nghĩa nằm trong không gian con PCA hai chiều :( K- 1 )
Định lý 3.3. Không gian con centroid cụm được kéo dài theo các hướng chính đầu tiên
[...].K- 1
Với điều này có nghĩa là các phép chiếu trên trục PC1 sẽ nhất thiết là âm đối với một cụm và dương đối với một cụm khác, tức là trục PC2 sẽ phân tách các cụm một cách hoàn hảo.K= 2
Đây là một sai lầm hoặc một số văn bản cẩu thả; trong mọi trường hợp, được thực hiện theo nghĩa đen, tuyên bố cụ thể này là sai.
Hãy bắt đầu với việc xem xét một số ví dụ về đồ chơi trong 2D với . Tôi đã tạo ra một số mẫu từ hai phân phối bình thường với cùng một ma trận hiệp phương sai nhưng phương tiện khác nhau. Sau đó tôi đã chạy cả K-nghĩa và PCA. Hình dưới đây cho thấy biểu đồ phân tán dữ liệu ở trên và cùng dữ liệu được tô màu theo giải pháp K-mean bên dưới. Tôi cũng chỉ ra hướng chính đầu tiên là một đường màu đen và các lớp trung tâm được tìm thấy bởi K-mean với các chữ thập màu đen. Trục PC2 được hiển thị với đường màu đen nét đứt. K-mean được lặp lại 100 lần với các hạt ngẫu nhiên để đảm bảo hội tụ đến mức tối ưu toàn cầu.K= 2100
Người ta có thể thấy rõ rằng mặc dù các lớp trung tâm có xu hướng khá gần với hướng PC đầu tiên, nhưng chúng không rơi chính xác vào nó. Hơn nữa, mặc dù trục PC2 phân tách các cụm một cách hoàn hảo trong các ô con 1 và 4, có một vài điểm ở phía sai của nó trong các ô con 2 và 3.
Vì vậy, thỏa thuận giữa K-nghĩa và PCA là khá tốt, nhưng nó không chính xác.
Vậy Đinh & He đã chứng minh điều gì? Để đơn giản, tôi sẽ chỉ xem xét trường hợp . Đặt số điểm được gán cho mỗi cụm là n 1 và n 2 và tổng số điểm n = n 1 + n 2 . Sau Ding & He, chúng ta hãy xác định chỉ số cụm vector q ∈ R n như sau: q i = √K= 2viết sai rồi1viết sai rồi2n = n1+ n2 q∈ Rviết sai rồi nếui-TH điểm thuộc cụm 1 vàqi=-√qTôi= n2/ n n1------√TôiqTôi= - n1/ n n2------√∑ q i = 0∥ q∥ = 1∑ qTôi= 0
Ding & He chỉ ra rằng hàm mất K-nghĩa là (thuật toán K- giảm thiểu) có thể được viết lại một cách tương đương như , trong đó là ma trận Gram của các sản phẩm vô hướng giữa tất cả các điểm: , trong đó là ma trận dữ liệu và là ma trận dữ liệu trung tâm.ΣkΣTôi( xTôi- μk)2- q⊤G qGn × nG = X⊤cXcXn × 2Xc
(Lưu ý: Tôi đang sử dụng ký hiệu và thuật ngữ hơi khác so với giấy của họ nhưng tôi thấy rõ ràng hơn).
Vì vậy, giải pháp K-nghĩa là là một vectơ đơn vị trung tâm tối đa hóa . Thật dễ dàng để chỉ ra rằng thành phần chính đầu tiên (khi được chuẩn hóa để có tổng đơn vị bình phương) là hàm riêng của ma trận Gram, nghĩa là nó cũng là một vector đơn vị trung tâm tối đa hóa . Sự khác biệt duy nhất là bị ràng buộc bổ sung chỉ có hai giá trị khác nhau trong khi không có ràng buộc này.qq⊤G qpq pp⊤G pqp
Nói cách khác, K-mean và PCA tối đa hóa cùng một chức năng mục tiêu , với sự khác biệt duy nhất là K-mean có thêm ràng buộc "phân loại".
Lý do là hầu hết các giải pháp K-mean (bị ràng buộc) và PCA (không bị ràng buộc) sẽ rất gần nhau, như chúng ta đã thấy ở trên trong mô phỏng, nhưng người ta không nên hy vọng chúng giống hệt nhau. Lấy và đặt tất cả các phần tử âm của nó bằng và tất cả các phần tử dương của nó thành nói chung sẽ không cung cấp chính xác - √p √- n1/ n n2------√ qviết sai rồi2/ n n1------√q .
Đinh và anh ta dường như hiểu rõ điều này vì họ xây dựng định lý của họ như sau:
Định lý 2.2. Đối với K-có nghĩa là phân cụm trong đó , giải pháp liên tục của vectơ chỉ báo cụm là thành phần chính [đầu tiên]K= 2
Lưu ý rằng từ "giải pháp liên tục". Sau khi chứng minh định lý này, họ nhận xét thêm rằng PCA có thể được sử dụng để khởi tạo các phép lặp K có nghĩa là hoàn toàn hợp lý khi chúng ta mong đợi gần với . Nhưng người ta vẫn cần thực hiện các lần lặp, bởi vì chúng không giống nhau.pqp
Tuy nhiên, sau đó, Đinh và Anh tiếp tục phát triển một phương pháp điều trị tổng quát hơn cho và kết thúc xây dựng Định lý 3.3 nhưK> 2
Định lý 3.3. Không gian con centroid cụm được kéo dài theo các hướng chính đầu tiên
[...].K- 1
Tôi đã không trải qua toán học của Phần 3, nhưng tôi tin rằng thực tế định lý này cũng đề cập đến "giải pháp liên tục" của phương tiện K, tức là tuyên bố của nó nên đọc "không gian trung tâm cụm của giải pháp liên tục của phương tiện K là kéo dài [...] ".
Tuy nhiên, Ding & He không tạo ra phẩm chất quan trọng này, và hơn nữa viết vào bản tóm tắt của họ rằng
Ở đây chúng tôi chứng minh rằng các thành phần chính là các giải pháp liên tục cho các chỉ số thành viên cụm rời rạc cho phân cụm K-nghĩa. Tương tự, chúng tôi chỉ ra rằng không gian con được kéo dài bởi các tâm của cụm được đưa ra bằng cách mở rộng phổ của ma trận hiệp phương sai dữ liệu được cắt ở các số hạng .K- 1
Câu đầu tiên là hoàn toàn chính xác, nhưng câu thứ hai thì không. Tôi không rõ ràng nếu đây là một văn bản (rất) cẩu thả hoặc một sai lầm thực sự. Tôi đã gửi email rất lịch sự cho cả hai tác giả yêu cầu làm rõ. (Cập nhật hai tháng sau: Tôi chưa bao giờ nghe lại từ họ.)
Mã mô phỏng Matlab
figure('Position', [100 100 1200 600])
n = 50;
Sigma = [2 1.8; 1.8 2];
for i=1:4
means = [0 0; i*2 0];
rng(42)
X = [bsxfun(@plus, means(1,:), randn(n,2) * chol(Sigma)); ...
bsxfun(@plus, means(2,:), randn(n,2) * chol(Sigma))];
X = bsxfun(@minus, X, mean(X));
[U,S,V] = svd(X,0);
[ind, centroids] = kmeans(X,2, 'Replicates', 100);
subplot(2,4,i)
scatter(X(:,1), X(:,2), [], [0 0 0])
subplot(2,4,i+4)
hold on
scatter(X(ind==1,1), X(ind==1,2), [], [1 0 0])
scatter(X(ind==2,1), X(ind==2,2), [], [0 0 1])
plot([-1 1]*10*V(1,1), [-1 1]*10*V(2,1), 'k', 'LineWidth', 2)
plot(centroids(1,1), centroids(1,2), 'w+', 'MarkerSize', 15, 'LineWidth', 4)
plot(centroids(1,1), centroids(1,2), 'k+', 'MarkerSize', 10, 'LineWidth', 2)
plot(centroids(2,1), centroids(2,2), 'w+', 'MarkerSize', 15, 'LineWidth', 4)
plot(centroids(2,1), centroids(2,2), 'k+', 'MarkerSize', 10, 'LineWidth', 2)
plot([-1 1]*5*V(1,2), [-1 1]*5*V(2,2), 'k--')
end
for i=1:8
subplot(2,4,i)
axis([-8 8 -8 8])
axis square
set(gca,'xtick',[],'ytick',[])
end