Looking to build an optimization API using machine learning. The API will take a number of dimensions and based on these dimensions spit back a value.
This version of the API is a proof of concept. Detailed information will be provided once we engage in this project, but for now here are some basic high level points.
Some complexity to this:
- The API should be able to optimize and respond with an output fairly quickly
- This API will be used by multiple clients, the algo should be able to pull knowledge from a global POV (e.g. learnings from all parties) as well as specific patterns/learning from the specific client using the API (in essense it will be building a global model as well as a client specific model. However I am not sure if this provides a lot of value so we can talk about this)
- Each party will have a learning period, where it will not function but monitor the data to build a model, will engage after a certain amount of data/or when a confidence level has been reached
- The API should be capable of producing reports, both at a global level as well as client/more granular level
- The API should quantify it's performance (i.e. provide a way of quantifying the lift the optimization is providing. this could be done via using a control group, A|B testing, etc. leave it up to you to advise)
- Lets assume that the API can handle X dimensions, if the client is sending less than X dimensions, the API should still function (to the best of it's abilities). It should also be able to provide some insight into the level of improvement if all the dimensions were used
- A way of testing the API/Model. the models can be built using a test data set, but there needs to be a simple testing/demo interface to display the proof of concept
- There are also some future proofing for which hooks may need to be built in now, will give more details later but they include things such as control on who can use the API, what dimensions can be passed, client preferences/limitations on dimensions, etc.
Here is a very basic example: Lets say our model optimizes how many oranges to buy.
the client will initially tell us: how hungry they are on a scale of 1-10, how much they weight (in kg), their nationality and the time of the day.
Our model will then figure out how many oranges to buy and send them a single numeric value back.
Once we send them the value back, client will then tell as a yes or no that they were satisfied with the number of oranges or not. The model will take this Yes/No response to recalibrate the model for next time (this is the ML component)
thats a basic example. Now if you noticed i asked for nationality and time of day, and that seems kinda strange thing to ask. The reason is, I dont know if nationality or time of day makes a difference or not, but our model (based on regression) will be able to determine if there is a relationship or not and adjust it's self based on that.
In other words, there's a live optimizer stored in a server somewhere, the optimizer is based on machine learning and there are a set number/types of variables the client can send and based on these it will tell them a value. After telling them the value, the client will send a Yes/No response back that should help the model recalibrate it's self