Ir para o conteúdo

Os sistemas de recomendação estão por toda a parte nos auxiliando no dia a dia a encontrar itens de nosso interesse, sejam eles filmes, músicas ou produtos. Esses sistemas aprendem sobre os nossos interesses com base no nosso comportamento, analisando produtos ou conteúdos com os quais interagimos ou deixamos de interagir. Inclusive, às vezes até nos surpreendemos com a qualidade das recomendações, parecendo que os algoritmos leram a nossa mente.

Por que desenvolver um sistema de recomendação?

O uso desses sistemas pode ser um forte aliado às estratégias das empresas atualmente. Em um e-commerce, por exemplo, os sistemas de recomendação podem auxiliar clientes a encontrar os produtos que desejam e, ainda, explorar novas possibilidades, gerando um impacto positivo na taxa de conversão e receita do e-commerce. Além disso, pessoas que recebem e interagem com recomendações em um e-commerce geram mais visualizações de páginas e, consequentemente, permanecem mais tempo no site. As recomendações também melhoram a experiência no e-commerce, aumentando a taxa de retenção de clientes.

Pesquisas indicam que pessoas que interagem com recomendações possuem 4,5 mais chances de adicionar esses itens ao carrinho e completar a compra. Clientes com esse perfil também têm uma taxa de conversão 70% maior. Quem interage com as recomendações mas não completa a compra tem 20% mais chances de retornar ao site futuramente [1]. É claro que esses indicadores podem variar para cada negócio e caso de uso, mas mostram o potencial desses sistemas.

Os sistemas de recomendação também automatizam o processo de criação de vitrines personalizadas [2]. Com isso, não é necessário criar manualmente regras fixas para fornecer recomendações relevantes, pois esses sistemas podem aprender sozinhos sobre quais produtos recomendar e para quem. Além disso, clientes que acessam o e-commerce não precisam avaliar todo o catálogo de produtos para encontrar itens relevantes.

O que é o AWS Personalize?

Apesar de todos os benefícios mencionados, implementar esses sistemas pode ser uma tarefa complicada e demorada, exigindo bastante esforço e várias horas de trabalho. Atualmente, grande parte dos sistemas de recomendação utiliza técnicas de Machine Learning, que aprendem automaticamente sobre o comportamento dos usuários. Desta forma, a implementação demanda conhecimentos sobre essa área da Inteligência Artificial.

O Personalize [3] é um serviço disponibilizado pela Amazon Web Services (AWS), que auxilia auxilia no processo de criação e implementação de sistemas de recomendação. Esse serviço abstrai todo o processo de treinamento dos modelos de Machine Learning, desde a seleção dos melhores atributos para a criação desses modelos até a disponibilização deles para uso em produção.

Ele possui duas principais estratégias para geração de recomendações, as recomendações em tempo real e em lote. As recomendações em tempo real são indicadas para aplicações com as quais os usuários interagem diretamente e demandam recomendações em tempo real conforme o uso, como e-commerces, por exemplo. As recomendações em lote são indicadas para aplicações em que os usuários não interagem de forma ativa, como o disparo de campanhas de marketing por e-mail. Nesse último cenário, os usuários apenas recebem as recomendações de forma passiva por e-mail.

Dentro desses cenários existem vários casos de uso. O serviço possui diversos algoritmos chamados de recipes. Dentre eles, podem ser criados sistemas para recomendar itens populares por visualização ou compra, itens frequentemente comprados juntos e itens assistidos em sequência para o caso de vídeos e filmes. Além disso, o serviço também possui algoritmos de segmentação de itens e usuários com base em similaridade.

Também existem algoritmos mais robustos para geração de recomendações personalizadas com base em comportamento dos usuários e similaridade de itens. Esses algoritmos aprendem sobre o interesse dos usuários automaticamente com base em sessões ao longo do tempo, analisando os itens com os quais os usuários interagiram. Esses algoritmos mais robustos permitem a geração de uma lista de recomendações e a reordenação de uma lista de itens predefinidos com base no interesse dos usuários. Nesses cenários é possível definir se o modelo deve considerar o fator temporal, entendendo que o interesse dos usuários pode variar ao longo do tempo.

O Personalize possui suporte para conjuntos de dados contendo metadados de usuários, metadados de itens e interações entre usuários e itens, incluindo dados de contexto que podem variar entre diferentes interações de um mesmo usuário com um determinado item. Cada um desses algoritmos demanda determinados tipos de dados, dependendo do caso de uso.

A recomendação de itens baseada apenas em similaridade depende apenas dos metadados de itens, enquanto os algoritmos mais robustos dependem dos três conjuntos de dados para atingir melhores resultados. Porém, é necessário o desenvolvimento de pipelines adicionais para a ingestão de dados em tempo real ou em lote periodicamente conforme necessidade.

Como criar e configurar modelos de recomendação no AWS Personalize?

