MTX_PCA - Analyse en composantes principales
Cette procédure effectue une analyse en composantes principales (ACP) à partir de données stockées dans une matrice.
Utilisation
- MTX_PCA modelName,dataMatrixName,forceSufficientStats,centerData,scaleData,saveScores )
- Paramètres
- modelName
- Le nom du modèle créé.
- dataMatrixName
- Le nom de la matrice contenant les données.
- forceSufficientStats
- Spécifie si l'ACP doit être basée sur une matrice de covariance même si la SVD peut être effectuée.
- centerData
- Spécifie si le modèle doit inclure le centrage des données, c'est-à-dire la soustraction de l'estimateur de la moyenne.
- scaleData
- Spécifie si le modèle doit inclure la mise à l'échelle des données, qui est la division par un estimateur de l'écart-type non nul. Lorsque la mise à l'échelle des données est effectuée, le modèle ACP résultant est équivalent à un modèle basé sur la matrice de corrélation.
- saveScores
- Spécifie si les scores ACP des observations individuelles doivent être sauvegardés.
Détails
Cette procédure construit un modèle ACP des données et fournit une transformation correspondante en composantes principales, qui peut ensuite être appliquée à l'aide de MTX_PCA_APPLY. Les données d'entrée doivent être fournies sous forme d'objets matriciels de base de données, les observations étant fournies en lignes et les attributs en colonnes.
L'ACP peut être construite selon deux stratégies : La décomposition SVD, qui est plus précise mais au détriment de la vitesse et de la mémoire, ou en trouvant les vecteurs propres de l'estimateur sans biais de la matrice de covariance. Si le paramètre forceSufficientStats n'est pas VRAI, la meilleure stratégie, c'est-à-dire celle qui fournit la solution la plus précise en fonction de la taille des données et de la disponibilité de la mémoire, est utilisée. En fonction des paramètres spécifiés, la matrice de données peut être centrée et mise à l'échelle. Dans ce cas, les paramètres correspondants, les estimateurs de la moyenne et de la variance sont calculés et font partie du modèle. Lorsqu'ils sont inclus dans le modèle, le centrage et la mise à l'échelle sont également effectués lors de l'étape d'application.
Le centrage des données (assurer que la moyenne de chaque attribut est égale à 0) est une hypothèse de la méthode ACP - ne pas la respecter entraîne généralement une grave dégradation du modèle. La mise à l'échelle des données (en veillant à ce que la variance de chaque attribut soit égale à 1) permet généralement d'obtenir une meilleure approximation des données en cas de présence d'attributs qui diffèrent par des ordres de grandeur. Il est équivalent d'effectuer l'ACP en utilisant la matrice de corrélation au lieu de la matrice de covariance.
- {prefix}_PCA_ATTMEAN : vecteur de lignes contenant les valeurs moyennes des attributs (lorsque centerData est TRUE)
- {prefix}_PCA_ATTSD : vecteur de lignes contenant les écarts types des attributs (lorsque scaleData est VRAI)
- {prefix}_PCA_ATTSD_DIV : vecteur de lignes contenant les réciproques des écarts types non nuls des attributs ou valeur 1 (lorsque scaleData est VRAI)
- prefix}_PCA_SDEV : vecteur de lignes contenant les écarts types des composantes principales
- {prefix}_PCA : la matrice des charges (une matrice dont les colonnes contiennent les vecteurs propres de la matrice de covariance)
- {prefix}_PCA_SCORES : la matrice des scores contenant les projections des observations individuelles en composantes principales (lorsque saveScores est TRUE)
Exemples
call nzm..shape('1,2,3,4,5,6,7,8,9',1,3,'PCA_TEST');
call nzm..shape('9,8,7,6,5,4,3,2,1',10,1,'PCA_TEST_SOURCE_PRE');
---expected value is 0.0
call nzm..SCALAR_OPERATION('PCA_TEST_SOURCE_PRE',
'PCA_TEST_SOURCE', '-', 0.5);
call nzm..gemm('PCA_TEST_SOURCE','PCA_TEST', 'PCA_TEST_VALS');
call nzm..mtx_pca('PCA_TEST_MOD','PCA_TEST_VALS',FALSE,FALSE,
FALSE, TRUE);
call nzm..list_matrices();
std dev in each direction (in this example real value of all
components other than the first one should be 0)
call nzm..print('PCA_TEST_MOD_PCA_SDEV');
call nzm..print('PCA_TEST_MOD_PCA_SCORES');
---projecting on the original value (first column)
call nzm..gemm_large('PCA_TEST_VALS',FALSE,'PCA_TEST_MOD_PCA',
FALSE,'PCA_TEST_PROJ');
resulting value (first column of PCA_TEST_PROJ) is
proportional to original one (PCA_TEST_VALS):
PCA_TEST_PROJ[1,] ~~PCA_TEST_SOURCE*sqrt(nzm..red_ssq('PCA_TEST'))
call nzm..delete_matrix_like('PCA\_TEST%');
SHAPE
-------
t
(1 row)
SHAPE
-------
t
(1 row)
SCALAR_OPERATION
------------------
t
(1 row)
GEMM
------
t
(1 row)
MTX_PCA
---------
t
(1 row)
LIST_MATRICES
----------------------------------------------------
PCA_TEST
PCA_TEST_MOD_PCA
PCA_TEST_MOD_PCA_SCORES
PCA_TEST_MOD_PCA_SDEV
PCA_TEST_SOURCE
PCA_TEST_SOURCE_PRE
PCA_TEST_VALS
(1 row)
PRINT
----------------------------------------------------
-- matrix: PCA_TEST_MOD_PCA_SDEV --
22.118368434905
2.4603199788269e-16
9.9446202776076e-17
(1 row)
PRINT
-----------------------------------------------------------------------------------------
-- matrix: PCA_TEST_MOD_PCA_SCORES --
31.804087787578, -1.4567015001103e-16, 1.2617124776816e-16
-28.062430400805, -4.1645192033268e-17, -2.6226789760277e-16
-24.320773014031, -3.6092499762165e-17, 3.1261282628732e-17
-20.579115627257, -3.0539807491063e-17, 2.6451854532004e-17
-16.837458240483, -2.4987115219961e-17, 2.1642426435276e-17
-13.095800853709, 7.1866157069922e-16, 1.6832998338548e-17
-9.3541434669349, -1.3881730677756e-17, 1.202357024182e-17
-5.6124860801609, -8.3290384066535e-18, 7.2141421450919e-18
-1.870828693387, -2.7763461355512e-18, 2.404714048364e-18
-31.804087787578, -4.719788430437e-17, 4.0880138822188e-17
(1 row)
GEMM_LARGE
------------
t
(1 row)
DELETE_MATRIX_LIKE
--------------------
t
(1 row)