## 2 Materials and Methods
### Artificial-Intelligence-Based Modeling  
#### 2.2.1 SVM Algorithm Principles  
Support vector machine or SVM is a set of supervised learning methods used for classification, regression, and outlier detection. SVM was initially developed by [PERSON] and [PERSON] in AT&T Bell Laboratories [33] and was operated based on statistical learning frameworks, namely the Vapnik-Chervonenkis theory [34], and can be applied in both linear and non-linear classifications. The linear SVM uses a maximum-margin hyperplane (hard-margin or soft-margin), and the non-linear SVM utilizes kernels for classifications. SVM is also used for unsupervised learning, which is called support vector clustering (SVC) [27]. SVM algorithms use differing types of kernel functions, whose most-common functions are linear, nonlinear, polynomial, radial basis function, and sigmoid [31]. The  
Figure 1: Regular UCT testing device [30].  
Figure 2: An image of the limestone samples and UCS test device used in this study.  
present study used a sigmoid kernel function. This kernel function is similar to a two-layer perceptron model of a neural network, which works as an activation function for neurons. So, using such a function helps to modify the prediction process similarly to neural networks. SVM classifies the input data during the training by using a maximum-margin hyperplane derived by solving the optimization. There are specialized algorithms for quickly solving the quadratic programming (QP) problem that arises from SVM that generally rely on heuristics to break the problem down into smaller, more manageable chunks. Another approach is to use an interior-point method that uses Newton-like iterations to find a solution to the Karush-Kuhn-Tucker conditions of primal and dual problems [35]. Instead of solving a sequence of broken-down issues, this approach directly solves the problem altogether.  
To avoid solving a linear system involving a large kernel matrix, a low-rank approximation to the matrix is often used in the kernel trick [27]. [PERSON] et al. [36] proposed a version of SVM for regression and prediction called support-vector regression (SVR), which is a model produced by support-vector classification that depends only on a subset of the training data because the loss function for building the model does not care about training points that lie beyond the margin. Analogously, the model produced by SVR depends only on a subset of the training data because the loss function for building the model ignores any training data close to the model prediction [37; 38]. Training the original SVR involves solving the following equations [38]:  
\[\begin{split}\text{minimize}\ \frac{\|w\|^{2}}{2}+C\sum_{i=1}^{N} \left(\xi_{i}+\xi_{i}^{*}\right)\\ \text{subject to}\ \left|y_{i}-<w,x_{i}>-b\right|\ \leq\ \varepsilon\end{split}\]  
where \(w\) is the vector normal to the hyperplane (margin), \(C\) is a quadratic function, \(b\) is the width from the origin, \(\xi_{i}\) is the slack variable, \(C\) is the width from the hyperplane, \(x_{i}\) is a training sample with a target value (\(y_{i}\)), \(\varepsilon\) is a free parameter, and \(i\) = {1,2,3,..., \(N\)}. The inner product plus the intercept <\(w\),\(x_{i}\)> \(-b\) is the prediction for that sample, and \(\varepsilon\) is a free parameter that serves as a threshold; all predictions have to be within an \(\varepsilon\) range of the true predictions. Slack variables are usually added into the above to allow for errors and to allow an approximation in case the above problem is infeasible. There is a target value for different values of \(\varepsilon\), which has an impact on the regression analysis and prediction results. The present study used an SVM-supervised classifier for the prediction and regression evaluation for the UCS prediction for a prepared dataset of Maragheh limestone.