Skip to content

Latest commit

 

History

History
37 lines (30 loc) · 6.31 KB

README.md

File metadata and controls

37 lines (30 loc) · 6.31 KB

Python Matplotlib Python

BeautyRec 💋

This project, developed for the first part of the Combinatorial Decision Making and Optimization course of my Master's degree, aims to create a cosmetic recommender system based on some Sephora product ratings, which I scraped from the website using Selenium. I then implemented a recommender system using two different algorithms, Funk SVD and an Autoencoder, which were both implemented from scratch using only pandas and numpy.

In particular, the focus of this project is on the optimization algorithms: Funk SVD is implemented with SGD, while the Autoencoder can be trained either with RMSProp or with Adam. In order to run this code the following libraries are required:

  • pandas
  • selenium
  • numpy
  • matplotlib

Which can be easily installed using the requirements.txt file like this:

  pip install -U pip
  pip install -r requirements.txt

Note however that selenium can be omitted, if you do not intend to scrape your own data, but just want to use what I provided. Otherwise, in order to start a web browser, the Selenium module needs a web driver, which you should download from here.

Finally, to launch either the Funk SVD of the Autoencoder, you should run python main.py with different command line arguments, which are depicted below:

usage: main.py [-h] [--model {mf,autoenc}] [--optimizer {adam,rmsprop}]

optional arguments:
  -h, --help            show this help message and exit
  --model {mf,autoenc}
                        Model to be used for the recommender system
  --optimizer {adam,rmsprop}
                        Optimizer should only be specified when using --model autoenc.
                        Since the matrix factorization method uses sgd by default,
                        if it is specified along with --model mf it will be ignored.

To-Do

As I said, the project was initially developed for the Combinatorial Decision Making and Optimization course, thus it heavily focuses in the optimization algorithms instead of on actually making recommendations. However, I would love to expand this project in order to actually get interesting recommendations, which I hope to make accessible to the general public using a web app.