sexta-feira, 1 de dezembro de 2017

Desafios e questões em aberto para sistemas de recomendação

A grande vantagem de um sistema de recomendação é diminuir as opções de escolha quando a pessoa não tem tempo ou informações para comparar as opções.
Apesar do crescente uso deste tipo de sistema e da presença pervasiva em nosso dia a dia, ainda há muita pesquisa a ser feita.
Este artigo fala dos desafios recentes e de problemas ainda não bem solucionados pelos sistemas de recomendação.

Observações iniciais: neste texto vou me referir muito a termos genéricos tais como:
- produto: mas é possível fazer recomendações também de serviços, empresas, pessoas, páginas na web, cidades, atrações turísticas, restaurantes, pratos de comida e informações;
- cliente: representa a pessoa ou entidade que irá receber a recomendação e sobre a qual o sistema precisará coletar informações para montar um perfil de interesse. Não necessariamente é alguém que compra ou paga por algo.

Coleta implícita de dados sobre clientes

A coleta explícita envolve perguntar aos usuários ou clientes. A implícita é feita por observação. O grande desafio hoje em dia é coletar dados sobre clientes para criar a visão 360 graus sem incomodá-lo e sem invadir a privacidade (sobre isto, tem um tópico no final deste texto).
A coleta implícita é boa porque não atrapalha a tarefa do cliente nem toma seu tempo. Isso inclui observar o que o cliente está fazendo, o que está olhando, onde está clicando, que textos está enviando ou postando, etc.
O desafio primeiro é estabelecer que ações do cliente são importantes para a recomendação e o quanto (isto tem a ver com perfil dinâmico explicado a seguir).
O segundo desafio é como coletar os dados sem invadir sistemas.
Depois da coleta, vem a inferência. Exemplo: se o cliente comprou vários alimentos congelados, infere-se que ele tenha um freezer em casa.

Perfil dinâmico de clientes

Em sistemas de recomendação, o perfil do cliente representa seus interesses, gostos, hábitos e preferências, além de características demográficas. Se o cliente clica várias vezes em produtos tipo “geladeira”, então é porque ele tem interesse neste tipo de produto. Se o cliente clica uma vez é diferente de ele clicar 5 vezes.
Então o normal é utilizar um esquema de pontos para representar o grau de interesse de um cliente em relação a um item ou a uma classe de itens (classes são discutidas a seguir).
Veja a figura a seguir: o tamanho da barra representa o quanto um cliente se interesse por uma classe.




Além disto, o sistema de recomendação deve perceber quando o interesse diminuiu ou acaba. Se um cliente passa uma semana toda analisando produtos de uma classe, seu interesse é grande nesta classe. Se na semana seguinte, ele não demonstrar mais interesse, a pontuação da classe deve diminuir (talvez ele até já tenha comprado o produto e o sistema não saiba).
O primeiro desafio é estabelecer a pontuação para cada tipo de ação (o grau de interesse). Por exemplo, clicar num produto é uma coisa; clicar nas fotos e na descrição detalhada já demonstra mais interesse.
O segundo desafio é definir a meia-vida do interesse, ou seja, o quanto deve decair a pontuação no perfil a cada período de tempo (horas ou dias).

Tipos de classes para interesse e perfil do cliente

Em sistemas baseados em conteúdo (content-based), o perfil do cliente é composto de classes. Em geral, as classes representam tipos de produtos (“brick”), tais como geladeira, TV, notebook, celular, carro, viagens, etc.
Entretanto, é necessário utilizar também classes mais específicas como marcas, cor, tamanho e detalhes técnicos (voltagem, tamanho de memória, etc.).
Também podem ser usadas classes temporárias tais como “frete grátis” e “promoção”. Há clientes que só se interessam por produtos neste tipo de classe.
O desafio é estabelecer uma taxonomia ou ontologia para descrever os produtos ou itens.
Outro desafio é em relação a preços de produtos. Se um cliente comprar numa geladeira de 3 mil reais, ele vai se interessar mais por restaurantes caros ou baratos ? Uma solução possível é criar faixas de valores (caro, médio e barato) para associar ao perfil do cliente.

Cold Start – clientes sem perfil

Podemos usar técnicas de recomendação que não precisam saber quem é o cliente. Por exemplo, a técnica dos Top N (mais-mais) usa a sabedoria da massas (por exemplo, os mais vendidos).
A lista de técnicas está em:

