Dirichlet Process Active Learning
Next week is the British Machine Vision Conference 2011, at which I have a paper - Active Learning using Dirichlet Processes for Rare Class Discovery and Classification by T. S. F. Haines and T. Xiang. The paper can be obtained from

http://thaines.com/content/research/2011_bmvc/dp_al.pdf

whilst the source code can be obtained from my code store under the directory dp_al - click on the source code menu item to head there.

Edit: You can download my slides, with an additional bonus slide, from

http://thaines.com/content/research/2011_bmvc/dp_al_pres.pdf

and a video of me giving the talk will be available at some point, once the bmvc people set it up - at that time I'll stick a link up here.

Edit 2: You can now watch the video over at the BMVA website:

http://www.bmva.org/bmvc/2011/proceedings/paper9/index.html

Whilst potentially conceptually tricky it is a very easy to implement active learning method. It assumes that the categories have been drawn from a Dirichlet process, which is to say that there is a Dirichlet process mixture model over the samples in the pool. As assumptions go it is a pretty weak one, and yet the moment you make it you gain the probability that an entity in the pool belongs to a previously unseen class. An old if mostly unexplored concept (The entropy method of active learning tends to do a little better.) is to select from the pool the entity which the classifier is most likely to classify incorrectly. On its own this idea only targets entities to refine the boundaries of existing categories, but if we include the Dirichlet process assumption, such that an entity could be misclassified either because it is the wrong side of a boundary or because it is an example of something new, its character changes. We now have an algorithm (Refereed to as P(wrong) in the paper.) that selects entities to discover new classes and refine the boundaries of the existing classes, that is particularly suited to situations where there are rare classes. It balances these two tasks without any real parameter tuning. This makes it a perfect candidate for many real world problems, such as automated surveillance, where entirely new behaviours regularly appear but boundary refinement of the existing classes remains important.