量化评估推荐系统效果


正文共1956张图,1张图,预计阅读时间8分钟。


推荐系统最有效的方法就是A/B test进行模型之间的对比,但是由于现实原因的局限,存在现实实时的困难性,所以,梳理了一些可以补充替代的指标如下,但是离线评估也存在相应的问题:


  1. 数据集的稀疏性限制了适用范围,用户之间的交集稀疏。

  2. 评价结果的客观性,由于用户的主观性,不管离线评测的结果如何,都不能得出用户是否喜欢某推荐系统的结论,只是一个近似的评估。

  3. 深度评估指标的缺失。(如点击深度、购买客单价、购买商品类别、购买偏好)之间的关联关系。

  4. 冷启动

  5. Exploration 和 Exploitation问题


离线模型之间的评估

召回集测试
  • recall
    命中skn个数/用户真实点击skn个数

  • precision
    命中skn个数/所有预测出来的skn总数

  • F1-Measure
    2/(1/recall+1/precison)

  • 交互熵

  • MAE

  • RMSE

  • 相关性
    常见的比如:Pearson、Spearman和Kendall’s Tau相关,其中Pearson是更具数值之间的相似度,Spearman是根据数值排序之间的相似度,Kendall’s Tau是加权下的数值排序之间的相似度。

  • 基尼系数

  • 信息熵


排序部分测试
  • NDCG(Normalize DCG)

  • RBP(rank-biased precision)


RBP和NDCG指标的唯一不同点在于RBP把推荐列表中商品的浏览概率p按等比数列递减,而ND CG则是按照log调和级数形式。


离线模型与在线模型之间的评估


很多时候,我们需要确定离线模型的效果足够的健壮才能允许上线进行线上测试,那如何进行离线模型与线上模型的评估对比就是一个比较复杂的问题。


难点


  • 缺乏公平的测试数据
    实际处理过程中,我们发现,所有的已知点击都是来自线上模型推荐的结果,所以极端情况下,线上的recall是100%

  • 缺乏公认的衡量指标
    在线下对比中,我们发现比如recall、precision、F1-Measure等指标都是大家约定俗成的,不存在很大的争议,而离线在线模型对比却没有一个准确公认的衡量指标


指标设计


  • online_offline_cover_rate&first_click_hit_rate


这一组指标是结合在一起看的,其中online_offline_cover_rate是指针对每一个用户计算理线模型推荐的商品与在线模型推荐的商品的重合个数/在线模型的推荐商品个数,online_offline_cover_rate越低代表离线模型相对在线模型越独立;first_click_hit_rate是指offline模型对用户每天第一次点击的命中率,也就是命中次数/总统计用户数。
结合这两个指标,我们可以得到在online_offline_cover_rate越低的情况下,却能覆盖线上用户真实点击的次数越多,代表offline模型的效果优于线上模型。


  • online_precision_rate/offline_precision_rate


离线模型的准确率和在线模型的准确率。


这边在实际计算的时候采取了一个技巧,针对某个推荐位计算在线模型准确率的时候,用的是从来没有浏览过这个推荐位的用户的浏览历史匹配这个用户这个推荐位的推荐结果。这样可以避免用户的点击结果受到推荐位推荐结果影响的问题。


举个例子:用户在推荐位A上没有浏览过,他的点击是不受推荐位A推荐的商品影响的,拿这个用户推荐位A我们给他线上推荐的结果作为线上模型的推荐结果去计算,这样才更加合理。


  • online_recall_rate/offline_recall_rate


离线模型的召回率和在线模型的召回率。


同上解释。


  • roi_reall/roi_precision


同上解释,只是把未来的点击作为match源更换成了加购物车、购买、收藏这些数据。


其他评估方向

覆盖率


推荐覆盖率越高, 系统给用户推荐的商品种类就越多 ,推荐多样新颖的可能性就越大。如果一个推荐算法总是推荐给用户流行的商品,那么它的覆盖率往往很低,通常也是多样性和新颖性都很低的推荐。


多样性


采用推荐列表间的相似度(hamming distance、Cosine Method),也就是用户的推荐列表间的重叠度来定义整体多样性。


新颖性


计算推荐列表中物品的平均流行度。


其他


用户满意度、用户问卷、信任度、鲁棒性、实时性。


