Random Forest für Transaktionsdaten

Entscheidungsbäume, Random Forest, Support Vektor Maschinen, Neuronale Netze, ...

Moderator: consuli

Antworten
knuffikatze
Beiträge: 28
Registriert: Mi Apr 19, 2017 9:04 pm

Random Forest für Transaktionsdaten

Beitrag von knuffikatze »

Hallo Ihr Lieben,
ich versuche gerade Kaufwahrscheinlichkeiten für unsere Kunden zu prognostizieren. Die soll gut mit einem randomForest() funktionieren. Jedoch bin ich mir unsicher, wie ich diese Daten in der Modell bekomme. Vielleicht ist das ja auch etwas ganz einfaches.

Meine Daten sind so aufgebaut:

1. Transactionsdaten
Kundennummer, TransactionsID,Nettoumsatz (z.B.: 2,15425,12,76)

2. Bondaten
TransactionsID,Artikelnummer, Menge (z.B.: 15425,125,2)


3. Kundendaten
Kundennummer, Geschlecht, Geburtstag (z.B.: 2,'w',20.10.1986)

Natürlich kann ich diese Daten ganz leicht zusammenspielen. Aber wie kann ich dem System dann mitteilen, dass alles mit der gleichen TransactionsID ein Bon ist und es z.B. pro Kunde die Berechnungen vornimmet?

Vielen Dank für eure Hilfe. Bin noch nicht so fit in dem Thema.

Gruß
Eva
consuli
Beiträge: 479
Registriert: Mo Okt 10, 2016 8:18 pm

Re: Random Forest für Transaktionsdaten

Beitrag von consuli »

Deine Frage ist nicht gut formuliert.

Bitte studiere zuerst die Richtlinien, wie man (insbesondere in diesem Forum) eine Frage gut formuliert, sodass Dir auch gut weitergeholfen werden kann.

MFG
Irmgard.
knuffikatze
Beiträge: 28
Registriert: Mi Apr 19, 2017 9:04 pm

Re: Random Forest für Transaktionsdaten

Beitrag von knuffikatze »

Hallo,

ich versuche mal die Frage etwas besser zu formulieren:

Ich würde gerne anhand von Random Forest z.B. den Umsatz eines Kundens in einem Restaurant in einem bestimmten Zeitraum vorhersagen. Hierzu liegen mir Transaktionsdaten in der folgenden Struktur vor:

Code: Alles auswählen

Classes ‘data.table’ and 'data.frame':  100000 obs. of  8 variables:
 $ TransactionID     : int  3453
 $ StoreID           : int  34
 $ Netto             : num  25.56
 $ Datum             : chr  "2018-11-21" 
 $ CustomerID        : int   234523
 $ NumberOfMainDishes: num  01 2 
 $ ItemID            : int  202345
 $ GlobalCategoryID  : int 2342
(Die Daten kommen von einer FastFood Kette ;) )

Jetzt habe ich einfach mal die Abhängigkeiten vom Nettoumsatz geschätzt:

Code: Alles auswählen

Data1<-na.omit(Data)
Data1[,Datum:=date(Datum)]

ind <- sample(2,nrow(Data1),replace=TRUE,prob=c(0.7,0.3))
trainDatatrx <- Data1[ind==1,]
testDatatrx <- Data1[ind==2,]

trx_rf <- randomForest(Netto~.,data=trainDatatrx[1:10000,],ntree=100,proximity=TRUE)
table(predict(trx_rf),trainDatatrx[1:10000,]$Netto)
varImpPlot(trx_rf)
Und das Ergebnis, was ich bekomme, sagt mir, dass ich mehr Umsatz mache, wenn mehr Hauptgerichte vorhanden sind. Das macht auch Sinn, da im Restaurant fast nur Hauptgerichte verkauft werden und die fast alle gleich viel kosten.

Meine Frage ist nun, wie ich dem Modell sagen kann, dass es sich bei gleicher TransactionID um den gleichen Bon handelt und bei gleicher CustomerID um den gleichen Kunden. Zusätzlich wäre eine andere Verarbeitung mit dem Datum als Zeitkomponente sehr hilfreich.


Könnt ihr mir hier weiterhelfen?


Vielen Dank euch.


Gruß

Eva
consuli
Beiträge: 479
Registriert: Mo Okt 10, 2016 8:18 pm

Re: Random Forest für Transaktionsdaten

Beitrag von consuli »

