Este tutorial utiliza engenharia de features adaptada a algoritmos de recomendação para processar conjuntos de dados originais (incluindo tabelas de usuários, itens e comportamentos) e gerar novas tabelas de features para as etapas subsequentes de recall e ranking.
Pré-requisitos
O PAI (Designer) está ativado e um workspace padrão foi criado. Para mais informações, consulte Activate PAI and create a default workspace.
Os recursos de computação do MaxCompute estão vinculados ao seu workspace. Para mais informações, consulte Manage compute resources for a workspace.
Uma fonte de dados do MaxCompute foi criada e vinculada como mecanismo do workspace. Para mais informações, consulte Create a MaxCompute data source.
Conjuntos de dados
As tabelas de usuários, itens e comportamentos utilizadas neste tutorial foram geradas por script para fins de demonstração e não contêm dados reais.
Tabela de usuários
|
Parâmetro |
Tipo |
Descrição |
|
user_id |
bigint |
O ID exclusivo do usuário. |
|
gender |
string |
O gênero do usuário. |
|
age |
bigint |
A idade do usuário. |
|
city |
string |
A cidade onde o usuário reside. |
|
item_cnt |
bigint |
O número de itens criados pelo usuário. |
|
follow_cnt |
bigint |
O número de usuários seguidos por este usuário. |
|
follower_cnt |
bigint |
O número de seguidores. |
|
register_time |
bigint |
O horário de registro. |
|
tags |
string |
As tags do usuário. |
|
ds |
string |
A chave de partição da tabela. |
Tabela de itens
|
Parâmetro |
Tipo |
Descrição |
|
item_id |
bigint |
O ID exclusivo do item. |
|
duration |
double |
A duração do vídeo. |
|
title |
string |
O título. |
|
category |
string |
A categoria principal. |
|
author |
bigint |
O autor. |
|
click_count |
bigint |
O número total de cliques. |
|
praise_count |
bigint |
O número total de curtidas. |
|
pub_time |
bigint |
O horário de publicação. |
|
ds |
string |
A chave de partição da tabela. |
Tabela de comportamentos
|
Parâmetro |
Tipo |
Descrição |
|
request_id |
bigint |
O ID da solicitação ou ID de rastreamento. |
|
user_id |
bigint |
O ID exclusivo do usuário. |
|
exp_id |
string |
O ID do experimento. |
|
page |
string |
A página. |
|
net_type |
string |
O tipo de rede. |
|
event_time |
bigint |
O horário em que o evento ocorreu. |
|
item_id |
bigint |
O ID do item. |
|
event |
string |
O tipo de evento. |
|
playtime |
double |
A duração da reprodução ou leitura. |
|
ds |
string |
A chave de partição da tabela. |
Procedimento
Etapa 1: Acesse a página do Designer****
Faça login no PAI console.
No painel de navegação à esquerda, clique em Workspaces. Na página Workspaces, clique no nome do workspace que deseja gerenciar.
No painel de navegação à esquerda do workspace, escolha Model Development and Training > Visualized Modeling (Designer).
Etapa 2: Construa o pipeline
Na página do Designer, clique na aba Preset Templates.
Na seção Recommended solution-feature engineering, clique em Create.
-
Na caixa de diálogo Create pipeline, configure os parâmetros. É possível usar as configurações padrão.
O parâmetro Pipeline data storage especifica um caminho de bucket do OSS para armazenar dados temporários e modelos gerados durante a execução do pipeline.
-
Clique em OK.
O pipeline é criado em aproximadamente 10 segundos.
Na lista de pipelines, clique duas vezes no pipeline Recommended solution-feature engineering para abri-lo.
-
O sistema constrói automaticamente o pipeline com base no modelo, conforme mostra a figura a seguir.

