Todos os produtos
Search
Central de documentação

PolarDB:Algoritmo BST

Última atualização: Jun 28, 2026

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_length não deve exceder 3.000.

  • O parâmetro window_size deve ser maior ou igual ao valor máximo do ID de comportamento mais 1. Se window_size ultrapassar 900, mantenha sequence_length bem abaixo do limite máximo para evitar problemas de memória.

  • Quando auto_heads=1, o resultado de int(sqrt(window_size)) + int(sqrt(sequence_length)) + 2 não pode ser um número primo. Nesse caso, defina auto_heads=0 e especifique num_heads manualmente.

  • Um batch_size pequeno 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

uid

Sim

VARCHAR

ID de cada entrada de dados (ID do usuário ou ID do produto)

253460731706911258

event_list

Sim

LONGTEXT

Sequência de comportamentos para treinamento. IDs de comportamento inteiros separados por vírgula, ordenados ascendentemente por timestamp.

"[183, 238, 153, 152]"

target

Sim

INT, FLOAT, DOUBLE

Rótulo da amostra usado para medir as métricas do modelo

0

val_row

Não

INT

Sinalizador no nível de linha para divisão de validação. 0 = dados de treinamento; 1 = dados de validação. Tem efeito apenas quando version=1 e val_flag=1. Quando val_flag=0, apenas linhas com val_row=0 são utilizadas.

1

other_feature

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, other_feature1, other_feature2).

2

val_x_cols

Não

LONGTEXT

Sequência de comportamentos de validação para ajuste de parâmetros. Tem efeito apenas quando version=0.

"[183, 238, 153, 152]"

val_y_cols

Não

INT, FLOAT, DOUBLE

Rótulo de validação para ajuste de parâmetros. Tem efeito apenas quando version=0.

1

Tabela de avaliação de modelo

Coluna

Obrigatório

Tipo

Descrição

Exemplo

uid

Sim

VARCHAR(255)

ID de cada entrada de dados

123213

event_list

Sim

LONGTEXT

Sequência de comportamentos. Mesmo formato da tabela de treinamento.

"[183, 238, 153, 152]"

target

Sim

INT, FLOAT, DOUBLE

Rótulo da amostra usado para calcular erros do modelo

0

other_feature

Não

INT, FLOAT, DOUBLE, LONGTEXT

Recursos adicionais, consistentes com aqueles usados durante a criação do modelo

2

Tabela de previsão de modelo

Coluna

Obrigatório

Tipo

Descrição

Exemplo

uid

Sim

VARCHAR(255)

ID de cada entrada de dados

123213

event_list

Sim

LONGTEXT

Sequência de comportamentos. Mesmo formato da tabela de treinamento.

"[183, 238, 153, 152]"

other_feature

Não

INT, FLOAT, DOUBLE, LONGTEXT

Recursos adicionais, consistentes com aqueles usados durante a criação do modelo

2

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

version

0

Versão do modelo. 0 = versão antiga; 1 = nova versão (recomendada). A versão antiga suporta val_x_cols e val_y_cols, mas não suporta val_row, classificação multiclasse ou stacking.

model_task_type

classification

Tipo de tarefa. Valores válidos: classification, regression, multi_classification.

num_classes

2

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 num_classes=3, os rótulos válidos são {0, 1, 2}.

batch_size

16

Tamanho do lote. Um valor menor aumenta o risco de overfitting.

window_size

—

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.

sequence_length

—

Quantidade de eventos de comportamento incluídos nos cálculos do modelo. Não deve exceder 3.000.

success_id

—

O ID de comportamento que o modelo prevê.

max_epoch

1

Número máximo de iterações de treinamento.

learning_rate

0.0002

Taxa de aprendizado.

loss

CrossEntropyLoss

Função de perda. Use CrossEntropyLoss para classificação binária; mse, mae ou msle para regressão.

val_flag

0

Define se a validação ocorre após cada época. 0 = sem validação (salva o modelo da última época); 1 = valida cada época (salva o modelo com melhor métrica; requer val_metric e val_row).

val_metric

loss

Métrica usada para validação no nível de época. Consulte a tabela abaixo.

auto_data_statics

off

Define se deve contar ocorrências de ID na sequência e gerar recursos estatísticos. on = contar; off = ignorar.

auto_heads

1

Define se o número de cabeças de atenção multicabeça será configurado automaticamente. 1 = automático; 0 = manual (especifique num_heads). Quando definido como 1, pode haver risco de memória de vídeo insuficiente. Verifique se int(sqrt(window_size)) + int(sqrt(sequence_length)) + 2 não é um número primo.

num_heads

4

Número de cabeças de atenção multicabeça. Usado apenas quando auto_heads=0.

x_value_cols

—

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: 'num_events, max_level, max_viplevel'.

x_statics_cols

—

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: 'stats_item_list, stats_event_list'.

x_seq_cols

—

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: 'event_list'.

data_normalization

0

Define se as colunas especificadas por x_value_cols serão normalizadas. 0 = desativado; 1 = ativado.

remove_seq_adjacent_duplicates

off

Define se valores duplicados adjacentes serão removidos das colunas especificadas por x_seq_cols. off = manter duplicatas; on = remover.

stacking

off

Define se o algoritmo BST será aprimorado por meio de fusão de modelos. Válido apenas quando model_task_type='classification'. off = sem fusão; on = fusão de modelos e deduplicação.

stacking_model

'gbdt,svc,rt'

Modelos a incluir na fusão de ensemble. Válido apenas quando stacking='on'. Valores válidos: bst, gbdt, svc, rt. Não pode estar vazio.

**Métricas de validação (val_metric)**

Valor

O que mede

Tipo de tarefa

loss

Mesma função de perda usada durante o treinamento

Classificação, regressão

f1score

Média harmônica de precisão e recall — útil quando a distribuição de classes é desigual

Classificação, classificação multiclasse

r2_score

Coeficiente de determinação — indica quão bem as previsões se ajustam aos valores reais

Regressão

mse

Erro quadrático médio — diferença quadrática média entre previsões e valores reais

Regressão

mape

Erro percentual absoluto médio — desvio percentual médio em relação aos valores reais

Regressão

mape_plus

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

acc

Acurácia — proporção de previsões corretas

Classificação, classificação multiclasse

auc

Área sob a curva ROC — capacidade do modelo de separar classes positivas e negativas

Classificação, classificação multiclasse

Fscore

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

r2_score

Coeficiente de determinação

Regressão

mse

Erro quadrático médio

Regressão

mape

Erro percentual absoluto médio

Regressão

mape_plus

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, ajuste model_task_type e os parâmetros correspondentes loss e metrics.

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.