

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á.

# Algoritmo de Máquinas de fatoração
<a name="fact-machines"></a>

O algoritmo de máquinas de fatoração é um algoritmo de aprendizado supervisionado de uso geral que pode ser usado para tarefas de classificação e regressão. É uma extensão de um modelo linear projetado para capturar, com baixo custo, as interações entre os atributos presentes em conjuntos de dados esparsos altamente dimensionais. Por exemplo, em um sistema de predição de cliques, o modelo de máquinas de fatoração pode capturar padrões de taxa de cliques observados quando anúncios de uma determinada categoria de anúncios são colocados em páginas de uma determinada categoria de páginas. As máquinas de fatoração são uma boa opção para tarefas que lidam com conjuntos de dados esparsos altamente dimensionais, como a predição de cliques e a recomendação de itens.

**nota**  
A implementação do Amazon SageMaker AI do algoritmo Factorization Machines considera somente interações de pares (2ª ordem) entre os recursos.

**Topics**
+ [

## Interface de entrada/saída para o algoritmo de Máquinas de fatoração
](#fm-inputoutput)
+ [

## Recomendações de instâncias do EC2 para o algoritmo de máquinas de fatoração
](#fm-instances)
+ [

## Cadernos de amostra de Máquinas de fatoração
](#fm-sample-notebooks)
+ [

# Como funcionam as máquinas de fatoração
](fact-machines-howitworks.md)
+ [

# Hiperparâmetros das máquinas de fatoração
](fact-machines-hyperparameters.md)
+ [

# Ajustar um modelo de Máquinas de fatoração
](fm-tuning.md)
+ [

# Formatos de resposta de máquinas de fatoração
](fm-in-formats.md)

## Interface de entrada/saída para o algoritmo de Máquinas de fatoração
<a name="fm-inputoutput"></a>

O algoritmo de máquinas de fatoração pode ser executado no modo de classificação binária ou no modo de regressão. Em cada modo, um conjunto de dados pode ser fornecido para o canal de **teste** com um conjunto de dados de treinamento. A pontuação depende do modo usado. No modo de regressão, o conjunto de dados de teste é pontuado com a métrica RMSE (raiz do erro quadrático médio). No modo de classificação binária, o conjunto de dados de teste é pontuado com as métricas de entropia cruzada binária (perda de log), de precisão (no limite = 0,5) e de pontuação F1 (no limite = 0,5).

Para **treinamento**, o algoritmo de máquinas de fatoração atualmente é compatível apenas com o formato `recordIO-protobuf` com tensores `Float32`. Como seu caso de uso é predominantemente em dados esparsos, o formato `CSV` não é uma bom opção. Treinamentos nos modo de Arquivo e Pipe são compatíveis para protobuf encapsulado em recordIO.

Para **inferência**, o algoritmo de máquinas de fatoração é compatível com os formatos `application/json` e `x-recordio-protobuf`. 
+ Para o problema de **classificação binária**, o algoritmo prevê uma pontuação e um rótulo. O rótulo é um número e pode ser `0` ou `1`. A pontuação é um número que indica com que intensidade o algoritmo acredita que o rótulo deve ser `1`. O algoritmo calcula primeiro a pontuação e, em seguida, deriva o rótulo do valor da pontuação. Se a pontuação for maior ou igual a 0,5, o rótulo é `1`.
+ Para o problema de **regressão**, apenas uma pontuação é retornada e é o valor previsto. Por exemplo, se Máquinas de fatoração forem usadas para prever uma avaliação de filme, a pontuação será o valor de avaliação previsto.

Para obter mais detalhes sobre os formatos de arquivo para inferência e treinamento, consulte [Cadernos de amostra de Máquinas de fatoração](#fm-sample-notebooks).

## Recomendações de instâncias do EC2 para o algoritmo de máquinas de fatoração
<a name="fm-instances"></a>

O algoritmo Amazon SageMaker AI Factorization Machines é altamente escalável e pode ser treinado em instâncias distribuídas. Recomendamos que o treinamento e a inferência sejam feitos com instâncias de CPU para conjuntos de dados esparsos e densos. Em algumas circunstâncias, o treinamento com um ou mais GPUs dados densos pode oferecer algum benefício. O treinamento com GPUs está disponível somente em dados densos. Use instâncias de CPU para dados esparsos. O algoritmo de máquinas de fatoração oferece apoio às instâncias de P2, P3, G4dn e G5 para treinamento e inferência.

## Cadernos de amostra de Máquinas de fatoração
<a name="fm-sample-notebooks"></a>

Para um exemplo de caderno que usa o algoritmo SageMaker AI Factorization Machines para analisar as imagens de dígitos manuscritos de zero a nove no conjunto de dados MNIST, consulte [Uma introdução](https://sagemaker-examples.readthedocs.io/en/latest/introduction_to_amazon_algorithms/factorization_machines_mnist/factorization_machines_mnist.html) às máquinas de fatoração com o MNIST. Para obter instruções sobre como criar e acessar instâncias do notebook Jupyter que você pode usar para executar o exemplo em SageMaker IA, consulte. [Instâncias de SageMaker notebook da Amazon](nbi.md) Depois de criar uma instância do notebook e abri-la, selecione a guia **Exemplos de SageMaker IA** para ver uma lista de todas as amostras de SageMaker IA. Cadernos de exemplo que usam o algoritmo de máquinas de fatoração estão localizados na seção **Introdução a algoritmos da Amazon**. Para abrir um caderno, clique em sua guia **Uso** e selecione **Criar cópia**.

# Como funcionam as máquinas de fatoração
<a name="fact-machines-howitworks"></a>

A tarefa de predição para um modelo de máquina de fatoração é estimar uma função ŷ de um conjunto de atributos xi para um domínio de destino. Esse domínio é de valor real para regressão e binário para classificação. O modelo Factorization Machines é supervisionado e portanto possui um conjunto de dados de treinamento (xi,yj) disponível. As vantagens desse modelo estão na maneira como ele usa uma parametrização fatorada para capturar as interações de atributos par a par. Ele pode ser representado matematicamente da seguinte maneira: 

![\[Uma imagem contendo a equação para o modelo de máquinas de fatoração.\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/FM1.jpg)


 Os três termos nesta equação correspondem respectivamente aos três componentes do modelo: 
+ O termo w0 representa a polarização global.
+ Os wi termos lineares modelam a força da i-ésima variável.
+ Os termos de fatoração <vi,vj> modelam a interação de pares entre a i-ésima e a j-ésima variáveis.

Os termos de polaridade global e lineares são os mesmos que os de um modelo linear. As interações de atributos par a par são modeladas no terceiro termo como o produto interno dos fatores correspondentes aprendidos para cada atributo. Os fatores aprendidos também podem ser considerados vetores de incorporação para cada atributo. Por exemplo, em uma tarefa de classificação, se um par de atributos tendesse a coocorrer com mais frequência em amostras rotuladas positivas, o produto interno de seus fatores seria grande. Em outras palavras, os vetores de incorporação estariam próximos uns dos outros em uma similaridade de cosseno. Para obter mais informações sobre o modelo de máquinas de fatoração, consulte [Máquinas de fatoração](https://www.ismll.uni-hildesheim.de/pub/pdfs/Rendle2010FM.pdf).

Para tarefas de regressão, o modelo é treinado minimizando o erro quadrático entre a predição de modelo ŷn e o valor de destino yn. Isso é conhecido como perda quadrada:

![\[Uma imagem contendo a equação de perda quadrada.\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/FM2.jpg)


Para uma tarefa de classificação, o modelo é treinado minimizando a perda de entropia cruzada, também conhecida como perda de log: 

![\[Uma imagem contendo a equação de perda de log.\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/FM3.jpg)


em que: 

![\[Uma imagem contendo a função logística dos valores previstos.\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/images/FM4.jpg)


Para obter mais informações sobre funções de perda para classificação, consulte [Funções de perda para classificação](https://en.wikipedia.org/wiki/Loss_functions_for_classification).

# Hiperparâmetros das máquinas de fatoração
<a name="fact-machines-hyperparameters"></a>

A tabela a seguir contém os hiperparâmetros para o algoritmo de máquinas de fatoração. Esses parâmetros são definidos pelos usuários para facilitar a estimativa dos parâmetros do modelo a partir dos dados. Os hiperparâmetros necessários que devem ser definidos são listados primeiro, em ordem alfabética. Os hiperparâmetros opcionais que podem ser configurados são listados em seguida, também em ordem alfabética.


| Nome do parâmetro | Description | 
| --- | --- | 
| feature\$1dim | A dimensão do espaço do atributo de entrada. Esse parâmetro pode ser muito alto com entradas esparsas. **Obrigatório** Valores válidos: inteiro positivo. Intervalo de valores sugerido: [10000,10000000]  | 
| num\$1factors | A dimensionalidade da fatoração. **Obrigatório** Valores válidos: inteiro positivo. Faixa de valores sugerida: [2,1000], 64 normalmente gera bons resultados e é um bom ponto de partida.  | 
| predictor\$1type | O tipo de previsor. [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/fact-machines-hyperparameters.html) **Obrigatório** Valores válidos: String: `binary_classifier` ou `regressor`  | 
| bias\$1init\$1method | O método de inicialização do termo de polarização: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/fact-machines-hyperparameters.html) **Opcional** Valores válidos: `uniform`, `normal` ou `constant` Valor padrão: `normal`  | 
| bias\$1init\$1scale | Intervalo para a inicialização dos termos de desvio. Entrará em vigor se `bias_init_method` estiver definido como `uniform`.  **Opcional** Valores válidos: flutuante não negativo. Intervalo de valores sugerido: [1e-8, 512]. Valor padrão: Nenhum  | 
| bias\$1init\$1sigma | O desvio padrão para a inicialização dos termos de polarização. Entrará em vigor se `bias_init_method` estiver definido como `normal`.  **Opcional** Valores válidos: flutuante não negativo. Intervalo de valores sugerido: [1e-8, 512]. Valor padrão: 0,01  | 
| bias\$1init\$1value | O valor inicial do termo de polarização. Entrará em vigor se `bias_init_method` estiver definido como `constant`.  **Opcional** Valores válidos: flutuante. Intervalo de valores sugerido: [1e-8, 512]. Valor padrão: Nenhum  | 
| bias\$1lr | A taxa de aprendizado do termo de polarização.  **Opcional** Valores válidos: flutuante não negativo. Intervalo de valores sugerido: [1e-8, 512]. Valor padrão: 0.1  | 
| bias\$1wd | A degradação de peso para o termo de polarização.  **Opcional** Valores válidos: flutuante não negativo. Intervalo de valores sugerido: [1e-8, 512]. Valor padrão: 0,01  | 
| clip\$1gradient | Parâmetro otimizador de recorte de gradiente. Corta o gradiente projetando no intervalo [-`clip_gradient`, \$1`clip_gradient`].  **Opcional** Valores válidos: Flutuante Valor padrão: Nenhum  | 
| epochs | O número de epochs de treinamento a serem executados.  **Opcional** Valores válidos: inteiro positivo Valor padrão: 1  | 
| eps | Parâmetro épsilon para evitar divisão por 0. **Opcional** Valores válidos: flutuante. Valor sugerido: pequeno. Valor padrão: Nenhum  | 
| factors\$1init\$1method | O método de inicialização para termos de fatoração: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/fact-machines-hyperparameters.html) **Opcional** Valores válidos: `uniform`, `normal` ou `constant`. Valor padrão: `normal`  | 
| factors\$1init\$1scale  | O intervalo para inicialização de termos de fatoração. Entrará em vigor se `factors_init_method` estiver definido como `uniform`.  **Opcional** Valores válidos: flutuante não negativo. Intervalo de valores sugerido: [1e-8, 512]. Valor padrão: Nenhum  | 
| factors\$1init\$1sigma | O desvio padrão para inicialização de termos de fatoração. Entrará em vigor se `factors_init_method` estiver definido como `normal`.  **Opcional** Valores válidos: flutuante não negativo. Intervalo de valores sugerido: [1e-8, 512]. Valor padrão: 0.001  | 
| factors\$1init\$1value | O valor inicial dos termos de fatoração. Entrará em vigor se `factors_init_method` estiver definido como `constant`.  **Opcional** Valores válidos: flutuante. Intervalo de valores sugerido: [1e-8, 512]. Valor padrão: Nenhum  | 
| factors\$1lr | A taxa de aprendizado para termos de fatoração.  **Opcional** Valores válidos: flutuante não negativo. Intervalo de valores sugerido: [1e-8, 512]. Valor padrão: 0.0001  | 
| factors\$1wd | A degradação de peso dos termos de fatoração.  **Opcional** Valores válidos: flutuante não negativo. Intervalo de valores sugerido: [1e-8, 512]. Valor padrão: 0.00001  | 
| linear\$1lr | A taxa de aprendizado para termos lineares.  **Opcional** Valores válidos: flutuante não negativo. Intervalo de valores sugerido: [1e-8, 512]. Valor padrão: 0.001  | 
| linear\$1init\$1method | O método de inicialização para termos lineares: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/sagemaker/latest/dg/fact-machines-hyperparameters.html) **Opcional** Valores válidos: `uniform`, `normal` ou `constant`. Valor padrão: `normal`  | 
| linear\$1init\$1scale | Intervalo para a inicialização dos termos lineares. Entrará em vigor se `linear_init_method` estiver definido como `uniform`.  **Opcional** Valores válidos: flutuante não negativo. Intervalo de valores sugerido: [1e-8, 512]. Valor padrão: Nenhum  | 
| linear\$1init\$1sigma | O desvio padrão para inicialização de termos lineares. Entrará em vigor se `linear_init_method` estiver definido como `normal`.  **Opcional** Valores válidos: flutuante não negativo. Intervalo de valores sugerido: [1e-8, 512]. Valor padrão: 0,01  | 
| linear\$1init\$1value | O valor inicial de termos lineares. Entrará em vigor se `linear_init_method` estiver definido como *constant*.  **Opcional** Valores válidos: flutuante. Intervalo de valores sugerido: [1e-8, 512]. Valor padrão: Nenhum  | 
| linear\$1wd | A degradação de peso para termos lineares. **Opcional** Valores válidos: flutuante não negativo. Intervalo de valores sugerido: [1e-8, 512]. Valor padrão: 0.001  | 
| mini\$1batch\$1size | O tamanho do minilote usado para treinamento.  **Opcional** Valores válidos: inteiro positivo Valor padrão: 1000  | 
| rescale\$1grad |  Parâmetro otimizador de redimensionamento de gradiente. Se definido, multiplicará o gradiente com `rescale_grad` antes de atualizar. Geralmente, a escolha é 1,0/`batch_size`.  **Opcional** Valores válidos: Flutuante Valor padrão: Nenhum  | 

# Ajustar um modelo de Máquinas de fatoração
<a name="fm-tuning"></a>

O *ajuste automático de modelos*, também conhecido como ajuste de hiperparâmetros, localiza a melhor versão de um modelo executando vários trabalhos que testam uma série de hiperparâmetros no seu conjunto de dados. Você escolhe os hiperparâmetros ajustáveis, um intervalo de valores para cada um e uma métrica objetiva. Você escolhe a métrica objetiva entre as métricas que o algoritmo calcula. O ajuste de modelo automático pesquisa os hiperparâmetros escolhidos para encontrar a combinação de valores que resultam no modelo que otimiza a métrica objetiva.

Para mais informações sobre o ajuste de modelos, consulte [Ajuste automático do modelo com SageMaker IA](automatic-model-tuning.md).

## Métricas calculadas pelo algoritmo de Máquinas de fatoração
<a name="fm-metrics"></a>

O algoritmo de máquinas de fatoração tem tipos de preditor de classificação binária e regressão binária. O tipo de preditor determina qual métrica você pode usar para o ajuste automático do modelo. O algoritmo relata uma métrica de regressor `test:rmse`, que é calculada durante o treinamento. Ao ajustar o modelo para tarefas de regressão, escolha essa métrica como a métrica objetiva.


| Nome da métrica | Description | Direção de otimização | 
| --- | --- | --- | 
| test:rmse | Erro quadrático médio. | Minimizar | 

O algoritmo de máquinas de fatoração relata três métricas de classificação binária, que são calculadas durante o treinamento. Ao ajustar o modelo para tarefas de classificação binária, escolha um deles como o objetivo.


| Nome da métrica | Description | Direção de otimização | 
| --- | --- | --- | 
| test:binary\$1classification\$1accuracy | Precisão | Maximizar | 
| test:binary\$1classification\$1cross\$1entropy | Entropia cruzada | Minimizar | 
| test:binary\$1f\$1beta | Beta | Maximizar | 

## Hiperparâmetros ajustáveis de Máquinas de fatoração
<a name="fm-tunable-hyperparameters"></a>

Você pode ajustar os seguintes hiperparâmetros para o algoritmo de máquinas de fatoração: Os parâmetros de inicialização que contêm a polarização de termos, linear e fatoração dependem do método de inicialização. Existem três métodos de inicialização: `uniform`, `normal` e `constant`. Esses métodos de inicialização não são ajustáveis. Os parâmetros ajustáveis dependem dessa opção do método de inicialização. Por exemplo, se o método de inicialização for `uniform`, somente os parâmetros `scale` serão ajustáveis. Especificamente, se `bias_init_method==uniform`, então `bias_init_scale`, `linear_init_scale` e `factors_init_scale` serão ajustáveis. Da mesma forma, se o método de inicialização for `normal`, somente `sigma` parâmetros serão ajustáveis. Se o método de inicialização for `constant`, somente os parâmetros `value` serão ajustáveis. Essas dependências estão listadas na tabela a seguir. 


| Nome do parâmetro | Tipo de parâmetro | Intervalos recomendados | Dependência | 
| --- | --- | --- | --- | 
| bias\$1init\$1scale | ContinuousParameterRange | MinValue: 1e-8, 512 MaxValue | bias\$1init\$1method==uniform | 
| bias\$1init\$1sigma | ContinuousParameterRange | MinValue: 1e-8, 512 MaxValue | bias\$1init\$1method==normal | 
| bias\$1init\$1value | ContinuousParameterRange | MinValue: 1e-8, 512 MaxValue | bias\$1init\$1method==constant | 
| bias\$1lr | ContinuousParameterRange | MinValue: 1e-8, 512 MaxValue | Nenhum | 
| bias\$1wd | ContinuousParameterRange | MinValue: 1e-8, 512 MaxValue | Nenhum | 
| epoch | IntegerParameterRange | MinValue: 1, MaxValue 100 | Nenhum | 
| factors\$1init\$1scale | ContinuousParameterRange | MinValue: 1e-8, 512 MaxValue | bias\$1init\$1method==uniform | 
| factors\$1init\$1sigma | ContinuousParameterRange | MinValue: 1e-8, 512 MaxValue | bias\$1init\$1method==normal | 
| factors\$1init\$1value | ContinuousParameterRange | MinValue: 1e-8, 512 MaxValue | bias\$1init\$1method==constant | 
| factors\$1lr | ContinuousParameterRange | MinValue: 1e-8, 512 MaxValue | Nenhum | 
| factors\$1wd | ContinuousParameterRange | MinValue: 1e-8, MaxValue: 512] | Nenhum | 
| linear\$1init\$1scale | ContinuousParameterRange | MinValue: 1e-8, 512 MaxValue | bias\$1init\$1method==uniform | 
| linear\$1init\$1sigma | ContinuousParameterRange | MinValue: 1e-8, 512 MaxValue | bias\$1init\$1method==normal | 
| linear\$1init\$1value | ContinuousParameterRange | MinValue: 1e-8, 512 MaxValue | bias\$1init\$1method==constant | 
| linear\$1lr | ContinuousParameterRange | MinValue: 1e-8, 512 MaxValue | Nenhum | 
| linear\$1wd | ContinuousParameterRange | MinValue: 1e-8, 512 MaxValue | Nenhum | 
| mini\$1batch\$1size | IntegerParameterRange | MinValue: 100, MaxValue 1000 | Nenhum | 

# Formatos de resposta de máquinas de fatoração
<a name="fm-in-formats"></a>

A Amazon SageMaker AI fornece vários formatos de resposta para obter inferência do modelo de máquinas de fatoração, como JSON, JSONLINES e RECORDIO, com estruturas específicas para tarefas binárias de classificação e regressão.

## Formato de resposta JSON
<a name="fm-json"></a>

Classificação binária

```
let response =   {
    "predictions":    [
        {
            "score": 0.4,
            "predicted_label": 0
        } 
    ]
}
```

Regressão

```
let response =   {
    "predictions":    [
        {
            "score": 0.4
        } 
    ]
}
```

## Formato de resposta JSONLINES
<a name="fm-jsonlines"></a>

Classificação binária

```
{"score": 0.4, "predicted_label": 0}
```

Regressão

```
{"score": 0.4}
```

## Formato de resposta RECORDIO
<a name="fm-recordio"></a>

Classificação binária

```
[
    Record = {
        features = {},
        label = {
            'score’: {
                keys: [],
                values: [0.4]  # float32
            },
            'predicted_label': {
                keys: [],
                values: [0.0]  # float32
            }
        }
    }
]
```

Regressão

```
[
    Record = {
        features = {},
        label = {
            'score’: {
                keys: [],
                values: [0.4]  # float32
            }   
        }
    }
]
```