# STAT3009 Recommender Systems

“

All models are wrong, but some are useful.” — George E. P. Box

- 💬 Announcement
- 📝 Administrative information
- 🗓️ Schedule (tentative)
- 🧾 Course Content
- 💯 Grading (tentative)
- 📋 Recommended Readings

## 💬 Announcement

- Sep 1, 2021: Welcome to STAT3009: Recommender Systems.

## 📝 Administrative information

- ⏲️
**Lectures**: (**Tue**. 16:30 - 17:15) && (**Thur**. 12:30 - 14:15) - 👨🏫
**Instructor**: Ben Dai - 👨💼
**TA**: Youqian Gao - 💻
**GitHub**: CUHK-STAT3009 - ⏳
**Office hours**: Book a meeting in Calendly

## 🗓️ Schedule (tentative)

Week | Content | Slides | Python code | Readings |
---|---|---|---|---|

Week00 | Python Numpy Tutorial | Numpy tutorial | ||

Week01 | Background, dataset, evaluation, metrics, baseline method, and software prepare | slides | notebook | Sections 1.1 - 1.3 in [1] |

Week02 | Correlation-based collaborative filtering | slides | notebook | Sections 2.1 - 2.3 in [1] |

`Quizz 1` : implement for baseline methods and Correlation-based collaborative filtering | Kaggle InClass Prediction Competition | |||

Week03 | Latent factor model I: methodology | slides | notebook | [3], [7], Section 3.6 in [1] |

Week04 | Latent factor model II: alternating least square (ALS) | slides | notebook | Section 3.6.4.4 in [1], [8] |

Week05 | Latent factor model III: stochastic gradient descent (SGD) | slides | notebook | Section 3.6.4.1, [14], [15] |

Week06 | Case study: MovieLens dataset | notebook | [16], [17] | |

`Project 1` : Recommender systems based on LFM | Kaggle InClass Prediction Competition | |||

Week07 | Neural collaborative filtering: nonlinear interaction | slides | notebook | [2], [5], [19] |

Week08 | Side information: continuous and discrete features | slides | notebook | [2], [10] |

Week09 | Cold-start: smoothing recommender systems | slides | notebook | Section 1.5 in [1] |

Week10 | binary recommender systems and Top-K recommendation | slides1+slides2 | notebook | Section 10.4 in [1], [11], [12] |

`Project 2` : Recommender system based on Real application | Kaggle InClass Prediction Competition | |||

Week11 | Advance topic: convolutional neural networks based Recommendation | slides | notebook | [2], [13] |

Week12 | Advance topic: Causality in recommender systems | slides | [18] | |

`Quizz 2` : Inclass exercise for statistical modelling (similar to the homework) | ||||

Week13 | Top-3 solution presentation |

## 🧾 Course Content

🖥️ **Description:**

Commercial sites such as search engines, advertisers and median (e.g., Netflix, Amazon), and financial institutions employ recommender systems for content recommendation, predicting customer behavior, compliance, or risk.

This course provides an overview of predictive models for recommender systems, including content-based collaborative algorithms, latent factor models, and deep learning models, as well as Python implementation, evaluation and metrics for recommender systems.

🔑 **Key words:**

In this course, students will learn about principles and algorithms for turning training data into effective automated predictions. We will cover:

- Python programming, recommender systems library
- Correlation-based collaborative filtering, latent factor models, neural collaborative filtering, deep learning models
- Recommender systems, link prediction, Top-K recommendation
- Tuning, bagging, ensemble in recommender systems

👌 **What you’ll learn:**

- Understand principles behind recommender systems approaches such as correlation-based collaborative filtering, latent factor models, neural recommender systems
- Implement and analyze recommender systems to real applications by Python
- Choose and tune suitable models for different applications

🏗️ **Prerequisites:**

- Familiarity with linear algebra (inner product, matrix-vector product), linear regression (OLS).
- At least a little experience programming with Numpy, TensorFlow, and pandas.
- Completed Machine Learning Crash Course either in-person, online, or self-study, or you have equivalent knowledge.

