Algorithmus Hot Fresh Trending - Geopras/IdeaWatcher GitHub Wiki

Beschreibung

  • 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.

Beispieldaten

Pseudocode

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;
}

.
.
.
.
.
.
.
.
.

alt, von Adré - vorbetrachtende Gedanken

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 …)

Mögliche Umsetzung

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?

⚠️ **GitHub.com Fallback** ⚠️