As a user, I want to be able to see recommended services when I visit the website based on my previous reviews so that I can be aware of them.
( Continuation from #91 and #116. This should be the last part to complete the user story.)
Points: 5
Risk: Low
Priority: High
Tasks:
[x] Add Montreal Services to the database (1h)
[x] Set up the ML engine as its own microservice and host it (3h)
[x] Integrate the above engine into MigrantHub (such that the Recommended Services UI can get populated by this engine) (3h)
Overall Plan
Since this user story is very big and cannot be broken down into smaller user stories, the tasks have been split up into a few sprints to have it ready for the release:
1) Iteration 6 #91
Deploy app on Google Cloud Platform
Host app online
Connect Google Analytics
2) Iteration 7 #116
Speak with Ehsan & Research which is the best machine learning framework to use (ideal: 3hr, actual: 30hr)
Collect and setup some fake input data for the ML program to test (1hr)
Design the (C#) ML program that will be trained and tested (4hr)
3) Iteration 8 #132
Set up the ML engine as its own microservices and host it
Integrate the above engine into MigrantHub (such that the Recommended Services UI can get populated by this engine)
Mockup:
Demo Steps:
This feature is displayed using the Recommended Services section.
Log in as a migrant
Scroll to the bottom of the page
You should see at most 3 services that are recommended for you
The more services you have reviewed (the more data), the more accurate the recommendations will be.
Since there was barely any documentation or resources online about ML.Net and the different ways of using it, this example above was the source of most of the knowledge on how to develop this recommendation engine, and thus, was relied on heavily and used as a template. Some of the code used in the example was also used in our project.
An issue that was encountered while developing:
When creating a new Visual Studio solution to create the web api and move in the micro services code, some of the libraries used from the Microsoft.ML package just wouldn't be accepted. This is because we had tried to install the latest 0.9.0 version as opposed to the 0.7.0 that we actually had found examples and documentation for. Newer is not necessarily better!
Some future suggestions for this feature:
Automating the scripts used for the ratings.csv and allServices.csv
Creating an accuracy threshold for the recommendations (ex. minimum 70% match, etc)
As a user, I want to be able to see recommended services when I visit the website based on my previous reviews so that I can be aware of them.
( Continuation from #91 and #116. This should be the last part to complete the user story.)
Points: 5 Risk: Low Priority: High
Tasks:
Overall Plan Since this user story is very big and cannot be broken down into smaller user stories, the tasks have been split up into a few sprints to have it ready for the release:
1) Iteration 6 #91
2) Iteration 7 #116
3) Iteration 8 #132
Mockup:
Demo Steps: This feature is displayed using the Recommended Services section.
Development Info: Originally, started out with a Matrix Factorization algorithm which looks at and uses ONLY the UserID, ServiceID, and ratings. as seen in https://github.com/dotnet/machinelearning-samples/tree/master/samples/csharp/getting-started/MatrixFactorization_MovieRecommendation
But then after having a discussion with the TA we decided that it wasn't enough to only look at those three things and decided to switch it over to a Field Aware Factorization Algorithm, which can give the option of using other different attributes for our recommendation engine when implemented. An example was seen here: https://github.com/dotnet/machinelearning-samples/tree/master/samples/csharp/end-to-end-apps/Recommendation-MovieRecommender
Since there was barely any documentation or resources online about ML.Net and the different ways of using it, this example above was the source of most of the knowledge on how to develop this recommendation engine, and thus, was relied on heavily and used as a template. Some of the code used in the example was also used in our project.
An issue that was encountered while developing: When creating a new Visual Studio solution to create the web api and move in the micro services code, some of the libraries used from the Microsoft.ML package just wouldn't be accepted. This is because we had tried to install the latest 0.9.0 version as opposed to the 0.7.0 that we actually had found examples and documentation for. Newer is not necessarily better!
Some future suggestions for this feature: