Ist es sinnvoll, den Rückruf in Empfehlungssystemen zu messen?

8

Angenommen, ich habe ein Empfehlungssystem erstellt, das (z. B. Filmrankings oder was auch immer von vielen Benutzern angegeben wird) eine Liste von 10 empfohlenen Filmen erstellt, die jeder Benutzer ansehen kann. Stellen Sie sich vor, ich habe auch einen großen Pool an Filmelementen sowie ein Protokoll mit Benutzerbewertungen und Filmen, die sie tatsächlich ansehen möchten. Daher möchte ich diesen Datensatz verwenden, um mein System zu bewerten.

Ich habe in der Literatur gesehen, dass diese Aufgaben "einige gute Gegenstände vorschlagen" normalerweise mit Präzision, Rückruf und F1-Scores bewertet werden (siehe z. B. [1] ). Ich denke, dass ich mich insbesondere für "Präzision bei 10" interessieren sollte. Ich bin mir jedoch nicht ganz sicher, wie man diese Kennzahlen in dem oben beschriebenen Szenario berechnen soll (oder ob sie sinnvoll sind).

Anscheinend ist es am besten, die Probe zufällig in einen "Trainings" - und einen "Test" -Teil zu unterteilen. Und dann füttere die Trainingsdaten meinem Algorithmus, damit er eine Liste mit 10 Vorhersagen erstellen kann.

Jetzt macht Präzision irgendwie Sinn. Ich kann anhand der 10 Vorhersagen überprüfen, wie viele davon tatsächlich in den Filmen enthalten sind, die der Benutzer in den Testdaten gesehen hat.

Wenn der Benutzer jedoch viele Filme in den Testdaten angesehen hat, sagen wir etwa 50; Es gibt keine Möglichkeit, eine "gute" Rückrufbewertung zu erhalten, einfach weil mein System nur 10 Filme produzieren musste und ich höchstens 1/5 = 0,2 Rückruf erhalten würde.

Wenn ich den Test nur darauf beschränke, die "nächsten 10 gesehenen" Filme des Benutzers zu erraten (so dass die Möglichkeit besteht, einen "perfekten Rückruf" zu erhalten), sind Präzision und Rückruf immer genau dieselbe Zahl (wenn der empfohlene Nummer und die für den Benutzer relevante Nummer ist gleich, Präzision und Rückruf sind auch immer gleich).

Mache ich etwas falsch? Oder machen diese Metriken im betrachteten Szenario einfach keinen Sinn?

Juan A. Navarro
quelle

Antworten:

7

Im Falle eines "Top-N" -Empfehlungssystems ist es hilfreich, einen "unvoreingenommenen" Testdatensatz zu erstellen (z. B. indem tausend zufällige nicht beobachtete / nicht bewertete Filme zur Liste der angesehenen Filme aus dem Holdout-Datensatz für einen bestimmten Benutzer hinzugefügt werden ) und Bewertung des resultierenden Testdatensatzes anhand eines Modells. Sobald dies für eine Reihe von Benutzern durchgeführt wurde, kann die Kurve "Präzision gegen Rückruf" und die Kurve "Rückruf bei N gegen N" (sowie die Empfindlichkeits- / Spezifitäts- und Auftriebskurven) berechnet werden, anhand derer die Qualität von beurteilt werden kann ein gegebenes Modell. Dieser Artikel, Leistung von Empfehlungsalgorithmen für Top-N-Empfehlungsaufgaben von Cremonesi et al., Enthält weitere Details.

Wenn ein bestimmtes Modell Zeitdynamik enthält, sollte die Aufteilung zwischen Training und Test entlang der Zeitdimension erfolgen (nicht ganz zufällig).

Jewgeni
quelle
defekter Link ist es
ldmtwo
0

In den meisten Fällen führt ein Rückruf nicht zu einem Ergebnis, das absolut bewertet werden kann. Sie sollten den Rückrufwert verwenden, um einen Algorithmus in Bezug auf einen anderen zu bewerten.

Wenn ein Algorithmus A einen Rückrufwert von 0,2 hat (wie in Ihrem Beispiel), ist es schwierig zu interpretieren, was dieser Wert bedeutet. Wenn jedoch ein anderer Algorithmus B einen Rückrufwert von 0,15 hat (bei gleichem Versuchsaufbau), können Sie daraus schließen, dass Algorithmus A in Bezug auf den Rückruf eine bessere Leistung als Algorithmus B aufweist.

Mean Absolute Error (MAE) ist nicht so, es kann von selbst interpretiert werden.

Sanyo Mn
quelle