Comment PCA fonctionne - Amazon SageMaker

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 x_1,…,x_n 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 Equation in text-form: \sum x_i^T x_i et Equation in text-form: \sum x_i .

Note

Comme Equation in text-form: x_i sont 1 * d des vecteurs de ligne, Equation in text-form: x_i^T x_i 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 Equation in text-form: \sum x_i^T x_i - (1/n) (\sum x_i)^T \sum x_i 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 Equation in text-form: \sum x_i .

Utilisez cet algorithme lorsque la dimension d des vecteurs est suffisamment petite pour que Equation in text-form: d^2 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 Equation in text-form: X_t 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.

Equation in text-form: \ell = num_components + extra_components. Soit un mini-lot Equation in text-form: X_t de dimension b * d, le travail trace une matrice aléatoire Equation in text-form: H_t de dimension Equation in text-form: \ell * b . 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 FJLTTransformations et les articles de suivi). Le travail calcule ensuite Equation in text-form: H_t X_t et maintient Equation in text-form: B = \sum H_t X_t . Le travail maintient aussi Equation in text-form: h^T , la somme des colonnes de Equation in text-form: H_1,..,H_T (T é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 Equation in text-form: B^1, h^1, s^1, n^1,… Le serveur calcule B, h, s, n les sommes des entrées respectives. Puis, il calcule Equation in text-form: C = B – (1/n) h^T s 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.