GSoC 2014: Standard Extreme Learning Machines

Finished implementing the standard extreme learning machines (ELMs). I am getting the following results with 550 hidden neurons against the digits datasets,

Training accuracy using the logistic activation function: 0.999444
Training accuracy using the tanh activation function: 1.000000

Fortunately, this algorithm is much easier to implement and debug than multi-layer perceptron :).
I will push a test file soon.

@ogrisel , @larsmans
Thanks for the references. Using the Woodbury matrix inverse identity is indeed a good possibility to make an incremental ridge regression in the case of many many samples. One could even have a mean that gets updated along the way. If several epochs are run then the result should correspond to ridge with `fit_intercept=True` in the end.

In principle I think this can be an interesting addition to `sklearn.linear_model.ridge`. However, I would not include it in the PR I am working on, since it is already pretty big.

I am also wondering about the true advantages this method offers: It doesn't avoid making an `(n_features, n_features)` matrix, so we cannot scale in number of features with this. As for number of samples, I have a hunch one could also just subsample to something that can be treated in-core and get essentially the same result. But I may be wrong.