gohjiayi / beer_recommender

Building a beer recommender using collaborative filtering and bandit algorithms, and evaluating the best performing technique.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Building a Beer Recommender using Bandit Algorithms

This project strives to build a beer recommender using both collaborative filtering and bandit algorithm, and subsequently evaluate the best performing technique.

Project Resources

For more project details, please refer to the following resources linked here:

  1. Project Report
  2. Project Slides
  3. Project Video

Project Directory Structure

├── data
│   ├── bandit
│   │   ├── simulate_[bandit_algo].csv
│   │   └── ...
│   ├── beer_matrix_100.csv
│   └── beer_reviews.csv
├── eda.ipnyb
├── data_preprocessing.ipnyb
├── collaborative_filtering.ipnyb
├── bandit_algorithms.ipynb
└── ...

Note:

  • All files within in data/ are accessible here; more details on the source will be further elaborated.
  • All .ipnyb notebooks are tuned for Google Colab usage. For local usage, minor code changes and environment setup will be required.

1. Data Gathering

Download the BeerAdvocate Beer Reviews dataset from data.world linked here and save it as data/beer_reviews.csv.

2. Exploratory Data Analysis

Run eda.ipnyb to gain insights from the dataset collected.

3. Data Preprocessing

Run data_preprocessing.ipnyb to preprocess the Beer Reviews dataset, which generates data/beer_matrix_100.csv. This data subset will be specifically used to build a recommender system using Bandit Algorithms.

4. Collaborative Filtering

Run collaborative_filtering.ipnyb to build a recommender system using Collaborative Filtering methods.

5. Bandit Algorithms

Run bandit_algorithms.ipnyb to build recommender systems using Bandit Algorithms - Epsilon-Decay, Annealing Softmax, UCB1, Bayesian UCB and Thompson Sampling. Simulated data for each algorithm will be generated as data/bandit/simulate_[bandit_algo].csv.

Contributors

About

Building a beer recommender using collaborative filtering and bandit algorithms, and evaluating the best performing technique.

License:MIT License


Languages

Language:Jupyter Notebook 100.0%