# Classification model for recommender system?

I have some data for various customers choosing one of 'n' products or no product. I have some useful features for each customer. I can build a multi-class classification problem out of this data and use a classification model (say, random forest) to learn the data. This model will then output one of the following categories:

[0, 1, 2, ..., n]

where 1, 2, ..., n is the 1st, 2nd etc. products, and 0 is when the customer chose not to buy anything. I want to make this model as a recommender system, i.e., when a new customer (along with all other features) comes along, I know which one of the n products he will more likely buy.

The question is this: in the above setting, I don't know what I should do when the models outputs '0' for the new customer. What should be my action when such a situation, i.e., the new customer is not likely buy any of the products? Or should I formulate the classification problem in some other way? Is there any way we shouldn't formulate the problem as a classification problem at all?

One option could be to model the output slightly different. Instead of returning the type of product 1, 2, ..., n or 0 in case of no product maybe you could return a list of pairs (product, probability), if the highest probability is the one corresponding to 0 i.e. "no product" you could just recommend the 2nd best.

An advantage of this approach is that you could recommend more than one product, maybe the top 3, or a list of products whose probability is higher than a specific threshold, etc.

If the customer is new and there is no information you could base your recommendation on, maybe you could recommend the product that you would offer to a similar customer (if you can cluster the customers in any way) or simply the top selling products.

• Sure, that sounds like a decent idea. But if the probability of '0' is too high compared to any of the other n products, then it could become tricky situation? In general, just curious, is there any other recommender system that can be used in such a situation? – dbm Jan 30 '19 at 20:28
• @dbm Don't look for another recommender, that's not the solution here. Instead, look at it as an opportunity to learn from the customer. Please see the answer I've provided to your question. – I_Play_With_Data Jan 30 '19 at 20:42
• @dbm if you want to dig deeper on this topic there are two references you may want to look at "Recommendation System for Netflix" (beta.vu.nl/nl/Images/werkstuk-fernandez_tcm235-874624.pdf), in the document they talk about "the cold start problem" which happens with new users. A more theoretical approach is described in the paper "Learning Preferences of New Users in Recommender Systems" (glaros.dtc.umn.edu/gkhome/fetch/papers/rashidWebKDD08.pdf) – Alberto Jan 30 '19 at 21:39
• @Alberto, I think my problem is not related to the 'new user' problem. In the data I have, I already have 'similar' customers which chose not to buy any item. My question is, when a new user with all other features similar to the one who didn't buy any product, what product should I offer him out of the available n? – dbm Jan 30 '19 at 23:34

I've run into this issue before and what I've done is I use this as an opportunity to offer a random product to the customer. Literally, make a random selection and have that be a recommendation to the customer.

Why do this? Because the fact that you have a customer with a new/unique "profile" makes them a valuable datapoint to learn from. So keep showing them a randomized list of items and see what sticks. Mark these customer records as special in your database and then immediately feed them back into your algorithm for future recommendations. These datapoints as immensely valuable during your reinforcement learning cycles (you are doing reinforcement, aren't you?) and can help your algorithm become smarter over time.

• which issue you have run into before? This type of problem set up, or the case when probability of '0' is quite high compared to probabilities that the customer will buy any of the n products? When the classifier says a new customer is likely not buying anything, it is not a 'unique' profile. Such as customer is seen in the available data too. So offering random product doesn't make sense to me, unless you have some mathematical argument? – dbm Jan 30 '19 at 20:47
• @dbm Stop looking at this as a math problem or classification problem. It's a business problem. The users that you don't have a product for represent an opportunity - a business opportunity, not an opportunity for a new model! – I_Play_With_Data Jan 30 '19 at 20:50
• Understood your arguments. However, that's not what I am aiming for here. I am only looking for a data driven way of maximizing probability that the customer will buy a product. – dbm Jan 30 '19 at 20:54
• @dbm it is data driven because you will then take these results and do reinforcement learning with your model. Recommender algorithms are not static, you should be reinforcing them at every possible opportunity. When you are really good at this, you should be able to start with an algorithm that has zero data and have it get smarter on a second-by-second basis as customers come in and make choices. What data is more pure than taking customer actions and putting them to work right away? – I_Play_With_Data Jan 30 '19 at 20:57
• OK. The reinforcing (in a loose sense - though technically I am not using reinforcement learning here) argument is valid. But why should I offer random product to such a customer? – dbm Jan 30 '19 at 20:59