# Ensemble Modelling for Predicting Fish Mortality +
## 4 Materials and Methods
### Symbolic-Regression Models  
Symbolic Regression (SR) is a method of interpretable Machine Learning that reduces data to mathematical equations. More precisely, SR is a type of regression analysis that searches the space of mathematical expressions (symbolic expressions) to find the model that best fits a given dataset in terms of both accuracy and simplicity. Contrary to conventional regression techniques that seek to optimize parameters for a predefined structure of a regression model, SR does not impose prior assumptions and instead infers both the  
Figure 3: Architecture of an ANN in charge of a particular disease.  
structure of a regression model and its parameters directly from the data. This, in turn, entails that SR is not affected by human bias or gaps in the domain knowledge, since it does not require a priori specification of a regression model (which is perhaps mathematically comprehensive from a human perspective). Yet a disadvantage of SR is the fact that it takes considerable time to find a regression model that appropriately fits the dataset, as the corresponding search space is huge. Nevertheless, most SR algorithms prevent a combinatorial explosion by applying evolutionary algorithms that iteratively improve--over generations--the mathematical expression that best fits the available data.  
Such an evolutionary algorithm, based on the fundamental concepts of Darwinian evolution, builds an initial population of naive random formulas, by randomly combining mathematical building blocks, such as mathematical operators (i.e., \(+\), \(-\), \(*\), \(\div\)), analytic functions (e.g., sqrt, cos, sin, exp, log), constants, and state variables. Each successive generation of formulas, then, evolves from the preceding one, by selecting the fittest individuals from the population to undergo genetic operations. Eventually, the algorithm takes a series of totally random formulas, untrained and unaware of any given target function and makes them breed, mutate and evolve their way towards a formula that best fits the data.  
In our study, the development of SR models was carried out using Python's gplearn tool, which extends the scikit-learn ML library to perform Genetic Programming for Symbolic Regression [27]. Table 1 lists the hyper-parameters set up for the gplearn tool. The explanation of each hyper-parameter is as follows: Population Size is the number of individuals (mathematical formulas) in each generation, Generations is the maximum number of generations, Metric is the measure of an individual's fitness (herein MAE), and Stopping Criteria expresses the fitness value at which the evolution procedure terminates. Function Set contains the mathematical functions used when building and evolving generations. Crossover Probability controls the crossover method according to which genetic material between individuals is mixed. Sub-tree Mutation Probability, Hoist Mutation Probability, and Point Mutation Probability control the respective mutation operations. Lastly, the Parsimony Coefficient is a constant that penalizes large individuals by adjusting their fitness (MAE) to be less favourable for selection--this penalty helps in producing less computationally costly individuals which are, at the same time, more understandable.