Consumer Behavior Insights for InstaCart
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!
When Boris Yeltsin visited the US in 89, he was so impressed by a Randall’s grocery store he visited, he reported 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.
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. 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.
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.
Exploratory Data Analysis
The top 15 products purchased are mainly produce. This is reconfirmed by the top 15 departments based on purchase history.
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 2AM to 8AM has fewer orders and more orders are made on the weekends.
This graph visualizes the number of orders that each users 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.
Will a user become a frequent or an 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.
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.
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 dendogram is 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 stronger association.
Here we have a visualization of the association rules mined on the aisles. Top 3 srongest assocation 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.
How do we create value from these clusters and rules? A recommender.
- Identify the cluster that the user belongs in. As mentioned before, this helps the recommender be more useful rather than recommending with 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 higer 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: