K-aracı kümelemesinin ve PCA'nın çok farklı hedeflere sahip olduğu ve ilk bakışta birbiriyle ilişkili görünmediği doğru. Bununla birlikte, Ding & He 2004 makalesinde açıklandığı gibi K-Temel Bileşen Analizi ile Kümeleme anlamına gelir , aralarında derin bir bağlantı vardır.
Sezgi, PCA'nın tüm veri vektörlerini az sayıda özvektörün lineer kombinasyonları olarak temsil etmeye çalıştığını ve ortalama kare rekonstrüksiyon hatasını minimize etmek için yaptığıdır. Buna karşılık K-aracı, tüm n veri vektörlerini az sayıdaki küme centroidleri aracılığıyla temsil etmeyi, yani bunları, tek bir 1 hariç, lineer kombinasyon ağırlıklarının tamamen sıfır olması gereken az sayıdaki küme centroid vektörünün doğrusal kombinasyonları olarak göstermeyi amaçlamaktadır . Bu, ortalama kare rekonstrüksiyon hatasını en aza indirmek için de yapılır.nn1
K-aracı süper seyrek bir PCA olarak görülebilir.
Ding & He yazdıklarında, bu bağlantıyı daha kesin yapmak için.
(K−1)
K−1
K=2
Bu ya bir hata ya da özensiz bir yazıdır; Her durumda, kelimenin tam anlamıyla ele alındığında, bu belirli iddia yanlıştır.
K=2100
Bir açıkça sınıf sentroidler ilk PC yönüne oldukça yakın olma eğilimi olsa da, bunlar yok olduğunu görebilirsiniz değil tam üzerine düşer. Dahası, PC2 ekseni kümeler 1 ve 4 alt noktalarında mükemmel bir şekilde ayrılsa da, alt ve 2 alt noktalarında yanlış tarafında birkaç nokta vardır.
Yani K-aracı ve PCA arasındaki anlaşma oldukça iyi, ama kesin değil.
K=2n1n2n=n1+n2 q∈Rnqi=n2/nn1−−−−−−√iqi=−n1/nn2−−−−−−√∥q∥=1∑qi=0
Ding & K-kayıp fonksiyonu (K-algoritması en aza indirir) eşittir olarak yazılabilir. , burada , Tüm skaler ürünlerin gram matrisi: , burada , veri matrisi ve , merkezlenmiş veri matrisidir.∑k∑i(xi−μk)2−q⊤GqGn×nG=X⊤cXcXn×2Xc
(Not: Makalelerinden biraz farklı olan ancak daha net buluyorum bir gösterim ve terminoloji kullanıyorum).
Yani K-kelimesi çözümü , maksimize eden bir merkezli vektördür . İlk ana bileşen (kareler birimi toplamı için normalize edildiğinde her) Gram matrisinin gelen özvektörü örneğin, aynı zamanda bir merkezli birim vektör olduğunu göstermek kolaydır maksimize . Tek fark, ek olarak sadece iki farklı değere sahip olmakla oysa bu kısıtlamaya sahip değildir.qq⊤Gqpp⊤Gpqp
Başka bir deyişle, K-araçları ve PCA aynı objektif işlevi en üst düzeye çıkarır ; tek fark, K-aracının ek "kategorik" kısıtlamaya sahip olmasıdır.
K-araçlarının (kısıtlı) ve PCA (kısıtlanmamış) çözümlerinin çoğu zaman simülasyonda gördüğümüz gibi birbirlerine yakın olması gerekeceği, ancak bunların aynı olmasını beklememesi gerektiği aklına gelir. Alarak ve tüm negatif ayarlama elemanları eşit olacak şekilde ve tüm pozitif elemanları genel olarak uygulanan değil tam olarak vermek .p−n1/nn2−−−−−−√n2/nn1−−−−−−√q
Ding & He bunu iyi anlamış görünüyor çünkü teoremlerini aşağıdaki gibi formüle ediyorlar:
Teorem 2.2. olduğunda kümeleme için, küme gösterge vektörünün sürekli çözümü [birinci] ana bileşendir.K=2
"Sürekli çözüm" kelimelerine dikkat edin. Bu teoremi ispatladıktan sonra, PCA'nın, yakın olmasını beklediğimizden tam anlam ifade eden K-aracı yinelemelerini başlatmak için kullanılabileceğini de . Fakat birisinin yinelemeleri yapması gerekiyor, çünkü bunlar aynı değil.qp
Ancak, Ding & He daha sonra için daha genel bir tedavi geliştirmeye devam etti ve Teorem 3.3’ü formül olarak formüle etti.K>2
Teorem 3.3. Küme centroid alt alanı ilk
ana yönleri ile kaplıdır [...].K−1
Bölüm 3'ün matematiğinden geçmedim, ancak bu teoremin aslında K-araçlarının "sürekli çözümünü" de ifade ettiğini düşünüyorum, yani ifadesinin K-araçlarının sürekli çözümünün küme centroid alanını okuması gerektiğini " yayılmış [...] ".
Ding & He, ancak, bu önemli niteliği yapmaz ve ayrıca onların özeti
Burada temel bileşenlerin K-aracı kümelenmesi için ayrık küme üyeliği göstergelerine sürekli çözümler olduğunu kanıtlıyoruz. Aynı şekilde, küme centroidleri tarafından yayılan alt uzayın terimlerinde kesilmiş veri kovaryansı matrisinin spektral genişlemesi ile verildiğini gösterdik .K−1
İlk cümle kesinlikle doğru, ama ikinci cümle değil. Bu (çok) özensiz bir yazı ya da gerçek bir hata olup olmadığı bana açık değil. Her iki yazara da açıklama yapmak için kibarca e-posta gönderdim. (İki ay sonra güncelleme: Onlardan hiç haber alamadım.)
Matlab simülasyon kodu
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