## 2 Data and Methods
### Machine Learning  
Machine learning is considered as the set of algorithms and methods that can be applied for designing and implementing systems, that learn from data, and that are capable of inferring results and/or deducing patterns from the incoming data [55]. Considering the availability of input data and the desired outcome, machine learning algorithms can be grouped into four main categories: supervised learning, unsupervised learning, semi-supervised learning, and reinforcement learning [56; 57].  
Supervised machine learning covers algorithms that generate functions that are capable of mapping inputs to outputs, based on their training with labeled data (i.e., by learning from input-output examples). Supervised learning is usually applied for classification (i.e., the process of assigning an object with one (binary classification) or more categories (multiple classification) and regression (i.e., the process of predicting one output (univariate), or multiple ones (multivariate) given different parameters) tasks [58]. Different classification algorithms such as Random Forest [59], Support Vector Machines [60], naive Bayes classifier [61], Decision Trees [62], Logistic Regression [63], and K-Nearest Neighbors [64] have been applied to remote sensing and in situ data, aiming to facilitate the improved understanding and monitoring of the environment. Similarly, regression algorithms such as linear and polynomial regression have been utilized to model continuous variables and to perform predictions [65; 66]. Deep learning is another category of supervised machine learning, where the models are trained using artificial neural networks with many hidden layers, which allow the model to learn complex representations of the data. These models can learn to identify patterns and to make predictions based on the input data, much like in other supervised learning algorithms [67].  
On the other hand, unsupervised learning is driven from the lack of labeled data that can be used for training, and attempts to identify hidden patterns and similarities in the data [56]. Unsupervised learning is usually applied for clustering tasks. Some of the most commonly used algorithms include k-means clustering [68; 69] and ISODATA [58; 70; 71].  
Aiming to address the drawbacks of both supervised and unsupervised techniques, semi-supervised learning approaches have been introduced, exploiting both labeled and unlabeled data for training [72]. The unlabeled examples are initially clustered by the supervised algorithm while considering the labeled ones. Then, both the original and newly labeled examples are utilized using the supervised learning algorithm. The overall objective is to minimize the distance between the clusters and the input vectors (in the case of the unlabeled examples), as well as the errors between the target labels and the computed ones (in the case of the labeled examples) [73].  
Reinforcement learning constitutes another category of techniques that learn by interacting with the environment. Such algorithms have any prior knowledge regarding the actions to be taken under a specific situation, and thus the learning agent is receiving a reward or a penalty from the environment as a judgement of the applied action. The goal is to minimize penalties and to maximize rewards. Reinforcement learning is not focused on a particular domain rather than on EO data acquisition tasks, and thus it is not expected to be covered in the context of this analysis [57].