Slope One er en familie af algoritmer til kollaborativ filtrering (brugt i anbefalingssystemer ) til at analysere brugernes forskellige meninger og ønsker og udvikle personlige anbefalinger.
Der er mindst 2 klasser af kollaborativ filtrering:
Slope One blev vist i Slope One Predictors for Online Rating-Based Collaborative Filtering af Daniel Lemire og Anna Maclachlan . Dette hævdes at være en af de enkleste måder at sammen filtrere efter varelighed baseret på brugerbedømmelser. Denne enkelhed letter i høj grad implementeringen af disse algoritmer, og deres nøjagtighed kan sammenlignes med nøjagtigheden af mere komplekse og ressourcekrævende algoritmer [1] . Slope One supplerer også ofte andre algoritmer. [2] [3] .
Hvis der er tilgængelige vurderinger for en vare – f.eks. får brugere mulighed for at stemme for en vare (f.eks. bedømme fra 1 til 5), så forsøger samarbejdsfiltrering at forudsige den vurdering, en bruger vil give en ny vare baseret på deres tidligere vurderinger og en database med vurderinger fra andre brugere.
Eksempel : Kan vi forudsige en bestemt brugers score på et nyt Celine Dion -album, hvis vi ved, at de bedømte The Beatles 5?
I dette tilfælde forudsiger kollaborativ filtrering efter varelighed [4] [5] vurderingen af et element baseret på vurderinger af et andet element, oftest ved hjælp af regressionsanalyse ( ). Derfor, hvis der er 1.000 emner, så kan der være op til 1.000.000 lineære regressioner at studere og op til 2.000.000 regressorer. Denne tilgang kan være ineffektiv på grund af overtilpasning [1] , så det er nødvendigt at vælge par af emner, som flere brugeres score er kendt for.
Et bedre alternativ kunne være at bruge en forenklet prædiktor (f.eks. ): det er eksperimentelt blevet vist, at brug af en så simpel prædiktor (kaldet Slope One) nogle gange udkonkurrerer [1] regressionsanalyse, mens den har halvt så mange regressorer. Derudover har denne metode lave hukommelseskrav og høj hastighed.
Kollaborativ filtrering efter varelighed er kun én type kollaborativ filtrering. Ved brug af kollaborativ filtrering efter brugerlighed analyseres relationerne mellem brugerne, og ligheden mellem deres interesser afklares. Men filtrering efter varelighed er mindre ressourcekrævende og mere effektivt, når der er et stort antal brugere.
Brugere har ikke altid mulighed for at bedømme varer. Det vil sige, at kun binære data kan være tilgængelige for kollaborativ filtrering (uanset om brugeren har købt varen eller ej). I sådanne tilfælde er Slope One og andre algoritmer, der afhænger af elementscore, ineffektive.
Et eksempel på en kollaborativ varefiltreringsalgoritme, der fungerer med binære data, er den patenterede [6] Item-to-Item- algoritme , der bruges i Amazons onlinebutik [7] . Denne algoritme beregner varelighed som cosinus mellem købsvektorerne i bruger- og varematricen [8] :
Denne algoritme er måske endnu enklere end Slope One. Lad os se, hvordan det fungerer med et eksempel:
Køber | Punkt 1 | Emne 2 | Punkt 3 |
---|---|---|---|
John | Købt | Købte ikke | Købt |
Mærke | Købte ikke | Købt | Købt |
Lucy | Købte ikke | Købt | Købte ikke |
I dette tilfælde beregnes cosinus mellem "Vare 1" og "Vare 2" som følger:
,
mellem "Vare 1" og "Vare 3":
,
og mellem "Vare 2" og "Vare 3":
.
Således vil en bruger, der er på beskrivelsessiden af "Vare 1" modtage "Vare 3" som en anbefaling; på siden "Vare 2" - "Vare 3" og på siden "Vare 3" - "Vare 1" (og derefter "Vare 2"). Denne algoritme bruger en koefficient for hvert par af elementer (cosinus), på grundlag af hvilken anbefalinger oprettes. Det vil sige, at for n varer skal du beregne og gemme n (n-1) / 2 cosinus.
For at reducere effekten af overfitting markant, øge ydeevnen og lette implementeringen blev Slope One- familien af algoritmer foreslået . Den største forskel fra regressionsanalysen af forholdet mellem vurderingerne af to elementer ( ) er brugen af en forenklet form for regression med kun én prædiktor ( ). Så prædiktoren er simpelthen den gennemsnitlige forskel mellem pointene for begge elementer. Forfatterne viste, at denne tilgang i nogle tilfælde er mere nøjagtig end lineær regression [1] og kræver 2 gange mindre hukommelse.
Eksempel :
Lad os se på et mere komplekst eksempel:
Besøgende | Punkt 1 | Emne 2 | Punkt 3 |
---|---|---|---|
John | 5 | 3 | 2 |
Mærke | 3 | fire | - |
Lucy | - | 2 | 5 |
Ifølge denne tabel er den gennemsnitlige karakterforskel for fag 1 og 2 (2+(-1))/2=0,5. Således vurderes emne 1 i gennemsnit 0,5 point højere end emne 2. Tilsvarende for emne 3 og 1: den gennemsnitlige karakterforskel er 3.
Hvis vi nu forsøger at forudsige Lucys karakter for punkt 1 ved hjælp af hendes karakter for punkt 2, får vi 2+0,5 = 2,5. På samme måde forudsiger vi hendes score for emne 1 ved hjælp af scoren givet til emne 3: 5+3=8. Da vi har flere estimerede scores (Lucy stemte 2 gange), vil vi få den endelige score som et vægtet gennemsnit. Til vægtkoefficienter vil vi bruge antallet af brugere, der har bedømt emnet:
For at anvende Slope One-algoritmen på givne n emner, skal man beregne og gemme den gennemsnitlige forskel og antallet af stemmer for hvert af de n² par af emner.
Python :
Java :
PHP :
Erlang :
Haskell :
C# :
T-SQL :