Hitrate介绍
Swift Lv6

Hitrate(命中率)是一个用于评估召回阶段效果的指标。它的核心逻辑是看系统在召回阶段能不能”猜中”用户最终真正感兴趣的那些物品。

指标定义

Hit Rate 关注的是有没有,而不是排第几

  • 场景:给定一个用户 $u$,模型生成一个长度为 $K$ 的推荐列表(Top-K List)。
  • 正样本:用户在测试集中实际产生过交互(如点击、购买)的物品集合 $G_u$ (Ground Truth)。
  • 命中 (Hit):如果推荐列表中的任意一个物品出现在 $G_u$ 中,则记为一次 Hit(值为 1),否则为 0。
  • 计算方式:对所有测试用户取平均值。

其中:

  • $N$:用户总数。
  • $\text{RecList}_i$:给第 $i$ 个用户推荐的 Top-K 个物品。
  • $G_i$:第 $i$ 个用户实际喜欢的物品集合。
  • $\mathbb{I}(\cdot)$:指示函数,条件满足为 1,否则为 0。

示例

假设我们要评估 Top-5 (K=5) 的推荐效果:

  • 用户 A

    • 实际喜欢:[商品X, 商品Y]
    • 模型推荐:[商品A, 商品B, **商品X**, 商品C, 商品D]
    • 结果:Hit (因为推荐列表里包含了商品X)。Hit Rate 贡献 = 1。
    • 注意:虽然商品X排在第3位,但在 Hit Rate 看来,它和排在第1位是一样的。
  • 用户 B

    • 实际喜欢:[商品Z]
    • 模型推荐:[商品A, 商品B, 商品C, 商品D, 商品E]
    • 结果:Miss (没包含商品Z)。Hit Rate 贡献 = 0。
  • 用户 C

    • 实际喜欢:[商品M, 商品N]
    • 模型推荐:[**商品M**, **商品N**, 商品A, 商品B, 商品C]
    • 结果:Hit。Hit Rate 贡献 = 1。
    • 注意:即使用户C的两个喜好都命中了,Hit Rate 依然只记为 1,不会记为 2。

如果有 100 个用户,其中 60 个用户的推荐列表里至少有一个他们喜欢的物品,那么 Hit Rate@5 = 60%

优缺点

优点:

  1. 直观易懂:业务方很容易理解,“每 100 次请求中,有 60 次我们成功猜中了用户想要的东西”。
  2. 对冷启动友好:只要推荐列表里有一个对的就算成功,不要求非常精准地排在第一位,适合评估召回层(从万级池子捞出千级候选)的效果。
  3. 计算简单:不需要复杂的折扣因子。

缺点:

  1. 忽略排序位置:这是最大的缺陷。把正确物品排在第 1 位和第 5 位,对 Hit Rate 的贡献是一样的。但在实际业务中,第 1 位的价值远大于第 5 位。
    • 对比指标NDCG (Normalized Discounted Cumulative Gain) 或 MRR (Mean Reciprocal Rank) 会考虑位置权重。
  2. 忽略命中数量:用户喜欢 5 个物品,你命中 1 个和命中 5 个,Hit Rate 都是 1。这无法反映推荐的丰富度覆盖率
    • 对比指标Recall@K (召回率) 会计算命中的比例(命中数/总正样本数)。
  3. 对长尾不敏感:如果正样本很多,只要命中一个容易的热门物品就能得分,可能掩盖模型对长尾物品挖掘能力的不足。
Powered by Hexo & Theme Keep
This site is deployed on
Unique Visitor Page View