Ciao,
Sto usando il JMP standard, non quello Pro ...
E mi piacerebbe costruire un prossimo miglior modello di categoria di prodotto. Ad esempio, se un cliente ha acquistato la categoria di prodotti A, qual è il prossimo prodotto che è più probabile acquistare È fattibile nella versione JMP che sto usando? Ho solo 6 categorie di prodotti, quindi non mi riferisco al Market Basket Analysis
Il tuo aiuto sarebbe molto più apprezzato in quanto è abbastanza urgente.
Grazie mille
Grazie
Come sono i tuoi dati? Hai un "paniere" per ogni cliente?
Penso che una possibile soluzione semplice potrebbe essere quella di iniziare con ciascun paniere come una fila di dati. Quindi avresti colonne di indicatori per ogni categoria di prodotto: 1 = phassato; 0 = non acquistato.
Quindi le correlazioni multivariate (Analizza> Metodi multivariati> Multivariato) di queste variabili indicatore ti indicheranno quali categorie di prodotti sono state acquistate insieme.
Non sei sicuro di quale sia il modo migliore, forse la piattaforma di emergenza, ma ecco un'idea:
Suppongo che tu non abbia abbastanza dati su ciascun cliente per fare una previsione personalizzata, quindi questa idea usa i dati per tutti i clienti per indovinare. Ho creato una tabella di dati sintetizzati con una sequenza di acquisti, in questo modo:
Dati di acquisto del cliente
E fai suggerimenti come questo:
ultimo acquisto: 1 suggerisce il prossimo acquisto: 2
ultimo acquisto: 2 suggerisce il prossimo acquisto: 3
ultimo acquisto: 3 suggerisce il prossimo acquisto: 4
ultimo acquisto: 4 suggerisce il prossimo acquisto: 5
ultimo acquisto: 5 suggerisce il prossimo acquisto: 6
ultimo acquisto: 6 suggerisce il prossimo acquisto: 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] ) )
);
L'ultima riga potrebbe richiedere una piccola spiegazione: coppie [i, 0] significa riga i, tutte le colonne. LocMax è una funzione che restituisce la posizione del valore massimo. Poiché i numeri di prodotto vengono assegnati a partire da 1, tale posizione è anche il numero di prodotto che viene acquistato più spesso dopo l'acquisto del prodotto i.