Matrixfaktorisierung mit SVD
Benutzer-Objekt-Matrix, SVD-Zerlegung, latente Faktoren, Implementierung mit der Surprise-Bibliothek.
Matrixfaktorisierung mit SVD ist eine kostenlose Learn AI with Python-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Learn AI with Python-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Learn AI with Python-Kurs umfasst insgesamt 4 Lektionen.
Warum Matrixfaktorisierung?
Die Benutzer-Item-Matrix ist riesig und größtenteils leer. Bei der Matrixfaktorisierung wird sie in zwei kleinere Matrizen mit latenten Faktoren komprimiert: eine für Benutzer und eine für Items. Ihr Produkt rekonstruiert die Bewertungen und ergänzt fehlende Werte. Dadurch lässt sich die geringe Besetzungsdichte deutlich besser handhaben als mit Nachbarschaftsverfahren.
Intuition zu latenten Faktoren
Jeder Benutzer und jedes Item wird durch einen kurzen Vektor verborgener Merkmale beschrieben, etwa Action- oder Comedy-Anteile bei Filmen. Eine vorhergesagte Bewertung ist das Skalarprodukt eines Benutzer- und eines Itemvektors, die ausschließlich aus den Daten gelernt werden.
SVD für Empfehlungen
Modelle nach dem SVD-Verfahren lernen diese Faktoren, indem sie den Vorhersagefehler bei bekannten Bewertungen minimieren und zusätzlich Regularisierung verwenden. Die Bibliothek surprise stellt ein sofort einsetzbares, für Empfehlungen optimiertes SVD-Verfahren bereit, das durch den Netflix Prize bekannt wurde.
Die Surprise-Bibliothek
Importieren Sie die benötigten Komponenten: den Algorithmus, den Dataset-Wrapper und den Reader, der das Format Ihrer Daten beschreibt.
from surprise import SVD, Dataset, Reader
from surprise.model_selection import cross_validateReader und rating_scale
Der Reader teilt Surprise über rating_scale den gültigen Bewertungsbereich mit. Passen Sie ihn an Ihre Daten an (zum Beispiel 1 bis 5 Sterne), da die Vorhersagen sonst falsch kalibriert werden.
reader = Reader(rating_scale=(1, 5))Einen DataFrame laden
Laden Sie einen DataFrame mit genau drei Spalten in dieser Reihenfolge: Benutzer, Item, Bewertung.
data = Dataset.load_from_df(
df[["user_id", "item_id", "rating"]],
reader
)Kreuzvalidierung
cross_validate bewertet das Modell über mehrere Folds hinweg und gibt Fehlermetriken aus, damit Sie die Genauigkeit anhand zurückgehaltener Daten ehrlich beurteilen können.
results = cross_validate(
SVD(), data,
measures=["RMSE", "MAE"],
cv=5,
verbose=True
)RMSE und MAE
- RMSE (Wurzel des mittleren quadratischen Fehlers) bestraft große Fehler besonders stark.
- MAE (mittlerer absoluter Fehler) ist der durchschnittliche absolute Fehler und leichter zu interpretieren.
Bei beiden gilt: Je niedriger, desto besser. RMSE ist die übliche zentrale Metrik für die Vorhersage von Bewertungen.
Mit dem vollständigen Datensatz trainieren
Trainieren Sie das Modell nach der Validierung mit dem gesamten Datensatz, bevor Sie Vorhersagen bereitstellen.
trainset = data.build_full_trainset()
algo = SVD()
algo.fit(trainset)Vorhersagen erstellen
algo.predict(uid, iid) gibt ein Vorhersageobjekt zurück, dessen Feld .est die geschätzte Bewertung für dieses Benutzer-Item-Paar enthält.
pred = algo.predict(uid="user_42", iid="item_99")
print(pred.est) # estimated ratingHyperparameter abstimmen
Wichtige SVD-Parameter sind n_factors (latente Dimension), n_epochs, lr_all (Lernrate) und reg_all (Regularisierung). Verwenden Sie GridSearchCV, um anhand von RMSE die beste Kombination zu finden.
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"])Kurzer Test
Testen Sie Ihr Wissen über Matrixfaktorisierung.
Zusammenfassung
Sie haben Matrixfaktorisierung mit SVD kennengelernt: Latente Benutzer- und Itemvektoren, deren Skalarprodukt Bewertungen vorhersagt. Mit surprise haben Sie rating_scale festgelegt, Daten geladen, cross_validate mit RMSE/MAE ausgeführt, das Modell angepasst und algo.predict(uid, iid) aufgerufen. Als Nächstes folgt inhaltsbasiertes Filtern.
Häufig gestellte Fragen
Ist die Lektion „Matrixfaktorisierung mit SVD“ kostenlos?
Ja — der vollständige Text von „Matrixfaktorisierung mit SVD“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Learn AI with Python-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Learn AI with Python-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Matrixfaktorisierung mit SVD“?
Benutzer-Objekt-Matrix, SVD-Zerlegung, latente Faktoren, Implementierung mit der Surprise-Bibliothek. Du übst Learn AI with Python mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Learn AI with Python zu starten?
Keine Vorkenntnisse erforderlich. Learn AI with Python auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „Matrixfaktorisierung mit SVD“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Learn AI with Python-Lektion Code schreiben und ausführen?
Ja. Jede Learn AI with Python-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Kollaboratives Filtern: benutzer- und objektbasiert
- Matrixfaktorisierung mit SVD
- Inhaltsbasiertes Filtern
- Hybridsysteme und Evaluationsmetriken