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 |
|
|
|
|
Tipo de tarefa. Use |
|
|
|
|
Métrica de avaliação. |
|
|
|
|
Função de perda. Use |
|
|
|
|
Algoritmo otimizador. O |
|
|
|
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. |
|
|
|
Qualquer número inteiro positivo |
Número de amostras por atualização de gradiente. Um batch size menor tende a causar overfitting. |
|
|
|
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.