This is an implementation of Echo State Networks (ESN) for Python with parameter tuning via evolutionary algorithms. The implementation supports dimensionality reduction between the reservoir and the readout layer as described in [1].
Currently, the dimensionality reduction layer could either be identity (no dimensionality reduction), pca (Principal Component Analysis) or kpca (Kernel PCA). The readout layer supports the following algorithms:
- Linear regression
- Ridge regression
- Lasso
- Elastic net
- Linear and Kernel Support Vector Regression
- [SCOOP] (https://github.com/soravux/scoop)
- [DEAP] (https://github.com/DEAP/deap)
- [Scikit Learn] (http://scikit-learn.org/stable/)
- [SciPy stack] (http://www.scipy.org/install.html)
run_experiments.sh runs parameter optimization and computes errors, means and standard deviations for all optimization config files in configs/user for all data sets in data.
The config files in configs/user are overloading the default config file in configs/opt/default.json. This means that for a given config file, it uses all fields in configs/opt/default.json except the ones specified in the user config file.
The parameters found by the optimization scheme are saved to an ESN config file in /configs/esn, which is used to initialize the network for experiments. The results are saved in results.
[1]: Løkse, S., Bianchi, F. M., & Jenssen, R. (2016). Training Echo State Networks with Regularization through Dimensionality Reduction. arXiv preprint arXiv:1608.04622.