\begin{tabular}{lcccc} \toprule Model & $R^2$ (mean) & $R^2$ (s.d.) & RMSE & MAE \\ \midrule \multicolumn{5}{l}{\textit{Random 5-fold}} \\ OLS & 0.4767 & 0.0405 & 0.2256 & 0.1737 \\ LASSO & 0.4767 & 0.0406 & 0.2256 & 0.1737 \\ Elastic Net & 0.4767 & 0.0405 & 0.2256 & 0.1737 \\ Random Forest & 0.6473 & 0.0445 & 0.1849 & 0.1343 \\ Gradient Boosting & 0.6538 & 0.0334 & 0.1834 & 0.1340 \\ \addlinespace \multicolumn{5}{l}{\textit{Spatial 5-fold (FSA blocks)}} \\ OLS & 0.4667 & 0.0539 & 0.2261 & 0.1752 \\ LASSO & 0.4668 & 0.0538 & 0.2261 & 0.1752 \\ Elastic Net & 0.4668 & 0.0538 & 0.2261 & 0.1752 \\ Random Forest & 0.4307 & 0.1594 & 0.2306 & 0.1803 \\ Gradient Boosting & 0.4140 & 0.1076 & 0.2355 & 0.1842 \\ \addlinespace \bottomrule \end{tabular} \parbox{\textwidth}{\footnotesize Five-fold cross-validation of the models in Table~\ref{tab:ml_performance} on the same features and sample. Random folds shuffle listings; spatial folds assign whole forward sortation areas (181 FSA groups) to folds, so no test listing shares a neighbourhood with a training listing. Metrics are averaged over the five test folds; $R^2$ (s.d.) is the standard deviation across folds.}