Leer AI met Python · Les

Matrixfactorisatie met SVD

User-itemmatrix, SVD-decompositie, latente factoren, implementatie met de Surprise-bibliotheek.

Les 2 van 413 stappen

Matrixfactorisatie met SVD is een gratis Leer AI met Python-les op CoddyKit. Dit is les 2 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.

Waarom matrixfactorisatie?

De matrix van gebruikers en items is enorm en grotendeels leeg. Matrixfactorisatie comprimeert deze tot twee kleinere matrices met latente factoren: één voor gebruikers en één voor items. Hun product reconstrueert de beoordelingen en vult ontbrekende beoordelingen aan. Dit werkt veel beter met ijle matrices dan methoden met buren.

Intuïtie achter latente factoren

Elke gebruiker en elk item wordt beschreven door een korte vector met verborgen kenmerken, bijvoorbeeld de mate waarin een film actie- of komediekenmerken heeft. Een voorspelde beoordeling is het inwendig product van een gebruikersvector en een itemvector, die volledig uit de gegevens worden geleerd.

SVD voor aanbevelingen

Modellen in de stijl van SVD leren deze factoren door de voorspellingsfout op bekende beoordelingen te minimaliseren, met daarnaast regularisatie. De bibliotheek surprise biedt een kant-en-klare SVD die is geoptimaliseerd voor aanbevelingen en populair werd door de Netflix Prize.

De bibliotheek Surprise

Importeer de onderdelen die je nodig hebt: het algoritme, de gegevensomhulling en de lezer die je gegevensindeling beschrijft.

from surprise import SVD, Dataset, Reader
from surprise.model_selection import cross_validate

Reader en rating_scale

Reader vertelt Surprise wat het geldige beoordelingsbereik is via rating_scale. Stem dit af op je gegevens (bijvoorbeeld 1 tot 5 sterren), anders worden voorspellingen verkeerd gekalibreerd.

reader = Reader(rating_scale=(1, 5))

Een DataFrame laden

Laad een DataFrame met precies drie kolommen, in deze volgorde: gebruiker, item, beoordeling.

data = Dataset.load_from_df(
    df[["user_id", "item_id", "rating"]],
    reader
)

Kruisvalidatie

cross_validate evalueert het model over meerdere vouwen en rapporteert foutmaten, zodat je de nauwkeurigheid eerlijk kunt beoordelen op achtergehouden gegevens.

results = cross_validate(
    SVD(), data,
    measures=["RMSE", "MAE"],
    cv=5,
    verbose=True
)

RMSE en MAE

  • RMSE (wortel van de gemiddelde kwadratische fout) bestraft grote fouten zwaar.
  • MAE (gemiddelde absolute fout) is de gemiddelde absolute afwijking en gemakkelijker te interpreteren.

Lager is voor beide beter; RMSE is de standaardbelangrijkste maatstaf voor het voorspellen van beoordelingen.

Trainen op de volledige verzameling

Train na de validatie op de volledige gegevensverzameling voordat je voorspellingen aanbiedt.

trainset = data.build_full_trainset()
algo = SVD()
algo.fit(trainset)

Voorspellingen maken

algo.predict(uid, iid) geeft een voorspellingsobject terug waarvan het veld .est de geschatte beoordeling voor dat gebruikers-itempaar bevat.

pred = algo.predict(uid="user_42", iid="item_99")
print(pred.est)  # estimated rating

Hyperparameters afstellen

Belangrijke SVD-instellingen zijn n_factors (latente dimensie), n_epochs, lr_all (leersnelheid) en reg_all (regularisatie). Gebruik GridSearchCV om op basis van RMSE de beste combinatie te vinden.

from surprise.model_selection import GridSearchCV

grid = {"n_factors": [50, 100], "reg_all": [0.02, 0.1]}
gs = GridSearchCV(SVD, grid, measures=["rmse"], cv=3)
gs.fit(data)
print(gs.best_params["rmse"])

Korte controle

Test je kennis van matrixfactorisatie.

Samenvatting

Je hebt matrixfactorisatie geleerd via SVD: latente gebruikers- en itemvectoren waarvan het inwendig product beoordelingen voorspelt. Met surprise heb je rating_scale ingesteld, gegevens geladen, cross_validate uitgevoerd met RMSE/MAE, het model getraind en algo.predict(uid, iid) aangeroepen. Volgende onderwerp: filtering op basis van inhoud.

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 “Matrixfactorisatie met SVD” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad Leer AI met Python, waaronder “Matrixfactorisatie met SVD”, 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 “Matrixfactorisatie met SVD”?

User-itemmatrix, SVD-decompositie, latente factoren, implementatie met de Surprise-bibliotheek. 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 2 van 4.

Hoe lang duurt de les “Matrixfactorisatie met SVD”?

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