Een ‘bookrecommender’ bouwen met Python

6 april 2021

Bijna elke dag als we online zoeken, komen we aanbevelingssystemen tegen. Als je luistert naar je favoriete liedjes op Spotify, series kijkt op Netflix of een nieuwe laptop koopt op Amazon.com. Natuurlijk weten we allemaal dat  er programma’s voor aanbevelingen bestaan, maar minder bekend zijn welke algoritmes hierachter zitten. 

 

Een eigen bookrecommender bouwen met Python

Om de algoritmes voor aanbevelingen beter te begrijpen, zijn we zelf aan de slag gegaan om een ‘recommender’ te bouwen. Dankzij COVID-19 zitten we allemaal veel thuis, een onderwerp om een ‘recommender’ te bouwen was daarom zo gevonden. We besloten een book recommender te bouwen met behulp van Python.

Ondanks dat er kant en klare packages zijn om een aanbevelingssysteem te bouwen (zoals Surprise), besloten we toch ons eigen systeem te bouwen.

 

We nemen je mee in het proces: notebooks

In ons notebook nemen we je stap voor stap mee hoe we onze recommendation machine bouwen. Dit proces bestaat uit 8 stappen en vervolgens het kiezen van de parameters.

  1. Het ‘transformen’ en toevoegen van de data van de gebruiker aan de trainingsdata.
  2. Het creëren van referenties voor zowel boeken als beoordelaars gelijk maken aan hun rij/kolom in de dataset, om zo op een later moment de boeken/beoordelaars terug te vinden in de data.
  3. Maak een lege ‘sparse matrix’ die qua afmetingen gelijk is aan de data en vul de matrix met de boekbeoordelingen. We kiezen hier om te werken met ‘sparse matrices’, omdat mensen in onze data meerdere boeken hebben beoordeeld, dus de meeste elementen in de matrix zijn feitelijk nullen. Het is niet per se nodig om dit te doen maar het verbetert de rekensnelheid.
  4. Maak een ‘sparse vector’ met de beoordelingen van de gebruiker.
  5. Kwantificeer de gelijkheid tussen de gebruiker en alle andere gebruikers in de data. Dit doe je met behulp van de ‘consine similarity’.
  6. Nu we de gelijkenis hebben berekend, kunnen we de top x personen in de trainingsdata selecteren die de meeste vergelijkbare boeken hadden als de gebruiker, op basis van ‘consine similarity ‘. Bij deze stap filteren we ook de punten van het minimumaantal (N) boeken dat overeen moet komen.
  7. Selecteer de boeken die zijn beoordeeld door de top x maar niet door de gebruiker zelf en bereken de gemiddelde waardering van de boeken op basis van de gegevens van de top x.
  8. Selecteer het aantal best beoordeelde boeken dat de gebruiker wil ontvangen en geef de resultaten weer.

De beste parameters kiezen

Op het internet konden we veel voorbeeldscripts voor recommenders vinden, maar we konden geen advies vinden wat over wat de beste parameters zijn om te kiezen. Voor onze bookrecommender wisten we niet wat de beste opties waren voor parameter x, het aantal meest overeenkomende mensen dat je selecteert voor aanbevelingen, en voor parameter N, het minimum aantal keren dat een boek moet worden beoordeeld door de top x mensen om onderdeel te zijn van de definitieve aanbevelingen. N=1 kan leiden tot aanbevelingen op basis van uitschieters, maar ook tot zeer goede aanbevelingen die niet zo vaak voorkomen. Een hogere N betekent automatisch een hogere x. Dit betekent minder uitschieters. We hebben een test gedaan onder onze eigen collega’s om de beste parameters te vinden. In onze notebook kun je lezen wat in ons geval, met onze dataset de beste parameters waren.

 

Neem zelf een kijkje…

Nieuwsgierig? Bekijk ons notebook >

Laatste nieuws

De leukste kennismaking met data

5 juli 2023

Wil jij jouw collega’s op ludieke wijze laten kennismaken met datagedreven werken? Geef ze op voor... lees meer

Vind jouw risicovolle bestanden volgens AVG met onze DriveScanner

17 april 2023

In elk bedrijf is het een uitdaging om ervoor te zorgen dat we alleen de documenten... lees meer

Rondetafelsessie – donderdagochtend 25 mei

16 januari 2023

Culture eats data strategy for breakfast​ Bedrijven die erkennen dat ze met de inzet van data... lees meer

Schrijf je in voor onze nieuwsbrief

Mis nooit meer iets op het gebied van advanced analytics, data science en de toepassing daarvan binnen organisaties!