Componente
Descrição
1
Pré-processa a tabela de itens:
-
Substitui o separador de features de tag por
chr(29)para a etapa de geração de features (FG). -
Gera uma feature que indica se um item é novo.
2
Pré-processa a tabela de comportamentos: gera features derivadas de tempo, como day_h e week_day, a partir do horário do evento.
3
Pré-processa a tabela de usuários:
-
Gera uma feature que indica se um usuário é novo.
-
Substitui o separador de features de tag por
chr(29)para a etapa de geração de features (FG).
4
Une as tabelas de comportamentos, usuários e itens para criar uma tabela ampla de logs de comportamento com atributos estatísticos.
5
Gera a tabela de features de itens, que contém features estatísticas para itens durante um período específico:
-
item__{event}_cnt_{N}d: número de vezes que um evento específico ocorreu em um item dentro de N dias. Indica a popularidade do item. -
item__{event}_{itemid}_dcnt_{N}d: número de usuários únicos que interagiram com o item para um evento específico dentro de N dias. Indica a popularidade do item. -
item__{min|max|avg|sum}_{field}_{N}d: distribuição estatística (min, max, avg ou sum) de um atributo numérico do usuário para interações positivas com um item dentro de N dias. Indica as preferências de usuários com atributos numéricos específicos. -
item__kv_{cate}_{event}_{N}d: estatísticas de um atributo categórico do usuário para um evento específico em um item dentro de N dias. Indica as preferências de usuários com atributos categóricos específicos.
6
Gera a tabela de features de usuários, que contém features estatísticas para usuários durante um período específico.
-
Etapa 3: Adicione uma função personalizada
Crie um workflow. Para mais informações, consulte Create a workflow.
Clique com o botão direito em MaxCompute no workflow criado e escolha New Resource > Python para criar um recurso de script Python chamado count_cates_kvs.py. Para mais informações, consulte Create and use MaxCompute resources.
Clique com o botão direito em MaxCompute no workflow criado e escolha New Function. Crie uma função do MaxCompute chamada COUNT_CATES_KVS. Defina o Class name como
count_cates_kvs.CountCatesKVSe a Resource list comocount_cates_kvs.py. Para mais informações, consulte Create and use custom functions.
Etapa 4: Execute o pipeline e visualize os resultados
Por padrão, este pipeline processa 45 dias de dados, o que pode levar muito tempo. Para concluir a execução mais rapidamente, reduza a quantidade de dados processados da seguinte forma:
-
Atualize os parâmetros da janela de tempo de execução para usar dados de um período menor.
-
Clique em cada um dos componentes a seguir e, na aba Parameters à direita, altere o parâmetro Execution Time Window do valor padrão
(-45,0]para(-9,0]:1_rec_sln_demo_item_table_preprocess_v22_rec_sln_demo_behavior_table_preprocess_v23_rec_sln_demo_user_table_preprocess_v24_rec_sln_demo_behavior_table_preprocess_wide_v2
-
Clique em cada um dos componentes a seguir e, na aba Parameters à direita, altere o parâmetro Execution Time Window de
(-31,0]para(-8,0]:5_rec_sln_demo_item_table_preprocess_all_feature_v26_rec_sln_demo_user_table_preprocess_all_feature_v2
-
-
Modifique o script SQL para selecionar uma amostra menor de usuários.
Clique no nó
2_rec_sln_demo_behavior_table_preprocess_ v2e, na aba Parameters à direita, altere a linha 32 do código do parâmetro SQL Script deWHERE ds = '${pai.system.cycledate}'paraWHERE ds = '${pai.system.cycledate}' and user_id %10=1.Clique no componente
3_rec_sln_demo_user_table_preprocess_v2e, na aba Parameters à direita, altere a linha 38 no parâmetro SQL Script deWHERE ds = '${pai.system.cycledate}'paraWHERE ds = '${pai.system.cycledate}' and user_id %10=1.
Clique no ícone Run
na barra de ferramentas acima da tela do Designer.-
Após a conclusão da execução do pipeline, verifique se as seguintes tabelas do MaxCompute contêm nove dias de dados:
Tabela de features de itens:
rec_sln_demo_item_table_preprocess_all_feature_v2Tabela ampla de logs de comportamento:
rec_sln_demo_behavior_table_preprocess_v2Tabela de features de usuários:
rec_sln_demo_user_table_preprocess_all_feature_v2
É possível consultar os dados nessas tabelas na página de consulta SQL. Para mais informações, consulte Connect using DataWorks.
NotaO projeto ao qual essas tabelas pertencem proíbe varreduras completas em tabelas particionadas. Especifique uma condição de partição na consulta. Caso seja necessária uma varredura completa, adicione a instrução
set odps.sql.allow.fullscan=true;antes da instrução SQL e execute-as juntas. Uma varredura completa processa mais dados, o que pode aumentar seus custos.