Matrisfaktorisering med SVD
Användar-objekt-matris, SVD-faktorisering, latenta faktorer, implementering med Surprise-biblioteket.
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_validateReader 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 ratingJustera 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.
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
- Kollaborativ filtrering: användarbaserad och objektbaserad
- Matrisfaktorisering med SVD
- Innehållsbaserad filtrering
- Hybridsystem och utvärderingsmått