Unsupervised Machine Learning - Segmenting a Bank's customers
I was provided with a series of csv files about the banking habits of customers at a hypothetical bank: information about their chequing accounts, saving accounts and general other transaction data. I was also given information about the demographics of the customers - descriptors such as age, marital status, yearly income, years with the bank, gender and city/state.
With this data, i went about cleaning it - find and rectify typos in the messy data, data validation to ensure the right format for a given feature, impute missing values, encode the categorical variables and so on. I then got into the Unsupervised Machine Learning process: from choosing the right features and the scaler of the data to utilizing Principal Component Analysis to reduce the dimensions of the data, so i could graph it in a 2 dimensional space. The visualization would help me in understanding my data better.
Finally, i used the K-means Clustering algorithm along with the elbow method to identify optimal clusters and iterated using PCA graphs to ascertain the best clustering of the data.
My goal here is to be able to find overarching commonalities to then subdivide and segregate the customers. My results were that I had three clusters and the commonalities of each cluster were as such - young and lacking disposable income; older, unattached, lack of progeny, and wealthy; and older, married with multiple children and wealthy. This enables us to market and cater to these customers better.
The business value here is this: to group one that is younger, the bank ideally should not focus on providing them with marketing and offers about savings account and investments but rather a credit card with a large cashback program. To the group that is largely older, married with children and having high incomes marketing about mortgage programs and perhaps targeted low interest rates would be a winning solution.
Here are some of the visual representations of my work:
PCA Clusters
Radar Plots showing the standardized differences between the clusters of bank customers
if you'd like the full accompanying code