# Are recommendations really helpful? A brief non-technical discussion

Many times I had the opportunity to answer the question: “Are recommendations so important for my B2C service?”. Every time, my answer was the same: “It depends”. Clearly, I don’t want to be vague just to avoid the question, but the reality is much more complex than any mathematical model (and when a model gets closer to the reality, it becomes intractable). Recommendations are an example of these scenarios.

Nowadays, the smallest online store has many more products than the largest physical store. Moreover, the number of website selling products is increasing, even if the largest companies continue trying to establish monopolies in almost any country. If we add all the B2C services that provide specific pieces of information (e.g. hotels, movies, bars, and so on), the number of possibilities becomes extremely high.

Suppose to have dozens of T-shirts. They are all clean are ready to use. You wake up in the morning and need to pick one of them. According to a merely statistical view, the uncertainty is proportional to the number of possible choices and the real life isn’t so different. However, if you have, for example, 100 T-shirts and you write every day your choice on a notebook, after one year, you can plot a histogram. Simply count the number of times you picked a T-shirt (not completely randomly, because we seldom make actual random decisions) and draw a bar proportional to this number. What kind of shape do you expect?

Probably many people have answered: “A flat line”, like the one showed in the following figure:

It’s possible, but unfortunately, in the majority of cases, the shape will be different. Even if you bought all the 100 T-shirts, your attraction for each of them is different. Moreover, when a decision is unconstrained (e.g. the T-shirt is dirty), you’re going to make your selection according to an almost unconscious priority-management system. Such a schema (considering its nature, we can call it Linus’ blanket bias) doesn’t represent an exclusive scenario: it happens everywhere and in many different situations. The result is shown in the next diagram, where the peak represents a favorite color, brand, or simply the most adaptable choice (i.e. we can save time):

At this point, we can try to give a definition of “recommendation”. Starting from the assumption that the majority of choices are biased, we can try to determine two important factors. The first one is the attraction point. In other words, we can simply recommend employing analogies. This is a 98%-sure strategy in terms of acceptance because everybody desires (consciously or unconsciously) to hear what he/she already thinks. However, the conversion rate can be low, because the set of possible choices around this point is extremely wide. In other words, the recommendation is not rejected but seldom considered for an “investment”.

The other factor is the discovery desire. I assume that everybody, to a certain extent, desires to discover new things, but, unfortunately, we don’t know the objects and, moreover, the search direction. For example, I like blue T-shirts, but I have seen a new pattern that attracts me too. In this case, the two elements are the specific item I saw and the pattern. The first one is like the centroid of a cluster and I’m very likely to buy it. The second one (that I’ve previously called direction) is the set of elements belonging to this cluster. In general, a recommendation of any item belonging to the cluster (in particular, if it’s close the centroid) will be positively accepted or, in the worse case, it will be used to start an exploration. In both cases, the conversion rate is generally higher.

Hence, recommendations are surely important, but only when they can drive to a change in a mental schema. This is not an absolute statement, but, during my experiences, I’ve often received positive confirmations. On the other side, many new machine learning approaches are focused on these ideas and are moving from a classic “similarity-based” approach to a more complex schema where an unsupervised approach is employed together with a reinforcement learning one. It can seem weird, but the simplest strategy to improve a recommendation is asking the user to evaluate the suggestions. This is true, not because the users are always perfectly aware of their desires, but thanks to the fact that a larger set of possibilities can be efficiently pruned using the feedback.

Moreover, if a good recommendation should be a discovery, adding some “noise” is generally helpful. Let’s suppose this scenario: a user visits a website where he often buys products. He’s on the subway and has some time to spare, so he starts checking a few products shown in the home page, then he searches for something specific (don’t be surprised if he finds the same items seen in the morning because repeating a few actions is typical interaction pattern). Then, maybe, he sees a product that didn’t catch his attention before. Many tools (like heat-maps or clickstream analyzers) can be employed to gather all the necessary pieces of information, however, let’s suppose that we know that he read the description, scrolled up and down many times and he zoomed on the pictures.

What kind of information can we obtain from this session? First of all, that the product and its features are relevant for that customer (even he never bought a similar product). Moreover, we can determine some behavioral patterns that are often considered useless. For example, what are the pictures that attracted his attention? How long did he look at a zoomed picture? Let’s suppose, that the item is a backpack. Did he look at the lateral profile? Probably, he’s interested in large or narrow backpacks. So, now we have a new centroid for a bunch of recommendations. How can we use the feedback? In this case, for example, we restrict the set by understanding whether he’s interested in large or narrow backpacks. We can pick a few representative elements and show them during the next visit.

What is the user going to do? There are many possible questions and, obviously, the answers can improve the recommendations or worsen them. If the user simply click only on the narrow backpack, a reinforcement learning approach will increase the expected reward of a sequence of actions (in this case, they can be simply products, supposing that the user is an agent that has to make a single decision), driving the model in the direction where the user is probably looking. It doesn’t matter if he continues to buy the same items: whenever such kind of behavioral patterns are present and analyzed, recommendations will be closer to the concept of discovery and the additional conversion rate (we assume not the alter some established behaviors) will be proportionally higher. Clearly, this is not magic, but statistical analysis of social and psychological contexts and, yes, human beings are much more predictable than expected!

This is, for instance, the case of books. If you like thrillers, you’re probably going to buy them. But if you are attracted by a recipe book (in the way discussed before), a good series of suggestions can increase the probability that you’re going to add a recipe book to your common list of items.

Hence, we can summarize the main elements of a successful system:

- Recommendations must be discoveries and discoveries cannot confirm what a user already knows.
- Interaction behavioral patterns can be used to understand the hidden (or latent) interest of a user
- Feedbacks can help in refining the suggestions
- Exploiting the refined pattern can dramatically increase the probability of conversion for uncommon items
- Standard (or classical) recommendation strategies can be also employed as a first or a secondary approach
- The goal of an online store or a B2C service is not to limit the access to the products/items, but to widespread them, hence, a little bit of noise can increase the discovery factor and help the customers to make up their mind (strange but true, because, in a case the user can pick a new item, in the opposite, he can decide to pursue his initial search strategy as the alternative are inadequate)

Therefore, my answer is: “Yes! Recommendations are extremely important… unless they don’t try to reinvent the wheel (in the mind of a customer)!”

(Also published on Medium)

## SVD Recommendations using Tensorflow – Giuseppe Bonaccorso

Recommendation system based on the user-item matrix factorization have become more and more important thanks to powerful and distributable algorithms like ALS, but sometimes the number of users and/or items is not so huge and the computation can be done using directly a SVD (Singular Value Decomposition) algorithm.