Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Comment PCA fonctionne
L'analyse en composantes principales (PCA) est un algorithme d'apprentissage qui réduit la dimensionnalité (nombre d'entités) au sein d'un ensemble de données tout en conservant le plus d'informations possible.
PCAréduit la dimensionnalité en trouvant un nouvel ensemble de fonctionnalités appelées composants, qui sont des composites des caractéristiques d'origine, mais qui ne sont pas corrélées entre elles. Le premier composant représente la plus grande variabilité possible dans les données, le deuxième composant la deuxième variabilité la plus importante, et ainsi de suite.
Il s'agit d'un algorithme de réduction de dimensionnalité sans surveillance. Dans l'apprentissage non supervisé, les étiquettes qui pourraient être associées à des objets de l'ensemble de données d'entraînement ne sont pas utilisées.
Soit en entrée une matrice avec les lignes
chacune de dimension 1 * d
, les données sont partitionnées en mini-lots de lignes et distribuées entre les nœuds d'apprentissage (travaux). Chaque worker calcule ensuite un résumé de ses données. Les résumés des différents workers sont ensuite unifiés en une seule solution à la fin du calcul.
Modes
L' SageMaker PCAalgorithme Amazon utilise l'un des deux modes pour calculer ces résumés, en fonction de la situation :
-
regular : pour les ensembles de données avec données fragmentées et un nombre modéré d'observations et de caractéristiques.
-
randomized : pour les ensembles de données avec un grand nombre d'observations et de caractéristiques. Ce mode utilise un algorithme d'approximation.
Lors de sa dernière étape, l'algorithme effectue la décomposition en valeurs singulières de la solution unifiée, à partir de laquelle les principaux composants sont ensuite dérivés.
Mode 1 : Regular
Les agents de travail calculent et .
Note
Comme
sont 1 * d
des vecteurs de ligne,
est une matrice (non un scalaire). L'utilisation des vecteurs de ligne au sein du code nous permet d'obtenir une mise en cache efficace.
La matrice de covariance est calculée comme
et ses principaux vecteurs num_components
forment le modèle.
Note
Si subtract_mean
a la valeur False
, nous évitons de calculer et de soustraire
.
Utilisez cet algorithme lorsque la dimension d
des vecteurs est suffisamment petite pour que
puisse contenir en mémoire.
Mode 2 : Randomized
Lorsque le nombre de fonctions de l'ensemble de données en entrée est de grande taille, nous utilisons une méthode pour estimer approximativement la métrique de covariance. Pour chaque mini-lot
de dimension b * d
, nous initialisons de façon aléatoire une matrice (num_components + extra_components) * b
que nous multiplions par chaque mini-lot, afin de créer une matrice (num_components + extra_components) * d
. La somme de ces matrices est calculée par les travailleurs, et les serveurs exécutent les opérations SVD sur la (num_components + extra_components) * d
matrice finale. Les vecteurs num_components
singuliers en haut à droite représentent l'approximation des vecteurs singuliers supérieurs de la matrice d'entrée.
= num_components + extra_components
. Soit un mini-lot
de dimension b * d
, le travail trace une matrice aléatoire
de dimension
. Selon que l'environnement utilise un GPU ou CPU et la taille des dimensions, la matrice est soit une matrice de signes aléatoires où chaque entrée est +-1
une FJLT(transformation rapide de Johnson Lindenstrauss ; pour plus d'informations, voir FJLTTransformationsT
étant le nombre total de mini-lots), et s
, la somme de toutes les lignes en entrée. Après le traitement de la totalité de la partition de données, le worker envoie au serveur B
, h
, s
et n
(nombre de lignes en entrée).
Indiquez les différentes entrées au serveur comme
Le serveur calcule B
, h
, s
, n
les sommes des entrées respectives. Puis, il calcule
et recherche sa décomposition en valeurs singulières. Les vecteurs singuliers en haut à droite et les valeurs singulières de C
sont utilisés comme solution approximative au problème.