Algorithmus Hot Fresh Trending - Geopras/IdeaWatcher GitHub Wiki
-
Die Rankings für Hot und Trending werden für jede Idee in den Feldern “hotRank” und “trendingRank” gespeichert.
-
Für die Fresh-Liste werden einfach die Ideen nach Datum sortiert beginnend mit der jüngsten Idee abgerufen.
-
Der Algorithmus vergleicht die Anzahl Likes einer Idee mit der Anzahl der Idee mit den meisten Likes. Gleiches gilt für Follower und Alter. Die Werte werden in einer “Ratio”-Variable zwischengespeichert. Das Ratio ist somit immer ein Wert zwischen 0 und 1. Die Werte bleiben damit vergleichbar.
-
Für die Berechnung des Hot und des Trending Ranks werden die Ratios nun mit den jeweiligen Gewichtungen multipliziert und mit einander summiert.
-
Die Gewichtungen des Hot-Ratings bevorzugen Ideen mit vielen Likes und Follows, sorgen aber auch dafür, dass alte Ideen nicht ewig ganz oben stehen, indem das Alter mit 20% bestraft wird.
-
Die Gewichtungen des Trending-Ratings bevorzugen neue Ideen und gewichten die mit den meisten Likes und Follows von ihnen am höchsten.
-
der Algorithmus wurde mit einer großen Menge Zufallsdaten getestet
-
ein Libre Office Calc Dokument dazu ist hier zu finden: github.com/Geopras/IdeaWatcher/blob/dev/Doku/Dokumente/Algorithmen_Test.ods
hotRatingLikes:= 0.5; hotRatingFollows:= 0.3; hotRatingAge:= 0.2; trendingRatingLikes:= 0.3; trendingRatingFollows:= 0.1; trendingRatingAge:= 0.6; maxLikes:= MAX(ideas.numberLikes); maxFollows:= MAX(ideas.numberFollower); maxAge:= Date.Now - MIN(ideas.publishDate); for (Idea idea:ideas){ likeRatio:= idea.numberLikes / maxLikes; followRatio:= idea.numberFollower / maxFollows; ageRatio:= (maxAge - (Date.Now - ideas.publishDate)) / maxAge; idea.hotRank:= likeRatio * hotRatingLikes + followRatio * hotRatingFollows + ageRatio * hotRatingAge; idea.trendingRank:= likeRatio * trendingRatingLikes + followRatio * trendingRatingFollows + ageRatio * trendingRatingAge; }
. . . . . . . . .
Was soll erreicht werden?
-
schnelle übersicht über relevante / gute Ideen
-
es soll vermieden werden das die älteste Idee immer oben steht und nur dadurch likes bekommt
-
neue Ideen müssen eine Chance bekommen an die Spitze zu kommen
Was ist zu beachten
-
die Zeit -> Erstellungsdatum der Idee sowie das derzeitige Datum
-
Likes In einem gewissen Zeitraum (letzter Tag / Woche / Monat …)
Evtl Filter
-
meist geliked ablolute
-
neuste
-
meist geliked relativ
Was ist mit relativ gemeint
-
Wie lange gibt es die Idee bereits
-
Wie viele likes bekommt sie in einer Woche / Monat …
Ab wievielen Likes ist eine Idee Hot / Fresh / Trending
-
Vorschlag:
-
Hot > 50 Likes
-
Fresh > 20 Likes
-
Trending < 20 Likes
Wegfallen von schlechten Ideen?
-
Vorschlag:
-
Weniger als 20 Likes absolut nach 3 Monaten?