Ich möchte ein dynamisches Modell implementieren, um einem Benutzer einen Film zu empfehlen. Die Empfehlung sollte jedes Mal aktualisiert werden, wenn der Benutzer einen Film ansieht oder bewertet. Um es einfach zu halten, denke ich daran, zwei Faktoren zu berücksichtigen:
- die vergangenen Bewertungen anderer Filme durch den Benutzer
- die Zeit, die der Benutzer bestimmte vergangene Filme angesehen hat
Wie würde man ein solches Modell aufbauen und was empfiehlt die wissenschaftliche Literatur?
Ich bin neu auf diesem Gebiet und vermute, dass ein lineares Regressionsmodell ein gutes Ergebnis liefern könnte, ohne auf komplexere Methoden zu verzichten, um unnötige Unsicherheiten bei den Parameterschätzungen zu vermeiden. Aber vielleicht gibt es bereits etablierte Methoden, die in der Praxis häufig angewendet werden?
machine-learning
recommender-system
dynamic-regression
JohnAndrews
quelle
quelle
Antworten:
Dies ist tatsächlich ein relativ bekanntes Problem im Bereich des maschinellen Lernens. Im Jahr 2006 bot Netflix dem Algorithmus 1 Million US-Dollar an, was die beste sinnvolle Verbesserung für sein Empfehlungssystem darstellte. Die Theorie der Siegerlösung wird in diesem Caltech-Lehrbuch zur Einführung in maschinelles Lernen kurz erörtert .
Grundsätzlich wurde eine Ensemble-Lernmethode angewendet. Insbesondere wurde eine Art Mischen oder Stapeln angewendet. Das ist nicht trivial, aber irgendwie intuitiv. Um die Intuition zu verstehen, unterschiedliche statistische Ansätze in Einklang zu bringen, sollten Sie die unterschiedlichen Gründe berücksichtigen, aus denen verschiedene Leute dieselben Filme mögen: Joe mag Topgun, weil er Actionfilme aus den 80ern liebt, während Jane Topgun mag, weil sie Filme mit Kenny Loggins-Soundtracks mag. Die Tatsache, dass beide Zuschauer den Film angesehen (und hoch bewertet) haben, bedeutet nicht unbedingt, dass sie andere Filme mit hoher Wahrscheinlichkeit mögen werden. Der Vorhersagealgorithmus wäre idealerweise in der Lage, diese Unterschiede zumindest in gewisser Weise auszugleichen.
Dies mag die Lösung recht einfach klingen lassen, aber es ist definitiv nicht einfach, konkurrierende Algorithmen auszugleichen und die beste Schätzung für jeden Fall zu priorisieren. Die Tatsache, dass Netflix ein so großes Kopfgeld angeboten hat, dürfte das Ausmaß der Herausforderung ziemlich offensichtlich machen.
Wenn Sie gerade erst mit maschinellem Lernen anfangen, kann das Auschecken der oben genannten Ressourcen je nach Ihrem Interesse und Ihrem mathematischen Hintergrund hilfreich sein. Regression würde also wahrscheinlich von gut zu gut funktionieren, aber es ist eine deutlich bessere Leistung möglich.
quelle
Die halbe Herausforderung bei diesen Problemen besteht darin, zu wissen, wonach gesucht werden muss.
Sie haben das Tag möglicherweise hinzugefügt, ohne es zu bemerken, suchen jedoch nach Informationen zu Empfehlungssystemen . Vielleicht möchten Sie mit der kollaborativen Filterung beginnen , oder besser mit dem auf dieser Seite zitierten Introduction to Recommender Systems Handbook von Ricci, Rokach und Shapira .
quelle
Sie sollten Andrew Ngs Kurs auf Coursera besuchen : https://www.coursera.org/learn/machine-learning Es enthält eine Lektion zum Erstellen von Empfehlungssystemen, die genau das ist, wonach Sie suchen. Im Wesentlichen ist es eine Form der linearen Regression, die synthetische Attribute für Filme von Personen lernt, die Filme bewertet haben, und diese verwendet, um Empfehlungen für Personen vorherzusagen, die die Filme nicht bewertet / angesehen haben.
quelle
Bei der Netflix Challenge (Okt. 2006 - Sep. 2009) gewann ein sehr großes Ensemble (107 separate Submodelle) am Ende den Hauptpreis in Höhe von 1 Mio. USD. Es ist jedoch aufschlussreich, dass die ersten einfachen (nicht zusammengesetzten) Algorithmen das Netflix Cinematch geschlagen haben Der Benchmark basierte auf einer verallgemeinerten (dünn besetzten) SVD. Dieser erste Meilenstein im Kampf gegen Cinematch wurde nur 6 Tage nach dem Start des Wettbewerbs durch ein Team namens WXYZConsulting erreicht.
SVD (Singular Value Decomposition) ist ein Matrixfaktorisierungsalgorithmus, bei dem Sie mit einer 2D-
[user, movie]
Matrix mit einer Bewertung (1 bis 5 Sterne) an jeder[u, m]
Position (*) beginnen und diese in 3 Matrizen aufteilen, wobei die mittlere Matrix eine Quadratmatrix aus ist latente Wechselwirkungen zwischen Nutzern und Filmen.Sie können den Rang der quadratischen Matrix verkleinern oder vergrößern, um mehr oder weniger solche Wechselwirkungen mit latenten Faktoren zu berücksichtigen.
Es gibt mehrere freie Software-Implementierungen für schnelle / effiziente SVD mit geringer Dichte. Zum Beispiel redsvd oder vowpal-wabbit. Bevor Sie also Ihre eigenen schreiben, möchten Sie sie vielleicht ausprobieren.
(*) Die meisten dieser Einträge sind Null, da die meisten Benutzer die meisten Filme nicht bewertet haben. dh die Matrix ist sehr dünn.
Verweise:
quelle