Os modelos de recomendação são representados por soluções no Personalize. Inicialmente é necessário criar um grupo de conjuntos de dados onde serão carregados os dados a serem usados pelas soluções (itens, usuários e/ou interações). Após isso, as soluções podem ser criadas.

Cada solução possui apenas uma recipe. Ou seja, uma solução será focada em uma estratégia de recomendação, tal como recomendação personalizada de acordo com o comportamento dos usuários, similaridade de itens, itens populares, entre outros. Porém, um grupo de conjuntos de dados pode ter várias soluções.

Na criação de uma solução, além da recipe, é possível configurar alguns parâmetros usados pelo modelo. Em algoritmos que consideram o fator temporal nas interações de usuários pode-se ativar o recurso de recência, que atribui um peso maior para as interações mais recentes dos usuários. Desta forma, os algoritmos conseguem aprender as mudanças de interesses dos usuários ao longo do tempo. Também é possível desconsiderar históricos dos usuários com poucas ou muitas interações.

Além disso, podemos indicar para o modelo quais eventos devem ser considerados no treinamento. Por exemplo, no caso de um streaming de vídeo, o modelo pode considerar apenas eventos onde os usuários assistiram pelo menos metade do vídeo ou filme. Assim, serão desconsiderados os casos onde usuários visualizaram apenas um pequeno trecho do filme ou vídeo, eliminando possíveis ruídos que podem atrapalhar o aprendizado do modelo.

Outros recursos interessantes das soluções são exploração e promoção. Naturalmente, as listas de recomendações são compostas por itens de interesse dos usuários. O recurso de exploração, no entanto, permite que o modelo de recomendação teste a performance de novas recomendações, como, por exemplo, itens novos com os quais os usuários ainda não interagiram. Com isso, o sistema fornece novas oportunidades de caminhos para os usuários e evita as famosas bolhas de conteúdo, onde os usuários recebem apenas recomendações com uma mesma característica.

O recurso de promoção inclui itens com características predefinidas em uma lista de recomendações tais como produtos de uma determinada categoria ou filmes de um determinado gênero. Por exemplo, um serviço de streaming pode promover vídeos patrocinados em uma lista de recomendações. Para ambos os recursos de exploração e promoção, é necessário definir um percentual que representará quantos itens serão incluídos na lista final de recomendações para cada abordagem. No exemplo do streaming de vídeos, pode-se definir que 30% da lista de recomendações será composta por vídeos patrocinados.

O Personalize também permite a criação de filtros que definem quais itens devem ser incluídos ou excluídos da lista de recomendações. Os filtros podem excluir produtos já comprados ou sem estoque. Outro exemplo de filtro é a remoção de recomendações de filmes inadequados para usuários de determinadas faixas etárias. Também existem os filtros inclusivos que possibilitam a recomendação apenas de filmes de determinada categoria ou produtos em uma faixa de valor específica.

Após essas configurações devemos criar uma versão de solução, que consiste em um modelo de Machine Learning propriamente dito. Sempre que for necessário atualizar o modelo, podemos criar uma nova versão sem necessidade de repetir as configurações realizadas anteriormente. Ao final da criação da versão de solução, o Personalize apresenta a quantidade de horas utilizadas para o treinamento do modelo, bem como as métricas obtidas na validação do modelo treinado.

O último passo consiste em disponibilizar esse modelo para uso em produção. No caso de recomendações em lote, podem ser criados jobs para a realização dessas recomendações em momentos específicos. Para recomendações em tempo real, deve ser criada uma campanha. As campanhas são endpoints para Application Programming Interfaces (APIs) nos quais os modelos ficam disponíveis e podem ser consumidos através de requisições. O Personalize possui uma documentação bastante completa que detalha todos os recursos e parametrizações disponíveis no serviço [4].

Conclusão

Em resumo, sistemas de recomendação podem ser aliados às estratégias de vários negócios. Além de melhorar a experiência de clientes, também podem gerar bastante valor para diferentes tipos de negócio através do aumento na taxa de conversão, receita e retenção de clientes.

Nesse sentido, o AWS Personalize é uma excelente ferramenta que facilita a implementação de sistemas de recomendação sem demandar muito esforço e horas de trabalho. A ferramenta é bastante completa, disponibilizando diversos recursos e possibilidades de parametrização para atender bem cada caso de uso.

Referências

[1] The Power of Product Recommendations: 30 Must-Know Statistics for 2022 (https://blog.clerk.io/product-recommendations-statistics-2022)

[2] How recommender systems fire up ecommerce conversion rate (https://www.smarthint.co/how-recommender-systems-fire-up-ecommerce-conversion-rate/)

[3] AWS Personalize (https://aws.amazon.com/personalize/)

[4] AWS Personalize Developer Guide (https://docs.aws.amazon.com/personalize/latest/dg/what-is-personalize.html)

Outras publicações