Our goal is to implement a product recommendation system based on user personalization and item-similarity, to help banks improve customer acquisition and revenue on products by better marketing techniques.
For this, we utilized the Santander Product Recommendation dataset which is available on Kaggle.
Link - https://www.kaggle.com/c/santander-product-recommendation/data
The dataset contains 1.5 years of Spain customers behavior data from Santander bank to predict what new products customers will purchase. The data starts at 2015-01-28 and has monthly records of products a customer has, such as "credit card", "savings account", etc. Our goal is to recommend products based on customer interactions. The dataset contains around 200K rows and 49 columns.
The dataset description is as follows:
S no. | Column Name | Description |
1 | data_date | The table is partitioned for this column |
2 | ncodpers | Customer code |
3 | ind_empleado | Employee index: A active, B ex employed, F filial, N not employee, P passive |
4 | country_residence | Customer's Country residence |
5 | sex | Customer's sex |
6 | age | Age |
7 | high_date | The date in which the customer became as the first holder of a contract in the bank |
8 | ind_new | New customer Index. 1 if the customer registered in the last 6 months. |
9 | antiquity | Customer seniority (in months) |
10 | indrel | 1 (First/Primary), 99 (Primary customer during the month but not at the end of the month) |
11 | ult_fec_cli_1t | Last date as primary customer (if he isn't at the end of the month) |
12 | indrel_1mes | Customer type at the beginning of the month ,1 (First/Primary customer), 2 (co-owner ),P (Potential),3 (former primary), 4(former co-owner) |
13 | tiprel_1mes | Customer relation type at the beginning of the month, A (active), I (inactive), P (former customer),R (Potential) |
14 | indresi | Residence index (S (Yes) or N (No) if the residence country is the same than the bank country) |
15 | index | Foreigner index (S (Yes) or N (No) if the customer's birth country is different than the bank country) |
16 | conyuemp | Spouse index. 1 if the customer is spouse of an employee |
17 | channel_in | channel used by the customer to join |
18 | indfall | Deceased index. N/S |
19 | typo dom | Addres type. 1, primary address |
20 | cod_prov | Province code (customer's address) |
21 | nomprov | Province name |
22 | ind_actividad_cliente | Activity index (1, active customer; 0, inactive customer) |
23 | renta | Gross income of the household |
24 | segmento | segmentation: 01 - VIP, 02 - Individuals 03 - college graduated |
25 | ind_ahor_fin_ult1 | Saving Account |
26 | ind_aval_fin_ult1 | Guarantees |
27 | ind_cco_fin_ult1 | Current Accounts |
28 | ind_cder_fin_ult1 | Derivada Account |
29 | ind_cno_fin_ult1 | Payroll Account |
30 | ind_ctju_fin_ult1 | Junior Account |
31 | ind_ctma_fin_ult1 | Más particular Account |
32 | ind_ctop_fin_ult1 | particular Account |
33 | ind_ctpp_fin_ult1 | particular Plus Account |
34 | ind_deco_fin_ult1 | Short-term deposits |
35 | ind_deme_fin_ult1 | Medium-term deposits |
36 | ind_dela_fin_ult1 | Long-term deposits |
37 | ind_ecue_fin_ult1 | e-account |
38 | ind_fond_fin_ult1 | Funds |
39 | ind_hip_fin_ult1 | Mortgage |
40 | ind_plan_fin_ult1 | Pensions |
41 | ind_pres_fin_ult1 | Loans |
42 | ind_reca_fin_ult1 | Taxes |
43 | ind_tjcr_fin_ult1 | Credit Card |
44 | ind_valo_fin_ult1 | Securities |
45 | ind_viv_fin_ult1 | Home Account |
46 | ind_nomina_ult1 | Payroll |
47 | ind_nom_pens_ult1 | Pensions |
49 | ind_recibo_ult1 | Direct Debit |
RFM factors illustrate these facts:
Predicts items a user will interact with and performs exploration on cold items. Based on Hierarchical Recurrent Neural Networks which model the temporal order of user-item interactions.
Computes items similar to a given item based on co-occurrence of items in the user-item interactions dataset.
Sign-in Page:
Product recommendation based on user-item interaction dataset using user personalization algorithm on AWS Personalize:
Product recommendation based on user-item interaction dataset using Item-to-item similarities (SIMS) algorithm on AWS Personalize:
Note: We added a filter on our recommendation engine to show only those products which are not owned by the user
Product recommendation (Cold start) with a new user login:
Used Smtplib python library to push recommendations to the users via email:
Email:
https://docs.aws.amazon.com/personalize/latest/dg/native-recipe-sims.html
https://docs.aws.amazon.com/personalize/latest/dg/native-recipe-new-item-USER_PERSONALIZATION.html
https://databricks-prod-cloudfront.cloud.databricks.com/public/4027ec902e239c93eaaa8714f17
3bcfc/2885002711960994/97004730824646/7533496735645217/latest.html