Todos os produtos
Search
Central de documentação

PolarDB:Algoritmo DeepFM

Última atualização: Jun 28, 2026

O Deep Factorization Machine (DeepFM) é um algoritmo de machine learning integrado ao PolarDB for MySQL que captura automaticamente interações de recursos para tarefas de classificação e ranking, sem necessidade de engenharia de recursos manual.

O DeepFM combina uma rede neural profunda (DNN) com uma máquina de fatoração (FM). A DNN captura interações de recursos de alta ordem, enquanto a FM captura as de baixa ordem. Juntas, produzem uma pontuação em ponto flutuante entre 0 e 1, que representa a probabilidade de o rótulo alvo ser igual a 1. Essa saída é adequada para classificação binária e ranking.

Conceitos principais

O DeepFM aceita dois tipos de recursos de entrada:

  • Recurso categórico: valor do tipo string que representa uma categoria discreta, como gênero (male, female) ou categoria de produto (clothing, electronics).

  • Recurso numérico: valor inteiro ou em ponto flutuante que representa uma quantidade mensurável, como contagem de atividade do usuário ou preço do produto.

Casos de uso

O DeepFM é eficaz quando os recursos não preveem resultados diretamente, mas suas combinações sim. Ele funciona bem em dois cenários de negócios comuns:

Previsão de taxa de cliques (CTR): prevê se um usuário clicará em um anúncio ou recomendação de produto com base em dados históricos de comportamento (cliques, não cliques, compras). O DeepFM converte recursos esparsos de comportamento do usuário em representações densas que capturam padrões de interação entre os recursos.

Previsão de intenção de compra: classifica produtos pela probabilidade de compra em um feed de recomendação personalizado. O DeepFM lida com interações complexas e não óbvias entre recursos de perfil do usuário e atributos do produto que a engenharia de recursos manual não detectaria.

Parâmetros

Configure os parâmetros abaixo na cláusula model_parameter da instrução CREATE MODEL.

Todos os parâmetros possuem valores padrão adequados para a maioria das tarefas de classificação binária. Comece com os padrões e ajuste epochs, batch_size e optimizer caso o desempenho do modelo precise de melhorias.

Parâmetro

Padrão

Valores válidos

Descrição

task

binary

binary, regression

Tipo de tarefa. Use binary para previsão de cliques e ranking. Use regression para previsão de valores contínuos.

metrics

accuracy

accuracy, binary_crossentropy, mse

Métrica de avaliação. accuracy mede a acurácia da classificação. binary_crossentropy calcula a perda de entropia cruzada para classificação binária. mse indica o erro quadrático médio para regressão.

loss

binary_crossentropy

binary_crossentropy, mean_squared_error

Função de perda. Use binary_crossentropy para classificação binária e mean_squared_error para regressão.

optimizer

adam

adam, sgd, rmsdrop

Algoritmo otimizador. O adam adapta a taxa de aprendizado por parâmetro e lida bem com gradientes esparsos, sendo recomendado para a maioria dos casos. O sgd utiliza descida de gradiente estocástica. O rmsdrop aprimora o AdaGrad ao usar uma soma ponderada de gradientes ao quadrado.

epochs

6

Qualquer número inteiro positivo

Quantidade de iterações de treinamento sobre todo o conjunto de dados. Aumente este valor se o modelo apresentar underfitting.

batch_size

64

Qualquer número inteiro positivo

Número de amostras por atualização de gradiente. Um batch size menor tende a causar overfitting.

validation_split

0.2

Um float entre 0 e 1

Fração dos dados de treinamento reservada para validação.

Exemplos

Os exemplos abaixo usam o conjunto de dados db4ai.airlines para prever atrasos de voos. Todas as três instruções usam a dica /*polar4ai*/ para rotear a consulta ao mecanismo de IA do PolarDB.

Treinar um modelo

/*polar4ai*/CREATE MODEL airline_deepfm WITH
(model_class = 'deepfm',
x_cols = 'Airline,Flight,AirportFrom,AirportTo,DayOfWeek,Time,Length',
y_cols = 'Delay',
model_parameter = (epochs = 6))
AS (SELECT * FROM db4ai.airlines);

Avaliar o modelo

Execute EVALUATE em uma amostra reservada para medir a acurácia em relação aos rótulos conhecidos.

/*polar4ai*/SELECT Airline FROM EVALUATE(MODEL airline_deepfm,
SELECT * FROM db4ai.airlines LIMIT 20) WITH
(x_cols = 'Airline,Flight,AirportFrom,AirportTo,DayOfWeek,Time,Length',
y_cols = 'Delay',
metrics = 'acc');

A consulta retorna uma linha por registro avaliado. Cada linha inclui a coluna selecionada (Airline) e o resultado da avaliação para esse registro.

Executar previsões

/*polar4ai*/SELECT Airline FROM PREDICT(MODEL airline_deepfm,
SELECT * FROM db4ai.airlines LIMIT 20) WITH
(x_cols = 'Airline,Flight,AirportFrom,AirportTo,DayOfWeek,Time,Length');

A consulta retorna uma linha por registro de entrada. Cada linha contém a coluna selecionada (Airline) e uma pontuação de probabilidade prevista entre 0 e 1.