## 💯 Grading (tentative)

👨💻 **Coursework:**

- Homeworks (20%)

There will be three homework / Inclass quizzes. You are encouraged to use LaTeX to submit your homework (Latex template). You will receive one (1) bonus point for submitting a typed written assignment (e.g. LaTeX, Microsoft Word). We will accept scanned handwritten assignments, but they will not receive the bonus point.

- Inclass quizzes (coding and exercise) (25%)

Open-book exam, and problems will be like the homework.

- Real application project (50%)

A full analysis provided in form of report and Jupyter notebook. (1) An executable notebook containing the performed analysis on the data; (2) A technique report includes the (i) mathematical form and intuitive interpretation of your predictive models (ii) details about the data processing and hyper-parameters tuning.

👨🏻🤝👨🏾 **Collaboration policy**: we admit you to form a group to finish your real application projects. The number of group members should be smaller or equal than 3. The contribution of each member should be clearly stated in the final report. You will receive one (1) bonus point if you work solo to the final project.

## 📋 Recommended Readings

- Aggarwal, C. C. (2016). Recommender systems (Vol. 1). Cham: Springer International Publishing.
- Zhang, S., Yao, L., Sun, A., & Tay, Y. (2019). Deep learning based recommender system: A survey and new perspectives. ACM Computing Surveys (CSUR), 52(1), 1-38.
- Funk, S. (2006). Netflix update: Try this at home.
- Chen, H., Li, X., & Huang, Z. (2005, June). Link prediction approach to collaborative filtering. In Proceedings of the 5th ACM/IEEE-CS Joint Conference on Digital Libraries (JCDL’05) (pp. 141-142). IEEE.
- He, X., Liao, L., Zhang, H., Nie, L., Hu, X., & Chua, T. S. (2017, April). Neural collaborative filtering. In Proceedings of the 26th international conference on world wide web (pp. 173-182).
- Dai, B., Wang, J., Shen, X., & Qu, A. (2019). Smooth neighborhood recommender systems. Journal of Machine Learning Research, 20.
- Koren, Y., Bell, R., & Volinsky, C. (2009). Matrix factorization techniques for recommender systems. Computer, 42(8), 30-37.
- Insight blog: Explicit Matrix Factorization: ALS, SGD, and All That Jazz
- Github: Matrix Factorization for Recommender Systems
- Agarwal, D., & Chen, B. C. (2009, June). Regression-based latent factor models. In Proceedings of the 15th ACM SIGKDD international conference on Knowledge discovery and data mining (pp. 19-28).
- Deshpande, M., & Karypis, G. (2004). Item-based top-n recommendation algorithms. ACM Transactions on Information Systems (TOIS), 22(1), 143-177.
- Dai, B., Shen, X., Wang, J., & Qu, A. (2019). Scalable Collaborative Ranking for Personalized Prediction. Journal of the American Statistical Association, 1-9.
- Wang, S., Wang, Y., Tang, J., Shu, K., Ranganath, S., & Liu, H. (2017, April). What your images reveal: Exploiting visual contents for point-of-interest recommendation. In Proceedings of the 26th international conference on World Wide Web (pp. 391-400).
- Music artist Recommender System using Stochastic Gradient Descent: Machine Learning from Scratch (Part VII)
- Understanding matrix factorization for recommendation (part 3) - SVD for recommendation
- Creating a Simple Recommender System in Python using Pandas
- khanhnamele’s GitHub: MovieLens Recommendation Systems
- Wan, M., & McAuley, J. (2018, September). Item recommendation on monotonic behavior chains. In Proceedings of the 12th ACM Conference on Recommender Systems (pp. 86-94).
- Companion Jupyter notebooks for the book “Deep Learning with Python”
- Build a scalable, online recommender with Keras, Docker, GCP, and GKE
- Tuinhof, H., Pirker, C., & Haltmeier, M. (2018, September). Image-based fashion product recommendation with deep learning. In International Conference on Machine Learning, Optimization, and Data Science (pp. 472-481). Springer, Cham.