O componente Collaborative Filtering (etrec) usa um algoritmo de filtragem colaborativa baseado em itens para calcular a similaridade entre pares de itens a partir de dados de interação usuário-item. Com base em uma coluna de usuário e uma coluna de item, o componente gera os N itens mais similares para cada item. Esse recurso é comum na etapa de recall de pipelines de recomendação.
Como funciona
Lê os registros de interação usuário-item da tabela de entrada (coluna de usuário + coluna de item).
Identifica, para cada item, os usuários que interagiram com ele e calcula as pontuações de similaridade em relação aos demais itens conforme o tipo de similaridade selecionado.
Grava os N itens mais similares por item na tabela de saída como pares chave-valor (
item_id:similarity_score).
Escolha um tipo de similaridade
Selecione o algoritmo de similaridade conforme as características dos dados de interação:
|
Tipo de similaridade |
Quando usar |
|
WbCosine |
Filtragem colaborativa baseada em itens de uso geral. Use como padrão na maioria dos cenários de recomendação. |
|
asymcosine |
Relações direcionais entre itens. Ajuste |
|
Jaccard |
Dados de interação binários (clicou/não clicou, comprou/não comprou). |
Configure o componente
Você pode configurar o componente de duas formas: pelo PAI console (visual) ou por comandos PAI (baseados em SQL). Ambos os métodos expõem os mesmos parâmetros.
Método 1: Configurar no PAI console
Na página de pipeline do Machine Learning Designer, selecione o componente Collaborative Filtering (etrec) e defina os seguintes parâmetros.
Fields Setting tab
|
Parâmetro |
Descrição |
|
User Column |
Nome da coluna de usuário na tabela de entrada. |
|
Item Column |
Nome da coluna de item na tabela de entrada. |
|
Delimiter between items in the output table |
Separador entre itens na tabela de saída. Padrão: espaço. |
|
Delimiter between key-value in the output table |
Separador entre chaves e valores na tabela de saída. Padrão: dois pontos ( |
Parameters Setting tab
|
Parâmetro |
Descrição |
|
Similarity Type |
Algoritmo para calcular a similaridade entre itens. Consulte Escolha um tipo de similaridade. Valores válidos: WbCosine, asymcosine, Jaccard. |
|
TopN |
Número máximo de itens similares mantidos por item na tabela de saída. |
|
Calculation Behavior |
Discontinued. Este parâmetro não tem mais efeito. Valores válidos: Add, Mul, Min, Max. |
|
Minimum Item Value |
Exclui do cálculo usuários com menos interações que este limiar. Aumente o valor para filtrar usuários com histórico esparso, pois o comportamento deles tende a refletir a popularidade do item, não a preferência pessoal. |
|
Maximum Item Value |
Exclui do cálculo usuários com mais interações que este limiar. Diminua o valor para filtrar usuários de alto volume (como bots automatizados), cujos registros podem gerar ruído nas pontuações de similaridade. |
|
Smoothing Factor |
Válido apenas quando Similarity Type for asymcosine. Valores válidos: (0, 1). Padrão: 0,5. |
|
Weighting Coefficient |
Válido apenas quando Similarity Type for asymcosine. Índice de peso aplicado à fórmula de cosseno assimétrico. Padrão: 1,0. |
Método 2: Configurar com comandos PAI
Execute o comando pai_etrec em um SQL Script. Para mais informações, consulte SQL Script.
PAI -name pai_etrec
-project algo_public
-DsimilarityType="wbcosine"
-Dweight="1"
-DminUserBehavior="2"
-Dlifecycle="28"
-DtopN="2000"
-Dalpha="0.5"
-DoutputTableName="etrec_test_result"
-DmaxUserBehavior="500"
-DinputTableName="etrec_test_input"
-DuserColName="user"
-DitemColName="item"
|
Parâmetro |
Obrigatório |
Descrição |
Padrão |
|
|
Sim |
Nome da tabela de entrada. |
— |
|
|
Sim |
Nome da coluna de usuário na tabela de entrada. |
— |
|
|
Sim |
Nome da coluna de item na tabela de entrada. |
— |
|
|
Não |
Partições a serem lidas da tabela de entrada. |
Tabela completa |
|
|
Sim |
Nome da tabela de saída. |
— |
|
|
Não |
Partição de destino na tabela de saída. |
— |
|
|
Não |
Algoritmo de similaridade. Valores válidos: |
|
|
|
Não |
Quantidade de itens mais similares a manter por item. Valores válidos: 1–10000. |
|
|
|
Não |
Número mínimo de interações necessárias para incluir o usuário. O sistema exclui usuários abaixo deste limiar, pois o comportamento deles tende a refletir a popularidade do item, não a preferência pessoal. |
|
|
|
Não |
Número máximo de interações permitidas para incluir o usuário. O sistema exclui usuários acima deste limiar; registros de alto volume (por exemplo, de bots automatizados) podem gerar ruído. |
|
|
|
Não |
Delimitador entre itens na tabela de saída. |
Backspace |
|
|
Não |
Delimitador entre chaves e valores na tabela de saída. |
|
|
|
Não |
Fator de suavização quando |
|
|
|
Não |
Índice de peso quando |
|
|
|
Não |
Ciclo de vida da tabela de saída. |
|
|
|
Não |
Número de núcleos a alocar. |
Determinado pelo sistema |
|
|
Não |
Memória por núcleo, em MB. |
Determinado pelo sistema |
Exemplo
Este exemplo cria uma tabela de entrada mínima, executa o algoritmo de filtragem colaborativa e inspeciona a saída.
Etapa 1: Crie a tabela de dados de treinamento.
DROP TABLE IF EXISTS etrec_test_input;
CREATE TABLE etrec_test_input AS
SELECT *
FROM (
SELECT CAST(0 AS STRING) AS user, CAST(0 AS STRING) AS item
UNION ALL SELECT CAST(0 AS STRING), CAST(1 AS STRING)
UNION ALL SELECT CAST(1 AS STRING), CAST(0 AS STRING)
UNION ALL SELECT CAST(1 AS STRING), CAST(1 AS STRING)
) a;
Tabela etrec_test_input resultante:
|
user |
item |
|
0 |
0 |
|
0 |
1 |
|
1 |
0 |
|
1 |
1 |
Etapa 2: Execute o comando PAI.
DROP TABLE IF EXISTS etrec_test_result;
PAI -name pai_etrec
-project algo_public
-DsimilarityType="wbcosine"
-Dweight="1"
-DminUserBehavior="2"
-Dlifecycle="28"
-DtopN="2000"
-Dalpha="0.5"
-DoutputTableName="etrec_test_result"
-DmaxUserBehavior="500"
-DinputTableName="etrec_test_input"
-DuserColName="user"
-DitemColName="item";
Etapa 3: Visualize a tabela de saída.
Consulte etrec_test_result. Cada linha representa um item e seus itens mais similares, formatados como pares chave-valor item_id:similarity_score.
|
itemid |
similarity |
|
0 |
1:1 |
|
1 |
0:1 |
Os itens 0 e 1 tiveram interação dos mesmos dois usuários. Portanto, cada um apresenta pontuação de similaridade de 1,0 em relação ao outro.