Inspiration
Have you ever had difficulty understanding how models work? and what's the effect of changing the hyper-parameters? We aimed to solve this problem based on past experiences in a machine learning course.
What it does
Users can choose models (currently Kmeans, Knearest neighbours and linear regression); clicking on the graph adds a point For every point added, the machine learning model computes the result, and the app then interprets its output. They can change the hyper-parameters, with a small display on the error metrics to see how model the model performs.
How we built it
We used Golang for the API and machine learning models. The Gin framework had a minimal framework that enabled us to handle multiple, ensuring real-time responses. We also used it for its traditional number crunching and concurrency. For example, we used concurrency in K Nearest Neighbours to quickly compute the Euclidean distance from one point to all the other points, with minimal performance impact > 40 points.
Challenges we ran into
There are no existing libraries for the behaviour of the graph we wanted, so we custom-built it. We had issues such as state management, and users clicking and drawing lines. We overcame this through teamwork, by discussing with a partner our current aim and issues, hoping for a solution.
Coding Linear Regression with go was difficult, as we ended up with parameters that were > 10^23 whilst integrating values from the graph. The mathematical logic was sound, but the error was more to the concurrency and the alpha value. To get it working, we had an example working with reduced concurrency (golang feature) and a small alpha value that worked all the time.
Accomplishments that we're proud of
We are very proud of how we implemented the machine learning models, as Golang does not have any suitable libraries for machine learning, we had to code this from scratch. The use of concurrency and a language like C meant that our models could provide real-time feedback, anywhere from 500 microseconds to 10 milliseconds. This was quite an achievement if we consider how well this could scale.
What we learned
While our team was familiar with our tech stack it did not limit the amount we could learn. From learning how to work to a tight deadline while still remaining control of the project to learning the nuances of our frameworks. Furthermore we were not as familiar with GO, which presented an interesting challenge, given we needed to implement machine learning and concurrency, yet our team still learnt to deal with these challenges.
What's next for ModelHive
We would like to add more machine learning models, more specifically ones that work well from an interactive user experience. Examples include DBSCAN, Gaussian Mixture Models, Logistic Regression...
We would also want to add more metrics and hyperparameters. However, this would be dependent on the model used.
Log in or sign up for Devpost to join the conversation.