LikeFriendsLancei (finalmente) esta semana o LikeFriends, o meu pequeno projecto de Verão. É um brinquedo social, engraçado como conceito, que apresenta dois rankings baseados nos likes e amigos do Facebook, um de amigos, outro de likes.

Eu podia dar motivações perfeitamente válidas como uma melhoria do ranking de amigos que o próprio Facebook faz (e mesmo esse está absurdamente escondido aqui, à direita – para se chegar lá, é preciso ir aos nossos likes e depois clicar em Sugestões, no topo) ou até como negócio; mas não: só encontrei o ranking (errado) do Facebook quando estava na fase de investigação deste projecto e o site do projecto não está, nem vai estar, monetizado.

Na verdade, fi-lo porque podia. Só isso. Há muito que queria experimentar umas coisas com métricas sociais, mas que fosse algo útil; ao mesmo tempo, andava a brincar com a API do Facebook e resolvi juntar as duas coisas. Ora, a única coisa que contém um espaço métrico no Facebook é a relação entre os likes e os utilizadores.

Afinal, que raio de ranking é aquele?

Versão TL;DR

Um ranking feito unicamente a partir dos likes que dois utilizadores partilham não é preciso.

Se eu tenho 50 likes e tenho 10 em comum com dois dos meus amigos, qual deles é o mais parecido comigo, o que tem 100 likes ou o que têm 500? Com um amigo que tem uma quantidade enorme de likes até seria de estranhar se não tivesse alguns em comum; por outro lado, se outro amigo tem tão poucos likes e mesmo assim tem alguns em comum comigo, quer dizer que, efectivamente, temos gostos muito mais semelhantes.

Aviso: a próxima secção inclui matemática!

Temos, portanto, um espaço geométrico bidimensional constituido pelos likes de dois utilizadores. Infelizmente, é um espaço geométrico bastante aborrecido, porquanto ambos os eixos são meramente booleanos: para cada like, cada um dos utilizadores gostou ou não gostou. A distribuição dos pontos no plano é constiuída por um monte deles em (1,0), outro monte em (0,1) e alguns em (1,1). Uma distribuição destas impede-nos de usar métricas mais avançadas (e exactas, para outro tipo de problemas), como a distância euclidiana ou o coeficiente de correlação de Pearson.

Não existem muitas métricas para dados booleanos; na realidade, eu só conheço um, mas, em compensação, é reconhecido por dois nomes: índice de Jaccard ou distância de Tanimoto. Enquanto a formulação do índice de Jaccard é consideravelmente fundamentada, com várias fontes, incluíndo a original do autor Paul Jaccard, a distância de Tanimoto não tem uma fonte oficial, e aparece aqui e ali em literatura e na web, mas o (suposto) documento original está desaparecido em combate. Além disso, algumas das formulações da distância de Tanimoto aparecem com algumas diferença consideráveis em relação a uma suposta derivação do índice de Jaccard. De qualquer forma, os dois nomes são aqui usados de forma intermutável.

A distância de Tanimoto é, então, o quociente do tamanho da intersecção de dois conjuntos de dados binários pelo tamanho da união desses mesmos conjuntos, conforme a fórmula seguinte:

T(A,B)=ABAB

Por uma questão prática, não tenho disponível, através da API do Facebook, os conjuntos completos de likes, nomeadamente os dos amigos do utilizador corrente. Por um lado, ainda bem – a quantidade de dados a tratar seria absurda. O que tenho é a quantidade total de likes do utilizador corrente (A), a quantidade total de likes do amigo em causa (B) e a quantidade total de likes em comum (C). Sendo que o dividendo é-me oferecido, resta-me calcular o divisor; tendo as quantidades totais dos dois conjuntos, basta subtrair o tamanho da intersecção. Como tal, a fórmula apresenta-se no seguinte formato:

T=CA+BC

Realmente, é só isto. A única coisa que me incomoda é porque é que, tendo acesso mais directo aos dados, logo, evitando algumas contas que eu tive que fazer, o Facebook apenas disponibilize a métrica menos relavante, por quantidade absoluta de likes em comum; e, mesmo assim, de forma bastante camuflada. Eu nem digo que estranho – percebo que seja uma opção de negócio, isto é, que o Facebook entenda que os seus utilizadores não iriam compreender a racionalização.

Partilhar no Sapo Links Partilhar no del.icio.us Partilhar no Digg Partilhar no Twitter Partilhar no StumbleUpon Partilhar no MySpace Partilhar no Facebook

Comentários Deixar um comentário

 Categorias
 Arquivo
 Projectos em Destaque
 Últimas Postas no Blog
 Últimos Comentários do Blog