Data Insights on Consumer Behavior for Instacart
The skills the author demoed here can be learned through taking Data Science with Machine Learning bootcamp with NYC Data Science Academy.
Introduction
Supermarkets are an essential part of American life. Many Americans have access to the enormous selection of fresh, safe foods at their local grocery store and supermarkets around the country. Supermarkets are so important that some may argue that they helped the US win the Cold War! The market for online grocery providers is growing and growing fast. According to Global Data, a market research firm, the online grocery market has grown by 350% from 2010 to 2019.
When Boris Yeltsin visited the US in 1989, he was so impressed by a Randall’s grocery store he visited, he reportedly told his staff that if the Soviet People saw the condition of US supermarkets “there would be a revolution”. Not even members of the Politburo had access to the variety that the average American consumer had access to in their neighborhood. Three decades later, the American supermarket is alive and well, but it’s changed - it’s moving online.
Over the next three years, they predict that just under 10% of all grocery purchases in the US will be made online. Given that the US grocery market is estimated was $650 billion. There’s a huge opportunity out there for companies that are able to get online groceries right. The logistical challenges of the industry are real and complex, but we’re going to focus on a different challenge – consumer behavior.
Objective
While purchasing habits for durable goods rapidly shifted online, folks interact differently with online marketplaces than they do in physical stores. The same is true for online grocery stores. Consumer surveys show that consumers that shop for groceries online – represented by the middle column on this table – are much more ‘focused’ shoppers than consumers shopping in physical stores.
They’re significantly less likely to look explore new brands, to be influenced by packaging, and consider buying items they’ve never tried before than are offline shoppers. In short, online grocers can find it challenging to get customers to spend money on items outside of their existing purchasing habits. This is a problem that we would like to work on.
The Data
Exploratory Data Analysis
The top 15 products purchased are mainly produce. This is reconfirmed by the top 15 departments based on purchase history.
Frequency
This heatmap visualizes the time of day and the day of the week in which the users are placing their orders from InstaCart. We can see that 2 AM to 8 AM has fewer orders and more orders are made on the weekends.
This graph visualizes the number of orders that each user place on InstaCart per year. Based on the median, 50% of the users fall below 11 orders per year. Ideally, we would like to convert those lower frequency shoppers to higher frequency shoppers. When we did a deeper dive into the purchasing habits between lower frequency shoppers and higher frequency shoppers, the general shopping patterns look very similar to the naked eye. For this reason, we needed a more robust predictive model in order to predict whether a user will become a frequent or infrequent shopper.
Predictive Model Data
Will a user become a frequent or infrequent customer?
Since 50% of users fall into the lower-frequency category we use it as a performance for our XGBoost model. Our model takes the percent of each department our user orders from as features and predicts if the users will be high or low frequency. Our model was able to predict with an 80% accuracy.
Investigating the feature importance, we show the three most and three least influential departments on shopper frequency.
When looking into the median value of those departments by user group you can see that the high-frequency users rarely purchase anything from the international, personal care and breakfast departments.
Unsupervised Data Clustering
Now that we can identify high-frequency versus low-frequency users, are there things we can do to convert the low-frequency users into high-frequency users?
A traditional approach would be to give out coupons or promotions. However, as mentioned earlier, online shoppers behave very differently than those walking around a store. Our solution is to identify customer purchasing behaviors using unsupervised clustering and then build a recommender to suggest products they may like based on their basket.
We tried several clustering approaches including PCA, K-means, Doc2vec and various combinations but we had the most success with hierarchical clustering.
Findings
At the top, the dendrogram shows the grouping of users based on their purchasing habits. By setting the distance threshold to 1.7, we can define 5 main clusters of users. Those with a sharp eye may notice that the terminal nodes of the dendrogram are nowhere near 200K+ (the number of users). Because of computation restraints, we used K-means to group the users first and then carried out the hierarchical clustering.
To understand what is driving this grouping, we combined the dendrogram with a heatmap. Darker the red, the more items bought in that department.
- Produce Power Group: Buys mostly produce.
- BYO Beverage Group: Buys mostly beverages.
- Snack Attack Group: Buys mostly snacks.
- Balanced Diet Group: Balanced group with medium levels of produce and more dairy & eggs.
- Potpourri Group: Captures users with more diffuse patterns.
Now that we have our groups, we can build custom rules to tailor our recommendations.
Association Rule Mining
Association rule mining is commonly used to identify relationships between two products. It translates joint probabilities and frequencies found in historical orders into metrics called support, confidence and lift.
Instead of mining the association rules between two products, we decided to mine the association rules between aisles. This decision was to avoid a homogeneity issue for the recommender, which we will further explain in the upcoming section.
We focused on the lift metric as our "score". Simply put, lift shows how strong the association is between two aisles. If the lift value between aisles X and Y has a value of 1, there is no relationship. If the value is higher than 1, then a stronger association.
Here we have a visualization of the association rules mined on the aisles. Top 3 strongest association for canned jarred veggies are Latino foods, canned meal beans, and spices & seasonings. For Latino foods, we see that the strongest associations are tortillas, dip spreads, and canned beans.
Recommender
How do we create value from these clusters and rules? A recommender.
- Identify the cluster that the user belongs to. As mentioned before, this helps the recommender be more useful rather than recommending general rules for everyone.
- Based on the objects in a user's basket, take the majority vote to find the "majority aisle".
- Refer to the lift metric to find the strong-association aisles of the "majority aisle" and randomly sample out of the strong-association aisles.
- Randomly sample a product from each strong-association aisle, with weights on the higher margin items so they are 2x more likely to be sampled.
There are other popular approaches to recommenders, such as content and collaborative filtering but we decided on this approach due to 1) lack of rating data and 2) better performance on infrequent users with less historical data.
Below we show the results of the recommender on real orders: