16
$\begingroup$

I would like to build an online web-based machine learning system, where users can continuously add classified samples, and have the model updated online. I would like to use a perceptron or a similar online-learning algorithm.

But, users may make mistakes and insert irrelevant examples. In that case, I would like to have the option to delete a specific example, without re-training the perceptron on the entire set of examples (which may be very large).

Is this possible?

$\endgroup$
  • $\begingroup$ very interesting idea. have you made effort in formalizing this? $\endgroup$ – Strin May 27 '13 at 12:05
  • $\begingroup$ Given the specifics of your perceptron model and your classifier, what happens when you re-insert the example with a corrected classification? Doesn't this reduce the weight on the wrong internal-layer neurons and increase the weight on the right internal-layer neurons? $\endgroup$ – Wandering Logic May 27 '13 at 18:51
  • 1
    $\begingroup$ Re-inserting the sample may obviously help in some way, however, I am not sure the correctness and convergence proofs of the perceptron will hold in this case (i.e. I am not sure the results will be identical to the situation where the erroneous sample have not been inserted in the first place). $\endgroup$ – Erel Segal-Halevi May 28 '13 at 7:45
  • $\begingroup$ As a naïve solution, you could keep a record of the perceptron's weights before each new sample is added. Then, when you want to eliminate a sample, (re)set the perceptron's weights to their values before the "bad" example was added, and re-train the perceptron with all the valid examples added after the "bad" one. This would involve some re-training, but not on the entire set of examples. Of course, you'd also have to maintain records of examples and their associated weights. $\endgroup$ – rphv May 28 '13 at 23:12
6
$\begingroup$

As I understand the process, altering a perceptron without retraining is impossible. The weight adjustments are not only relative to that specific example but also relative to the other training examples that have gone before. Identifying the incorrectly classified instance and removing it from the test set before retraining the model would seem to be the most effective way of correcting the weights.

I think it's worth pointing out that in comparison to other machine learning algorithms, perceptrons are relatively resistent to noise and incorrectly classified instances in the training set. If you're encountering a large number of misclassified instances, it would seem more prudent to have better validation at the point you ingest the data prior to training than to come up with some way to correct for misclassified instances after the perceptron has been trained. If that's not possible and you're able to identify the incorrectly classified instances as such, then removing them and retraining would seem the only way to effectively remove the impact of the misclassified instances.

$\endgroup$

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.