趋近智
评估推荐系统的性能通常涉及衡量不同的维度。虽然有些评估方法(如 RMSE 和 MAE)侧重于衡量模型预测特定评分的准确程度,但大多数推荐应用更看重另一个目标:创建一个将最优质的项目排在最前面的有序列表。用户通常并不在乎系统预测他们会给一部电影打 4.2 分还是 4.3 分;他们最关心的是自己喜欢的电影是否出现在“为你推荐的前 10 名”列表中,以及他们是否真的喜欢这些电影。
这就是排名指标发挥作用的地方。它们将关注点从预测准确性转向推荐列表的排序质量。两个最基础的排名指标是精确率(Precision)和召回率(Recall),它们能帮我们回答两个简单但有价值的问题:
这些指标通常在特定的截止点 处进行评估,因此被称为 Precision at (P@k) 和 Recall at (R@k)。 的取值通常与应用的界面设计相关,例如移动端应用横幅中显示的排名前 5 的项目,或者每周邮件中推荐的前 20 个项目。
Precision at 衡量的是前 个推荐项目中,用户真正感兴趣的项目所占的比例。它是对准确性或质量的度量。高精确率意味着推荐系统能够很好地呈献给用户他们喜欢的项目。
Precision@k 的计算公式很简单:
让我们来看一个例子。假设我们的系统为一位用户生成了包含 10 部电影的推荐列表。我们将这个列表与留出的测试集进行对比,测试集中包含我们已知该用户观看过并喜欢的电影(即“感兴趣”的项目)。
为了计算 P@10,我们查看推荐列表中的哪些电影出现在用户的感兴趣集合中。在这个例子中,电影 B、电影 E 和 电影 I 是重合的项目,共有 3 个。
因此,Precision@10 为:
这意味着我们推荐的前 10 个项目中,有 30% 是用户感兴趣的。
Recall at 衡量的是在前 个推荐中,成功捕获到的所有感兴趣项目占总感兴趣项目的比例。它是对完整性的度量。高召回率意味着系统能够找到大部分用户喜欢的项目。
Recall@k 的计算公式为:
沿用之前的例子:
Recall@10 的计算如下:
这个结果意味着我们的前 10 名列表成功找到了用户感兴趣的所有项目中的 50%。
你可能会发现精确率和召回率之间存在一种天然的制衡关系。如果你通过增加 来推荐更多项目,你就更有可能包含更多感兴趣的项目,这通常会提高召回率。然而,随着列表变长,你也增加了包含不相关项目的风险,这可能会降低你的精确率。
相反,如果你缩短推荐列表(较小的 )且只包含你有极高把握的项目,你可能会获得很高的精确率。但你可能会漏掉许多其他感兴趣的项目,导致召回率较低。这种反向关系是信息检索和机器学习中典型的权衡问题。
随着推荐数量 () 的增加,召回率往往会上升,因为更多感兴趣的项目更有可能被纳入其中。与此同时,随着列表中混入较不相关的项目,精确率通常会下降。
的选择不仅是一个统计学决策,也是一个产品设计决策。你应该根据推荐内容如何呈现给用户来选择 的值。
通过将线下评估指标与实际用户体验对齐,你可以对模型表现做出更实际的评估。
在计算精确率或召回率之前,你必须先定义什么构成了“感兴趣”的项目。
此外,意识到 P@k 和 R@k 的局限性也很实用:它们对前 个列表内部的排序并不敏感。对于这些指标,排在第 1 位的感兴趣项目与排在第 位的项目具有完全相同的价值。它们只是将前 个推荐视为一个无序集合。但在许多应用中,排在首位的准确性比排在第十位的准确性要有价值得多。针对这一点,我们需要更高级的、对排名敏感的指标,如平均精度均值 (MAP) 和 NDCG,我们将在接下来的内容中讲解这些指标。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造