Frage

Trending Topics für die Suche, verwende ich die Standard-Score in Kombination mit einem gleitenden Durchschnitt:

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

(Vielen Dank, Nixuz )

Bisher mache ich es wie folgt:

Was auch immer die Zeit, für die historischen Trends ich einfach 24 Stunden zurückgehen. Angenommen, wir haben 12. Januar 15.45 jetzt:

current_trend = trifft [11. Januar, 03.45 - 12. Januar, 03.45 Uhr]

historic_trends = treffen [10. Januar, 03.45 - 11. Januar, 03.45 Uhr] + Treffer [9. Januar, 03.45 - 10. Januar, 03.45 Uhr] + Treffer [8. Januar, 03.45 - 9. Januar , 03.45] + ...

Aber ist das wirklich ausreichend? Wäre es nicht besser, wenn ich um 00:00 Uhr immer gestartet? Zum Beispiel auf diese Weise für die gleichen Daten (15.45):

current_trend = trifft [11. Januar, 0:00 - 12. Januar, 00.00 Uhr]

historic_trends = treffen [10. Januar, 0:00 - 11. Januar, 00.00 Uhr] + Hits [9. Januar, 0:00 - 10. Januar, 00.00 Uhr] + Hits [9. Januar, 0:00 - 9. Januar , 0: 0] + ...

Ich bin sicher, dass die Ergebnisse unterschiedlich sein würden. Aber welcher Ansatz werden Sie bessere Ergebnisse?

Ich hoffe, Sie haben meine Frage verstanden und Sie können mir helfen. :) Vielen Dank im Voraus!

War es hilfreich?

Lösung

Ich denke, dass das Problem, das Sie mit Ihrer aktuellen Implementierung sehen werden können, ist, dass Themen, die vor heißen 23 Stunden waren beeinflussen Ihre Rankings jetzt. Das Problem, das ich mit dem neuen vorgeschlagenen Implementierung sehen ist, dass man den Schiefer sauber um Mitternacht ist abwischt, so Themen, die heiß spät in der Nacht waren nicht heiß scheinen früh am nächsten Morgen (aber sie sollen).

Ich schlage vor, Sie schauen in einem Digg-Stil Algorithmus implementiert, wo die Schärfe eines Themas mit dem Alter abnimmt. Sie können dies tun, indem Sie die Treffer / Stunde für jede der letzten 24 Stunden-Perioden Zählen dann jede Periode-Punktzahl teilen, indem er, wie viele Stunden vor der Zeit stattfand. Addieren Sie die 24 Perioden, um die Punktzahl.

hottness = (score24 / 24) + (score23 / 23) + ... + (SCORE2 / 2) + SCORE1

Wo score24 ist die Anzahl der „Hits“, dass ein Thema in der einstündigen Periode bekam, die vor 24 Stunden aufgetreten (vielleicht nicht die Treffer genau, aber die normalisierte Punktzahl für diese Stunde).

Auf diese Weise Themen, die heißen 24 vor noch in Ihrem Algorithmus gezählt werden Stunden, aber nicht so stark wie Themen, die vor heißer Stunde waren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top