Inspiration
Teaching others about machine learning and providing guidance for their implementations is a hobby of mine. Recently I have been implementing simple, straight forward implementations of machine learning algorithms in Matlab, for beginners to learn from. I also feel that although there are great APIs out there for machine learning implementations, they don't help beginners understand the essence of machine learning and data science. I took YHack as an opportunity to implement a movie suggestion algorithm using a lesser known but powerful algorithm, the Restricted Boltzmann Machine (RBM).
What it does
The Suggestify is an RBM-based model that takes training data from the Amazon EC2 MovieLens dataset. It uses the ratings of 28 different individuals for movies in 4 different categories to learn their movie preferences without supervision. The straight forward nature of the machine allows beginner data science enthusiasts to learn about the RBM using Matlab's simple syntax, which was one of my goals. Since Suggestify takes in binary inputs, it can actually generate suggestions for any relevant data set that can be represented as groups of binary inputs, such as food choices, music genre preferences, or even travel preferences.
How I built it
I downloaded the MovieLens dataset and parsed 12 different movies in 4 different categories, and then turned user ratings from 0-5 to binary (>=3 was a 1, otherwise 0). I then implemented the entire RBM from scratch in Matlab. Finally, I used Node, Angular, Express, html, and socket to communicate a web application to Matlab, and show the movies suggested to the user given their genre preferences.
Challenges I ran into
Since I had never implemented an RBM before, implementing the learning method was the hardest. I also had a tough time implementing the web application and integrating it with Matlab since I had never done web development before.
Accomplishments that I'm proud of
I'm proud of the fact that I was able to deploy a website that communicates with Matlab, and that the machine works surprisingly well considering how small the training size is. This shows the power of the RBM, even though it has not been widely used. I am also happy with how simple the syntax was able to be so it is an effective learning tool for beginners.
What I learned
I learned how to deploy a website using the tools mentioned above, how to properly implement an RBM, and how to communicate Matlab with a web app.
What's next for Suggestify
Suggestify is a stepping stone for data science education, as well as generative problems. Soon, I will be using it as a building block to implement a deep learning algorithm, which were actually first implemented using RBMs. The deep algorithm will use a much larger dataset and follow a similar easy to follow syntax to enhance the learning of those who understand RBMs.
Log in or sign up for Devpost to join the conversation.