Kollaboratives Filtern durch Matrixfaktorisierung mit logistischer Verlustfunktion


9

Betrachten Sie das Problem der kollaborativen Filterung. Wir haben Matrix der Größe #users * #items. wenn Benutzer i Element j mag, wenn Benutzer i Element j nicht mag, undwenn es keine Daten über (i, j) Paar gibt. Wir wollen für zukünftige Benutzer-Artikel-Paare vorhersagen .MMi,j=1Mi,j=0Mi,j=?Mi,j

Der Standardansatz für die kollaborative Filterung besteht darin, M als Produkt von 2 Matrizen darzustellen, so dass minimal ist (z. B. Minimierung des mittleren quadratischen Fehlers für bekannte Elemente von ).U×V||MU×V||2M

Für mich scheint die logistische Verlustfunktion besser geeignet zu sein. Warum verwenden alle Algorithmen MSE?


1
In diesem Fall ist es sinnvoll, aber meistens kann M_i, j eine Bewertung sein, und in diesem Fall ist die MSE nützlicher. Ich würde sagen, dass die MSE allgemeiner ist.
Dies ist der

Antworten:


9

Wir verwenden den logistischen Verlust für die implizite Matrixfaktorisierung bei Spotify im Kontext von Musikempfehlungen (unter Verwendung der Wiedergabezahlen). Wir haben gerade einen Artikel über unsere Methode in einem bevorstehenden NIPS 2014-Workshop veröffentlicht. Das Papier trägt den Titel Logistic Matrix Factorization für implizite Feedback-Daten und ist hier zu finden: http://stanford.edu/~rezab/nips2014workshop/submits/logmat.pdf

Code für das Papier finden Sie auf meinem Github https://github.com/MrChrisJohnson/logistic-mf


1
L (R | X, Y, β) = Prod (p (lui | xu, yi, βu, βi) ^ α.r_ui * (1 - p (lui | xu, yi, βu, βi)) ^ (1 - α.r_ui) A hat sich Ihren Code angesehen und Sie verwenden 1 + α.r_ui l64: A = (self.counts + self.ones) * A github.com/MrChrisJohnson/logistic-mf/blob/master/ … Vermisse ich deshalb etwas? Mit freundlichen Grüßen
fstrub

Ich habe mir das von Ihnen veröffentlichte Papier angesehen. Dies ist sehr interessant, da die Matrixfaktorisierung mit logistischer Regression nicht aktiv untersucht wurde. Wie auch immer, ich bin ein bisschen verwirrt mit Ihrer Verlustfunktion (2) L (R | X, Y, β) = Prod (p (lui | xu, yi, βu, βi) ^ α.r_ui * (1 - p (lui) | xu, yi, βu, βi)) In Bezug auf (3) denke ich, dass es einen Tippfehler L (R | X, Y, β) = Prod (p (lui | xu, yi, βu, βi) ^ α gibt .r_ui * (1 - p (lui | xu, yi, βu, βi)) ^ (1 + α.r_ui ) Aber eigentlich bin ich immer noch ein bisschen verwirrt. In der Tat hätte ich ein Bernouilli-ähnliches Gesetz wie dieses erwartet as
fstrub

Vielleicht bin ich ziemlich spät dran. Hat jemand die Möglichkeit gehabt, dieses Algo außerhalb des Kontextes der Musikempfehlung und stattdessen des klassischen Kontextes der Produktempfehlung auszuprobieren? Vielen Dank.
Marco Fumagalli

3

Die meisten Artikel zu diesem Thema befassen sich mit Matrizen, bei denen die Bewertungen auf einer Skala liegen [0,5]. Im Rahmen des Netflix-Preises haben Matrizen beispielsweise diskrete Bewertungen von 1 bis 5 (+ die fehlenden Werte). Aus diesem Grund ist der quadratische Fehler die am weitesten verbreitete Kostenfunktion. Einige andere Fehlermaßnahmen wie die Kullback-Leibler-Divergenz sind zu erkennen.

Ein weiteres Problem , das mit Standard - Matrix - Faktorisierung auftreten kann , ist , dass einige der Elemente der Matrizen U und V sein können negativ (insbesondere in den ersten Stufen). Dies ist ein Grund, warum Sie den Protokollverlust hier nicht als Kostenfunktion verwenden würden.

Wenn Sie jedoch von einer nicht negativen Matrixfaktorisierung sprechen , sollten Sie in der Lage sein, den Protokollverlust als Kostenfunktion zu verwenden. Sie befinden sich in einem ähnlichen Fall wie die logistische Regression, bei der der Protokollverlust als Kostenfunktion verwendet wird: Ihre beobachteten Werte sind Nullen und Einsen und Sie sagen eine Zahl (Wahrscheinlichkeit) zwischen 0 und 1 voraus.

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.