Kostenfunktionen für kontextbezogene Banditen

14

Ich benutze Vowpal Wabbit , um ein kontextuelles Banditenproblem zu lösen . Ich zeige den Nutzern Anzeigen und habe einiges an Informationen über den Kontext, in dem die Anzeige geschaltet wird (z. B. wer der Nutzer ist, auf welcher Website er sich befindet usw.). Dies scheint ein ziemlich klassisches kontextuelles Banditenproblem zu sein, wie von John Langford beschrieben .

In meiner Situation gibt es zwei Hauptantworten, die ein Nutzer auf eine Anzeige haben kann: Klicken (möglicherweise mehrmals) oder Nichtklicken. Ich habe ungefähr 1.000 Anzeigen, zwischen denen ich wählen kann. Vowpal Wabbit benötigt action:cost:probabilityfür jeden Kontext eine Zielvariable in der Form von . In meinem Fall actionund probabilityeinfach herauszufinden: actionIst die Anzeige, die ich geschaltet habe, und probabilityist die Wahrscheinlichkeit, dass ich diese Anzeige aufgrund meiner aktuellen Richtlinien für die Schaltung von Anzeigen auswähle.

Ich habe jedoch Probleme, eine gute Methode zu finden, um meine Auszahlungen (Klicks) auf die Kosten abzubilden. Klicks sind offensichtlich gut, und mehrere Klicks auf dieselbe Anzeige sind auch besser als einzelne Klicks auf dieselbe Anzeige. Kein Klick auf eine Anzeige ist jedoch neutral: Es kostet mich nichts anderes als die verpasste Gelegenheit für einen Klick (ich arbeite in einem merkwürdigen Werbekontext).

Einige Ideen, die ich hatte, sind:

  1. Kosten = -1 * Zeichen (Klicks) + 0 * (nicht angeklickt)
  2. Kosten = -1 * Klicks + 0 * (nicht angeklickt)
  3. Kosten = -1 * Vorzeichen (Klicks) + 0,01 * (nicht angeklickt)
  4. Kosten = -1 * Klicks + 0.01 * (nicht angeklickt)

Im Falle eines Aktionsvektors (0, 1, 5, 0)wären die Kosten aus diesen 4 Funktionen:

  1. (0, -1, -1, 0)
  2. (0, -1, -5, 0)
  3. (0.01, -1, -1, 0.01)
  4. (0.01, -1, -5, 0.01)

Es gibt offensichtlich viele andere Möglichkeiten, dies darzustellen, clicks=goodund no clicks=bad.wie sollte ich im Allgemeinen die Kosten für kontextbezogene Banditenprobleme in Vowpal Wabbit modellieren? Ist es in Ordnung, Vorteile als negative Kosten darzustellen, oder sollte ich alles neu skalieren, sodass alle Kosten positiv sind? Ist es in Ordnung, dass relativ neutrale Aktionen keine Kosten verursachen, oder sollte ich ihnen kleine positive Kosten geben, um das Modell in Richtung der positiven Aktionen zu treiben?

Zach
quelle
1
Ich bin verwirrt von "Es gibt 2 mögliche Aktionen: Ein Nutzer kann auf die Anzeige klicken oder ein Nutzer kann nicht auf die Anzeige klicken." Wenn Sie sich entscheiden möchten, welche Anzeige geschaltet werden soll, sollten die Anzeigen dann nicht die Aktionen sein?
Alt
1
@alto: Ich denke, das sollte lauten "Es gibt 2 mögliche Antworten, die wir für einen Benutzer aufzeichnen können". Ist das sinnvoller?
Zach
Ich bin nicht sicher, ob dies wirklich ein kontextuelles Banditenproblem ist, weil ich nicht sicher bin, was Ihr Ziel hier ist. Lösen des kontextuellen Banditenproblems "versucht, eine Richtlinie zu optimieren, die Aktionen mit minimalen Kosten für die beobachteten Kontexte auswählt." Versuchen Sie herauszufinden, wie viele Anzeigen geschaltet werden sollen? Versuchen Sie, das Verbraucherverhalten zu modellieren? Etwas anderes?
Shadowtalker
1
@ssdecontrol Ich versuche herauszufinden, welche Anzeige in einem bestimmten Kontext geschaltet werden soll. Es ist ein häufig verwendetes Beispielproblem für kontextbezogene Banditen, aber ich erhalte wirklich schlechte Ergebnisse durch den kontextbezogenen Banditenlöser von vowpal-wabbit. Ich habe mich gefragt, ob es vielleicht eine andere Möglichkeit gibt, die "Kosten" für einen Klick oder einen Nicht-Klick auf eine Anzeige anzugeben.
Zach
1
@nik Ich habe es nie wirklich herausgefunden und bin stattdessen mit einem normalen Multiclass-Modell von VW gefahren.
Zach

Antworten: