Workshop Overview

Recommendations are everywhere and they are fundamental to essentially every business on the planet. From providing the shows and movies you should watch, the books and articles you should read, the products you should purchase, or the people you should date making good recommendations can make or break your business. Netflix wants to recommend you movies and shows you will watch. Stitch Fix wants to recommend you clothes you will wear. NerdWallet wants to recommend you financial products that will improve your life and that you will be approved for, Tinder wants to recommend you a significant other, and Amazon wants to recommend you... well everything. In this course, we will take a look at what should be considered when building your own recommendation system and how you can get started building your own recommendation systems using Python.


Josh Bernhard has been sharing his passion for data science with others for more than a decade.  He found his passion for teaching while pursuing a PhD in Statistics at Iowa State University.  He then went on to teach graduate and undergraduate courses as a part of the Business Analytics program at the University of Colorado.  Before jumping full time into industry, he worked as the Curriculum Lead for the School of Data Science at Udacity, where he built data science courses that train data scientists around the world.  

DIFFICULTY LEVEL: BEGINNER

Learning Objectives

  • You will understand the different methods you might use to make recommendations

  • Understand common difficulties with building effective recommendation systems

  • How to deploy your recommendations

  • How to evaluate whether your recommendations are effective

Course Outline

Module 1: Getting Started 

- What is a recommendation system? 

- Types of recommender systems.      

 - Collaborative Filtering Recommenders      

- Demographic Recommenders       

- Content Based Recommenders       

- Utility Based Recommenders       

- Knowledge Based Recommenders 

- Business Cases for Recommendations       

- Relevance        

- Novelty       

- Serendipity        

- Increased Diversity 

- The Cold Start Problem Module

 Module 2: What data should I use? 

- Data Sources        

- User-item data (ratings)       

 - User data (surveys)        

- Item data (text, product, etc.)        

- Knowledge data (user filters)

 - Feature Engineering        

- Sparse vs. Dense Matrix Representations       

 - Standardizing and Normalizing       

 - Encoding Categorical Data        

- Encoding Text Data       

 - Missing Values      

  - Outliers Module 

Module 3: How do I find relevant recommendations? 

- Measures of Similarity       

 - Pearson's Correlation Coefficient       

 - Cosine Similarity       

 - Spearman's Correlation Coefficient       

 - Jaccard Similarity 

- Collaborative Filtering      

  - User-user collaborative filtering       

 - Item-item collaborative filtering 

- Matrix Factorization       

 - Latent Factors        

- FunkSVD Module 

Module 4: How do I know if my recommendations are good? 

- Evaluating your recommendations       

 - train-test split       

 - classification metrics       

 - regression metrics       

 - cross-validation       

 - offline vs. online evaluation methods

- The cold start problem 

- Storing your model(s) for future use

Background knowledge

  • This course is for current and aspiring Data Scientists, Data Analysts Machine Learning Engineers and AI Product Managers

  • Knowledge of following tools and concepts is useful:

  • Familiarity with Jupyter notebooks and

  • Basics of pandas dataframes

  • Understanding of matplotlib and numpy

Real-world applications

  • Amazon use recommendation engines across its products and services as a targeted marketing tool

  • Spotify’s most innovative uses of AI and recommendation systems is their popular Discover Weekly playlist

  • YouTube presents series of “Help” videos that answer basic user questions about YouTube and the technology that supports it with the help of RecSys.