Blog Hoe werken aanbevelingssystemen?

Een inleiding tot de populairste aanbevelingssysteemalgoritmen

Aanbevelingssystemen zijn hulpmiddelen voor het filteren van gegevens die algoritmen en gegevens gebruiken om de voor een bepaalde gebruiker de meest relevante artikelen aan te bevelen. Als moderne consumenten worden we overspoeld met een grote verscheidenheid aan producten. Daarom moeten retailers investeren in een accuraat aanbevelingssysteem om onze individuele consumenten behoeften te matchen met geschikte producten van online platforms.

In dit artikel leert u over:

  1. Basisconcepten van aanbevelingssystemen
  2. Collaborative filtering methode
  3. K-nearest neighbour algoritme
  4. De vloek van dimensionaliteit
  5. Nadelen van collaboratief filteren

Auteurs: Amirali Yazdi & Sonja Nobe

Wat is het basisconcept achter aanbevelingssystemen?

We kunnen een voorbeeld gebruiken met een zeer eenvoudige benadering om het basisconcept van het aanbevelingssysteem uit te leggen.

Stel je voor dat er een online streaming platform is met slechts vijf films en drie gebruikers. Bill en Ted hebben alle films op het platform bekeken en beoordelen ze met sterren (vind ik leuk) of rode kruisjes (vind ik niet leuk). Jessica heeft echter twee van de films op het platform nog niet bekeken, en we willen een aanbevelingssysteem ontwerpen om uit te zoeken welke van deze films Jessica het liefst bekijkt. Het systeem zal dan die film aan haar aanbevelen.

Hoe werken aanbevelingssystemen?
Film gebruikers rating lijst

Door eerdere gebruikersbeoordelingen te bekijken, kunnen we nuttige informatie voor onze aanbevelingssysteem verzamelen. We kunnen zien dat Jessica en Bill allebei van dramafilms van regisseur Asghar Farhadi houden en dat ze allebei de superheldenfilm Avengers: Endgame niet leuk vonden. Anderzijds is Ted een grote fan van Iron Man en Captain America en de Avengers films. Gebaseerd op deze eenvoudige observatie van onze gebruikers waarderingstabel, kunnen we concluderen dat Jessica en Bill meer dezelfde smaak hebben in films.

Hoe werken aanbevelingssystemen?

Daarom, van de twee beschikbare films, The Avengers en Todo lo Saben (een andere film van Asghar Farhadi) die Jessica nog niet heeft gezien, kiezen we de film die Bill leuk vond en raden we die aan voor Jessica. Laten we dat nu eens omzetten in eenvoudige wiskunde.

Merk op dat het totale aantal films is ingesteld op drie in plaats van zes, omdat er slechts drie films zijn die door alle gebruikers zijn beoordeeld. Deze methode om een aanbevelingssysteem te ontwerpen wordt gecategoriseerd als een gebruiker-gebaseerde Collaborative Filtering methode.

Wat is een collaborative filter methode?

Collaborative filtering (CF) is een aanbevelingssysteemmethode op basis van de interacties tussen gebruikers en items in het verleden en de geschiedenis van de beoordelingen die verschillende gebruikers aan elk item hebben gegeven. De meest gebruikelijke aanpak om gegevens voor te bereiden voor de CF-methode is het maken van een gebruiker-item interactietabel zoals hieronder:

Hoe werken aanbevelingssystemen?
User-item interaction table

Er zijn twee hoofdbenaderingen voor Collaborative Filtering (CF) methoden.

  1. Modelgebaseerd: traint een model door de gebruiker-item representaties te leren van de gebruiker-item interactie matrix.
  2. Op geheugen gebaseerd (geen model): vertrouwt op de gelijkenissen tussen gebruikers of items. In dit artikel richten we ons op de op geheugen gebaseerde CF, die zelf in twee verschillende vormen bestaat.

Wanneer we een film, boek of ander product willen aanbevelen aan een gebruiker, is de meest logische aanpak om gebruikers te vinden met vergelijkbare interesses (hoogste similariteitsscore) en de items die vergelijkbare gebruikers het hoogst waarderen aan te bevelen aan onze gebruiker. We kunnen ons eenvoudige voorbeeld van een film-aanbevelingssysteem hierboven beschouwen als een op de gebruiker gebaseerd CF. Een andere mogelijkheid is dat het aanbevelingssysteem de producten die de gebruiker heeft gekocht of items die door gebruikers als vijf sterren zijn beoordeeld als input beschouwt en items aanbeveelt die daarop lijken. Het berekenen van de gelijkenisscore is dus essentieel voor zowel gebruiker- als itemgebaseerde vormen van geheugengebaseerde CF.

Het berekenen van de gelijkenisscore in het echte leven is ingewikkelder dan ons eenvoudige voorbeeld hierboven, vanwege het enorme aantal producten (items) in elk online platform en de structurele diversiteit van de gegevens. In ons voorbeeld hebben we Booleaanse gegevensformaten (voorkeur of afkeer), maar gewoonlijk komen we continue variabelen tegen zoals beoordelingen, aantal kliks, tijd besteed aan elke post, en meer.

Gelukkig is K-Nearest Neighbors, een van de populairste en eenvoudigste algoritmen voor machinaal leren, de standaardoplossing voor dergelijke problemen.

Wat is het K-Nearest Neighbors algoritme?

K-Nearest Neighbors (K-NN) wordt geclassificeerd als een machine-leer-algoritme met supervisie. Dit betekent dat het zich baseert op gelabelde invoergegevens om een functie aan te leren om een geschikte output te produceren wanneer nieuwe ongelabelde gegevens worden aangereikt. K-NN berekent de afstanden tussen het punt en andere punten in de dataset. Vervolgens wordt het punt toegewezen aan de klasse van de dichtstbijzijnde buren voor classificatieproblemen of wordt een gewogen gemiddelde van dichtstbijzijnde buren gebruikt voor het schatten van continue variabelen voor regressieproblemen.

Maar aanbevelingssystemen worden vaak beschouwd als machine-leer-algoritmen zonder toezicht, wat betekent dat de punten geen externe classificatie (labels) hebben. Daarom willen wij dat K-NN een ander doel dient in aanbevelingssystemen, waarbij alleen de afstand tussen punten wordt berekend en op basis van de afstanden een similariteitsscore tussen de punten wordt bepaald.

Hoe werken aanbevelingssystemen?

Om de afstand tussen de punten A en B in een kenmerkruimte te meten, zijn in de literatuur verschillende afstandsmetrieken gebruikt, zoals Cosinus, Minkowsky, Manhattan, en Chi-kwadraat. Maar de meest gebruikte is de Euclidische afstand. Het is een maat voor de werkelijke rechte afstand tussen twee punten in de euclidische ruimte met de hiernaast vermelde formule.

In de gebruikers-film dataset hieronder, willen we drie naaste buren (k = 3) van gebruiker-1 vinden, dus berekenen we de Euclidische afstanden tussen gebruiker-1 en alle andere gebruikers zoals hieronder:

Hoe werken aanbevelingssystemen?
Gebruiker film dataset en K-NN

In dit voorbeeld hebben we te maken met slechts twee films (twee dimensies). Het is dus gemakkelijk om de afstanden te visualiseren. In werkelijkheid hebben we echter duizenden films, wat betekent dat de Euclidische afstanden in hoge dimensies moeten worden berekend. In deze gevallen worden we vaak geconfronteerd met de vloek van de dimensionaliteit.

Hoe werken aanbevelingssystemen?
K-NN gevisualiseerde afstanden

Wat is de vloek van de dimensionaliteit?

Hoe kan de vloek van de dimensionaliteit onze berekening van de gelijkenisscore in de collaboratieve filtermethode beïnvloeden?

De vloek van de dimensionaliteit verwijst naar verschillende fenomenen die zich voordoen bij het analyseren en organiseren van gegevens in hoog-dimensionale ruimten die zich niet voordoen in laag-dimensionale omgevingen. Richard E. Bellman bedacht deze uitdrukking, en met andere woorden, het betekent dat de dingen anders zijn in hogere dimensies!

Laten we dit verduidelijken met een echt voorbeeld uit de Movielens-dataset. In deze dataset hebben we beoordelingen van 610 gebruikers voor meer dan 9000 films.

In de eerste stap berekenen we de Euclidische afstand tussen gebruiker-1 en alle andere gebruikers in verschillende dimensies (verschillend aantal films) van 2 tot 9000. Daarna berekenen we de variatiecoëfficiënt van de afstanden bij elke dimensie en plotten we de resultaten om de trend van de frequentieverdelingen met betrekking tot de dimensionaliteit te bestuderen.

