Fórmula User-Personalization - Amazon Personalize

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Fórmula User-Personalization

Importante

Recomendamos usar a receita User-Personalization-v2. Ele pode considerar até 5 milhões de itens com um treinamento mais rápido e gerar recomendações mais relevantes com menor latência.

A receita User-Personalization (aws-user-personalization) é otimizada para todos os cenários de recomendação personalizada. Ele prevê os itens com os quais um usuário provavelmente interagirá. Você pode usar a Personalização do Usuário para gerar recomendações personalizadas de filmes para um aplicativo de streaming ou recomendações personalizadas de produtos para um aplicativo de varejo.

Com a personalização do usuário, o Amazon Personalize gera recomendações com base principalmente nos dados de interação do item do usuário em um conjunto de dados de interações do item. Ele também pode usar qualquer item e metadados de usuário em seus conjuntos de dados de Itens e Usuários. Para obter mais informações sobre os dados que ele usa, consulteConjuntos de dados obrigatórios e opcionais.

Recursos da fórmula

A personalização do usuário usa os seguintes recursos de receita do Amazon Personalize ao gerar recomendações de itens:

  • Personalização em tempo real — Com a personalização em tempo real, o Amazon Personalize atualiza e adapta as recomendações de itens de acordo com a evolução do interesse do usuário. Para ter mais informações, consulte Personalização em tempo real.

  • Exploração — Com a exploração, as recomendações incluem novos itens ou itens com menos dados de interações. Isso melhora a descoberta e o engajamento de itens quando você tem um catálogo que muda rapidamente ou quando novos itens, como artigos de notícias ou promoções, são mais relevantes para os usuários quando são novos. Para obter mais informações sobre exploração, consulte Exploration (Exploração).

  • Atualizações automáticas — Com as atualizações automáticas, o Amazon Personalize atualiza automaticamente o modelo mais recente (versão da solução) a cada duas horas para considerar novos itens para recomendações. Para ter mais informações, consulte Atualizações automáticas.

Conjuntos de dados obrigatórios e opcionais

Para usar a Personalização do Usuário, você deve criar Conjunto de dados de interações com itens e importar no mínimo 1000 interações de itens. O Amazon Personalize gera recomendações com base principalmente nos dados de interação do item.

Com a personalização do usuário, o Amazon Personalize pode usar dados de interações de itens que incluem o seguinte:

  • Tipo de evento e dados de valor do evento — O Amazon Personalize usa dados de tipo de evento, como tipos de eventos de clique ou assista, para identificar a intenção e o interesse do usuário por meio de qualquer padrão de comportamento. Além disso, você pode usar os dados do tipo e do valor do evento para filtrar os registros antes do treinamento. Para ter mais informações, consulte Tipo de evento e dados de valor do evento.

  • Metadados contextuais — Metadados contextuais são dados de interações que você coleta no ambiente do usuário no momento de um evento, como sua localização ou tipo de dispositivo. Para ter mais informações, consulte Metadados contextuais.

  • Dados de impressões — Impressões são listas de itens que estavam visíveis para um usuário quando ele interagia (clicava, assistia, comprava etc.) com um item específico. Para ter mais informações, consulte Dados de impressões.

Os conjuntos de dados a seguir são opcionais e podem melhorar as recomendações:

  • Conjunto de dados de usuários — O Amazon Personalize pode usar dados em seu conjunto de dados de usuários para entender melhor seus usuários e seus interesses. Você também pode usar dados em um conjunto de dados de usuários para filtrar recomendações. Para obter informações sobre os dados de usuários que podem ser importados, consulte conjunto de dados de usuários.

  • Conjunto de dados de itens — O Amazon Personalize pode usar dados em seu conjunto de dados de itens para identificar conexões e padrões em seu comportamento. Isso ajuda o Amazon Personalize a entender os usuários e os respectivos interesses. Você também pode usar dados em um conjunto de dados de Itens para filtrar recomendações. Para obter informações sobre os dados de itens que podem ser importados, consulte conjunto de dados de itens.

Propriedades e hiperparâmetros

A fórmula User-Personalization tem as seguintes propriedades:

  • Nome: aws-user-personalization

  • Fórmula nome do recurso da Amazon (ARN)arn:aws:personalize:::recipe/aws-user-personalization

  • ARN do algoritmoarn:aws:personalize:::algorithm/aws-user-personalization

Para ter mais informações, consulte Escolher uma fórmula.

