# Neural Network SNR Prediction for Improved Spectral Efficiency in Land Mobile Satellite Networks
## 3 A Novel Channel State Prediction and MODCOD Selection Strategy  
### SNR Prediction Algorithms  
For the purposes of SNR prediction, the outdated information (OI) approach was used as a baseline, and two different approaches using neural networks were implemented alongside two other machine learning (ML) models, support vector machine (SVM) and linear regression (LR). The OI approach simply considers that the future SNR value will be equal to the last estimated one. This approach conceptually works well when the channels have low levels of Doppler frequency shift and shadowing but falls short when channel estimation problems become more complex. On the other hand, the machine learning approaches use 10 consecutive estimated SNR values to predict the following true SNR value of the channel. The future SNR value is predicted based on a fixed input sequence \begin{table}
\begin{tabular}{c c c c} \hline \hline
**Shadowing Scenario** & \(b_{0}\) & \(\Omega\) & \(m\) \\ \hline light shadowing & 0.158 & 1.29 & 19.4 \\ average shadowing & 0.126 & 0.835 & 10.1 \\ heavy shadowing & 0.063 & 0.000897 & 0.739 \\ \hline \hline \end{tabular}
\end{table} 
Table 2: Channel parameters for different shadowing scenarios. with a length of 10 since this length was considered to be sufficient for neural networks to recognize the characteristics of the channel without having a very high number of input features nor requiring long buffering of data. The two simpler ML models were used with default parameters: ridge regularization for linear regression with the regularization parameter set to 1 and the radial basis function kernel with the regularization parameter set to 1 for the SVM. The goal of the paper was to see how simple ML algorithms would perform in different scenarios, not to explore multiple complex architectures. The neural networks used for the SNR prediction were convolutional neural networks with identical architecture but different loss functions. The architecture of the neural networks is given in Figure 1.  
The proposed architecture is a rather simple convolutional neural network with a fully connected layer at the end. For the neural networks, smaller architectures were implemented to allow for potential practical applications, as larger neural networks have a higher inference time and might not be suitable for tasks such as real-time SNR predictions. The neural networks also have the possibility of modifying the loss function, which can greatly influence the performance of the network regarding certain areas of interest. The goal was to analyze this, comparing the two implemented neural network algorithms. The difference between the regular neural network implementation (NN) and the modified one (NN2) was that the NN had a standard mean square error loss function, while the NN2 had a mean absolute error loss function with an added factor of \(0.5\times(\hat{g}-y)\), where \(\hat{g}\) represents the prediction of the network, and y represents the true value. The motivation behind the implementation of the modified loss function of NN2 is that predicting higher SNR values than the true ones often results in unsuccessful data transmission, while a lower SNR prediction is suboptimal, but communication exists. In terms of simple SNR prediction, NN2 is expected to perform worse than a regular NN, but when performing further evaluations using various MODCODs, its intentionally lower predictions could be beneficial for both a lower error rate and a higher spectral efficiency. Both neural networks were trained using an Adam optimizer, batch size of 256, validation split of 0.2 and patience of 20 epochs. The implementation of the ML models, neural networks, signal processing, evaluation and visualization was performed in the Python programming language [36], using the numpy [37], keras [38], scikit-learn [39] and matplotlib [40] libraries. Any parameters of the implemented neural networks and ML models that are not stated are left as default in the keras version 2.13.1 and scikit version 1.0.2 libraries.