structured prediction cascades

A general method for speeding up inference and enabling more complex models. This has led to state-of-the-art results in OCR, human pose estimation and tracking, and natural language parsing. Code is available for the following:

Read about it in detail here.

SCALPEL: Segmentation Cascades with Localized Priors and Efficient Learning

State of the art object segmentation using a cascade of greedy agglomerative models. We incorporate both bottom-up and top-down cues in our approach. Code to reproduce the results from the paper can be accessed via github here. Note that there is a dependency on another github project that needs to be activated via git submodules or by downloading a separate zip file (instructions on the git page).

Mixed Membership Matrix Factorization

Lester Mackey and I have now documented and open-sourced the M3F implementation used in the paper in a Google Code project.

The code is published under the MIT license so you are free to use it in your own projects, provided any copies of the original code include the license and author information. If you do use it in a paper, we'd appreciate it if you'd cite us and/or email us to give us a heads-up or to help with any troubleshooting of the code.

omni-jobs for matlab

A matlab toolkit for managing Sun Grid Engine (SGE) jobs and experiments. It's distributed in two components on github:

homework/competition submit and monitor system

A set of tools for monitoring a location on the filesystem and forking controlled processes whenever changes occur within some specificiations. We used this heavily in CIS 520, and it comes with template scripts for grading Matlab based homework submissions and running a competition server.

Get the code at:

Playing Expert Rock, Paper, Scissors

Click here to play.

As a final project for my Foundations of Machine Learning class with Rob Schapire in 2006, I created a Java applet that plays "Rock, Paper, Scissors" and consistently beats humans. In 2006, its final record was 114-47.

How it works. The algorithm is based on online updates of weighted prunings of decision trees, a member of a family of algorithms based on the notion of "learning with expert advice". In other words, the algorithm builds a probability distribution based on every possible combination of moves you previously have taken, starting with a blank slate at the beginning of the game. Any strategy that you employ will be exploited. And to make sure that you're kept on your toes, there's some randomness in the algorithm, too...

princeton mvpa toolbox

I was a contributor to the The Princeton Multi-Voxel Pattern Analysis (MVPA) Toolbox for Matlab - An open-source Matlab machine learning suite of tools for neuroimaging researchers.