Técnicas de filtragem colaborativa ou baseada em conteúdo utilizam o perfil do cliente para gerar recomendações. O desafio é fazer recomendações quanto não se tem informações sobre o cliente.
Na verdade, talvez não se tenha informações detalhadas, mas alguma informação é necessária.
Por exemplo, podemos coletar informações de alguém que entra num site, analisando que páginas ele está visitando na seção. Mesmo que por pouco tempo, ali teremos alguns dados para formar um perfil inicial e gerar recomendações na hora mesmo.
Outra possibilidade é cruzar sistemas, ou seja, coletar dados do cliente a partir de outros sistemas (como por exemplo, redes sociais).

Recomendar somente o que é novo ?

Se Spotify e iTunes recomendarem somente as músicas novas (lançamentos), talvez ninguém fique sabendo de músicas mais antigas. E há muitas boas que merecem ser ouvidas.
Se uma loja de games só recomendar os lançamentos, ficará com os jogos antigos encalhados.
O desafio é persuadir os clientes que os itens antigos também podem ser bons.

Explicar a origem das Recomendações

Os sistemas deveriam explicar como chegaram até as recomendações. Isto gera confiança (trust) no cliente. O sistema deve explicar de forma leiga e de fácil entendimento o algoritmo usado (exemplos: “clientes que compraram isto, também compraram aquilo”; “talvez você goste disto, porque pessoas parecidas com você também gostaram”).

Origem das Recomendações: grupos X indivíduos, massa X especialistas

A técnica dos Top N (ex. mais vendidos) usa informações da coletividade. Mas todas as pessoas são iguais. Se o sistema apresenta a música mais ouvida, ele não está fazendo distinção de quem foram as pessoas que mais ouviram.
Uma maneira de resolver o problema é com a técnica de filtragem colaborativa. Outra possibilidade é separar por grupos. Exemplos: música mais ouvida no Brasil, aplicativo mais baixado entre pessoas de 20 a 30 anos, computador mais adquirido por empresas de design. 

Relevância Temporal

Durante 3 anos, uma farmácia recomendou fraldas toda semana a um cliente. E este sempre aceitou. Numa certa semana, ele não veio comprar fraldas. Mas a empresa continuou recomendando. Na semana seguinte, também não veio. E assim por diante. Quando a empresa deve parar de recomendar.
Já falamos antes do perfil dinâmico. Esta pode ser uma solução.
A outra é incorporar um tempo de validade para as recomendações ou a sazonabilidade. Não é porque um cliente comprou sorvete todo dia entre dezembro e fevereiro que a empresa deve continuar recomendando sorvete durante o ano todo.

Gostos ou Necessidades Ad Hoc

Um cliente só compra discos de Jazz. Certo dia, ele comprou um disco de Pagode. Isto deve ser incorporado ao seu perfil ? Uma possibilidade é incorporar esta classe de interesse mas com um grau pequeno (como discutido antes no perfil dinâmico). Outra possibilidade é os sistemas permitirem ao cliente dizer “comprei para presente”, “não coloque isto no meu perfil” e coisas assim.

Recomendar de novo o mesmo item?

Se o cliente não aceitou a primeira vez uma recomendação, talvez ele possa aceitar mais tarde. Quantas recusas indicam que ele nunca mais vai querer ? Os sistemas deveriam permitir ao cliente dizer explicitamente (ratings) coisas como “nunca mais me recomende de novo”, “hoje eu não quero”, “já tenho este produto”.

Se o cliente já comprou, nunca mais recomenda de novo o mesmo item ?

Se um cliente comprar uma TV, ficaria muito chato recomendar para ele o mesmo produto na semana seguinte (pior ainda se for com menor preço).
Mas talvez depois de 4 anos ele queira comprar outra TV, mais moderna.
O mesmo produto deve “morrer” no perfil do cliente, mas a “classe” pode “ressuscitar” depois de um tempo.
E perfume ? Tem pessoas que compram sempre o mesmo perfume. Então recomendar depois de 3 meses o mesmo perfume que o cliente comprou não é problema.
E cerveja ? Se um cliente comprou cerveja hoje, amanhã posso recomendar a mesma cerveja por preço mais baixo ?

Relembrar Recomendações

Hoje o usuário não aceitou a recomendação. Amanhã pode querê-la. Talvez fosse bom haver funções de recuperação de recomendações feitas pelo sistema (cuidando com a validade das ofertas).

Mesmas recomendações para todos ?

