market-basket-analysis

___ answer44624913 ___

Ich bin kein Experte, aber ich bin mir nicht sicher über die Losgröße. Wie ich weiß Keras LSTM zurückgesetzt seinen Zustand nach jedem Batch. Wenn Ihre Stapelgröße 1 ist, setzt LSTM seinen Speicher zurück. Sie vergessen also, was Benutzer 1 bei der Verarbeitung von Zeitschritt 2 zu Zeitschritt 1 getan hat. Die maximale Anzahl von Einkäufen kann Ihre Batch-Größe sein. Sie können die Maskierung verwenden, um den Effekt des Auffüllens zu vermeiden.

    
___ qstnhdr ___ Wie trainiere ich das LSTM-Modell für Sequenzelemente? ___ tag123sequenz ___ Eine Sequenz ist eine geordnete Liste von Objekten (oder Ereignissen). Wie eine Menge enthält sie Elemente (auch Elemente oder Terme genannt) und die Anzahl der Terme (möglicherweise unendlich) wird als Länge der Sequenz bezeichnet. Im Gegensatz zu einer Menge ist die Reihenfolge wichtig, und genau dieselben Elemente können mehrmals an verschiedenen Positionen in der Sequenz erscheinen. In einer relationalen Datenbank ist eine Sequenz ein Objekt, das zum Generieren eindeutiger Zahlen für einen Primärschlüssel verwendet wird. ___ tag123keras ___ Keras ist eine minimalistische, hochgradig modulare neuronale Netzwerkbibliothek, die eine Python-API auf hohem Niveau bietet, die Rapid Prototyping ermöglicht und die Verwendung eines von mehreren rechnergestützten Back-Ends ermöglicht. ___ answer48413282 ___

Indem Sie das Netzwerk an alle Benutzer in Ihrer Schleife anpassen, erstellen Sie ein verallgemeinertes Modell für alle Benutzer. Das ist wahrscheinlich der Grund, warum Sie ähnliche Ergebnisse für Testdaten erhalten.

Das von Ihnen erwähnte Papier soll Folgendes erfassen: 1) allgemeines Interesse jedes Benutzers aus Daten vergangener Körbe UND 2) sequentielle Informationen in Käufen (z. B. gekauft Brot, nächstes Mal wird Butter kaufen)

Sehen Sie sich die Beschreibung von Abbildung 1) an.

  

Die Eingabeschicht umfasst eine Reihe von Korbdarstellungen von a   Benutzer. Dynamische Darstellung des Benutzers kann im Verborgenen erhalten werden   Schicht. Schließlich zeigt die Ausgabeschicht Werte dieses Benutzers gegenüber allen   Gegenstände.

Ich glaube, sie trainieren ein Modell für jeden Benutzer im laufenden Betrieb und sagen daraus voraus. Die Art, wie sie dies durchführbar machen, ist das Sammeln von Gegenständen in jedem Korb.

Für ihre Daten funktionierte max_pooling besser, aber Sie konnten avg_pooling auch wie in der Zeitung ausprobieren. Hoffe das hilft. Versuchen Sie, dieses Papier selbst zu implementieren, also wenn Sie irgendwelche Fortschritte haben, lassen Sie es uns bitte wissen.

    
___ qstntxt ___

Ich versuche das LSTM-Modell für die nächste Warenkorbempfehlung zu verwenden. Ich möchte den gleichen Ansatz anwenden, den dieser Artikel: Ein dynamisches rekurrentes Modell für Next Basket Empfehlung

In meinem Fall habe ich einige Benutzer, die einige Artikel zu unterschiedlichen Zeiten kaufen. Also habe ich meine X-Daten wie folgt gestaltet:

%Vor%

Die Sequenzelemente repräsentieren ein Array mit der Form (1,20). Diese Vektoren sind die Durchschnittsdarstellung jedes Elements (generieren mit word2vec), das während jeder Sequenz gekauft wurde.

Dann entwerfe ich mein Label wie:

%Vor%

Der Label-Benutzer repräsentiert die nächste Reihenfolge jedes Benutzers nach seinen vergangenen Aufträgen, die in X-Daten darstellen. Außerdem sind die Beschriftungen Vektoren wie [1 0 1 0 0 0 .. 1], wobei 1 angibt, dass der Benutzer das Element gekauft hat, und ansonsten 0.

Also würde ich gerne das LSTM verwenden, um die vergangenen Sequenzen jedes Benutzers zu trainieren, um die nächsten Kaufsequenzen vorherzusagen. Im Folgenden definiere ich ein LSTM-Modell, bei dem ich die Sequenz nicht zurückgebe, weil ich eine Beschriftung nach Benutzer habe.

%Vor%

Wie Sie sehen können, trainiere ich mein LSTM mit batch_size = 1, weil der Zeitschritt zwischen den Benutzern unterschiedlich ist. Ich passe das Modell an 70% der Benutzer an und ich teste das Modell auf dem Rest.

Meine Ergebnisse sind sehr schlecht, die Top-n-Elemente, die vom Modell für jeden Benutzertest empfohlen werden, sind sehr ähnlich. Beispiel: Für einen bestimmten Benutzer empfiehlt das Modell Artikel, die nie in den alten Sequenzen angezeigt werden. Normalerweise muss es die verglichenen Elemente mit den letzten Sequenzen vorhersagen, also sollte es hohe Wahrscheinlichkeiten für die Artikel vorhersagen, die in der Vergangenheit gekauft wurden.

Offensichtlich scheint meine Vorgehensweise falsch zu sein. Vielleicht sind die Design- und Trainingsdaten nicht für mein Ziel angepasst. Haben Sie eine Idee oder einen Rat, um die Daten anzupassen, um mein Ziel zu erreichen?

Hinweis: Wenn ich ein LSTM-Modell mit nur einem Benutzer mit seinen Sequenzen und seinen Beschriftungen zu jedem Zeitpunkt (repräsentiert die nächste Reihenfolge zu jeder Zeitsequenz) anordne, bekomme ich gute Ergebnisse, um die nächste Bestellung mit der letzten Benutzerbestellung vorherzusagen . Aber dieser Ansatz zwingt mich, N-Benutzer LSTM-Modell zu trainieren, ist also nicht richtig.

Danke dir,

    
___ tag123recommendationengine ___ Bei Fragen zu Empfehlungs-Engines, kollaborativer Filterung und Personalisierung. Fragen neigen dazu, algorithmisch oder statistisch zu sein. ___ tag123lstm ___ Langer Kurzzeitgedächtnis. Eine neuronale Netzwerkarchitektur, die wiederkehrende NN-Blöcke enthält, die sich einen Wert für eine beliebige Zeitspanne merken können. Ein sehr beliebter Baustein für tiefe NN. ___ tag123marketbasketanalyse ___ Warenkorbanalyse - ein eindeutiges Konzept im Data Mining, bei dem häufig gemeinsam gekaufte Artikel analysiert werden. ___
2
Antworten

Wie trainiere ich das LSTM-Modell für Sequenzelemente?

Ich versuche das LSTM-Modell für die nächste Warenkorbempfehlung zu verwenden. Ich möchte den gleichen Ansatz anwenden, den dieser Artikel: Ein dynamisches rekurrentes Modell für Next Basket Empfehlung In meinem Fall habe ich einige Benutze...
13.06.2017, 20:20