A főkomponens-elemzés (PCA) elvégzése után egy új vektort szeretnék vetíteni a PCA-helyre (azaz megtalálni annak koordinátáit a PCA-koordinátarendszerben).
Számítottam a PCA-t R nyelven a
A főkomponens-elemzés (PCA) elvégzése után egy új vektort szeretnék vetíteni a PCA-helyre (azaz megtalálni annak koordinátáit a PCA-koordinátarendszerben).
Számítottam a PCA-t R nyelven a
Nos, a @Srikant már megadta a helyes választ, mivel a forgatás (vagy betöltések) mátrix oszloponként elrendezett sajátvektorokat tartalmaz, így csak meg kell szorozni (a % *%
használatával) a vektorát vagy új adatok mátrixa pl prcomp (X) $ rotation
. Vigyázzon azonban a PCA EV-k kiszámításakor alkalmazott extra központosítási vagy méretezési paraméterekkel.
Az R-ben hasznos lehet a predict ()
függvény is, lásd: ? megjósolni.prcomp . BTW, egyszerűen megadhatja, hogy miként valósul meg az új adatok vetítése:
getS3method ("előrejelzés", "prcomp")
A @ chl fantasztikus válaszához (+1) hozzáadva könnyebb megoldást is használhat:
# végrehajtja a fő összetevők elemzését pca <- prcomp (data) # új adatokat vetít rá a PCA űrskála (newdata, pca $ center, pca $ scale)% *% pca $ rotation
Ez nagyon hasznos, ha nem akarja menteni a teljes pca
objektum az newdata
kivetítésére a PCA-helyre.
SVD-ben, ha A egy mxn mátrix, a jobb oldali V egyes mátrix legfelső k sora az A eredeti oszlopainak k-dimenziós ábrázolása, ahol k < = n
A = UΣV t
=> A t = VΣ t U t = VΣU t
=> A t U = VΣU t U = VΣ ----------- (mert U merőleges) => A t UΣ -1 = VΣΣ -1 = V
Tehát $ V = A ^ tUΣ $ -1
Az A t sorai vagy az A oszlopai az V. oszlopaihoz.
Ha az új adatok mátrixa, amelyen PCA-t kell végrehajtani a dimenziócsökkentéshez, Q, aqxn mátrix, akkor a képlet segítségével számítsa ki $ R = Q ^ tUΣ $ -1 , akkor az R eredmény a kívánt eredményt. R egy n-n mátrix, és az R legfelső k sora (n-nek k-ként tekinthető) Q oszlopainak új ábrázolása a k-dimenziós térben.
Úgy gondolom, hogy a sajátvektorokat (vagyis a fő komponenseket) oszlopként kell rendezni.