关于推荐系统的准确性

About accuracy in recommendation system

嗨,我刚接触这个领域。我对推荐算法中的准确性方法感到困惑。据我所知,用户项目的评级矩阵是稀疏的。我知道我可以使用一些算法来预测缺失值和模型,如 RMSE 或 MAE,但如何计算准确性?

对于某些项目,我不知道它们的真实评分。如果我使用 0,它会增加错误,不是吗?

感谢帮助!

您只能检查您拥有数据的项目用户的准确性。最好在不属于训练的验证集数据上测试准确性。 如果这是回归问题,则可以使用 RMSE 检查准确性;如果这是分类问题,则可以使用 AUC、log_loss、混淆矩阵等检查准确性。 因此,您只需取数据集中标记项的平均误差。

与其他机器学习模型相比,实际上很难衡量推荐系统的准确性,因为我们没有明确的方法来判断推荐是否准确。但是有一种方法可以计算准确度。

您将拥有用于训练推荐系统的 users * items 矩阵。

如果您假设您有 10 个用户和 20 个项目。
您的矩阵的维度为 10 * 20

What you can do is divide the matrix into training and testing dataset.

比如可以从10 * 20矩阵的右下端切出一个4 * 4子矩阵。在剩余的矩阵上训练推荐系统,然后根据 4 * 4 切割对其进行测试。 您将获得预期的输出和系统的输出。使用它们,您可以轻松计算 precisionrecallF1 score.

你应该从矩阵的不同部分切割出不同维度的子矩阵,然后计算分数以了解你的系统整体表现如何。

由于在真实的数据集中我们有很多缺失值(有时甚至90%),为了有更好的预测,我们通常用NA来代替缺失值。然后我们将 NA 替换为用户评分或项目评分的平均值,甚至是两者的平均值。如果将缺失值替换为 0,则低估了影响结果的数据。 例如,如果我们将矩阵命名为 ds:

#compute the user means
user.mean = matrix (rowMeans (ds, na.rm = T), nrow(ds) ,ncol(ds))
# replace the missing values (NA) with the user means
ds[is.na(ds)] = user.mean[is.na(ds)]