评测维度


最后说一下评测维度分为如下3种,多角度评测:


  • 用户维度
    主要包括用户的人口统计学信息、活跃度以及是不是新用户等。

  • 物品维度
    包括物品的属性信息、流行度、平均分以及是不是新加入的物品等。

  • 时间维度
    包括季节,是工作日还是周末,是白天还是晚上等。


附常规评价指标的整理结果(来自论文Evaluation Metrics for Recommender Systems):


640?wx_fmt=png


原文链接:https://www.jianshu.com/p/54182c5e1fb0


查阅更为简洁方便的分类文章以及最新的课程、产品信息,请移步至全新呈现的“LeadAI学院官网”:

www.leadai.org


请关注人工智能LeadAI公众号,查看更多专业文章

640?wx_fmt=jpeg

大家都在看

640.png?

LSTM模型在问答系统中的应用

基于TensorFlow的神经网络解决用户流失概览问题

最全常见算法工程师面试题目整理(一)

最全常见算法工程师面试题目整理(二)

TensorFlow从1到2 | 第三章 深度学习革命的开端:卷积神经网络

装饰器 | Python高级编程

今天不如来复习下Python基础

为了量化评估生成模型中降低幻觉现象的效果,可以采用多种评估指标和方法,这些指标和方法能够从不同维度衡量模型输出的准确性和可靠性。 1. **幻觉率**:这是直接衡量模型幻觉现象的一个核心指标。通过计算生成内容中与输入上下文或已知事实不符的部分的比例,可以得到模型的幻觉率。例如,通过实施动态数据清洗、逻辑推理增强、多模型交叉验证等技术组合,结合量子计算、神经符号系统等前沿技术,可将幻觉率从当前的15%-20%降低至0.5%以下[^1]。 2. **事实准确性**:评估生成内容与已知事实的一致性程度。这可以通过自动化评估工具来实现,也可以通过众包的方式收集人类的判断来补充自动化系统的不足,从而更全面地评估生成内容的事实准确性。 3. **连贯性**:评估生成文本内部的一致性和逻辑性。连贯性高的文本通常意味着较少的幻觉现象,因为它表明模型能够保持对话或文本流的逻辑一致性。 4. **对抗性测试**:通过设计特定的输入来测试模型的表现,以发现模型的弱点并评估其对幻觉的抵抗力。这种方法可以帮助识别模型在哪些情况下更容易产生幻觉。 5. **偏好数据集**:构建偏好数据集用于训练和评估模型,特别是在检测-重写的自动管道中,这种方法可以用来训练模型识别并修正其生成内容中的幻觉部分。 6. **幻觉严重程度感知的直接偏好优化(HSA-DPO)**:这种方法不仅检测幻觉的存在,还评估其严重程度,并通过将严重程度纳入偏好学习来缓解LVLMs中的幻觉。 7. **交叉验证**:使用多模型交叉验证的方法来评估模型的稳定性,确保模型在不同的数据集和条件下都能保持较低的幻觉率。 8. **人工评估**:尽管自动化评估是必要的,但人工评估仍然是不可或缺的一部分,因为它能够捕捉到自动化系统难以检测的细微方面。 这些评估方法和技术的综合应用,有助于全面评估生成模型在降低幻觉方面的效果,并为进一步改进模型提供指导。 ```python # 示例代码:计算幻觉率 def calculate_hallucination_rate(generated_texts, reference_texts): """ 计算生成文本相对于参考文本的幻觉率。 参数: generated_texts (list of str): 生成的文本列表。 reference_texts (list of str): 参考文本列表。 返回: float: 幻觉率。 """ hallucinations = 0 total = len(generated_texts) for gen, ref in zip(generated_texts, reference_texts): # 假设有一个函数compare_text可以比较两个文本并返回是否幻觉 if compare_text(gen, ref): hallucinations += 1 return hallucinations / total # 假设的比较函数 def compare_text(gen, ref): # 这里应该实现具体的比较逻辑 return gen != ref # 简化版的比较 # 示例数据 generated = ["正确的内容", "错误的内容", "更多的正确内容"] references = ["正确的内容", "正确的参考内容", "更多的正确内容"] hallucination_rate = calculate_hallucination_rate(generated, references) print(f"幻觉率为: {hallucination_rate}") ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值