Pergunta

Para encontrar trending topics, eu uso a pontuação padrão em combinação com uma média móvel:

z-score = ([current trend] - [average historic trends]) / [standard deviation of historic trends]

(Muito obrigado, Nixuz )

Até agora, eu fazê-lo da seguinte forma:

O que quer que o tempo é, para as tendências históricas I simplesmente ir 24h costas. Supondo que temos 12 de janeiro de 3:45 agora:

current_trend = sucessos [Jan 11, 3:45 - Jan 12, 03:45]

historic_trends = sucessos [Jan 10, 3:45 - 11 Jan, 03:45] + [sucessos Jan 9, 3:45 - 10 Jan, 03:45] + acessos [8 Jan 3:45 - 9 Jan 3:45] + ...

Mas isso é realmente adequada? Não seria melhor se eu sempre começou às 00:00 horas? Por exemplo, este caminho para os mesmos dados (03:45):

current_trend = sucessos [Jan 11, 0:00 - Jan 12, 00:00]

historic_trends = sucessos [Jan 10, 0:00 - 11 Jan, 00:00] + [sucessos Jan 9, 0:00 - 10 Jan, 00:00] + [sucessos Jan 9, 0:00 - 9 Jan , 0: 0] + ...

Eu tenho certeza que os resultados seriam diferentes. Mas qual abordagem lhe dará melhores resultados?

Espero que você tenha entendido a minha pergunta e você pode me ajudar. :) Obrigado antecipadamente!

Foi útil?

Solução

Eu acho que o problema que você pode estar vendo com a sua implementação atual é que os tópicos que foram quente 23 horas atrás estão a influenciar a sua classificação no momento. O problema que vejo com a sua nova implementação proposta é que você está limpando a lousa à meia-noite, então tópicos que foram quente noite passada não parece quente cedo na manhã seguinte (mas deveria).

Eu sugiro que você olhar para a implementação de um algoritmo Digg estilo onde a gostosura de um tópico decai com a idade. Você poderia fazer isso contando-se os hits / hora para cada um dos últimos períodos de 24 horas, em seguida, dividir cada período de contagem de quantas horas atrás o período ocorreu. Some os 24 períodos para obter a pontuação.

hottness = (score24 / 24) + (score23 / 23) + ... + (score2 / 2) + score1

Onde score24 é o número de "hits" que um tópico obteve no período de uma hora que ocorreu 24 horas atrás (talvez não os hits exatamente, mas a pontuação normalizada para que a hora).

Desta forma, temas que foram quente 24 horas atrás ainda serão contados em seu algoritmo, mas não tão fortemente como temas que foram quente há uma hora.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top