关于推荐系统的准确性
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
切割对其进行测试。
您将获得预期的输出和系统的输出。使用它们,您可以轻松计算 precision
、recall
和 F1 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)]
嗨,我刚接触这个领域。我对推荐算法中的准确性方法感到困惑。据我所知,用户项目的评级矩阵是稀疏的。我知道我可以使用一些算法来预测缺失值和模型,如 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
切割对其进行测试。
您将获得预期的输出和系统的输出。使用它们,您可以轻松计算 precision
、recall
和 F1 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)]