O algoritmo Behavior Sequence Transformer (BST) usa o framework Transformer para modelar sequências de comportamento do usuário e extrair recursos implícitos para tarefas de previsão. O BST destaca-se na captura de padrões temporais de longo prazo em dados sequenciais, sendo ideal para sistemas de recomendação e mineração de valor do ciclo de vida do usuário.
Casos de uso
O BST lida com tarefas de classificação e regressão. A entrada consiste em uma sequência de comportamentos armazenada em uma coluna LONGTEXT: uma lista ordenada de IDs de comportamento inteiros, classificados por timestamp. A saída é uma previsão inteira ou de ponto flutuante, como valor de pagamento, probabilidade de churn ou sinalizador de confirmação de pagamento.
Exemplo de classificação
Em um cenário de operações de jogos, construa uma sequência de entrada BST com os comportamentos dos jogadores nos últimos 14 dias. O modelo prevê quais usuários pagantes têm maior probabilidade de churn nos próximos 14 dias. Considera-se que houve churn quando o usuário não faz login por 14 dias consecutivos.
Exemplo de regressão
No mesmo contexto de jogos, use as primeiras 24 horas de comportamentos de novos usuários como sequência de entrada. O modelo prevê o gasto total de cada usuário durante os 7 dias seguintes.
Limitações
Desequilíbrio de classes
O BST apresenta melhor desempenho quando as classes estão aproximadamente equilibradas. Caso a classe majoritária possua mais de 20 vezes o número de amostras de qualquer classe minoritária, pré-processe as classes desequilibradas com o algoritmo de clustering K-means no PolarDB for AI para restaurar uma distribuição equilibrada antes do treinamento.
Restrições de sequência e tamanho de janela
O valor de
sequence_lengthnão deve exceder 3.000.O parâmetro
window_sizedeve ser maior ou igual ao valor máximo do ID de comportamento mais 1. Sewindow_sizeultrapassar 900, mantenhasequence_lengthbem abaixo do limite máximo para evitar problemas de memória.Quando
auto_heads=1, o resultado deint(sqrt(window_size)) + int(sqrt(sequence_length)) + 2não pode ser um número primo. Nesse caso, definaauto_heads=0e especifiquenum_headsmanualmente.Um
batch_sizepequeno aumenta o risco de overfitting. O padrão é 16; use um valor maior para garantir um treinamento mais estável.
Formato de dados
Tabela de criação de modelo
|
Coluna |
Obrigatório |
Tipo |
Descrição |
Exemplo |
|
|
Sim |
VARCHAR |
ID de cada entrada de dados (ID do usuário ou ID do produto) |
|
|
|
Sim |
LONGTEXT |
Sequência de comportamentos para treinamento. IDs de comportamento inteiros separados por vírgula, ordenados ascendentemente por timestamp. |
|
|
|
Sim |
INT, FLOAT, DOUBLE |
Rótulo da amostra usado para medir as métricas do modelo |
|
|
|
Não |
INT |
Sinalizador no nível de linha para divisão de validação. |
|
|
|
Não |
INT, FLOAT, DOUBLE, LONGTEXT |
Recursos adicionais. LONGTEXT suporta formato JSON, lista ou separado por vírgulas. Várias colunas são permitidas (por exemplo, |
|
|
|
Não |
LONGTEXT |
Sequência de comportamentos de validação para ajuste de parâmetros. Tem efeito apenas quando |
|
|
|
Não |
INT, FLOAT, DOUBLE |
Rótulo de validação para ajuste de parâmetros. Tem efeito apenas quando |
|
Tabela de avaliação de modelo
|
Coluna |
Obrigatório |
Tipo |
Descrição |
Exemplo |
|
|
Sim |
VARCHAR(255) |
ID de cada entrada de dados |
|
|
|
Sim |
LONGTEXT |
Sequência de comportamentos. Mesmo formato da tabela de treinamento. |
|
|
|
Sim |
INT, FLOAT, DOUBLE |
Rótulo da amostra usado para calcular erros do modelo |
|
|
|
Não |
INT, FLOAT, DOUBLE, LONGTEXT |
Recursos adicionais, consistentes com aqueles usados durante a criação do modelo |
|
Tabela de previsão de modelo
|
Coluna |
Obrigatório |
Tipo |
Descrição |
Exemplo |
|
|
Sim |
VARCHAR(255) |
ID de cada entrada de dados |
|
|
|
Sim |
LONGTEXT |
Sequência de comportamentos. Mesmo formato da tabela de treinamento. |
|
|
|
Não |
INT, FLOAT, DOUBLE, LONGTEXT |
Recursos adicionais, consistentes com aqueles usados durante a criação do modelo |
|
Parâmetros do modelo
Os parâmetros a seguir correspondem aos valores de model_parameter na instrução CREATE MODEL.
|
Parâmetro |
Padrão |
Descrição |
|
|
|
Versão do modelo. |
|
|
|
Tipo de tarefa. Valores válidos: |
|
|
|
Número de categorias de previsão para classificação multiclasse. Os rótulos das amostras devem começar em 0 e o total de rótulos distintos deve ser menor que este valor. Por exemplo, quando |
|
|
|
Tamanho do lote. Um valor menor aumenta o risco de overfitting. |
|
|
— |
Tamanho do espaço de incorporação para IDs de comportamento. Deve ser maior ou igual ao valor máximo do ID de comportamento mais 1. Caso contrário, ocorre um erro de análise. |
|
|
— |
Quantidade de eventos de comportamento incluídos nos cálculos do modelo. Não deve exceder 3.000. |
|
|
— |
O ID de comportamento que o modelo prevê. |
|
|
|
Número máximo de iterações de treinamento. |
|
|
|
Taxa de aprendizado. |
|
|
|
Função de perda. Use |
|
|
|
Define se a validação ocorre após cada época. |
|
|
|
Métrica usada para validação no nível de época. Consulte a tabela abaixo. |
|
|
|
Define se deve contar ocorrências de ID na sequência e gerar recursos estatísticos. |
|
|
|
Define se o número de cabeças de atenção multicabeça será configurado automaticamente. |
|
|
|
Número de cabeças de atenção multicabeça. Usado apenas quando |
|
|
— |
Nomes de colunas para usar como recursos discretos numéricos. Não pode estar vazio. Os valores devem ser inteiros ou números de ponto flutuante. Exemplo: |
|
|
— |
Nomes de colunas para usar como recursos estatísticos. Não pode estar vazio. Cada coluna deve ser LONGTEXT com linhas de comprimento fixo. Suporta formato JSON, lista ou separado por vírgulas. Exemplo: |
|
|
— |
Nomes de colunas para usar como recursos de sequência. Cada coluna deve ser LONGTEXT em formato de lista ou separado por vírgulas. Exemplo: |
|
|
|
Define se as colunas especificadas por |
|
|
|
Define se valores duplicados adjacentes serão removidos das colunas especificadas por |
|
|
|
Define se o algoritmo BST será aprimorado por meio de fusão de modelos. Válido apenas quando |
|
|
|
Modelos a incluir na fusão de ensemble. Válido apenas quando |
**Métricas de validação (val_metric)**
|
Valor |
O que mede |
Tipo de tarefa |
|
|
Mesma função de perda usada durante o treinamento |
Classificação, regressão |
|
|
Média harmônica de precisão e recall — útil quando a distribuição de classes é desigual |
Classificação, classificação multiclasse |
|
|
Coeficiente de determinação — indica quão bem as previsões se ajustam aos valores reais |
Regressão |
|
|
Erro quadrático médio — diferença quadrática média entre previsões e valores reais |
Regressão |
|
|
Erro percentual absoluto médio — desvio percentual médio em relação aos valores reais |
Regressão |
|
|
Variante do MAPE que mede o erro apenas em rótulos positivos |
Regressão |
Métricas de avaliação
A seguir estão os valores válidos para o parâmetro metrics na instrução EVALUATE.
|
Valor |
O que mede |
Tipo de tarefa |
|
|
Acurácia — proporção de previsões corretas |
Classificação, classificação multiclasse |
|
|
Área sob a curva ROC — capacidade do modelo de separar classes positivas e negativas |
Classificação, classificação multiclasse |
|
|
Pontuação F1 — média harmônica de precisão e recall, útil quando a distribuição de classes é desigual |
Classificação, classificação multiclasse |
|
|
Coeficiente de determinação |
Regressão |
|
|
Erro quadrático médio |
Regressão |
|
|
Erro percentual absoluto médio |
Regressão |
|
|
Variante do MAPE apenas para rótulos positivos |
Regressão |
Exemplos
Os exemplos a seguir usam tarefas de classificação. Para outros tipos de tarefa, ajustemodel_task_typee os parâmetros correspondenteslossemetrics.
Crie um modelo
/*polar4ai*/CREATE MODEL sequential_bst WITH (
model_class = 'bst',
x_cols = 'event_list,other_feature1',
y_cols = 'target',
model_parameter = (
batch_size = 128,
window_size = 900,
sequence_length = 3000,
success_id = 900,
max_epoch = 2,
learning_rate = 0.0008,
val_flag = 1,
x_seq_cols = 'event_list',
x_value_cols = 'other_feature1',
val_metric = 'f1score',
auto_data_statics = 'on',
data_normalization = 1,
remove_seq_adjacent_duplicates = 'on',
version = 1
)
) AS (SELECT * FROM seqential_train);
seqential_train é a tabela de dados de criação do modelo.
Avaliar um modelo
/*polar4ai*/SELECT uid, target FROM evaluate(
MODEL sequential_bst,
SELECT * FROM seqential_eval
) WITH (
x_cols = 'event_list,other_feature1',
y_cols = 'target',
metrics = 'Fscore'
);
seqential_eval é a tabela de dados de avaliação do modelo.
Execute previsões
/*polar4ai*/SELECT uid, target FROM PREDICT(
MODEL sequential_bst,
SELECT * FROM seqential_test
) WITH (
x_cols = 'event_list,other_feature1',
mode = 'async'
);
seqential_test é a tabela de dados de previsão do modelo.