

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Como o PCA funciona
<a name="how-pca-works"></a>

A análise de componente principal (PCA) é um algoritmo de aprendizagem que reduz a dimensionalidade (número de recursos) em um conjunto de dados enquanto mantém o maior número possível de informações. 

Para reduzir a dimensionalidade, o algoritmo encontra um novo conjunto de recursos chamados *componentes*, que são composições de recursos originais não correlacionados entre si. O primeiro componente representa a maior variabilidade possível nos dados, o segundo componente, a segunda maior variabilidade, e assim por diante.

É um algoritmo de redução de dimensionalidade não supervisionado. Na aprendizagem não supervisionada, os rótulos que podem ser associados aos objetos do conjunto de dados de treinamento não são usados.

Dada a entrada de uma matriz com as linhas ![\[x_1,…,x_n\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/PCA-39b.png), cada uma de dimensão `1 * d`, os dados são particionados em minilotes de linhas e distribuídos entre os nós de treinamento (trabalhadores). Cada operador calcula então um resumo dos seus dados. Depois, os resumos dos diferentes operadores são unificados em uma só solução no final do cálculo. 

**Modos**

O algoritmo Amazon SageMaker AI PCA usa um dos dois modos para calcular esses resumos, dependendo da situação:
+ **regular**: para conjuntos com dados esparsos e um número moderado de observações e recursos.
+ **randomized**: para conjuntos de dados com um grande número de observações e recursos. Esse modo usa um algoritmo de aproximação. 

Como último passo, o algoritmo executa a decomposição de valor singular na solução unificada, de onde os principais componentes serão derivados.

## Modo 1: Regular
<a name="mode-1"></a>

Os trabalhadores calcula, ![\[Equation in text-form: \sum x_i^T x_i\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/PCA-1b.png) e ![\[Equation in text-form: \sum x_i\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/PCA-2b.png) em conjunto.

**nota**  
Como ![\[Equation in text-form: x_i\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/PCA-3b.png) são vetores de linha `1 * d`, ![\[Equation in text-form: x_i^T x_i\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/PCA-4b.png) é uma matriz (não um valor escalar). O uso de vetores de linha dentro do código permite obter um cache eficiente.

A matriz de covariância é calculada como ![\[Equation in text-form: \sum x_i^T x_i - (1/n) (\sum x_i)^T \sum x_i\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/PCA-32b.png), e seus `num_components` principais vetores singulares formam o modelo.

**nota**  
Se `subtract_mean` for `False`, evitamos o cálculo e a subtração de ![\[Equation in text-form: \sum x_i\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/PCA-2b.png).

Use esse algoritmo quando a dimensão `d` dos vetores for pequena o suficiente para que ![\[Equation in text-form: d^2\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/PCA-7b.png) caiba na memória.

## Modo 2: Randomized
<a name="mode-2"></a>

Quando o número de recursos no conjunto de dados de entrada é grande, usamos um método para aproximar a métrica de covariância. Para cada minilote de dimensão ![\[Equation in text-form: X_t\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/PCA-23b.png), `b * d` inicializamos aleatoriamente uma matriz `(num_components + extra_components) * b` que multiplicamos por cada minilote para criar uma matriz `(num_components + extra_components) * d`. A soma dessas matrizes é calculada pelos operadores, e os servidores executam a decomposição de valor singular na matriz final `(num_components + extra_components) * d`. Os vetores singulares `num_components` da parte superior direita dela são a aproximação dos vetores singulares da parte superior da matriz de entrada.

Deixe ![\[Equation in text-form: \ell\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/PCA-38b.png) ` = num_components + extra_components`. Dado um minilote ![\[Equation in text-form: X_t\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/PCA-23b.png) de dimensão `b * d`, o trabalhador desenha uma matriz aleatória ![\[Equation in text-form: H_t\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/PCA-24b.png) de dimensão ![\[Equation in text-form: \ell * b\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/PCA-38.png). Dependendo se o ambiente usa uma GPU ou CPU e do tamanho da dimensão, a matriz é uma matriz de sinal aleatória, em que cada entrada é `+-1` ou uma *FJLT* (rápida transformação de Johnson Lindenstrauss). Para obter informações, consulte o artigo sobre [transformações FJLT](https://www.cs.princeton.edu/~chazelle/pubs/FJLT-sicomp09.pdf) e os documentos de acompanhamento. O trabalhador então calcula ![\[Equation in text-form: H_t X_t\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/PCA-26b.png) e mantém ![\[Equation in text-form: B = \sum H_t X_t\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/PCA-27b.png). O trabalhador também mantém ![\[Equation in text-form: h^T\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/PCA-28b.png), a soma das colunas de ![\[Equation in text-form: H_1,..,H_T\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/PCA-29b.png) (`T` sendo o número total de minilotes) e `s`, a soma de todas as linhas de entrada. Depois de processar todo o estilhaço de dados, o operador envia o servidor `B`, `h`, `s` e `n` (o número de linhas de entrada).

Identifique as diferentes entradas para o servidor como ![\[Equation in text-form: B^1, h^1, s^1, n^1,…\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/PCA-30b.png) O servidor calcula `B`, `h`, `s`, `n` as somas das respectivas entradas. Em seguida, ele calcula ![\[Equation in text-form: C = B – (1/n) h^T s\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/PCA-31b.png) e encontra sua decomposição em valores singulares. Os vetores singulares da parte superior e os valores singulares de `C` são usados como a solução aproximada para o problema.