Banking products recommendation engine: what we learnt building our minimum viable product (MVP)

Georgy Achkouty
Genify
Published in
7 min readJul 13, 2020

Welcome to our first blog post! We’re Genify, a Beijing-based start-up building a powerful machine learning recommendation engine to help banks offer better services to their customers. We’ve recently completed an MVP and wanted to share some of the things we’ve learned along the way. This might be useful for someone interested in applied machine learning, recommendation systems, or even just the startup product cycle. We hope you enjoy 😊

While we think our recommendation engine is truly state-of-the-art for the banking industry, the basic technology is not new. “Recommendation engines” have become ubiquitous in recent years. We encounter them across our daily lives, e.g., when Netflix suggests a new (programming) series based on a “match” score, or when Amazon recommends — prior to our checkout — relevant products that complement our selection.

These engines are less common in the financial retail sector — though some banks have moved ahead of the rest — but we, at Genify, have recently built a recommendation system based on a dataset composed of more than 14 million data points from one of the top banks in Europe and Latin America. Our machine learning-based system takes in anonymized user information such as age, average income and past banking product purchases to generate personalized recommendations.

As we were building the first version of our product, we went on an in-depth exploration of its underlying mechanisms, and were intrigued by some of the insights that we unearthed. We’ve shared a few of these learning below.

Insight 1: less personal info, more past purchases

Banks hold “in their hands” valuable information about each customer. Typically, to open a bank account or to have any form of interaction with a bank, a customer is expected to provide a large amount of personal information.

When Genify received the anonymized dataset, it included 40 data points per customer. At first, we expected variables such as “household income”, “marital status” or “customer segment” to contain the most useful information for deciding which banking product to recommend to a customer. Having trained and tested our model, however, we learned that this was not the case. (See Figure 1).

Figure 1: Impact of a customer’s information on the product recommendations (measured as overall usefulness in prediction), ranked from most impactful to least.

The x-axis corresponds to the mean(|SHAP Values|) for each customer characteristic. The SHAP Value, in laymen terms & in this particular case, can be thought of as the weight that a characteristic has on the final recommendation decision. This decision weight can either be positive, i.e. product should be recommended or negative, i.e. product should not be recommended. We are taking the mean of the absolute SHAP values for each characteristic in order to assess the overall weight a characteristic has on all 22 product recommendations — represented by the colors in the bar graphs (e.g. Class 1 corresponds to “Current Accounts” recommendation). The graph should be understood as follow:

The higher the mean(|SHAP Value|) of a characteristic, the higher its impact on the final recommendation decision.

Of the 10 most useful data points, eight correspond to past purchases of banking products. We concluded that, for this bank at least, past product purchases carry far more weight than personal customer information, such as gender or income.

This potentially has massive implications for banks: banks do not need to rely on personal customer information to generate recommendations. Focusing instead on the banking products that a client has purchased in the past (e.g., a credit card, a loan, etc.) is sufficient for the engine to make a compelling recommendation. This does not mean that personal customer information plays no role in the final decision but rather that, in some cases, the weight of this information is smaller than previously thought. Genify advises that personal information — mainly information pertaining to customers’ risk profiles — act as a second “confirmation” layer before making the final product recommendation.

One may wonder: what to do in absence of purchase history data? For banks and fintechs that just launched their businesses, the absence of data on past purchases might present an obstacle for model training. In that case, a different approach should be adopted, whereby the available information is combined with some heuristics and “rules of thumb” to get started — then refine the recommendations for that customer as you learn more. 👌

Insight 2: direct and unrestricted access to money tell most of the story

Zooming in on the graph above, we unearthed a second insight. Amongst the 10 most impactful factors, three products stand out when determining which recommendations to make: the customer’s ownership (or lack thereof) of a “current account”, a “payroll account”, and a “direct debit” (i.e. a financial transaction in which one person — or company — withdraws funds from another person’s bank account).

Figure 2: Top 3 most impactful customer information on product recommendations

We believe that, in the context of banking, these 3 products are all related to the customers’ direct access to money. Whether it is money in their own accounts (current or payroll accounts), or money contained in another account (direct debit), collectively these represent the single biggest factor when determining which products to recommend next.

Insight 3: “sparsity” of feature space for some product recommendations

In some cases, when recommending banking products, most of the 40 data points — or “characteristics” — on each customer become redundant. If we take the example of a “loan” recommendations [1](Figure 3 below), only a handful of data points truly matter to the bank: past purchase of securities, gross household income, customer seniority, channel of acquisition, age. These data points can go a long way in making accurate product recommendations.

According to Genify’s engine, a bank customer is most like to get a “loan” if:

  1. The customer has purchased some “securities” in the past (with the bank’s advisory)
  2. The customer’s gross household income is high
  3. The seniority — measured as the duration of the contract between the customer & the bank — is high.[2]
Figure 3: Impact of a customer’s information on the product recommendations (metric used to measure the impact), ranked from most impactful to least

This is a very common occurrence in data science and statistics. In fact, for that specific case, the feature space — the multi-dimensional space used to characterize each customer — can be thought of as “sparse”. More simply, a space is said to be sparse if only a handful of customer data points is used in order to assess a certain outcome — in our case, the likelihood of a “loan” being taken by a bank customer. The other data points are assigned a negligible or null weight.

It must be noted that our engine does not perform this “feature selection” for all product recommendations; hence, the feature space cannot be broadly and accurately labelled as “sparse”.

Knowledge of this potential sparsity can have a significant impact on the bank. Instead of a complex model trained to solve many problems and using lots of customer data, a bank can often deploy much simpler models that focus on just one problem and use just a handful of characteristics. This offers much greater transparency to both the bank and its customers when deciding whether these products should be recommended. Not to mention, fewer computational resources are required (due to the smaller size of the model). 🙌

Our Concluding Thoughts

While the evolution of automated machine learning tools enables almost anyone to deploy new cutting edge solutions, in-depth investigations of the model mechanics can yield valuable insights, and should be conducted prior to the launch of a solution. In our case, this analysis was very useful to the bank, and should enable it to (1) reduce the complexity of the recommendation model, (2) decrease the ongoing computational cost incurred once deployed and (3) offer a truly personalized and transparent experience to the customer who receives recommendations.

Cheers from the Genify team! 😉

[1] The probability of default/delinquency is not part of the exercise. In the initial dataset, parameters such as FICO score or past loan repayments were not provided; thus properly assessing credit worthiness — an essential step — could not have been undertaken given the data provided. Given a more extensive dataset, the engine could additionally recommend an adequate loan size, interest rate, etc. based on the customer’s characteristics.

[2] There may be unmet demand for those who want a loan but would not traditionally qualify and that is why the engine does not pick them. Nevertheless, if the product/service could be better structured it may enable a deal.

--

--