A tabela a seguir descreve os hiperparâmetros da fórmula User-Personalization. Um hiperparâmetro é um parâmetro de algoritmo que pode ser ajustado para melhorar o desempenho do modelo. Os hiperparâmetros do algoritmo controlam o desempenho do modelo. Os hiperparâmetros de caracterização controlam como filtrar os dados a serem usados no treinamento. O processo de escolher o melhor valor para um hiperparâmetro é chamado de otimização de hiperparâmetros (HPO). Para ter mais informações, consulte Hiperparâmetros e HPO.

A tabela também fornece as seguintes informações para cada hiperparâmetro:

  • Intervalo: [limite inferior, limite superior]

  • Tipo de valor: inteiro, contínuo (float), categórico (booliano, lista, string)

  • HPO ajustável: o parâmetro pode participar da HPO?

Nome Descrição
Hiperparâmetros de algoritmo
hidden_dimension

O número de variáveis ocultas usadas no modelo. Variáveis ocultas recriam o histórico de compras dos usuários e as estatísticas de itens para gerar pontuações de classificação. Especifique um número maior de dimensões ocultas quando o conjunto de dados de interações com itens incluir padrões mais complicados. Usar mais dimensões ocultas requer um conjunto de dados maior e mais tempo para processamento. Para decidir sobre o valor ideal, use HPO. Para usar a HPO, defina performHPO true ao chamar as operações CreateSolution e CreateSolutionVersion.

Valor padrão: 149

Intervalo: [32, 256]

Tipo de valor: inteiro

Ajustável de HPO: sim

bptt

Determina se é necessário usar a técnica de propagação retroativa ao longo do tempo. A propagação retroativa ao longo do tempo é uma técnica que atualiza pesos em algoritmos baseados em rede neural recorrente. Use o bptt para créditos de longo prazo a fim de conectar prêmios atrasados a eventos iniciais. Por exemplo, um prêmio atrasado pode ser uma compra feita após vários cliques. Um evento inicial pode ser um clique inicial. Mesmo dentro dos mesmos tipos de evento, como um clique, é uma boa ideia considerar efeitos de longo prazo e maximizar os prêmios totais. Para considerar efeitos de longo prazo, use valores bptt maiores. O uso de um valor bptt maior exige conjuntos de dados maiores e mais tempo para processamento.

Valor padrão: 32

Intervalo: [2, 32]

Tipo de valor: inteiro

Ajustável de HPO: sim

recency_mask

Determina se o modelo deve utilizar as tendências de popularidade mais recentes no conjunto de dados de interações com itens. As tendências de popularidade mais recentes podem incluir mudanças repentinas nos padrões subjacentes de eventos de interação. Para treinar um modelo que posiciona mais peso sobre eventos recentes, defina recency_mask como true. Para treinar um modelo que pese igualmente todas as interações passadas, defina recency_mask como false. Para obter boas recomendações usando um peso igual, talvez seja necessário um conjunto de dados de treinamento maior.

Valor padrão: True

Intervalo: True ou False

Tipo de valor: booliano

Ajustável de HPO: sim

Hiperparâmetros de caracterização
min_user_history_length_percentile

O percentil mínimo dos comprimentos dos históricos de usuários para incluir no treinamento do modelo. Tamanho do histórico é a quantidade total de dados sobre um usuário. Use min_user_history_length_percentile para excluir uma porcentagem de usuários com históricos breves. Os usuários com um histórico breve geralmente mostram padrões baseados na popularidade dos itens em vez das necessidades ou dos desejos pessoais do usuário. Removê-los pode treinar modelos com mais foco nos padrões subjacentes nos dados. Escolha um valor apropriado depois de revisar os comprimentos de histórico dos usuários usando um histograma ou uma ferramenta semelhante. Recomendamos definir um valor que retenha a maioria dos usuários, mas remova os casos de borda.

Por exemplo, a definição de min_user_history_length_percentile to 0.05 e max_user_history_length_percentile to 0.95 inclui todos os usuários, exceto aqueles com comprimentos de histórico nos 5% inferiores ou superiores.

Valor padrão: 0.0

Intervalo: [0,0, 1,0]

Tipo de valor: flutuante

HPO ajustável: não

max_user_history_length_percentile

