Consumer Behavior Insights for Instacart

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! 

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. 

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.

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. 

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

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 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.

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. 

  1. 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. 
  2. Based on the objects in a user's basket, take the majority vote to find the "majority aisle".
  3. Refer to the lift metric to find the strong-association aisles of the "majority aisle" and randomly sample out of the strong-association aisles. 
  4. 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:

Conclusion

About Authors

Sunny Lee

Sunny Lee

Sunny graduated from Northwestern University with a double major in Economics and Statistics. She joined Goldman Sachs as a Sales Analyst in 2015 and took subsequent roles at the firm as a Fixed Income Trader and as a...
View all posts by Sunny Lee >
Josefa Sullivan

Josefa Sullivan

Josefa has a PhD in Neuroscience from the Icahn School of Medicine at Mount Sinai and a BA in Biochemistry & Molecular Biology from Boston University. Her interests include applying data science to the healthcare & biotech fields,...
View all posts by Josefa Sullivan >
Avatar

Michael Emmert

Michael Emmert graduated from The George Washington University in May of 2019 with a Bachelors degree in Mechanical Engineering. Through his Bachelors he gained skills in mathematics, communicating ideas to non-technical groups, data manipulation and trend identification as...
View all posts by Michael Emmert >
Jordan Runge

Jordan Runge

Jordan is a former educator and veteran of multiple, venture-backed startups. He is interested in data science, entrepreneurship, education, and public policy. He lives in NYC with his wife and dog. Connect with Jordan on LinkedIn, https://www.linkedin.com/in/jordanrunge/.
View all posts by Jordan Runge >

Leave a Comment

No comments found.

View Posts by Categories


Our Recent Popular Posts


View Posts by Tags

#python #trainwithnycdsa 2019 airbnb Alex Baransky alumni Alumni Interview Alumni Reviews Alumni Spotlight alumni story Alumnus API Application artist aws beautiful soup Best Bootcamp Best Data Science 2019 Best Data Science Bootcamp Best Data Science Bootcamp 2020 Best Ranked Big Data Book Launch Book-Signing bootcamp Bootcamp Alumni Bootcamp Prep Bundles California Cancer Research capstone Career Career Day citibike clustering Coding Course Demo Course Report D3.js data Data Analyst data science Data Science Academy Data Science Bootcamp Data science jobs Data Science Reviews Data Scientist Data Scientist Jobs data visualization Deep Learning Demo Day Discount dplyr employer networking feature engineering Finance Financial Data Science Flask gbm Get Hired ggplot2 googleVis Hadoop higgs boson Hiring hiring partner events Hiring Partners Industry Experts Instructor Blog Instructor Interview Job Job Placement Jobs Jon Krohn JP Morgan Chase Kaggle Kickstarter lasso regression Lead Data Scienctist Lead Data Scientist leaflet linear regression Logistic Regression machine learning Maps matplotlib Medical Research Meet the team meetup Networking neural network Neural networks New Courses nlp NYC NYC Data Science nyc data science academy NYC Open Data NYCDSA NYCDSA Alumni Online Online Bootcamp Online Training Open Data painter pandas Part-time Portfolio Development prediction Prework Programming PwC python python machine learning python scrapy python web scraping python webscraping Python Workshop R R language R Programming R Shiny r studio R Visualization R Workshop R-bloggers random forest Ranking recommendation recommendation system regression Remote remote data science bootcamp Scrapy scrapy visualization seaborn Selenium sentiment analysis Shiny Shiny Dashboard Spark Special Special Summer Sports statistics streaming Student Interview Student Showcase SVM Switchup Tableau team TensorFlow Testimonial tf-idf Top Data Science Bootcamp twitter visualization web scraping Weekend Course What to expect word cloud word2vec XGBoost yelp