Leer AI met Python · Les

Collaborative filtering: op gebruikers en op items

Gebruikersgelijkenis, itemgelijkenis, neighborhood-methoden, cosinusgelijkenis voor beoordelingen.

Les 1 van 413 stappen

Collaborative filtering: op gebruikers en op items is een gratis Leer AI met Python-les op CoddyKit. Dit is les 1 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Leer AI met Python. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Leer AI met Python bevat in totaal 4 lessen.

Wat is collaboratieve filtering?

Collaboratieve filtering (CF) beveelt items aan door te leren van het gedrag van veel gebruikers. Het kernidee: mensen die het in het verleden met elkaar eens waren, zijn dat in de toekomst waarschijnlijk ook. Er zijn geen beschrijvingen van items nodig, alleen de interactiegeschiedenis.

De matrix van gebruikers en items

CF begint met een matrix van gebruikers en items, waarin rijen gebruikers zijn, kolommen items en elke cel een beoordeling bevat (of leeg is als er geen beoordeling is). Deze matrix is meestal erg ijld, omdat elke gebruiker maar weinig items beoordeelt.

import pandas as pd

matrix = ratings.pivot_table(
    index="user_id", columns="item_id", values="rating"
)

Twee varianten van CF

  • Op gebruikers gebaseerd: vind gebruikers die op jou lijken en beveel aan wat zij goed vonden.
  • Op items gebaseerd: vind items die lijken op items die jij goed vond en beveel die aan.

Beide gebruiken een gelijkheidsmaat tussen rijen (gebruikers) of kolommen (items).

Cosinusgelijkheid

Cosinusgelijkheid meet de hoek tussen twee beoordelingsvectoren en negeert de grootte. Waarden dicht bij 1 betekenen een zeer vergelijkbare smaak; waarden dicht bij 0 betekenen dat de smaken geen verband houden.

from sklearn.metrics.pairwise import cosine_similarity

filled = matrix.fillna(0)
user_sim = cosine_similarity(filled)  # user x user

Voorspellen op basis van gebruikers

Neem voor het voorspellen van je beoordeling voor een item een gewogen gemiddelde van de beoordelingen door vergelijkbare gebruikers, waarbij je weegt op basis van de gelijkheid. Meer vergelijkbare buren tellen zwaarder mee.

Voorspellingsformule

Voorspelde beoordeling = som(gelijkheid * beoordeling van buur) / som(gelijkheid), over buren die het item hebben beoordeeld. Als je eerst het gemiddelde van elke gebruiker aftrekt (centreren rond het gemiddelde), corrigeer je voor gebruikers die over het algemeen hoog of laag beoordelen.

import numpy as np

def predict(sims, ratings_for_item):
    mask = ~np.isnan(ratings_for_item)
    if sims[mask].sum() == 0:
        return np.nan
    return np.dot(sims[mask], ratings_for_item[mask]) / sims[mask].sum()

Buren kiezen (k)

Gebruik niet alle gebruikers, maar alleen de top-k meest vergelijkbare buren. Dit vermindert ruis van niet-vergelijkbare gebruikers en versnelt de voorspelling. k is een afstembare hyperparameter.

Gelijkheid tussen items

Op items gebaseerde CF berekent de gelijkheid tussen itemkolommen in plaats van gebruikersrijen. Beveel items aan die het meest lijken op items die een gebruiker al goed vond.

item_sim = cosine_similarity(filled.T)  # item x item

Waarom op items gebaseerd stabieler is

Relaties tussen items veranderen langzaam: de gelijkheid tussen twee films blijft ongeveer constant. De smaak van gebruikers en de gebruikersgroep veranderen sneller. Daarom kunnen gelijkheden tussen items vooraf worden berekend en opnieuw worden gebruikt. Dat levert stabielere en beter schaalbare aanbevelingen op, en daarom gaf Amazon er ooit de voorkeur aan.

Het koudestartprobleem

CF heeft moeite met nieuwe gebruikers of items waarvoor nog geen beoordelingen bestaan; er is niets om mee te vergelijken. Veelgebruikte oplossingen zijn nieuwe gebruikers om een paar beoordelingen vragen of terugvallen op methoden op basis van inhoud (die later aan bod komen).

Aanbevelingen genereren

Geef elk nog niet beoordeeld item voor een gebruiker een score, sorteer aflopend en geef de beste N terug als aanbevelingen.

scores = {item: predict_for(user, item)
          for item in unrated_items(user)}
top_n = sorted(scores, key=scores.get, reverse=True)[:10]

Korte controle

Test je kennis van collaboratieve filtering.

Samenvatting

Je hebt CF gebouwd op een matrix van gebruikers en items, de cosinusgelijkheid berekend, beoordelingen voorspeld als een op gelijkheid gewogen gemiddelde van buren en gezien waarom CF op items gebaseerd stabieler is dan CF op gebruikersbasis. Volgende onderwerp: matrixfactorisatie met SVD.

Gratis beginnen

Leer Python met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
53
Lessen
225

Veelgestelde vragen

Is de les “Collaborative filtering: op gebruikers en op items” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad Leer AI met Python, waaronder “Collaborative filtering: op gebruikers en op items”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Leer AI met Python bevat in totaal 4 lessen.

Wat leer ik in “Collaborative filtering: op gebruikers en op items”?

Gebruikersgelijkenis, itemgelijkenis, neighborhood-methoden, cosinusgelijkenis voor beoordelingen. Je oefent met Leer AI met Python door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Leer AI met Python te beginnen?

Ervaring vooraf is niet nodig. Leer AI met Python op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 1 van 4.

Hoe lang duurt de les “Collaborative filtering: op gebruikers en op items”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Leer AI met Python?

Ja. Elke les over Leer AI met Python bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Collaborative filtering: op gebruikers en op items
  2. Matrixfactorisatie met SVD
  3. Content-based filtering
  4. Hybride systemen en evaluatiemetrieken
← Terug naar Leer AI met Python