I'm learning a bit about the use of the Surprise library and I have a set of data with users and ratings. I'm training a network with this library, using KNNBasic and KNNWithMeans, this last algorithm is the same as KNN but averages the ratings before calculating the distances between the points.
If I don't use any measure of similarity, i.e. using the two algorithms with the default parameters, KNNBasic predicts the results better than using KNNWithMeans. But if I train the nets using subsets, 10 folds, where the algorithm iterates over 9 oh them for training and the other one for validating, KNNWithMeans gives better results.
Do you know why this can happen? Why KNNBasic is better in the first case, and increasing the number of folds is better KNNWithMeans?