È vero che il clustering K-significa e PCA sembrano avere obiettivi molto diversi e a prima vista non sembrano essere correlati. Tuttavia, come spiegato nel documento K di Ding & He 2004 , il clustering tramite l'analisi dei componenti principali , esiste una profonda connessione tra di loro.
L'intuizione è che PCA cerca di rappresentare tutti e i vettori di dati come combinazioni lineari di un piccolo numero di autovettori e lo fa per minimizzare l'errore di ricostruzione al quadrato medio. Al contrario, K-mean cerca di rappresentare tutti gli vettori di dati tramite un numero ridotto di centroidi del cluster, cioè di rappresentarli come combinazioni lineari di un numero ridotto di vettori del centroide del cluster in cui i pesi della combinazione lineare devono essere tutti zero tranne il singolo . Questo viene fatto anche per ridurre al minimo l'errore di ricostruzione al quadrato medio.n 1nn1
Quindi i mezzi K possono essere visti come un PCA super sparso.
Cosa fa la carta Ding & He, per rendere più precisa questa connessione.
Sfortunatamente, il documento Ding & He contiene alcune formulazioni sciatte (nella migliore delle ipotesi) e può essere facilmente frainteso. Ad esempio, potrebbe sembrare che Ding e He sostengano di aver dimostrato che i centroidi del cluster della soluzione di clustering K-significano nel sottospazio PCA tridimensionale :(K−1)
Teorema 3.3. Il sottospazio centroide del cluster è suddiviso nelle prime
direzioni principali [...].K−1
Per ciò implicherebbe che le proiezioni sull'asse PC1 saranno necessariamente negative per un cluster e positive per un altro cluster, vale a dire che l'asse PC2 separerà perfettamente i cluster.K=2
Questo è un errore o una scrittura sciatta; in ogni caso, presa alla lettera, questa affermazione particolare è falsa.
Cominciamo con alcuni esempi di giocattoli in 2D per . Ho generato alcuni campioni dalle due distribuzioni normali con la stessa matrice di covarianza ma con mezzi variabili. Ho quindi eseguito sia K-mean che PCA. La figura seguente mostra il diagramma a dispersione dei dati sopra e gli stessi dati colorati secondo la soluzione K-media in basso. Mostro anche la prima direzione principale come una linea nera e centroidi di classe trovati da K-medie con croci nere. L'asse PC2 viene mostrato con la linea nera tratteggiata. K-medie è stata ripetuta volte con semi casuali per garantire la convergenza all'ottimale globale.100K=2100
Si può vedere chiaramente che anche se i centroidi di classe tendono ad essere abbastanza vicini alla prima direzione del PC, non ci cadono esattamente. Inoltre, anche se l'asse PC2 separa perfettamente i cluster nelle sottotrame 1 e 4, ci sono un paio di punti sul lato sbagliato di esso nelle sottotrame 2 e 3.
Quindi l'accordo tra K-mean e PCA è abbastanza buono, ma non è esatto.
Quindi cosa ha dimostrato Ding & He? Per semplicità, prenderò in considerazione solo il caso . Lascia che il numero di punti assegnati a ciascun cluster sia e e il numero totale di punti . Seguendo Ding & He, definiamo il vettore dell'indicatore del cluster come segue: se il punto appartiene al cluster 1 e se appartiene al cluster 2. Il vettore dell'indicatore del cluster ha lunghezza unità ed è "centrato", ovvero i suoi elementi si sommano a zero .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 mostrano che la funzione di perdita di K significa (che l'algoritmo di K-significa minimizza) può essere riscritta in modo equivalente come , dove è la matrice Gram di prodotti scalari tra tutti i punti: , dove è la matrice di dati e è la matrice di dati centrata.∑k∑i(xi−μk)2−q⊤GqGn×nG=X⊤cXcXn×2Xc
(Nota: sto usando la notazione e la terminologia che differiscono leggermente dal loro articolo ma che trovo più chiare).
Quindi la soluzione K- è un vettore di unità centrato che massimizza . È facile dimostrare che il primo componente principale (quando normalizzato per avere la somma unitaria dei quadrati) è il principale autovettore della matrice Gram, cioè è anche un vettore unitario centrato massimizza . L'unica differenza è che è inoltre vincolato ad avere solo due valori diversi mentre non ha questo vincolo.qq⊤Gqpp⊤Gpqp
In altre parole, K-mean e PCA massimizzano la stessa funzione oggettiva , con l'unica differenza che K-mean ha un ulteriore vincolo "categorico".
È ovvio che la maggior parte delle volte le soluzioni K-significate (vincolate) e PCA (non vincolate) saranno abbastanza vicine tra loro, come abbiamo visto sopra nella simulazione, ma non ci si dovrebbe aspettare che siano identiche. Prendendo e impostando tutti i suoi elementi negativi su uguale a e tutti i suoi elementi positivi su generalmente non daranno esattamente .p−n1/nn2−−−−−−√n2/nn1−−−−−−√q
Ding e lui sembrano capirlo bene perché formulano il loro teorema come segue:
Teorema 2.2. Per il clustering K-significa dove , la soluzione continua del vettore indicatore del cluster è il [primo] componente principaleK=2
Si noti che le parole "soluzione continua". Dopo aver dimostrato questo teorema, inoltre, commentano che PCA può essere usato per inizializzare iterazioni di K-significati che hanno un senso totale dato che ci aspettiamo che sia vicino a . Ma è ancora necessario eseguire le iterazioni, perché non sono identiche.qp
Tuttavia, Ding & He quindi sviluppano un trattamento più generale per e finiscono per formulare il Teorema 3.3 comeK>2
Teorema 3.3. Il sottospazio centroide del cluster è suddiviso nelle prime
direzioni principali [...].K−1
Non ho analizzato la matematica della Sezione 3, ma credo che questo teorema in realtà si riferisca anche alla "soluzione continua" dei mezzi K, cioè la sua affermazione dovrebbe leggere "lo spazio centroide del cluster della soluzione continua dei mezzi K è spanning [...] ".
Ding & He, tuttavia, non fanno questa importante qualifica, e inoltre scrivono nel loro abstract quello
Qui dimostriamo che i componenti principali sono le soluzioni continue agli indicatori discreti di appartenenza al cluster per il clustering di K-medie. Equivalentemente, mostriamo che il sottospazio espanso dai centroidi del cluster è dato dall'espansione spettrale della matrice di covarianza dei dati troncata a termini .K−1
La prima frase è assolutamente corretta, ma la seconda no. Non mi è chiaro se si tratti di una scrittura (molto) sciatta o di un vero errore. Ho gentilmente inviato un'email a entrambi gli autori chiedendo chiarimenti. (Aggiornamento due mesi dopo: non ho mai avuto risposta da loro.)
Codice di simulazione 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