Coefficient_Variation

De variatiecoëfficiënt is een statistische maat voor de spreiding van gegevenspunten in een gegevensreeks. Hij geeft de mate van variabiliteit aan en wordt berekend met de formule hiernaast:

Hoe werken aanbevelingssystemen?
Gegevens Spreidingstrend

Uit de bovenstaande grafiek blijkt dat de variatiecoëfficiënt drastisch daalt wanneer het aantal films (dimensionaliteit) toeneemt. Hoe lager de waarde van de variatiecoëfficiënt, hoe kleiner de spreiding rond het gemiddelde. Deze observatie impliceert dat het hebben van te veel dimensies (films) ervoor zorgt dat gebruikers gelijke Euclidische afstanden tot elkaar hebben. Daardoor gaan alle gebruikers evenveel op elkaar lijken, wat een groot probleem is voor een aanbevelingssysteem. Dat is het moment waarop de algoritmen voor dimensionaliteitsreductie in gebruik worden genomen.

Dimensionaliteitsreductie is een techniek waarbij wordt gezocht naar een lagere dimensionale representatie van gegevens, waarbij de saillante relaties in de gegevens behouden blijven. Het is een hot topic in Machine Learning, en er zijn een handvol gesofisticeerde dimensionaliteitsreductiemethoden. Maar het valt buiten het bestek van dit artikel om de details van elke methode te bespreken. Hier vindt u enkele voorbeelden met referenties voor verdere lectuur:

  • Principale Componenten Analyse (PCA) – link
  • Variationele Auto-Encoder (VAE) – link
  • Singuliere Waarde Decompositie (SVD) – link
  • Lineaire Discriminant Analyse (LDA) – link

Wat zijn de andere nadelen van collaboratieve filtermethoden?

Hoewel op geheugen gebaseerde CF-methoden uitgebreide en eenvoudige algoritmen gebruiken, en de enige informatie die we nodig hebben om ze toe te passen de interactie tussen gebruikers en items (beoordelingen) is, zijn er toch enkele nadelen.

Het zijn rekenintensieve algoritmen bij schaalvergroting. Bijvoorbeeld, telkens een nieuwe gebruiker zich aanmeldt of een nieuwe film wordt toegevoegd aan ons movie recommender systeem, moeten de gelijkenissen tussen alle gebruikers/items herberekend worden. Door gebruik te maken van dimensionaliteitsreductie-algoritmes en alternatieve technieken in plaats van brute K-NN, zoals Approximate Nearest Neighbors (ANN), wordt de uitvoeringstijd drastisch verbeterd, maar de schaalvergroting is nog steeds een zware opgave.

Bovendien kan CF niet overweg met nieuwe gebruikers/items als er geen geschiedenis is van beoordelingen van een gebruiker, omdat het model geen vergelijkbare gebruikers kan vinden. Dit probleem wordt vaak het koude-start probleem genoemd.

Ten slotte is de evaluatie van aanbevelingssystemen een gecompliceerd proces. De eerste benadering om een overzicht te krijgen van de prestaties van het model is evaluaties op basis van metriek door onze gegevens op te splitsen in een train en test split. Het meest gebruikelijke en beste evaluatieproces is echter het registreren van de feedback van gebruikers op de aanbevolen items en het toepassen van een A/B testaanpak.

Slotgedachten

Collaboratief filteren is een effectieve methode met talrijke gebruiksmogelijkheden in vele domeinen zonder voorafgaande kennis van het vakgebied. Ook is het niet nodig dat kenmerken van de items of gebruikers bekend zijn.

Haalbare implementatie van CF met K-NN en dimensiereductie-algoritmen stelt ons in staat om taken te overwinnen die berekening van de similariteitsscore vereisen, vooral in kleine datasets van gebruikers-item-interacties.

Hier bij DigitalScaler hebben we CF-methoden gebruikt om een aanbevelingssysteem voor werknemers te ontwerpen op basis van hun vaardigheidsniveau. Ons aankomende artikel zal demonstreren hoe we de best geschikte werknemers kunnen vinden om te herscholen volgens een nieuw gedefinieerde rol volgens de stappen die we in dit artikel hebben beschreven.

Ik wil algoritmes loslaten op mijn gegevens

Ontdek meer