## 2 Materials and Methods
### Data Processing  
#### 2.4.1 Machine Learning Models  
To differentiate honey with respect to the geographical origin, three types machine learning classifiers have been developed, namely artificial neural networks (ANN), support vector machines (SVM) and k-nearest neighbors (KNN). An artificial neural network is an organization of liked components that are known as nodes or neurons. Each neuron is programmed to execute a calculation based on input connections and to send the resulting value to the output links [26]. The Keras framework [27] has been used for constructing the ANN models; its structure illustrated a linear stack of _dense_ and _dropout_ layers. The chosen activation functions were represented by rectified linear unit (ReLU) and softmax, while the categorical cross-entropy loss was applied for compiling the model. Moreover, the number of hidden neurons on the first hidden layer, the learning rate, the number of epochs used for the training phase and the dropout rate were chosen through a grid-search approach, by comparing the model accuracy determined by 10-fold cross-validation. In this regard, when the entire set of elemental and isotopic determinations were used for the construction of the model, the tested numbers of units on the first hidden layer were [20, 30, 40, 50], while in the case when a dimensionality reduction method was applied (i.e., either a feature selection or a component reduction step) prior to the development of the classifiers, [5, 10, 20] corresponded to the investigated value set. Three learning rates were examined (i.e., 0.001, 0.01 and 0.1), and the number of iterations was chosen according to the following set: [250, 500, 1000]. Lastly, for optimizing the dropout rate associated with the _dropout_ layer, five different values were tested, namely 0.1, 0.2, 0.3, 0.4 and 0.5.  
An SVM model builds a hyperplane or a group of hyperplanes corresponding to a high-dimensional space that may be used as a classifier for regression problems or for other applications [28]. The KNN algorithm represents a lazy instance-based learning method, as it aims to create local approximations of the target function. All instances are presumed to be points in an \(n\)-dimensional space, and the nearest neighbors of an instance are defined in terms of a distance function (e.g., Euclidean, Manhattan), which takes into account all attributes of the given objects [29].  
SVM and KNN models were developed by means of the scikit-learn library [30], and the process for tuning the hyperparameters corresponding to each ML algorithm was conducted by means of the model_selection.GridSearchCV class. Regarding SVM, three types of kernels were tested (i.e., linear, polynomial and radial basis function), and the search space with respect to the C parameter was \(\{2^{-5},\,2^{-4},\,\ldots,\,2^{15}\}\). The investigated degrees associated with the polynomial kernel were \(\{1,\,2,\,\ldots,\,10\}\), while the tested values for the gamma parameter defining the radial basis function kernel were \(\{2^{-15},\,2^{-14},\,\ldots,\,2^{3}\}\). For the development of the KNN models, the tested number of neighbors was reflected by the value set \(\{1,\,3,\,\ldots,\,15\}\), the uniform and distance weight functions were applied for prediction and the investigated metrics for computing the distance were Euclidean and Manhattan.  
In order to evaluate and compare the accuracies of the ML models in an objective manner, a common stratified 10-fold cross-validator was used for all constructed ANN, SVM and KNN models. Therefore, each of the ten test sets illustrated the same distribution of the samples with respect to the investigated geographical origin.