O percentil máximo dos comprimentos dos históricos de usuários a ser incluído no treinamento do modelo. Tamanho do histórico é a quantidade total de dados sobre um usuário. Use max_user_history_length_percentile para excluir uma porcentagem de usuários com históricos longos, pois os dados desses usuários tendem a conter ruído. Por exemplo, um robô pode ter uma longa lista de interações automatizadas. A remoção desses usuários limita o ruído no treinamento. Escolha um valor apropriado depois de revisar os comprimentos de histórico dos usuários usando um histograma ou uma ferramenta semelhante. Recomendamos definir um valor que retenha a maioria dos usuários, mas remova os casos de borda.

Por exemplo, a definição de min_user_history_length_percentile to 0.05 e max_user_history_length_percentile to 0.95 inclui todos os usuários, exceto aqueles com comprimentos de histórico nos 5% inferiores ou superiores.

Valor padrão: 0.99

Intervalo: [0,0, 1,0]

Tipo de valor: flutuante

HPO ajustável: não

Hiperparâmetros de configuração da campanha de exploração de itens
exploration_weight

Determina com que frequência as recomendações incluem itens com menos dados de interações com itens ou menor relevância. Quanto mais próximo o valor estiver de 1,0, maior será a exploração. Em zero, nenhuma exploração ocorre, e as recomendações são baseadas nos dados atuais (relevância). Para obter mais informações, consulte CampaignConfig.

Valor padrão: 0.3

Intervalo: [0,0, 1,0]

Tipo de valor: flutuante

HPO ajustável: não

exploration_item_age_cut_off

Especifique a idade máxima do item em dias desde a última interação em todos os itens no conjunto de dados de interações com itens. Isso define o escopo da exploração do item com base na idade do item. O Amazon Personalize determina a idade do item com base no carimbo de data e hora de criação ou, caso esses dados não existam, nos dados das interações com itens. Para obter mais informações sobre como o Amazon Personalize determina a idade do item, consulte Dados de carimbo de data e hora de criação.

Para aumentar os itens que o Amazon Personalize considera durante a exploração, insira um valor maior. O mínimo é 1 dia e o padrão é 30 dias. As recomendações podem incluir itens mais antigos do que o limite de idade do item especificado. Isso ocorre porque esses itens são relevantes para o usuário, e a exploração não os identificou.

Valor padrão: 30.0

Intervalo: flutuantes positivos

Tipo de valor: flutuante

HPO ajustável: não

Treinamento com a fórmula User-Personalization (console)

Para usar a fórmula User-Personalization para gerar recomendações no console, primeiro treine uma nova versão da solução usando a fórmula. Em seguida, implante uma campanha usando a versão da solução e use a campanha para obter recomendações.

Treinar uma nova versão da solução com a fórmula User-Personalization (console)
  1. Acesse https://console.aws.amazon.com/personalize/home, abra o console do Amazon Personalize e faça login na sua conta.

  2. Crie um grupo de conjuntos de dados personalizados com um novo esquema e carregue seu conjunto de dados com dados de impressões. Opcionalmente, inclua CREATION_TIMESTAMP e dados de Metadados de texto não estruturados no conjunto de dados de itens para que o Amazon Personalize possa calcular com mais precisão a idade de um item e identificar itens frios.

    Para obter mais informações sobre como importar dados, consulte Etapa 2: preparar e importar dados.

  3. Na página Grupos de conjuntos de dados, escolha o novo grupo de conjuntos de dados que contém o conjunto de dados ou conjuntos de dados com dados de impressões.

  4. No painel de navegação, escolha Soluções e fórmulas e escolha Criar solução.

  5. Na página Criar solução, em Nome da solução, insira o nome da sua nova solução.

  6. Em Tipo de solução, escolha Recomendação de item para obter recomendações de itens para seus usuários.

  7. Para Receita, escolha aws-user-personalization. A seção Configuração da solução aparece com várias opções de configuração.

  8. Na configuração adicional, se o conjunto de dados de interações do item tiver as colunas EVENT_TYPE ou as colunas EVENT_TYPE e EVENT_VALUE, use opcionalmente os campos Tipo de evento e Limite de valor do evento para escolher os dados de interações do item que o Amazon Personalize usa ao treinar o modelo. Para obter mais informações, consulte Selecionar os dados de interações com itens utilizados para treinamento.

  9. Opcionalmente, configure hiperparâmetros para sua solução. Para obter uma lista das propriedades e hiperparâmetros da fórmula User-Personalization, consulte Propriedades e hiperparâmetros.

  10. Escolha Criar e treinar a solução para iniciar o treinamento. A página Painel é exibida.

    Você pode navegar até a página de detalhes da solução para acompanhar o andamento do treinamento na seção Versões da solução. Quando o treinamento for concluído,o status será Ativo.

