Memang benar bahwa K-means clustering dan PCA tampaknya memiliki tujuan yang sangat berbeda dan pada pandangan pertama tampaknya tidak terkait. Namun, seperti yang dijelaskan dalam makalah Ding & He 2004 K-means Clustering via Principal Component Analysis , ada hubungan yang mendalam di antara mereka.
Intinya adalah bahwa PCA berusaha untuk mewakili semua vektor data sebagai kombinasi linear dari sejumlah kecil vektor eigen, dan melakukannya untuk meminimalkan kesalahan rekonstruksi mean-squared. Sebaliknya, K-means berusaha untuk mewakili semua data vektor melalui sejumlah kecil cluster centroid, yaitu untuk merepresentasikannya sebagai kombinasi linear dari sejumlah kecil vektor centroid cluster di mana bobot kombinasi linear harus semuanya nol kecuali untuk satu . Ini juga dilakukan untuk meminimalkan kesalahan rekonstruksi mean-squared.n 1nn1
Jadi K-means dapat dilihat sebagai PCA super-jarang.
Apa kertas Ding & He lakukan, itu untuk membuat koneksi ini lebih tepat.
Sayangnya, kertas Ding & He mengandung beberapa formulasi yang ceroboh (paling-paling) dan dapat dengan mudah disalahpahami. Misalnya, sepertinya Ding & He mengklaim telah membuktikan bahwa kluster centroid dari solusi klaster K-means terletak pada subruang PCA -dimensi:(K−1)
Teorema 3.3. Subruang pusat massa kluster direntang oleh petunjuk utama pertama
[...].K−1
Untuk ini akan menyiratkan bahwa proyeksi pada sumbu PC1 akan selalu negatif untuk satu cluster dan positif untuk cluster lain, yaitu sumbu PC2 akan memisahkan cluster dengan sempurna.K=2
Ini bisa merupakan kesalahan atau tulisan yang ceroboh; dalam kasus apa pun, secara harfiah, klaim khusus ini salah.
Mari kita mulai dengan melihat beberapa contoh mainan dalam 2D untuk . Saya menghasilkan beberapa sampel dari dua distribusi normal dengan matriks kovarians yang sama tetapi beragam cara. Saya kemudian menjalankan K-means dan PCA. Gambar berikut ini menunjukkan plot pencar data di atas, dan data yang sama diwarnai sesuai dengan solusi K-means di bawah ini. Saya juga menunjukkan arah utama pertama sebagai garis hitam dan centroid kelas yang ditemukan oleh K-means dengan salib hitam. Sumbu PC2 ditunjukkan dengan garis hitam putus-putus. K-means diulang kali dengan biji acak untuk memastikan konvergensi ke optimal global.100K=2100
Orang dapat dengan jelas melihat bahwa meskipun centroid kelas cenderung cukup dekat dengan arah PC pertama, mereka tidak jatuh tepat di atasnya. Selain itu, meskipun sumbu PC2 memisahkan cluster dengan sempurna di subplot 1 dan 4, ada beberapa titik di sisi yang salah dalam subplot 2 dan 3.
Jadi perjanjian antara K-means dan PCA cukup baik, tetapi tidak tepat.
Jadi apa yang Ding & Dia buktikan? Untuk kesederhanaan, saya hanya akan mempertimbangkan kasus. Biarkan jumlah poin yang ditetapkan untuk masing-masing cluster menjadi dan dan jumlah total poin . Mengikuti Ding & He, mari kita tentukan vektor indikator cluster sebagai berikut: jika poin ke- milik cluster 1 dan jika itu milik cluster 2. Vektor indikator cluster memiliki panjang unit dan "terpusat", yaitu elemen-elemennya dijumlahkan ke nol .n 1 n 2 n = n 1 + n 2 q ∈ R n q i = √K=2n1n2n=n1+n2 q∈Rn iqi=-√qi=n2/nn1−−−−−−√iqi=−n1/nn2−−−−−−√∥q∥=1∑qi=0
Ding & He menunjukkan bahwa fungsi kehilangan K-means (algoritma K-means diminimalkan) dapat secara setara ditulis ulang sebagai , di mana adalah matriks Gram produk skalar di antara semua poin: , di mana adalah matriks data dan adalah matriks data terpusat.∑k∑i(xi−μk)2−q⊤GqGn×nG=X⊤cXcXn×2Xc
(Catatan: Saya menggunakan notasi dan terminologi yang sedikit berbeda dari makalah mereka tetapi saya merasa lebih jelas).
Jadi solusi K-means adalah vektor satuan terpusat yang memaksimalkan . Sangat mudah untuk menunjukkan bahwa komponen utama pertama (ketika dinormalisasi untuk memiliki satuan jumlah kuadrat) adalah vektor eigen terkemuka dari matriks Gram, yaitu juga merupakan vektor satuan terpusat memaksimalkan . Satu-satunya perbedaan adalah bahwa juga dibatasi hanya memiliki dua nilai yang berbeda sedangkan tidak memiliki batasan ini.qq⊤Gqpp⊤Gpqp
Dengan kata lain, K-means dan PCA memaksimalkan fungsi tujuan yang sama , dengan satu-satunya perbedaan adalah bahwa K-means memiliki kendala "kategorikal" tambahan.
Cukup beralasan bahwa sebagian besar solusi K-means (constrained) dan PCA (unconstrained) akan cukup dekat satu sama lain, seperti yang kita lihat di atas dalam simulasi, tetapi kita seharusnya tidak mengharapkannya identik. Mengambil dan mengatur semua elemen negatifnya menjadi sama dengan dan semua elemen positifnya ke umumnya tidak akan memberikan secara tepat .p−n1/nn2−−−−−−√n2/nn1−−−−−−√q
Ding & He tampaknya memahami ini dengan baik karena mereka merumuskan teorema mereka sebagai berikut:
Teorema 2.2. Untuk pengelompokan K-means di mana , solusi kontinu dari vektor indikator klaster adalah komponen utama [pertama]K=2
Perhatikan bahwa kata-kata "solusi berkelanjutan". Setelah membuktikan teorema ini, mereka juga berkomentar bahwa PCA dapat digunakan untuk menginisialisasi iterasi K-means yang masuk akal karena kita berharap dekat dengan . Tetapi orang masih perlu melakukan iterasi, karena mereka tidak identik.qp
Namun, Ding & He kemudian mengembangkan pengobatan yang lebih umum untuk dan akhirnya merumuskan Teorema 3.3 sebagaiK>2
Teorema 3.3. Subruang pusat massa kluster direntang oleh petunjuk utama pertama
[...].K−1
Saya tidak membaca matematika dari Bagian 3, tetapi saya percaya bahwa teorema ini sebenarnya juga merujuk pada "solusi kontinu" dari K-means, yaitu pernyataannya harus membaca "cluster centroid space dari solusi kontinu dari K-means adalah membentang [...] ".
Namun Ding & He, tidak membuat kualifikasi penting ini, dan terlebih lagi menulis dalam abstrak mereka itu
Di sini kami membuktikan bahwa komponen utama adalah solusi berkelanjutan untuk indikator keanggotaan klaster diskrit untuk klaster K-means. Secara ekuivalen, kami menunjukkan bahwa subruang yang direntang oleh cluster centroid diberikan oleh ekspansi spektral dari matriks kovarians data yang terpotong pada istilah .K−1
Kalimat pertama benar-benar benar, tetapi yang kedua tidak. Tidak jelas bagi saya apakah ini tulisan yang sangat ceroboh atau kesalahan asli. Saya telah dengan sangat sopan mengirim email kepada kedua penulis yang meminta klarifikasi. (Pembaruan dua bulan kemudian: Saya belum pernah mendengar kabar dari mereka.)
Kode simulasi 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