scikit-learn/scikit-learn — pull request #1830 by robertlayton (2013-04-03 00:16:27+00:00)
Title: WIP: Evidence Accumulation Clustering

(Still a significant amount of work to go, review at your own risk.)

Evidence accumulation clustering: EAC, an ensemble based clustering framework:
Fred, Ana LN, and Anil K. Jain. "Data clustering using evidence
accumulation." Pattern Recognition, 2002. Proceedings. 16th International
Conference on. Vol. 4. IEEE, 2002.

Basic overview of algorithm:

1. Cluster the data many times using a clustering algorithm with randomly (within reason) selected parameters.
2. Create a co-association matrix, which records the number of times each pair of instances were clustered together.
3. Cluster this matrix.

This seems to work really well, like a kernel method, making the clustering "easier" that it was for the original dataset.

The default of the algorithm are setup to follow the defaults used by Fred and Jain (2002), whereby the clustering in step 1 is k-means with k selected randomly from 10 and 30. The clustering in step 3 is the MST algorithm, which I have yet to implement (will do in this PR).

*I'm posting this early to get feedback on the API.* The major things I've done that need feedback are around the usage of attributes for the mid and final clusterers.

TODO:

* MST algorithm from the paper, which was used as the final clusterer
* There is an improvement to the speed of the algorithm (don't have the paper on hand) that has been published, that should be incorporated (perhaps in a later PR)
* Examples/Usage
* Narrative documentation
* Revert test_clustering, line 508, to only check for SpectralClustering
* Use a sparse matrix for the co-association matrix