Salut,
J'utilise le JMP standard, pas le Pro ...
Et je voudrais construire un prochain meilleur modèle de catégorie de produit. Par exemple, si un client a acheté la catégorie de produits A, quel est le prochain produit qu'il est plus susceptible d'acheter? Est-ce faisable dans la version JMP que j'utilise? Je n'ai que 6 catégories de produits, alors ne pensez pas que l'analyse du panier de marché
Votre aide serait beaucoup plus appréciée car elle est très urgente.
Merci beaucoup
Je vous remercie
À quoi ressemblent vos données? Avez-vous un "panier" pour chaque client?
Je pense qu'une solution simple pourrait être de commencer avec chaque panier comme une rangée de données. Ensuite, vous auriez des colonnes d’indicateurs pour chaque catégorie de produit: 1 = acheté; 0 = pas acheté.
Ensuite, les corrélations multivariées (Analyser> Méthodes multivariées> Multivariées) de ces variables indicatrices vous indiqueront quelles catégories de produits ont été achetées ensemble.
Vous ne savez pas quel est le meilleur moyen, peut-être la plate-forme de contingence, mais voici une idée:
J'imagine que vous ne disposez pas de suffisamment de données sur chaque client pour effectuer une prédiction personnalisée. Cette idée utilise donc les données pour permettre à tous les clients de deviner. J'ai construit un tableau de données synthétisées avec une séquence d'achats, comme ceci:
Données d'achat du client
Et faites des suggestions comme celle-ci:
dernier achat: 1 suggère le prochain achat: 2
dernier achat: 2 suggère le prochain achat: 3
dernier achat: 3 suggère l'achat suivant: 4
dernier achat: 4 suggère le prochain achat: 5
dernier achat: 5 suggère l'achat suivant: 6
dernier achat: 6 suggère l'achat suivant: 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] ) )
);
La dernière ligne peut nécessiter une petite explication: les paires [i, 0] signifient la ligne i, toutes les colonnes. LocMax est une fonction qui renvoie l'emplacement de la valeur maximale. Étant donné que les numéros de produits sont attribués à partir de 1, cet emplacement est également le numéro de produit le plus souvent acheté après l'achat du produit i.