We implemented a robust user-user collaborative recommender system with Cosine Similarity on the MERN stack. User-user collaborative recommenders are used in many popular applications including Spotify song recommendations and Netflix movie recommendations. Our recommender system recommends the courses that students should take based on students who are similar to them at their school. You input your name and year of study then list all of the courses you have taken or are currently taking. When the user inputs their courses and year of study we make a vector that defines the embedding for that student. Each feature of the embedding represents the percentage of courses that the user has taken in that category.
Ex: If I have taken 30 courses, 10 in Engineering, 10 in Math, and 10 in History then my embedding will look like: [ year = 1, eng. = 0.33, math = 0.33, history = 0.33 ... other categories ]
To find courses to recommend we take the given users embedding and find the Cosine similarity with all of the other users. The top n similarities will be considered the close neighbours, we take all of the courses that our user has not taken that the close neighbours have taken - these are the recommended courses.
Challenges: None of us had developed on MERN stack before so we had to learn, there was helpful tutorials but it still took time.
We are proud of the product and can't wait to show it off! The scaling potential is unlimited. In the near future we would like to implement a Graph Database with Neo4J so our recommender can be more robust to adding new classes or relationships between students.