Constructing a data-driven rainfall-runoff model
Learn data-driven modeling
Sample codes to perform the analysis (Matlab File 4kB Jul21 16)
Cross validation analysis (Matlab File 5kB Jul21 16)
Shown below is a sample plot showing the performance of the trained data-driven model. For both the training and testing period, the model prediction in general compares well with observed streamflow (see Instructions).
Machine learning algorithms are powerful tools of inductive learning. Given a set of training data, they can learn complex, nonlinear relations between input (i.e., rainfall and other climate data) and output (i.e., discharge). In this step, we will use the Support vector machine regression (SVM) algorithm to build our rainfall-runoff model. SVM (Wikipedia) comprises a relatively new class of learning algorithm. One attracting feature of SVM is its robust generalization power. In addition, the solution of SVM is globally optimal, while many other machine learning tools (e.g. ANNs) are subject to local minima.
We will use LIBSVM codes to train and test SVM model. LIBSVM provides a simple interface where users can easily link it to their own programs on a variety of platforms, including MATLAB, JAVA and Python. The LIBSVM package can be downloaded at https://www.csie.ntu.edu.tw/~cjlin/libsvm/.
In this step, students will be instructed to execute the provided sample MATLAB codes ddm.m. We use the first six years of data (2005-2010) to train SVR, and test on the remaining four years of data (2011-2014). The ddm.m file will generate plots such as the one shown above under Computing/Data outputs. The grey line is the observed daily mean discharge from HydroClient, and blue and red lines show the SVM model simulated discharge during the training and testing period, respectively.
Lastly, students will learn to evaluate the performance of constructed rainfall-runoff models. The sample code ddm.m will calculate two statistics: the mean error and the coefficient of determination.
Additional Activities and Variants
Interested students are encouraged to try out other machine learning algorithms such as artificial neural network and Gaussian process by following the sample codes ddm.m.
Interested students can further explore how to tune the hyperparameters of machine learning algorithms by trying out the CV.m code. Additional resources can be found in https://wiki.cites.illinois.edu/wiki/display/mlgwm/Tutorial.