I'm working on this project, funded by Fair Isaac, with data from Fair Isaac. For now, it's password protected, the data being top-secret and all :).
I just submitted this paper to KDD'04. This is a paper I put together with Dr. Elkan (and the first result of my latest research). It's "A Bayesian Network Framework for Reject Inference," where we use Bayesian Networks to identify the different cases that arise in reject inference applications, and present which algorithms may be used in which cases. It's a complete overview of everything I've been studying (regarding reject inference) up until now.
I graduated from the University of California, Berkeley in 2002, with a B.A. in Computer Science and a minor in Music. I lived in the co-ops (Cloyne Court -- There's a neat history here.) for three years (as a cook, then Food Manager, then House Manager, then President).
[pd_interface.doc] (spring, 2004) For my user interface class (cse 271), I alayzed the user interface of Pd, a neat tool for sound editing, and generation. The analytical tecnhique attempts to evaluate the quality of the interface by analyzing a morphism between two abstract algebras. Don't think it will work? read on...
[bayes_reject.pdf] (winter, 2004) This is a paper I put together with Dr. Elkan. It's "A Bayesian Network Framework for Reject Inference," where we use Bayesian Networks to identify the different cases that arise in reject inference applications, and present which algorithms may be used in which cases. (KDD'04)
[cogsci200.ppt] (fall, 2003) This is a presentation I did for a graduate cognitive science seminar. It outlines Dr. Robert Hecht-Nielsen's theory of cerebral cortex, which is a very interesting theory. His theory is readily applicable to real-world problems, if you have enough memory. He recently used it to solve the cocktail-party problem.
[rnn_grammar.pdf] (spring, 2003) Here's a project I did on using recurrent neural networks (RNNs -- nets with feedback, and therefore state) to learn English grammar. The task was to determine which sequences of part-of-speech tags (out of about 50) were allowed in English. I compared two RNNs, the Long Short-Term Memory (LSTM) network, and the much simpler (and easier to program) Elman network. The results were a bit dissapointing, but the task wasn't very biologically plausible to begin with...
[presentation_final.ppt] (spring, 2003) Here's a presentation I did on the classic paper "Text Classification from Labeled and Unlabeled Documents using EM"
[project1_253.pdf] (winter, 2003) Here's a project I did on the two most popular clustering algorithms, K-means, and EM. We also experiment with different dimension reduction algorithms, PCA projections, and random projections (which have interesting properties). The tasks were to classify images by person, facial expression, and gender. (classification by distance to closest cluster center) (unpublished)
[project2_253.pdf] (winter, 2003) This project was similar to the previous two, but using feed-forward 2-layer neural networks. (unpublished) The title is a spoof on one of a paper by our professor, Dr. Cottrell, on facial expression recognition: "A Six-unit Network Is All You Need To Discover Happiness."
[project3_253.pdf] (winter, 2003) This is the third and final project in the neural networks class, using radial basis function (RBF) networks to do the image classification tasks. We played around with different dimension reduction algorithms, RBF placement schemes using clustering algorithms, and backpropagation to move the RBFs.
[cse201_project.pdf] (fall, 2002) This is a report for a graduate algorithms class I took. The task is to find the majority elements in a stream, where the number of different elements is extremely large (so it is impossible to just count each unique element), and the stream is potentially infinite in length (so you must do it in only one pass of the data). We made up an application for this algorithm (and you though it went the other way around...), finding the most common domain name requests coming into a DNS, so the ip address can be cached instead of querying another computer. It kind-of worked.
[BimanualStudy.pdf] (1999-2002) Back when I was an undergrad at UC Berkeley, I did a project with Dan Odell in the Mechanical Engineering department. We were investigating CAD systems with two mice (one in each hand!), specifically what types of menu/cursor systems split the users attention the least. (Graphics Interface, 2004)
My last semester at Cal, I took on a challenging graphics project: simulating a viscous liquid. My project was based on the 2001 SIGGRAPH paper, "Practical Animation of Liquids."
In summary, we used a 3-d grid to represent local velocities, and pressures, a high-resolution 3-d grid to represent the water (using a level-set representation), a Lagrangian integration solver for Navier-Stokes flow equations, a huge sparse linear system (using SPARSELIB) to calculate pressures to enforce incompressability, and Eulerian inegration to move particles. ("WHAT?" you say. "You use a level-set representation AND particles???" You'll just have to read the paper. The level-set advection procedure didn't work very well, so I ended up re-initializing the level set every frame by defining a sphere around each particle and solving the Eikonal level-set equation to enforce monotonicity. And stuff.)
I wrote the solver, and my partner wrote the ray-tracer. I made a few videos of this, some showing just the particles (great for observing vorticies and currents), and two showing the final ray-traced version. The aforementioned level-set issues prevended us from making great ray-traced videos, but I think the particle movies show really well that the Navier-Stokes solver worked very well:
The first video, splat.mpg, is a 10 meter diameter sphere of water falling.
The second video, stick.mpg, is a 1 meter diameter sphere of water falling with some initial rightward velocity. (This one's my favorite. Look, I made water! The water sticking to the ceiling is a artifact of our velocity interpolator, but it looks cool.)
The third video, fillup.mpg, is water pouring into the (cubic) container.
The second video, squirt_fill.mpg, is water squirting into the container from the side.
Here's a sequence of images of a dropplet of water moving down and to the right:
