I'm a complete newbie to the world of machine learning, and I'm currently working on implementing a model that will need to incorporate feedback, as well as changes to the data set (both feature & label changes over time).

The frequency of change isn't yet entirely known, but for simplicity could probably be rolled into a batch every day or so.

I'm aware of how I can build a training & test set, and get a classifier up and running.

My primary issue is that it's probably not going to be ideal to run a completely fresh training every time there's a change.

Users will be interacting with the system via "this was helpful / not helpful" type feedback, which I want to use to strengthen / weaken its association model.

I'm absolutely in the dark as to how once you have the model from the initial data, you can then get it to refine over time from this sort of feedback, and how to update (i.e. add/remove features & labels) without starting from scratch.


What sort of classifier is best suited to this sort of refinement-over-time problem?

I'll also add that the model needs to support multi-label classification, so any caveats / gotchas / information on how to do this in the broader context of my question would be helpful too.


If you only want to add more examples you can retrain the machine learning algorithm you had the day before. But if you want to add new features training it from the beginning is needed, you could train a new ML algorithm using only the new features and mix the outputs, but that is not a good solution, retrain the whole ML algorithm.

I would use a neural network, which is very intuitive for your case, you calculate a set of weights and save them. When you get new data you load your old network and calculated set of weights and tune it using the new examples you have.

NN natively support multilabel classification, and if one day you decide that you one to add a new label you dont need to retrain the whole NN, you could erase the last layer, add a new one, and only train this last layer weights.

| improve this answer | |
  • $\begingroup$ So I'm guessing running the training function keeps the existing weights as a baseline (rather than generating from scratch) if there are some there already and the input layer (features) haven't changed? So am I correct in assuming that: 1. Features change -> retrain 2. Labels change -> just train and update 3. New examples -> just train and update $\endgroup$ – Clint Mar 28 '18 at 13:33
  • 1
    $\begingroup$ If you add or remove a label you have to remove the last layer, add a new one (with the correct number of output neurons) and train, but the weights that will more change will mostly be the ones in this last layer; I wanted to clarify this || yes, your assumptions are right, when you create a NN you have to initialize the weights ( usually truncated normal, or other method) if you have already calculated some weights these will only require minor updates/upgrades $\endgroup$ – Kailegh Mar 28 '18 at 13:47
  • 1
    $\begingroup$ if for example you want to use a SVM and you want to add more labels you would have to retrain the whole ML algorithm $\endgroup$ – Kailegh Mar 28 '18 at 13:49

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.