How should $R^2$ score of training data compare to the $R^2$ score of test data? I've build two models using Support Vector Machines, one with 'linear' kernel and the other with 'rbf' kernel. The r2 score of the test data in both cases is pretty much equal, around 0.82, but the score on training data for the 'linear' kernel is 0.84, while for the 'rbf' kernel is around 0.94.
I understand that overfitting to the training set is possible, but shouldn't that yield lower r2 scores on the test set? In my case, which model would be deemed better?
EDIT:
The models are fitted using GridSearchCV from sklearn, with 5-fold cross-validation.
The MSE for the 'linear' kernel on training set is 6e-3, and 8e-3 for the test set.
The MSE for the 'rbf' kernel on training set is 1e-3, and 6e-3 for the test set.

You are correct that lower $R^2$ (or other performance metrics) in a test set than the training set is a sign of overfitting. This comparison done by model, however: the fact that two different models score roughly the same on a test set doesn't tell you if one of them may be overfit. In your case, the learner with the RBF kernel shows signs of overfitting because its $R^2$ on the training set is quite a bit higher than that on the test set, so the learner with a liner kernel is likely a better model. However, you should probably look at multiple performance metrics such as RMSE, as well, and perhaps perform k-fold cross-validation to get a better idea of the performance of each model before making a final decision.
