Le pagine 13-20 del tutorial che hai pubblicato forniscono una spiegazione geometrica molto intuitiva di come viene utilizzato PCA per la riduzione della dimensionalità.
La matrice 13x13 che menzioni è probabilmente la matrice "caricamento" o "rotazione" (immagino che i tuoi dati originali avessero 13 variabili?) Che possono essere interpretati in uno dei due modi (equivalenti):
Le colonne (valori assoluti delle) della tua matrice di caricamento descrivono quanto ciascuna variabile "contribuisce" proporzionalmente a ciascun componente.
La matrice di rotazione ruota i dati sulla base definita dalla matrice di rotazione. Pertanto, se disponi di dati 2D e moltiplichi i dati per la matrice di rotazione, il tuo nuovo asse X sarà il primo componente principale e il nuovo asse Y sarà il secondo componente principale.
EDIT: Questa domanda viene posta molto, quindi ho intenzione di presentare una spiegazione visiva dettagliata di ciò che sta accadendo quando usiamo PCA per la riduzione della dimensionalità.
Considera un campione di 50 punti generati dal rumore y = x +. Il primo componente principale si troverà lungo la linea y = x e il secondo componente si troverà lungo la linea y = -x, come mostrato di seguito.

Le proporzioni lo incasinano un po ', ma credo che i componenti siano ortogonali. L'applicazione di PCA ruoterà i nostri dati in modo che i componenti diventino gli assi xey:

I dati prima della trasformazione sono cerchi, i dati dopo sono croci. In questo esempio particolare, i dati non sono stati ruotati tanto quanto è stato capovolto sulla linea y = -2x, ma avremmo potuto invertire altrettanto facilmente l'asse y per renderlo veramente una rotazione senza perdita di generalità come descritto qui .
La maggior parte della varianza, ovvero le informazioni nei dati, è diffusa lungo il primo componente principale (che è rappresentato dall'asse x dopo che abbiamo trasformato i dati). C'è una piccola varianza lungo il secondo componente (ora l'asse y), ma possiamo eliminare completamente questo componente senza una significativa perdita di informazioni . Quindi per comprimerlo da due dimensioni in 1, lasciamo che la proiezione dei dati sul primo componente principale descriva completamente i nostri dati.

Possiamo parzialmente recuperare i nostri dati originali ruotandoli (ok, proiettandoli) sugli assi originali.

I punti blu scuro sono i dati "recuperati", mentre i punti vuoti sono i dati originali. Come puoi vedere, abbiamo perso alcune delle informazioni dai dati originali, in particolare la varianza nella direzione del secondo componente principale. Ma per molti scopi, questa descrizione compressa (usando la proiezione lungo il primo componente principale) può soddisfare le nostre esigenze.
Ecco il codice che ho usato per generare questo esempio nel caso tu voglia replicarlo da solo. Se riduci la varianza del componente di rumore sulla seconda riga, anche la quantità di dati persi dalla trasformazione PCA diminuirà perché i dati convergeranno sul primo componente principale:
set.seed(123)
y2 = x + rnorm(n,0,.2)
mydata = cbind(x,y2)
m2 = colMeans(mydata)
p2 = prcomp(mydata, center=F, scale=F)
reduced2= cbind(p2$x[,1], rep(0, nrow(p2$x)))
recovered = reduced2 %*% p2$rotation
plot(mydata, xlim=c(-1.5,1.5), ylim=c(-1.5,1.5), main='Data with principal component vectors')
arrows(x0=m2[1], y0=m2[2]
,x1=m2[1]+abs(p2$rotation[1,1])
,y1=m2[2]+abs(p2$rotation[2,1])
, col='red')
arrows(x0=m2[1], y0=m2[2]
,x1=m2[1]+p2$rotation[1,2]
,y1=m2[2]+p2$rotation[2,2]
, col='blue')
plot(mydata, xlim=c(-1.5,1.5), ylim=c(-1.5,1.5), main='Data after PCA transformation')
points(p2$x, col='black', pch=3)
arrows(x0=m2[1], y0=m2[2]
,x1=m2[1]+abs(p2$rotation[1,1])
,y1=m2[2]+abs(p2$rotation[2,1])
, col='red')
arrows(x0=m2[1], y0=m2[2]
,x1=m2[1]+p2$rotation[1,2]
,y1=m2[2]+p2$rotation[2,2]
, col='blue')
arrows(x0=mean(p2$x[,1])
,y0=0
,x1=mean(p2$x[,1])
,y1=1
,col='blue'
)
arrows(x0=mean(p2$x[,1])
,y0=0
,x1=-1.5
,y1=0
,col='red'
)
lines(x=c(-1,1), y=c(2,-2), lty=2)
plot(p2$x, xlim=c(-1.5,1.5), ylim=c(-1.5,1.5), main='PCA dimensionality reduction')
points(reduced2, pch=20, col="blue")
for(i in 1:n){
lines(rbind(reduced2[i,], p2$x[i,]), col='blue')
}
plot(mydata, xlim=c(-1.5,1.5), ylim=c(-1.5,1.5), main='Lossy data recovery after PCA transformation')
arrows(x0=m2[1], y0=m2[2]
,x1=m2[1]+abs(p2$rotation[1,1])
,y1=m2[2]+abs(p2$rotation[2,1])
, col='red')
arrows(x0=m2[1], y0=m2[2]
,x1=m2[1]+p2$rotation[1,2]
,y1=m2[2]+p2$rotation[2,2]
, col='blue')
for(i in 1:n){
lines(rbind(recovered[i,], mydata[i,]), col='blue')
}
points(recovered, col='blue', pch=20)