Criar uma campanha e receber recomendações (console)

Quando o status da versão da solução for Ativo, você estará pronto para criar sua campanha e receber recomendações da seguinte forma:

  1. Na página de detalhes da solução ou na página Campanhas, escolha Criar nova campanha.

  2. Na página Criar nova campanha, para Detalhes da campanha, forneça as seguintes informações:

    • Nome da campanha: insira o nome da campanha. O texto que você insere aqui aparece no painel Campanha e na página de detalhes.

    • Solução: escolha a solução que você acabou de criar.

    • ID da versão da solução: escolha a ID da versão da solução que você acabou de criar.

    • Transações mínimas provisionadas por segundo: defina as transações mínimas provisionadas por segundo compatíveis com o Amazon Personalize. Para obter mais informações, consulte a operação CreateCampaign.

  3. Para Configuração da campanha, forneça as seguintes informações:

    • Peso da exploração: configure quanto explorar. Quando as recomendações incluírem itens com menos dados de interações ou menor relevância com maior frequência, você deve especificar uma exploração maior. Quanto mais próximo o valor estiver de 1, maior será a exploração. Em zero, nenhuma exploração ocorre, e as recomendações são baseadas nos dados atuais (relevância).

    • Limite de idade do item de exploração: insira a idade máxima do item, em dias desde a última interação, para definir o escopo da exploração do item. Para aumentar a quantidade de itens que o Amazon Personalize considera durante a exploração, insira um valor maior.

      Por exemplo, se você inserir dez, somente itens com dados de interações com itens dos dez dias desde a última interação no conjunto de dados serão utilizados durante a exploração.

      nota

      As recomendações podem incluir itens sem dados de interações com itens de fora desse período. Isso ocorre porque esses itens são relevantes para os interesses do usuário, e a exploração não foi necessária para identificá-los.

  4. Escolha Create campaign (Criar campanha).

  5. Na página de detalhes da campanha, quando o status da campanha é Ativo, você pode usar a campanha para obter recomendações e registrar impressões. Para obter mais informações, consulte Etapa 5: Obter recomendações em "Conceitos básicos".

    O Amazon Personalize atualiza automaticamente a versão da solução mais recente a cada duas horas para incluir novos dados. Sua campanha usa automaticamente a versão atualizada da solução. Para obter mais informações, consulte Atualizações automáticas.

    Para atualizar manualmente a campanha, primeiro crie e treine uma nova versão da solução usando o console ou a operação CreateSolutionVersion, com o trainingMode definido comoupdate. Em seguida, atualize manualmente a campanha na página Campanha do console ou usando a operação UpdateCampaign.

    nota

    O Amazon Personalize não atualiza automaticamente as versões da solução que você criou antes de 17 de novembro de 2020.

Treinamento com a fórmula User-Personalization (SDK do Python)

Depois de criar um grupo de conjuntos de dados e carregar seus conjuntos de dados com dados de impressões, você pode treinar uma solução com a fórmula User-Personalization. Opcionalmente, inclua CREATION_TIMESTAMP e dados de Metadados de texto não estruturados no conjunto de dados de itens para que o Amazon Personalize possa calcular com mais precisão a idade de um item e identificar itens frios. Para obter mais informações sobre a criação de grupos de conjuntos de dados e o upload de dados de treinamento, consulte Esquemas.

