Sådan anbefaler MitKBH dig steder

Sådan anbefaler MitKBH dig steder

Vi vil jo rigtig gerne anbefale dig steder at gå hen, ud fra dine præferencer som vi jo kender, fordi du er så flink at ”rate” steder (propellerne dér).
Det kan vi gøre, og jeg vil her forklare hvordan. Det er langt og teknisk – så er du advaret
🙂

Den korte forklaring:
Den basale idé er, at vi finder ud af hvor andre med samme præferencer som dig godt kan lide at gå hen, og så foreslår vi dem til dig hvis du ikke selv har rated stedet.

Den lange forklaring:
Først så finder vi alle de andre brugere som har rated en eller flere af de samme steder som dig. Den gruppe brugere kaldes herefter grpB. Den enkelte bruger i grpB kalder vi for usrB.

Herefter løber vi alle de steder igennem som du har rated og sammenligner din rating med den rating som hvert enkelt i grpB har rated. Har en bruger rated det samme sted som dig, så får hun et ”hit” (usrBHit). Det bliver brugt senere når vi skal sammenligne hvor identiske i er (usrBLikeliness).

Der bliver så givet point ud fra en sindrig skala – en ”PointMatrix”.
Hvis brugeren i grpB ikke har rated stedet, så gives ingen point til den bruger.
Har hun derimod rated præcist det samme som dig så gives 10 point. Herefter gives følgende point for forskellen i rating:

PointMatrix:

[0] i forskel = 10 point
[1] i forskel = 7 point
[2] i forskel = 3 point
[3] i forskel = 0 point
[4] i forskel = -3 point
[5] i forskel = -7 point
[6] i forskel = -10 point

Det vil sige, at er du (usrA) helt enig med usrB om at et sted er noget lort, så vægter det lige så højt som hvis det var et sted begge er glade for.

Når alle point er givet ud til brugerne i gruppe B så frasorterer vi de brugere som har 0 point eller under. De kan ikke hjælpe dig med at finde nye steder, idet de generelt er mere uenige med dig end de er enige.

Herefter beregner vi hver usrB’s vægt. Det gøres ud fra formlen usrBWeight = usrBPoint / grpBPoint .
Dette gør, at jo flere point en bruger har, desto mere er hun enig i dine ratings og desto mere vægter hendes stemme. En bruger der har rated 20 af de samme steder som dig vil så også få flere point (hvis hun ellers er nogenlunde enig med dig) end en bruger der kun har rated 5 af de samme steder.

Herefter beregner vi også hvor meget usrB ligner dig ud fra jeres fælles rating grundlag. Det er et procent tal og det kalder vi usrBLikeliness, hvor 100% betyder, at hun har stemt fuldstændig identisk med dig på alle de steder du har stemt.
Vi kalder dig for usrA i formlerne. Du har følgende egenskaber:
– usrAMaxHits som er antallet af steder du har rated (fx 10).
– usrAMaxPoints som er det maksimale antal point man kan opnå hvis en bruger har rated 100% som dig.
Dine MaxPoints vil i dette eksempel være 100 (usrAMaxHits *
PointMatrix[0] = 10 * 10 = 100)

Det maksimale antal point som en usrB kan få beregnes således:

MaxPointsAdjusted = (usrAMaxPoints-((usrAMaxHits -usrBHits) * PointMatrix[0] ));

Det skal vi nemlig bruge for at beregne brugerens ”likeliness” i forhold til dig.
Den beregnes sådan her:

usrBLikeliness = (usrBPoints / MaxPointsAdjusted) * 100

usrBLikeliness bruger vi igen senere når vi skal vægte usrB’s ratings i forhold dig (usrA) og hvert sted.
Det er for øvrigt usrBLikeliness vi bruger for at finde ”Folk med samme smag”.

Det næste trin er så at finde alle de steder som brugerne i grpB har rated, men som ikke er rated af dig (vi forudsætter derved at du ikke har besøgt stedet – ellers skal du jo skynde dig at rate det).
Den liste over steder kalder vi for listeN (N for ”Node” som vi kalder hvert sted/bar/cafe/osv).

Herefter får vi en lang liste over steder som du ikke har rated, men vi ved endnu ikke om folkene i grpB kan lide den, så det går vi i gang med at beregne. Vi nøjes ikke bare med at tælle hver brugers rating op, men derimod bruger vi to vægte til at justere pointene, hhv. usrBWeight og usrBLikeliness. Mere om det nedenfor.

For hvert Node i listeN beregner vi nu hvad hver usrB har rated denne.
Vi definerer at NodeRelevance = (usrB’s rating – 3). Dvs. at en node kan få mellem -3 til +3 i relevans for hver usrB., idet at vores rating skala går fra 0-6. Hvis usrB ikke har rated stedet, så får Noden ikke nogen relevans point fra hende.
Men relevansen er helt afhængig af brugerens vægtning (hvor mange point fik hun til at starte med og hvor meget minder hun om dig).

Så for at få den endelige beregning, så ser det sådan her ud:

NodeWeightedPoints = NodeRelevance * usrBWeight * usrBLikeliness

Dette summerer vi så op for alle i grpB og til sidste har vi en forfærdelig masse Nodes sorteret efter de vægtede points.
Til sidst vælger vi så top 10 ud og viser dem til dig.
Det er for øvrigt NodeWeightedPoints du ser, når du peger på de steder vi forslår.

Voila. Det var en lang snak, og fattede du det i første gennemlæsning så kan du godt være stolt!🙂

Vil du se det “in action” så registrér dig og begynd at rate!🙂
Eller du kan starte her: http://www.mitkbh.dk/profile.php?user=1

Et svar til Sådan anbefaler MitKBH dig steder

  1. […] “MitKBH anbefaler” nu endnu mere præcis (se forklaring). […]

%d bloggers like this: