## 2 Materials and Methods
### Workflow  
The reference instrument, capable of providing highly accurate SSI measurements, was co-located and deployed alongside the low-cost sensor module to obtain precise target SSI values for training and validating the machine learning model. The compound module consisting of the low-cost sensor suite and the reference instrument were hosted on the roof of a car and driven in different locations within the Dallas-Fortworth metroplex and the residential cities of Richardson, TX and Carrolton, TX to ensure sampling from varied regions and landscapes at different times during daytime from November 2024 to May 2025. The geographical route of one such data collection trip is given in Figure 4 below. After data collection, in order to integrate the data into a unified dataset for training and validation, all sources were resampled at 10 s intervals and merged based on timestamp alignment. Following this, entries containing NaN values and duplicate samples were removed. The solar zenith and azimuth angles were computed using the Python library pvlib [51] for each individual record. The SR product was queried via the GEE, based on the geographic coordinates (latitude and longitude) and timestamps recorded by the low-cost sensor module. For each coordinate-time pair, the closest Sentinel-2 observation within a 5-day window was identified by minimizing the time difference from the ground-based measurement. Mean surface reflectance values were then extracted for the specific location of observation at 10-m spatial resolution using point-based reduction. The extracted values were subsequently appended to the original dataset, yielding a temporally and spatially aligned data table supplemented with satellite-derived reflectance features. Since satellite-derived measurements can be affected by heavy cloud cover, the Sentinel-2 SR product includes a quality assurance band (QA60) that flags the presence of opaque and cirrus clouds. This QA60 information was used to identify and exclude data instances with potentially unreliable SR values due to cloud obstruction.  
Figure 3: The Konica Minolta CL-500A Spectrophotometer. Source: [45].  
Then, the final dataset containing 40,522 individual records was randomly shuffled and split up into two portions, 80% allocated as the training set and the remaining 20% isolated as an independent testing set, on which to assess the performance of the model. We employed the train_test_split function from sklearn.model_selection of the scikit-learn [52] Python library with the shuffle parameter at its default value of True, for this purpose.  
The regression algorithm chosen to model SSI was the random forest regressor (RFR) implemented using the scikit-learn [52] library (Version: 1.3.2) in Python (Version 3.8.10). RFR is a flexible regression algorithm with a high degree of accuracy that uses an ensemble of decision trees to make predictions. It combines the output of multiple decision trees to achieve better accuracy and reduce overfitting. RFR can handle large datasets and also supports multi-output regression natively, making it suitable for the present task of predicting wavelength-resolved SSI in 421 spectral bins.  
The RFR model was trained on the training set using three-fold cross-validation with the features in Table 1 as inputs to the model and the wavelength-resolved SSI in 421 spectral bins as measured by the reference instrument as the output targets, with hyperparameter optimization using a grid search to build the model with the optimal performance. The hyperparameters tuned during the grid search were as follows: the number of trees (n_estimators), maximum depth of the tree (max_depth), and the number of features to consider when looking for the best split (max_features). The values explored spanned a range of 100 to 500 for n_estimators, 3 to 10 for max_depth, and typical options'sqrt', 'log2', and None for max_features. The final hyperparameter optimized model was trained on the full training set.