Train Wide & Deep Recommender

Este artigo descreve como usar o componente Train Wide & Deep Recommender no designer do Azure Machine Learning para treinar um modelo de recomendação. Este componente é baseado no Wide & Deep learning, que é proposto pelo Google.

O componente Train Wide & Deep Recommender lê um conjunto de dados de triplos de classificação de item do usuário e, opcionalmente, alguns recursos de usuário e item. Ele retorna um recomendado treinado Wide & Deep. Em seguida, você pode usar o modelo treinado para gerar previsões ou recomendações de classificação usando o componente Score Wide e Deep Recommender .

Mais sobre modelos de recomendação e o recomendado Wide & Deep

O principal objetivo de um sistema de recomendação é recomendar um ou mais elementos aos utilizadores do sistema. Exemplos de um item podem ser um filme, restaurante, livro ou música. Um usuário pode ser uma pessoa, grupo de pessoas ou outra entidade com preferências de item.

Existem duas abordagens principais para os sistemas de recomendação.

  • A primeira é a abordagem baseada em conteúdo, que faz uso de recursos para usuários e itens. Os usuários podem ser descritos por propriedades, como idade e sexo, e os itens podem ser descritos por propriedades, como autor e fabricante. Exemplos típicos de sistemas de recomendação baseados em conteúdo podem ser encontrados em sites de matchmaking social.
  • A segunda abordagem é a filtragem colaborativa, que usa apenas identificadores dos usuários e dos itens e obtém informações implícitas sobre essas entidades a partir de uma matriz (esparsa) de classificações dadas pelos usuários aos itens. Podemos aprender sobre um usuário a partir dos itens que eles classificaram e de outros usuários que classificaram os mesmos itens.

O recomendado Wide & Deep combina essas abordagens, usando filtragem colaborativa com uma abordagem baseada em conteúdo. É, portanto, considerado um recomendado híbrido.

Como isso funciona: Quando um usuário é relativamente novo no sistema, as previsões são melhoradas fazendo uso das informações do recurso sobre o usuário, resolvendo assim o conhecido problema de "arranque a frio". No entanto, depois de coletar um número suficiente de avaliações de um usuário específico, é possível fazer previsões totalmente personalizadas para eles com base em suas classificações específicas, em vez de apenas em seus recursos. Assim, há uma transição suave de recomendações baseadas em conteúdo para recomendações baseadas em filtragem colaborativa. Mesmo que os recursos de usuário ou item não estejam disponíveis, o recomendador Wide & Deep ainda funcionará em seu modo de filtragem colaborativa.

Mais detalhes sobre o Wide & Deep recommender e o algoritmo probabilístico subjacente podem ser encontrados no artigo de pesquisa relevante: Wide & Deep Learning for Recommender Systems.

Como configurar Train Wide & Deep Recommender

Preparar dados

Antes de tentar usar o componente, verifique se os dados estão no formato esperado para o modelo de recomendação. É necessário um conjunto de dados de treinamento de triplos de classificação de item de usuário, mas você também pode incluir recursos de usuário e recursos de item (se disponíveis) em conjuntos de dados separados.

Conjunto de dados necessário de classificações de itens do usuário

Os dados de entrada usados para treinamento devem conter o tipo correto de dados no formato correto:

  • A primeira coluna deve conter identificadores de usuário.
  • A segunda coluna deve conter identificadores de item.
  • A terceira coluna contém a classificação para o par usuário-item. Os valores de classificação devem ser do tipo numérico.

Por exemplo, um conjunto típico de classificações de item de usuário pode ter esta aparência:

UserId MovieId Rating
5 68646 10
223 31381 10

Conjunto de dados de recursos do usuário (opcional)

O conjunto de dados dos recursos do usuário deve conter identificadores para os usuários e usar os mesmos identificadores que foram fornecidos na primeira coluna do conjunto de dados users-items-ratings. As colunas restantes podem conter qualquer número de recursos que descrevem os usuários.

Por exemplo, um conjunto típico de recursos do usuário pode ter esta aparência:

UserId Antiguidade Sexo Juros Localização
5 25 masculino Drama Europa
223 40 feminino Romance Ásia

Conjunto de dados de recursos de item (opcional)

O conjunto de dados de recursos de item deve conter identificadores de item em sua primeira coluna. As colunas restantes podem conter qualquer número de recursos descritivos para os itens.

Por exemplo, um conjunto típico de recursos de item pode ter esta aparência:

MovieId Cargo Língua original Gêneros Year
68646 O Padrinho Português Drama 1972
31381 E Tudo o Vento Levou Português Histórico 1939