Num engarrafamento, várias pessoas pedem recomendação de caminhos alternativos. Se todas receberem a mesma recomendação, as vias alternativas ficarão também congestionadas.
Se uma loja recomendar o mesmo produto para vários clientes, talvez fique sem estoque e torne insatisfeito o cliente que foi na loja atrás deste produto.
Um desafio para os sistemas de recomendação é o balanceamento de carga, como já é feito em sistemas distribuídos para que os acessos a dados sejam distribuídos equilibradamente por vários servidores diferentes.

Stigmergia

Stigmergia significa a comunicação entre seres vivos através do meio físico, e muitas vezes de forma involuntária. Funciona com as formigas, que deixam feromônios pelo caminho após encontrarem comida. Funciona quando queremos atravessar um mato e não conhecemos o caminho; basta seguir pelo chão onde a vegetação está mais pisada.
Ao recomendar livros técnicos ou filmes que possuem continuação, os sistemas deveriam recomendar os itens numa ordem. Esta ordem pode ser inferida pela sabedoria das massas (em que ordem a maioria das pessoas compra livros ou assiste a filmes e séries).

Interromper ou não o trabalho do usuário

Se o sistema percebe que o cliente está procurando por algo, deve-se interrompê-lo para avisar e poupar-lhe tempo ?
Ou o sistema deve lembrá-lo depois (ex. “lembra aquele dia que você estava fazendo assim...”).

Recomendação solicitada ou espontânea ?

Lembra o Assistente do Office, aquele clip que interrompia nosso trabalho para dar dicas furadas ?
Agora imagine a seguinte situação: uma loja de lingerie manda uma carta agradecendo ao seu melhor cliente pelas compras feitas. A esposa dele lê a carta e se dá conta que nunca recebeu nenhum presente do marido. Tá feita a confusão.
Sistemas de recomendação deveriam incorporar o chamado Marketing de Permissão (opt-in x opt-out).

(sobre tipos de marketing ver meu livro no link abaixo)

Quantos itens recomendar

Qual a quantidade ideal de itens a serem recomendados ? O Google já escolheu um número baixo, em torno de 3.
Se o objetivo do sistema de recomendação é diminuir a sobrecarga de opções, bombardear o cliente com muitas informações só vai piorar a situação.  
Talvez o sistema possa permitir ao cliente configurar ou explicitamente informar os seus limiares de relevância.

Recomendação para Grupos

Uma das áreas recentes de pesquisa é combinar perfis para fazer recomendações para grupos. Como um agente de viagem pode propor um roteiro turístico para um grupo onde haja pessoas de 3ª idade, jovens, casais sem filhos, adolescentes, solteiros de meia idade ... ?
Se alguém gosta de filmes violentos, não significa que devemos recomendar filmes violentos toda vez que ele vá ao cinema. E se ele for com a namorada que gosta de filmes românticos ?

Recomendações Sensíveis ao Contexto

O desafio atual com o crescimento da Internet das Coisas (IoT), dispositivos móveis, GPS, etc. é entender o contexto do cliente para melhorar as recomendações (context awareness).
Por exemplo, se o cliente pede para ser avisado quando seu time fizer um gol, o aviso deve ser diferente se ele estivar numa reunião ou se ele estiver na academia.
Além disto, os conteúdos multimídia devem ser adaptados para o tipo de dispositivo do cliente, dependendo do tamanho de tela, espaço em memória, velocidade da rede de transmissão de dados, etc.

Privacidade

O World Wide Web Consortium (W3C) está propondo o protocolo P3P - Platform for Privacity Preferences. Com ele, cada pessoa poderá estabelecer o que permite que os sistemas coletem de informações e o que recomendem. Os sistemas devem consultar as configurações do cliente antes de fazer qualquer ação (como um acordo). 
Entretanto, privacidade é algo que não existe mais. O que existe e deve ser melhor gerenciado é “política de privacidade”, onde sistemas e clientes possam dizer suas intenções.
Leia mais sobre este tema em:  

Serendipity

O que diferencia recomendação de spam é o seguinte: imagine que você receba um SMS avisando de uma promoção de produto. Mas você recebe a mensagem às 4 horas da madrugada, atrapalhando o seu sono. Se você sorrir e voltar a dormir feliz porque no dia seguinte vai comprar algo legal, ISTO É RECOMENDAÇÃO. Se você ficar muito chateado com a mensagem, ISTO É SPAM.
O grande desafio dos sistemas de recomendação é oferecer algo que surpreenda o cliente.
Para isto, temos que conhece-lo bem e utilizar bons algoritmos para faze o “match” entre perfis e produtos.