knuffikatze hat geschrieben: Do Jan 17, 2019 1:23 pm Meine Frage ist nun, wie ich dem Modell sagen kann, dass es sich bei gleicher TransactionID um den gleichen Bon handelt und bei gleicher CustomerID um den gleichen Kunden.
Die IDs könnten entweder erklärende Variable des Modells sein.

Oder Du erzeugst weitere Datensätze, bei denen die Zielvariable (Umsatz) und die übrigen erklärenden Variablen bereits nach CustomerID aggregiert sind.

R Funktion: aggregate(). (Die nähere Erklärung von aggregate() wäre eine allgemeine R Frage)
Irmgard.
bigben
Beiträge: 2771
Registriert: Mi Okt 12, 2016 9:09 am

Re: Random Forest für Transaktionsdaten

Beitrag von bigben »

ID als erklärende wäre halt blöd für out-of-sample Data und Prognosen, oder habe ich Dich da falsch verstanden?
---
Programmiere stets so, dass die Maxime Deines Programmierstils Grundlage allgemeiner Gesetzgebung sein könnte
Benutzeravatar
EDi
Beiträge: 1599
Registriert: Sa Okt 08, 2016 3:39 pm

Re: Random Forest für Transaktionsdaten

Beitrag von EDi »

Meine Frage ist nun, wie ich dem Modell sagen kann, dass es sich bei gleicher TransactionID um den gleichen Bon handelt und bei gleicher CustomerID um den gleichen Kunden. Zusätzlich wäre eine andere Verarbeitung mit dem Datum als Zeitkomponente sehr hilfreich.
Ich sehe den Grund für random forest nicht ganz. 6variablen sind quasi nichts und da müsstest du schon viele interaktion und nicht-linearitäten haben, dass sicht das lohnt.
Auch würde ich transaktion nicht ins model packen (ist dich bestimmt deine unique id?)?
Was sagt denn die Explorative Datenanalyse? Wieso keine andere methode (wenn es dir auf zeitliche korrelation ankommt)?
Bitte immer ein reproduzierbares Minimalbeispiel angeben. Meinungen gehören mir und geben nicht die meines Brötchengebers wieder.

Dieser Beitrag ist lizensiert unter einer CC BY 4.0 Lizenz
Bild.
knuffikatze
Beiträge: 28
Registriert: Mi Apr 19, 2017 9:04 pm

Re: Random Forest für Transaktionsdaten

Beitrag von knuffikatze »

Hallo,

vielen Dank für eure Antworten.

Ich kann die Transaktionen nicht pro Kunde aufsummieren, da es noch um eine zeitliche Ebene geht und auch die Artikelauswahl wichtig ist.
@consuli
"Die IDs könnten entweder erklärende Variable des Modells sein."
Wie kann ich denn in einen random forest die erklärenden Variablen einfügen? Hört sich schon mal gut an.

Der Grund warum ich hier einen Random Forest benutze, ist das ich auch Kaufwahrscheinlichkeiten für einen Zeitraum vorhersagen möchte. Die Umsatzschätzung war nur ein Beispiel von vielen. Ein anderes Beispiel könnte die Kaufwahrscheinlichkeit für ein bestimmtes Produkt sein. Ich habe eine große Datenbasis und auch die Variablen sind ein paar mehr als ich hier aufgelistet habe.
Ich kenne halt ein paar Unternehmen, die genau so eine Methode verwenden, um solche Abschätzungen zu machen.

@Edi was würdest du denn stattdessen für Methoden vorschlagen?

Nochmals vielen Dank für eure Hilfe.

Gruß
Eva
consuli
Beiträge: 479
Registriert: Mo Okt 10, 2016 8:18 pm

Re: Random Forest für Transaktionsdaten

Beitrag von consuli »

knuffikatze hat geschrieben: Mo Jan 21, 2019 12:49 pm @consuli
"Die IDs könnten entweder erklärende Variable des Modells sein."
Wie kann ich denn in einen random forest die erklärenden Variablen einfügen? Hört sich schon mal gut an.
Indem Du

Code: Alles auswählen

trx_rf <- randomForest(Netto~.,data=trainDatatrx[1:10000,]
modifizierst, vermute ich mal.

Damit würdest Du dann neue Transaktionen von alten Transaktionen unterscheiden (quasi eine indirekte Datumsvariable, falls Dir diese fehlt) bzw. neue Kunden von alten unterscheiden.

Wie die anderen bereits zutreffend bemerkten:
Ist halt die Frage, ob Du das willst.
Irmgard.
Antworten