Markov-Entscheidungsprozess in R für eine Song-Vorschlags-Software?


7

Wir haben einen Musik-Player mit unterschiedlichen Wiedergabelisten, der automatisch Titel aus der aktuellen Wiedergabeliste vorschlägt, in der ich mich befinde. Ich möchte, dass das Programm lernt, dass wenn ich den Titel überspringe, die Wahrscheinlichkeit verringert wird, dass er erneut in dieser Wiedergabeliste abgespielt wird . Ich denke, dies wird als Verstärkungslernen bezeichnet, und ich habe ein wenig über die Algorithmen gelesen und festgestellt, dass der Markov-Entscheidungsprozess (MDP) genau das zu sein scheint, was wir hier haben. Ich weiß, dass es in MDP mehr als einen Status gibt, daher dachte ich, dass dies für diesen Fall die verschiedenen Wiedergabelisten bedeuten würde. Abhängig vom Status (Wiedergabeliste), in dem ich mich befinde, werden beispielsweise die Songs ausgewählt, die seiner Meinung nach am besten passen, und "bestraft" (durch Überspringen), wenn sie falsch ausgewählt wurden.

Glaubt ihr, das ist der richtige Ansatz? Oder würden Sie einen anderen Algorithmus vorschlagen? Ist das alles überhaupt sinnvoll, sollte ich mehr Informationen geben?

Wenn es richtig klingt, möchte ich Sie um einige Tutorials oder Ansatzpunkte bitten, die sich mit MDP in R befassen. Ich habe online gesucht, aber nur die MDP-Toolbox in R gefunden und es macht für mich keinen Sinn . Hast du irgendwelche Vorschläge?


Beachten Sie, dass das Nachfragen nach R (etc) -Paketen / Code usw. hier nicht zum Thema gehört. Der Kern Ihrer Frage ist sicherlich themenbezogen, aber Sie erhalten möglicherweise keine R-Vorschläge mit einer Antwort.
Gung - Reinstate Monica

Oh! Okay, dann erwarte ich das nicht, danke, dass
du

Antworten:


2

Diese Frage ist jetzt Monate alt, aber immer noch interessant. Für mich klingt dies wie eine massive Kontingenztabelle oder spärliche Daten, ein Tensorproblem . Dies macht keine der MDP- oder Verstärkungslernprobleme zur Diskussion, sondern richtet lediglich den statistischen Rahmen neu, in dem sie modelliert werden.

Die Entscheidung oder abhängige Variable ist, ob ein Titel aus einer möglicherweise sehr großen Wiedergabeliste ausgewählt wird oder nicht und ob er nach der Auswahl abgelehnt oder abgespielt wird. Korrigieren Sie mich, wenn ich falsch liege, aber kann dies nicht mit Effektcodierung oder 0, 1 für Ja / Nein behandelt werden - wird es gespielt? - und -1 wenn es abgelehnt wird?

Aufgrund der Frage sehe ich keinen Grund, dies als sequentielle Markov-Kette oder longitudinale Zeitreihe zu behandeln, insbesondere angesichts der Zufälligkeit der Ziehungen aus der Wiedergabeliste, kann aber anders überzeugt werden. Ausnahmen von dieser Regel könnten die Überlegung sein, ob der Algorithmus Songpräferenzen als Funktion beispielsweise des Genres "lernt".

Die Sparsity ist eine Funktion des Intervalls für den Zeitraum, über den die Auswahlmöglichkeiten aggregiert werden, sowie der Größe der Wiedergabeliste. Wenn das Intervall zu kurz oder die Wiedergabeliste zu groß ist, ist Sparsamkeit das unvermeidliche Ergebnis.

Der Stand der Technik für die Tensormodellierung sind wahrscheinlich die Papiere von David Dunson, z. B. Bayesian Tensor Regression , aber es gibt viele Leute mit vielen Papieren, die auf diesem Gebiet arbeiten (Übersichten finden Sie in den DDs-Papieren auf seiner Duke-Website).


2

Das Problem kann als Markov-Entscheidungsproblem modelliert werden. Ich habe versucht, das Problem in das MDP-Framework zu integrieren. Lassen Sie mich wissen, ob dies hilfreich ist.

Unter der Annahme, dass es eine Methode zum Auswählen eines Songs in einem Wiedergabelisten-Cluster gibt, würden die Status als solche Cluster für MDP fungieren.

Das Definieren einer Übergangswahrscheinlichkeitsmatrix zwischen Clustern und Aktionen von MDP wäre eine Änderung dieser Matrix. Hier würden App-Benutzereingaben als externe Störungen im Modell wirken. Das Belohnungs- / Kostenmodell würde von diesen externen Störungen abhängen.

Zusammenfassend,

Status: Wiedergabelistencluster

Aktionen: Aktualisierungen in der Übergangswahrscheinlichkeitsmatrix

Störungen: App-Benutzereingaben als Akzeptieren / Ablehnen des Songs

Kostenfunktion: Stochastische Ausgabe darüber, ob ein Benutzer die nächsten Vorschläge annehmen / ablehnen würde

Eine Erweiterung wäre, das Benutzerverhalten als stochastischen Prozess zu simulieren und die Parameter basierend auf den tatsächlichen Daten abzuleiten.


0

Es ist richtig, dass es hier ein Problem beim Reinforcement Learning gibt. Die negative Verstärkung wäre, wenn die Person das Lied überspringt, und positiv, wenn sie es nicht tut. In diesem Fall würde die Aktion darin bestehen, das Lied auszuwählen, und Sie wollten, dass der Status eine Wiedergabeliste ist. Ich halte das nicht für eine gute Idee. Erstens hätten Sie eine unterschiedliche Anzahl von Songs (also Aktionen) pro Wiedergabeliste (Status), was wenig Sinn macht.

Ich würde es ein bisschen verallgemeinern:

  • Zustand: Zum Beispiel die Stimmung der Person oder die Musikpräferenz der Person.
  • Aktion: Wählen Sie zum Beispiel eine Art von Musik / Künstler.
  • Belohnung: negativ beim Überspringen, sonst 0 oder positiv.

Auf diese Weise ist die Methode allgemeiner und die Metadaten (Musiktyp, Künstler, ..) können beispielsweise einfach aus einer MP3-Datei extrahiert werden.

Ich habe kein R-Paket mit MDPs verwendet, aber dieser Link scheint interessant zu sein: Reinforcement Learning in R: Markov Decision Process (MDP) und Value Iteration

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.