Matrixfaktorisierungsmodell für Empfehlungssysteme Wie kann die Anzahl der latenten Merkmale bestimmt werden?


8

Ich versuche, eine Matrixfaktorisierungstechnik für ein einfaches Bewertungsempfehlungssystem für Benutzerelemente zu entwerfen. Ich habe 2 Fragen dazu.

Zuerst in einer einfachen Implementierung, die ich von der Matrixfaktorisierungstechnik für die Filmempfehlung gesehen habe, hat der Autor gerade die Dimensionen der latenten Merkmale initialisiert. Nennen wir es K der beiden latenten Merkmalsbenutzer- und Objektmatrizen, auf eine Konstante K, sagen wir 2 und damit jeweils Von seinen latenten Merkmalsmatrizen P und Q waren NXK und MXK, wobei R die ursprüngliche Bewertungsmatrix für Benutzerelemente ist, die wir mit den Dimensionen NXM (N Benutzer und M Elemente) zu approximieren versuchen. Meine Frage ist also, wie ich in diesem Fall das optimale 'K' (Anzahl der latenten Merkmale) bestimmen kann, anstatt es nur auf eine Konstante zu setzen.

Gibt es auch eine Möglichkeit, Benutzer- oder Artikelinformationen, die ich bereits in meinem Datensatz habe, wie die durchschnittliche Bewertung eines bestimmten Benutzers, das Geschlecht des Benutzers, die Benutzerposition usw., in dieses Ergebnis der Matrixfaktorisierung einzubeziehen, während ich meine endgültige Empfehlung ausspreche (ich denke Vielleicht würde ein Mischmodell mit den Benutzer- und Artikelinformationen, die in einem anderen inhaltsbasierten Filtermodell dargestellt sind, zusammen mit meinem Matrixfaktorisierungsmodell funktionieren?).

1> Meine erste Frage ist, wie man die optimale Anzahl latenter Merkmale bestimmt. K 2> kennt jemand die neuere Literatur, die ein Mischmodell der Matrixfaktorisierung und inhaltsbasierten Filterung implementiert (weil ich denke, dass dies die einzige Möglichkeit wäre, demografische Informationen darzustellen von Benutzern und Elementen in einem gemeinsamen Funktionsbereich.)

Antworten:


3

Als Antwort auf Ihre erste Frage ist die Kreuzvalidierung ein weit verbreiteter Ansatz. Ein mögliches Schema ist das folgende.

Verwenden Sie für jeden K-Wert innerhalb eines vorgewählten Bereichs die Kreuzvalidierung, um die Modellleistung (z. B. Vorhersagegenauigkeit) abzuschätzen. Dies liefert eine geschätzte Modellleistungsmetrik pro k-Wert. Wählen Sie dann das k aus, das der höchsten Leistung entspricht.

Als Antwort auf Ihre zweite Frage würde ich mir Beispiele für einen „hybriden Ansatz“ ansehen, z. B. in http://www.stanford.edu/~abhijeet/papers/cs345areport.pdf


0

Um Ihre erste Frage zu beantworten, würde ich eine Kreuzvalidierung durchführen, und für die zweite Frage würde ich sagen, dass Sie sich mit der Tensorfaktorisierung befassen sollten. Wenn Sie eine mehrdimensionale Datendarstellung haben, können Sie definitiv eine Tensorfaktorisierung in Betracht ziehen, mit der Sie mit einigen zusätzlichen Daten als anderen Dimensionen spielen können.

Sie können den folgenden Link dafür überprüfen.

https://github.com/kuleshov/tensor-factorization
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.