Lär Er AI med Python · Lektion

Matrisfaktorisering med SVD

Användar-objekt-matris, SVD-faktorisering, latenta faktorer, implementering med Surprise-biblioteket.

Lektion 2 av 413 steg

Matrisfaktorisering med SVD är en gratis lektion i Lär Er AI med Python på CoddyKit. Detta är lektion 2 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Lär Er AI med Python, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Lär Er AI med Python innehåller totalt 4 lektioner.

Varför matrisfaktorisering?

Användar–objekt-matrisen är enorm och till största delen tom. Matrisfaktorisering komprimerar den till två mindre matriser med latenta faktorer, en för användare och en för objekt. Deras produkt återskapar och fyller i betygen. Detta hanterar gleshet mycket bättre än grannbaserade metoder.

Intuition för latenta faktorer

Varje användare och varje objekt beskrivs av en kort vektor med dolda egenskaper, till exempel hur mycket action eller komedi en film innehåller. Ett förutsagt betyg är skalärprodukten av en användarvektor och en objektvektor, där vektorerna lärs helt och hållet från data.

SVD i rekommendationer

Modeller av SVD-typ lär sig dessa faktorer genom att minimera prediktionsfelet för kända betyg och samtidigt använda regularisering. Biblioteket surprise tillhandahåller en färdig SVD-modell optimerad för rekommendationer, som blev populär genom Netflix Prize.

Biblioteket Surprise

Importera de delar du behöver: algoritmen, datauppsättningsomslaget och läsaren som beskriver dataformatet.

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

Reader och rating_scale

Reader anger det giltiga betygsintervallet för Surprise via rating_scale. Anpassa det till dina data (till exempel 1 till 5 stjärnor), annars blir prediktionerna felkalibrerade.

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

Läsa in en DataFrame

Läs in en DataFrame med exakt tre kolumner i följande ordning: user, item, rating.

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

Korsvalidering

cross_validate utvärderar modellen över flera foldar och rapporterar felmått, så att du på ett rättvist sätt kan bedöma träffsäkerheten på data som hållits undan.

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

RMSE och MAE

  • RMSE (root mean squared error) ger stora fel stor vikt.
  • MAE (mean absolute error) är det genomsnittliga absoluta felet och är enklare att tolka.

Lägre värde är bättre för båda måtten. RMSE är det standardiserade huvudmåttet för betygsprediktion.

Träna på hela datauppsättningen

Efter valideringen tränar du på hela datauppsättningen innan du börjar leverera prediktioner.

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

Göra prediktioner

algo.predict(uid, iid) returnerar ett prediktionsobjekt vars fält .est innehåller det uppskattade betyget för det användar–objekt-paret.

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

Justera hyperparametrar

Viktiga SVD-parametrar är n_factors (latent dimension), n_epochs, lr_all (inlärningshastighet) och reg_all (regularisering). Använd GridSearchCV för att hitta den bästa kombinationen baserat på RMSE.

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"])

Snabbtest

Testa dina kunskaper om matrisfaktorisering.

Sammanfattning

Du lärde dig matrisfaktorisering med SVD: latenta användar- och objektvektorer vars skalärprodukt förutsäger betyg. Med surprise angav du rating_scale, läste in data, körde cross_validate med RMSE/MAE, tränade modellen och anropade algo.predict(uid, iid). Nästa avsnitt: innehållsbaserad filtrering.

Gratis att börja

Lär dig Python med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
53
Lektioner
225

Vanliga frågor

Är lektionen ”Matrisfaktorisering med SVD” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Lär Er AI med Python, inklusive ”Matrisfaktorisering med SVD”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Lär Er AI med Python innehåller totalt 4 lektioner.

Vad lär jag mig i ”Matrisfaktorisering med SVD”?

Användar-objekt-matris, SVD-faktorisering, latenta faktorer, implementering med Surprise-biblioteket. Ni övar på Lär Er AI med Python med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Lär Er AI med Python?

Du behöver inga förkunskaper. Utbildningen i Lär Er AI med Python på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.

Hur lång tid tar lektionen ”Matrisfaktorisering med SVD”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Lär Er AI med Python-lektionen?

Ja. Varje Lär Er AI med Python-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Kollaborativ filtrering: användarbaserad och objektbaserad
  2. Matrisfaktorisering med SVD
  3. Innehållsbaserad filtrering
  4. Hybridsystem och utvärderingsmått
← Tillbaka till Lär Er AI med Python