I need a model that, given a (mostly categorical) labelled training data, cleans it up, removing incorrectly classified observations. What are the standard techniques to automatically detect and remove those observations?
For the purpose of model selection, I have synthetic labelled data whose incorrectly classified instances are known.
I found one algorithm to automatically detect outliers, the Isolation Forest, but looking at the documentation of its implementation in sklearn it seems to only care about X
i.e. the distribution of input features, and not the labels y
, which is not what I need. So I tried to incorporate y
as a new feature of X
to see if the detection worked, but this wasn't successful, and still ended up scoring only 17% accuracy in predicting whether an observation has an incorrect label.
Is there any other noise reduction algorithm I could use? Should I keep on with the Isolation Forest workaround and maybe give the feature y
a heavier weight?