I am being tasked with developing a "next best product model", and at this time, I can safely say that I do not know where to start!

In other words, I want to develop a model that will provide guidance into what product we should try to get a customer to use/purchase next. For example, if a banking customer who is 47 years old, that currently has a checking account and debit card (10 years of tenure with the bank), and has a FICO score of 650, what product should we try to cross-sell them with next?

I am not seeking any specific answers as this is a broad question, but I would like to pick your brains for helpful reference textbooks and/or articles related to these types of models.

  • $\begingroup$ Looks like a ranking problem. Maybe worth to look here. $\endgroup$
    – YCR
    Feb 3, 2016 at 17:04
  • $\begingroup$ Question: Is that post would be more appropriate on datascience.stackexchange.com, as the object is more business than academia? $\endgroup$
    – YCR
    Feb 3, 2016 at 17:44

3 Answers 3


If you considered this a ranking problem, look here.

If you want to look at the cutting edge methodologies used in the business, you could dig in the forum of the home-depot competition. The subject is the same: finding the best next product, but the competition is not yet finished.

For nearly similar subject, you could also look at the github page of the crowd flower winner. In that case, the most efficient method is a particularly well chosen set of features combined with an ensemble selection.

In the Allstate competition, the second is a random forest well calibrated.

Generally, random forest and gradient boost are considered reliable model. If you want to try more "fancy" algorithm, you could try bayesian model or neural network. But I considered the first not handy with big dataset (> 100K individuals, >60 features) and the second painful to parameterise, and advise so to use mainly for unsupervised task.


If I understand you correctly, you essentially want to "predict" what product the customer would most interested in purchasing next?

Approaches with classifiers such as Naive Bayes and Logistic Regression may be a good place to start. These can output the probability of an event occurring given previous historical data. For example you could have product A, and run a classifier that will output the probability that a customer will buy product A, based on their previous purchases.

Here is a sample chapter on classification from an "Introduction to Data Mining". It helped me understand some of the basic concepts of classification and prediction http://www-users.cs.umn.edu/~kumar/dmbook/ch4.pdf

Witten & Frank's (2005) "Data Mining: Practical machine learning tools and techniques" is also a very good book that I've gotten a lot of good information from.

I'm currently doing research into this area for my masters, so if this seems like it's of relevance to you, I can give you some more of the literature I've found so far


It should be really easy to do:

But the gist is this: you create a "document" for each product. Add different fields to the document such as price, category. total historical sales and product description. Use similarity metric as a basis for a recommendation. For example, this is a cosine between feature vectors. You then offer the top N products based on some additional criteria (e.g. not in the user's viewing history, in stock, etc).

An up-sale list would require the same category but a higher price. A cross-sale list would require the same category but a lower price and high sales.

You can improve this model by boosting the importance of different features (price * 10, + word matched/10) or by adding more data.

E.g. also indexing all historical shopping carts and matching in the same way with the current shopping cart.

You can have a look at Lucene in Action, Second Edition "Lucene in action" for all the details.

Also, if you don't want to write your own search engine, you can use Google Analytic's Enhanced E-commerce to collect data and use its related product feature to get recommendations via api


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.