I am using the ALS model from spark.ml
to create a recommender system
using implicit feedback for a certain collection of items. I have noticed
that the output predictions of the model are much lower than 1 and they usually range in the interval of [0,0.1]. Thus, using MAE or MSE does not make any
sense in this case.
Therefore I use the areaUnderROC (AUC) to measure the performance. I do that by using the spark's BinaryClassificationEvaluator
and I do get something close to 0.8. But, I cannot understand clearly how that is possible, since most of the values range in [0,0.1].
To my understanding after a certain point the evaluator will be considering all of the predictions to belong to class 0. Which essentially would mean that AUC would be equal to the percentage of negative samples?
In general, how would you treat such low values if you need to test your model's performance compared to let's say Logistic Regression?
I train the model as follows:
rank = 25
alpha = 1.0
numIterations = 10
als = ALS(rank=rank, maxIter=numIterations, alpha=alpha, userCol="id", itemCol="itemid", ratingCol="response", implicitPrefs=True, nonnegative=True)
als.setRegParam(0.01)
model = als.fit(train)