Hallo,
Ich verwende den Standard JMP, nicht den Pro ...
Und ich möchte ein nächstbestes Produktkategorienmodell bauen. Wenn zum Beispiel ein Kunde die Produktkategorie A gekauft hat, welches Produkt wird er als nächstes kaufen? Ist dies in der von mir verwendeten JMP-Version möglich? Ich habe nur 6 Produktkategorien, also nicht wie die Warenkorbanalyse
Ihre Hilfe wäre sehr dankbar, da sie dringend ist.
Ich danke dir sehr
Danke dir
Wie sehen Ihre Daten aus? Haben Sie für jeden Kunden einen "Korb"?
Ich denke, eine mögliche einfache Lösung könnte sein, mit jedem Korb als Datenzeile zu beginnen. Dann hätten Sie für jede Produktkategorie Indikatorspalten: 1 = gekauft; 0 = nicht gekauft
Dann geben Ihnen die multivariaten Korrelationen (Analysieren> Multivariate Methoden> Multivariate) dieser Indikatorvariablen an, welche Produktkategorien zusammen gekauft wurden.
Nicht sicher, was der beste Weg ist, vielleicht die Notfallplattform, aber hier ist eine Idee:
Ich vermute, Sie haben nicht genügend Daten zu jedem Kunden, um eine personalisierte Vorhersage treffen zu können. Daher werden bei dieser Idee die Daten für alle Kunden zur Vermutung herangezogen. Ich habe eine Tabelle mit synthetisierten Daten mit einer Abfolge von Einkäufen erstellt:
Kaufdaten des Kunden
Und mache Vorschläge wie folgt:
letzter Einkauf: 1 schlägt nächsten Einkauf vor: 2
letzter Einkauf: 2 schlägt nächsten Einkauf vor: 3
letzter Einkauf: 3 schlägt nächsten Einkauf vor: 4
letzter Einkauf: 4 schlägt nächsten Kauf vor: 5
letzter Einkauf: 5 schlägt nächsten Kauf vor: 6
letzter Einkauf: 6 schlägt nächsten Einkauf vor: 1
totalProds = 6;
maxPurchases = 10;
totalCustomers = 1000;
_p = 1; // customers buy the next product in the sequence 10% of the time and a random product 90% ...
nextprod = Function( {}, // this is a synthetic model, just to have some data to play with
If( Random Uniform() > .90, // this is a weak relationship
_p = _p + 1;
If( _p > totalProds, _p = 1 );//
, // else
_p = Random Integer( 1, totalProds )
);
Return( _p );
);
// customers have up to maxPurchases, represented as a list of product numbers (starting at 1)
customerHistory = Function( {},
{result = {}, i},
For( i = Random Uniform( 1, maxPurchases ), i > 0, i -= 1,
Insert Into( result, nextprod() )
);
Return( result ); // {4, 5, 5, 1, 2, 4, 4, 6}
);
// make a customer table with synthetic data
dt = New Table( "Untitled",
Add Rows( totalCustomers ),
New Column( "customer", Character, "Nominal", Formula( Right( Char( 1e9 + Row() ), 8 ) ) ),
New Column( "purchases", Expression, "Nominal", Formula( customerHistory() ) ),
);
dt << runformulas; // make the table formulas ready
dt:customer << deleteformula; // and remove the formulas
dt:purchases << deleteformula; // in case the table needs sorting, etc
// record every pair of purchaces in a matrix
pairs = J( totalProds, totalProds, 0 );
For( irow = 1, irow <= N Rows( dt ), irow += 1,
p = dt:purchases[irow]; // p is a list from the data table
While( N Items( p ) >= 2, // as long as p has at least 2 items
pairs[p[1], p[2]] += 1; // use the first two as indexes to the pairs matrix
Remove From( p, 1 ); // remove the first item from p
);
);
Show( pairs ); // display the matrix
// sumarize the results
For( i = 1, i <= totalProds, i += 1,
Write( "\!nlast purchase: ", i, " suggests next purchase: ", Loc Max( pairs[i, 0] ) )
);
Die letzte Zeile kann eine kleine Erklärung erfordern: Paare [i, 0] bedeutet Zeile i, alle Spalten. LocMax ist eine Funktion, die die Position des Maximalwerts zurückgibt. Da die Produktnummern ab 1 vergeben werden, ist dieser Standort auch die Produktnummer, die am häufigsten nach dem Kauf des Produkts i erworben wird.