Anda di halaman 1dari 2

PCA menggunakan SVD

Di dalam SVD, rumus yang digunakan adalah A=U*∑*V

Yang mana A adalah matriks mxn, U adalah matriks mxm, ∑ adalah matriks mxn dan V adalah matriks
nxn.

Dalam PCA terdapat score dan loading, tetapi di svd menggunakan rumus dari matriks diatas.

Hasil perkalilan matriks U*∑ bernilai sama dengan PCA scores sedangkan matriks V bernilai sama dengan
PCA loading.

Script:

1. s.m<-scale(m) = menscale kan matriks m yang mana matriks m didapat dari data nc di
pertemuan sebelumnya.
2. PCA_SVD<- svd(s.m) = membuat svd dari scale matriks m . dalam PCA_SVD diagonal dari
sigma svd$d dinyatakan dalam vector.
3. sigma<- matrix(0,length(PCA_SVD$d),length(PCA_SVD$d))
membuat sigma sebagai matriks diagonal
4. diag(sigma)<-PCA_SVD$d = membuat sigma yang sekarang menjadi sigma matriks sebenarnya

#mengcompare PCA scores dengan rumus svd pca yaitu U*sigma

5. theoreticalscores<- PCA_SVD$u %*% sigma = membuat variable bernama theoreticalscores dari


hasil perkalian matriks U dari PCA_SVD dikali dengan matriks sigma. %*% tanda tersebut
digunakan untuk perkalian dua matriks.
6. all(round(pca.cor$x,5)== round(theoreticalscores,5)) = digunakan untuk melakukan test apakah
pca score sama dengan variable theoreticalscore yang sebelumnya telah dibuat. Jika dalam
console tertulis True maka terbukti bahma kedua variable pembanding bernilai sama.

#mengcompare PCA loading dengan matriks V dalam SVD

7. all(round(pca.cor$rotation,5)== round(PCA_SVD$v,5)) = digunakan untuk melakukan test


apakah pca loading sama dengan matriks V dari PCA_SVD yang sebelumnya telah dibuat. Jika
dalam console tertulis True maka terbukti bahma kedua variable pembanding bernilai sama.

# menunjukkan bahwa scale matrik m sama dengan matriks U*sigma*transpose matriks V

8. recoverMatSVD<- theoreticalscores%*%t(PCA_SVD$v) = membuat variable recovermatsvd yang


merupakan hasil dari matriks U*sigma*transpose matriks V
9. all(round(s.m,5)==round(recoverMatSVD,5)) = digunakan untuk melakukan test apakah scale m
sama dengan recoverMatSVD yang sebelumnya telah dibuat. Jika dalam console tertulis True
maka terbukti bahma kedua variable pembanding bernilai sama.

#Menunjukkan bahwa scale m bernilai sama dengan PCA score* transpose PCA loading
10. recoverMatPCA<- pca.cor$x%*%t(pca.cor$rotation) = membuat variable recoverMatPCA yang
merupakan hasil dari PCA score* transpose PCA loading
11. all(round(s.m,5)== round(recoverMatPCA,5)) = digunakan untuk melakukan test apakah scale m
sama dengan recoverMatPCA yang sebelumnya telah dibuat. Jika dalam console tertulis True
maka terbukti bahma kedua variable pembanding bernilai sama.

Anda mungkin juga menyukai