Para treinar uma solução com a receita de personalização do usuário usando o SDK AWS
  1. Crie uma nova solução usando o método create_solution.

    Substitua solution name pelo nome da solução e dataset group arn pelo nome do recurso da Amazon (ARN) do grupo do conjunto de dados.

    import boto3 personalize = boto3.client('personalize') print('Creating solution') create_solution_response = personalize.create_solution(name = 'solution name', recipeArn = 'arn:aws:personalize:::recipe/aws-user-personalization', datasetGroupArn = 'dataset group arn', ) solution_arn = create_solution_response['solutionArn'] print('solution_arn: ', solution_arn)

    Para obter uma lista das propriedades e hiperparâmetros da aws-user-personalization receita, consultePropriedades e hiperparâmetros.

  2. Crie uma nova versão da solução com os dados de treinamento atualizados e defina trainingMode como FULL usando o snippet de código a seguir. Substitua o solution arn pelo ARN da solução.

    import boto3 personalize = boto3.client('personalize') create_solution_version_response = personalize.create_solution_version(solutionArn = 'solution arn', trainingMode='FULL') new_solution_version_arn = create_solution_version_response['solutionVersionArn'] print('solution_version_arn:', new_solution_version_arn)
  3. Quando o Amazon Personalize terminar de criar sua versão da solução, crie sua campanha com os seguintes parâmetros:

    • Forneça um novo campaign name e o solution version arn gerado na etapa 2.

    • Modifique o hiperparâmetro de configuração de exploração do item explorationWeight para configurar quanto explorar. Itens com menos dados de interações ou menor relevância são recomendados com maior frequência dependendo da proximidade em relação ao valor 1,0. O valor padrão é 0,3.

    • Modifique o parâmetro do hiperparâmetro da configuração de exploração do item explorationItemAgeCutOff para fornecer a duração máxima, em dias, em relação à interação mais recente, para a qual os itens devem ser explorados. Quanto maior o valor, mais itens são considerados durante a exploração.

    Use o seguinte snippet de Python para criar uma nova campanha com ênfase na exploração com limite de exploração em 30 dias. Criar uma campanha geralmente leva alguns minutos, mas pode demorar mais de uma hora.

    import boto3 personalize = boto3.client('personalize') create_campaign_response = personalize.create_campaign( name = 'campaign name', solutionVersionArn = 'solution version arn', minProvisionedTPS = 1, campaignConfig = {"itemExplorationConfig": {"explorationWeight": "0.3", "explorationItemAgeCutOff": "30"}} ) campaign_arn = create_campaign_response['campaignArn'] print('campaign_arn:', campaign_arn)

    Com User-Personalization, o Amazon Personalize atualiza automaticamente a versão da solução a cada duas horas para incluir novos dados. Sua campanha usa automaticamente a versão atualizada da solução. Para obter mais informações, consulte Atualizações automáticas.

    Para atualizar manualmente a campanha, primeiro crie e treine uma nova versão da solução usando o console ou a operação CreateSolutionVersion, com o trainingMode definido comoupdate. Em seguida, atualize manualmente a campanha na página Campanha do console ou usando a operação UpdateCampaign.

    nota

    O Amazon Personalize não atualiza automaticamente as versões da solução que você criou antes de 17 de novembro de 2020.

Obter recomendações e gravar impressões (SDK para Python (Boto3))

Quando sua campanha é criada, você pode usá-la para obter recomendações para um usuário e registrar impressões. Para obter informações sobre como obter recomendações em lote usando os AWS SDKs, consulteCriação de um trabalho de inferência em lote (AWS SDKs).

Para obter recomendações e registrar impressões
  1. Chame o método get_recommendations. Altere o campaign arn para o ARN da sua nova campanha e user id para o ID do usuário.

    import boto3 rec_response = personalize_runtime.get_recommendations(campaignArn = 'campaign arn', userId = 'user id') print(rec_response['recommendationId'])
  2. Crie um novo rastreador de eventos para enviar PutEvents solicitações. Substitua event tracker name pelo nome do seu rastreador de eventos e dataset group arn pelo ARN do seu grupo de conjuntos de dados.

    import boto3 personalize = boto3.client('personalize') event_tracker_response = personalize.create_event_tracker( name = 'event tracker name', datasetGroupArn = 'dataset group arn' ) event_tracker_arn = event_tracker_response['eventTrackerArn'] event_tracking_id = event_tracker_response['trackingId'] print('eventTrackerArn:{},\n eventTrackingId:{}'.format(event_tracker_arn, event_tracking_id))
  3. Use o recommendationId da etapa 1 e o event tracking id da etapa 2 para criar uma nova solicitação PutEvents. Essa solicitação registra os novos dados de impressão da sessão do usuário. Altere o user id para o ID do usuário.

    import boto3 personalize_events.put_events( trackingId = 'event tracking id', userId= 'user id', sessionId = '1', eventList = [{ 'sentAt': datetime.now().timestamp(), 'eventType' : 'click', 'itemId' : rec_response['itemList'][0]['itemId'], 'recommendationId': rec_response['recommendationId'], 'impression': [item['itemId'] for item in rec_response['itemList']], }] )

Exemplo de caderno Jupyter

Para obter um exemplo de caderno Jupyter que mostre como usar a fórmula User-Personalization, consulte User-Personalization com exploração.