Ein Empfehlungssystem führt ein Protokoll darüber, welche Empfehlungen an einen bestimmten Benutzer gerichtet wurden und ob dieser Benutzer die Empfehlung akzeptiert. Es ist wie
user_id item_id result
1 4 1
1 7 -1
5 19 1
5 80 1
Dabei bedeutet 1, dass der Benutzer die Empfehlung akzeptiert hat, während -1 bedeutet, dass der Benutzer nicht auf die Empfehlung reagiert hat.
Frage: Wie soll ich mit den impliziten Daten (1 oder -1) umgehen, wenn ich basierend auf der oben beschriebenen Art von Protokoll Empfehlungen an eine Reihe von Benutzern richten und die MAP @ 3-Werte maximieren möchte?
Meine Idee ist es, 1 und -1 als Bewertungen zu behandeln und die Bewertung unter Verwendung von Algorithmen vom Typ Faktorisierungsmaschinen vorherzusagen. Dies scheint jedoch angesichts der Asymmetrie der impliziten Daten nicht richtig zu sein (-1 bedeutet nicht, dass der Benutzer die Empfehlung nicht mag).
Bearbeiten 1 Lassen Sie uns im Kontext eines Matrixfaktorisierungsansatzes darüber nachdenken. Wenn wir -1 und 1 als Bewertungen behandeln, gibt es ein Problem. Zum Beispiel mag Benutzer 1 Film A, der in einem Faktor (z. B. mit herrlicher Hintergrundmusik) im Raum des latenten Faktors eine hohe Punktzahl erzielt. Das System empfiehlt Film B, der auch bei "herrlicher Hintergrundmusik" eine hohe Punktzahl erzielt. Aus irgendeinem Grund ist Benutzer 1 jedoch zu beschäftigt, um die Empfehlung zu prüfen, und wir haben einen Film B mit der Bewertung -1. Wenn wir nur 1 oder -1 gleich behandeln Dann wird das System möglicherweise davon abgehalten, Benutzer 1 einen Film mit herrlicher Hintergrundmusik zu empfehlen, während Benutzer 1 Filme mit herrlicher Hintergrundmusik immer noch liebt. Ich denke, diese Situation ist zu vermeiden.
Antworten:
Ihr System ist nicht nur auf empfohlene Elemente geschult, oder? Wenn ja, haben Sie hier eine große Rückkopplungsschleife. Sie möchten aus allen Klicks / Ansichten lernen, hoffe ich.
Sie schlagen vor, dass das Nicht-Betrachten eines Gegenstands ein negatives Signal ist. Ich empfehle dringend, dass Sie es nicht so behandeln. Nicht mit etwas zu interagieren wird fast immer am besten als keine Information behandelt. Wenn Sie ein explizites Signal haben, das auf eine Abneigung hinweist, z. B. eine Abwertung (oder vielleicht 10 Sekunden eines Videos angesehen und gestoppt), ist dies möglicherweise gültig.
Ich würde diese Eingabe nicht als bewertungsähnliche Daten interpretieren. (Obwohl Sie in Ihrem Fall möglicherweise damit durchkommen.) Stellen Sie sich diese stattdessen als Gewichte vor. Dies ist genau die Behandlung in dem Artikel von Hu Koren Volinsky über ALS, den @Trey in einem Kommentar erwähnt. Auf diese Weise können Sie die relative Stärke positiver / negativer Wechselwirkungen aufzeichnen.
Abschließend möchte ich darauf hinweisen, dass dieses Papier, obwohl es sehr wahrscheinlich das ist, wonach Sie suchen, keine negativen Gewichte enthält. Es ist einfach, auf diese Weise zu erweitern. Wenn Sie so weit kommen, kann ich Sie auf die einfache Erweiterung verweisen, die bereits in zwei mir bekannten Implementierungen in Spark und Oryx vorhanden ist .
quelle