Preparar o modelo

  1. Adicione o componente Train Wide e Deep Recommender ao seu experimento no designer e conecte-o ao conjunto de dados de treinamento.

  2. Se você tiver um conjunto de dados separado de recursos de usuário e/ou recursos de item, conecte-os ao componente Train Wide e Deep Recommender .

    • Conjunto de dados de recursos do usuário: conecte o conjunto de dados que descreve os usuários à segunda entrada.
    • Conjunto de dados de recursos de item: conecte o conjunto de dados que descreve os itens à terceira entrada.
  3. Épocas: indicam quantas vezes o algoritmo deve processar todos os dados de treinamento.

    Quanto maior esse número, mais adequada a formação; no entanto, o treinamento custa mais tempo e pode causar sobreajuste.

  4. Tamanho do lote: digite o número de exemplos de treinamento utilizados em uma etapa de treinamento.

    Este hiperparâmetro pode influenciar a velocidade de treino. Um tamanho de lote maior leva a uma época de menor custo de tempo, mas pode aumentar o tempo de convergência. E se o lote for muito grande para caber GPU/CPU, um erro de memória pode surgir.

  5. Otimizador de peças largas: selecione um otimizador para aplicar gradientes à parte ampla do modelo.

  6. Wide optimizer learning rate: insira um número entre 0.0 e 2.0 que define a taxa de aprendizagem do wide part optimizer.

    Este hiperparâmetro determina o tamanho do passo em cada etapa de treinamento enquanto se move em direção a um mínimo de função de perda. Uma taxa de aprendizagem grande pode fazer com que a aprendizagem ultrapasse os mínimos, enquanto uma taxa de aprendizagem muito pequena pode causar problemas de convergência.

  7. Dimensão de recurso cruzado: digite a dimensão inserindo os IDs de usuário desejados e os recursos de ID de item.

    O recomendado Wide & Deep executa a transformação entre produtos sobre os recursos de ID de usuário e ID de item por padrão. O resultado cruzado será hashed de acordo com este número para garantir a dimensão.

  8. Otimizador de peças profundas: selecione um otimizador para aplicar gradientes à parte profunda do modelo.

  9. Deep optimizer learning rate: insira um número entre 0,0 e 2,0 que define a taxa de aprendizagem do deep part optimizer.

  10. Dimensão de incorporação do usuário: digite um inteiro para especificar a dimensão da incorporação do ID do usuário.

    A recomendação Wide & Deep cria as incorporações de ID de usuário compartilhado e as incorporações de ID de item para partes largas e profundas.

  11. Dimensão de incorporação de item: digite um inteiro para especificar a dimensão da incorporação de ID de item.

  12. Dimensão de incorporação de recursos categóricos: insira um inteiro para especificar as dimensões das incorporações de feições categóricas.

    No componente profundo do Wide & Deep recommender, um vetor de incorporação é aprendido para cada característica categórica. E esses vetores de incorporação compartilham a mesma dimensão.

  13. Unidades ocultas: digite o número de nós ocultos do componente profundo. O número de nós em cada camada é separado por vírgulas. Por exemplo, pelo tipo "1000,500,100", você especifica que o componente profundo tem três camadas, com a primeira camada até a última respectivamente tem 1000 nós, 500 nós e 100 nós.

  14. Função de ativação: selecione uma função de ativação aplicada a cada camada, o padrão é ReLU.

  15. Desistência: insira um número entre 0,0 e 1,0 para determinar a probabilidade de as saídas serem descartadas em cada camada durante o treinamento.

    O abandono é um método de regularização para evitar que as redes neurais se sobreajustem. Uma decisão comum para este valor é começar com 0,5, que parece estar perto do ideal para uma ampla gama de redes e tarefas.

  16. Normalização de lote: selecione esta opção para usar a normalização de lote após cada camada oculta no componente profundo.

    A normalização em lote é uma técnica para combater o problema de turno de covariável interno durante o treinamento de redes. Em geral, pode ajudar a melhorar a velocidade, o desempenho e a estabilidade das redes.

  17. Executar o pipeline.

Notas técnicas

O Wide & Deep treina em conjunto modelos lineares amplos e redes neurais profundas para combinar os pontos fortes da memorização e generalização. O componente amplo aceita um conjunto de recursos brutos e transformações de recursos para memorizar interações de recursos. E com menos engenharia de recursos, o componente profundo generaliza para combinações de recursos invisíveis por meio de incorporações de recursos densos de baixa dimensão.

Na implementação do Wide & Deep recommender, o componente usa uma estrutura de modelo padrão. O componente amplo usa incorporações de usuário, incorporações de itens e a transformação entre produtos de IDs de usuário e IDs de item como entrada. Para a parte profunda do modelo, um vetor de incorporação é aprendido para cada característica categórica. Juntamente com outros vetores de feição numérica, esses vetores são então alimentados na rede neural de feed-forward profundo. A parte larga e a parte profunda são combinadas somando suas probabilidades de log de saída final como a previsão, que finalmente vai para uma função de perda comum para treinamento conjunto.

Próximos passos

Consulte o conjunto de componentes disponíveis do Azure Machine Learning.