【推荐算法工程师技术栈系列】推荐系统--数据效果与评估

目录

  • 推荐系统上线的基本条件
  • AB实验
    • 功能列表
  • 数据指标
    • 覆盖率
    • AUC及gAUC
    • 指标展示
    • 指标监控
  • 人工评测
  • 附录

推荐系统上线的基本条件

一个新的推荐算法最终上线,需要完成上面所说的3个实验:
(1)首先,需要通过离线实验证明它在很多离线指标上优于现有的算法;
(2)然后,需要通过用户调查(或内部人工评测)确定它的用户满意度不低于现有的算法;
(3)最后,通过在线等AB测试确定它在我们关心的指标上优于现有的算法。

AB实验

(1)AB test 的好处是显而易见的,可以公平获得不同算法实际在线时的性能指标;
(2)AB test 和用户调查一样,同样需要考虑到分布的随机,尽量要将与最终指标有相关性的因素都列出来,总而言之就是切分流量是AB test 的关键;
(3)AB test 的一个重要缺点就是实验周期长,这样才能得到可靠的结果,因此AB test 不应该测试所有的算法,而是只测试在离线实验和用户调查中表现很好的算法;
(4)如果有用户标签库的话,会极大的帮助在线实验。

功能列表

功能 描述
分流 支持召回排序等指定方式分流,比如尾号哈希,或分层哈希
白名单 实验开始前预置一些用户白名单到实验组
实验管理 支持实验创建,实验列表,实验修改等
指标管理 指标计算定义
效果图表 diff,AAdiff;以及对应图表
可信度分析 根据实验组的置信区间(95%置信区间)和p值(当p值小于等于0.05时,实验结果是显著的)判定实验是否可信

数据指标

这里对应到推荐的指标集一般包括点击率(ctr),关注率,观看时长,MAU/DAU等;
而线下一般采用(特征/召回)覆盖率,AUC,gAUC,相关性&准确率(人工评测)等指标;

覆盖率

其中特征覆盖率\(coverage = \frac{N_1}{N} ; 其中N_1是特征i中非空个数,N是总样本数; 对应到召回覆盖率,N_1是有召回结果的用户数(或召回的内容数),N是总用户数(或可推荐的内容数)\)

不得不提的是在项亮的《推荐系统实践》中推荐系统的覆盖率是度量一个推荐系统挖掘长尾商品的能力(曝光内容分散程度,越集中头部效应/马太效应越严重):

\[ Coverage = \frac{|\cup_{u \in U} R(u)|}{|I|} ;其中U是用户集合,I是物品集合,R(u)是为用户u推荐的N个物品的集合\]

在度量推荐系统覆盖率更科学的一个指标是基尼系数(Gini Index),因为其考虑了每个物品被推荐次数是否平均,系数越大,表示越不均等,系数越小,表示越均等。gini系数最开始是被用来量度贫富悬殊程度,具体推导见附录洛伦茨曲线和基尼系数:


1905年,统计学家洛伦茨提出了洛伦茨曲线,如图一。将社会总人口按收入由低到高的顺序平均分为10个等级组,每个等级组均占10%的人口,再计算每个组的收入占总收入的比重。然后以人口累计百分比为横轴,以收入累计百分比为纵轴,绘出一条反映居民收入分配差距状况的曲线,即为洛伦茨曲线。

\[ Gini = \frac{1}{n-1} \sum^n_{j=1} (2j-n-1)p(j) ;其中p(j)是从小到大排序的物品列表中第j个物品被推荐的比例,也即p(j)=\frac{物品j被推荐次数}{\sum^n_{j=1}物品j被推荐次数} \]

AUC及gAUC

AUC(Area under curve)是机器学习常用的二分类评测手段,直接含义是ROC曲线下的面积;进一步说其实就是随机抽出一对样本(一个正样本,一个负样本),然后用训练得到的分类器来对这两个样本进行预测,预测得到正样本的概率大于负样本概率的概率。


ROC曲线的横轴为假正率(False Positive Rate,FPR);纵轴为“真正率”(True Positive Rate,TPR)
\[ TPR = \frac{fp}{p} ; FPR = \frac{tp}{n} ; fp是实际为负预测为正的样本个数;tp是实际为正预测也为正的个数;n是真实负样本总数;p是真实正样本总数 \]
\[ AUC = \frac{ \sum_{i \in postitiveClass} rank_i - \frac{M(1+M)}{2}}{M+N} ;其中rank_i实代表了样本i预测概率超过的样本的数目(最高的概率的rank为n,第二高的为n-1);M是正样本个数,N是负样本个数\]

AUC反映的是整体样本间的一个排序能力,而实际用户的结果是个性化的,我们更关注的是同一个用户对不同物品间的排序能力,gAUC(group auc)实际是计算每个用户的auc,然后加权平均,最后得到group auc,这样就能减少不同用户间的排序结果不太好比较这一影响。

\[ gAUC = \frac{\sum_{(u,p)} w_{(u,p)} * AUC_{(u,p)}}{\sum_{(u,p)} w_{(u,p)}} \]

实际处理时权重一般可以设为每个用户view的次数,或click的次数,而且一般计算时,会过滤掉单个用户全是正样本或负样本的情况。
但是实际上一般还是主要看auc这个指标,但是当发现auc不能很好的反映模型的好坏(比如auc增加了很多,实际效果却变差了),这时候可以看一下gauc这个指标。

指标展示

这方面一般由数据平台的产品进行支持,简单的也可以自己写SQL跑数据;在此就不详细展开了。

指标监控

这方面一般依托监控报警平台和数据平台;业务方也可以自己写脚本监控;在此就不详细展开了。

人工评测

数据指标和真实的用户体验存在差异,Bad case的反馈是优化推荐系统的一大途径

附录

原文地址:https://www.cnblogs.com/arachis/p/REC_DEV_data_index.html

时间: 2024-10-10 15:22:27

【推荐算法工程师技术栈系列】推荐系统--数据效果与评估的相关文章

【推荐算法工程师技术栈系列】机器学习深度学习--强化学习

目录 强化学习基本要素 马尔科夫决策过程 策略学习(Policy Learning) 时序差分方法(TD method) Q-Learning算法 Actor-Critic方法 DQN DDPG 推荐系统强化学习建模 附录 强化学习基本要素 智能体(agent):与环境交互,负责执行动作的主体: 环境(Environment):可以分为完全可观测环境(Fully Observable Environment)和部分可观测环境(Partially Observable Environment).

【推荐算法工程师技术栈系列】分布式&数据库--tensorflow

目录 TensorFlow 高阶API Dataset(tf.data) Estimator(tf.estimator) FeatureColumns(tf.feature_column) tf.nn tf.layers tf.train tf.linalg checkpoint(模型保存与恢复) Tensorflow Serving 官方例子 half_plus_two的例子 创建自定义镜像 架构 Source Loader Manager Servable 部署服务 模型导出 API请求(p

当推荐算法开源包多如牛毛,为什么我们还要专门的推荐算法工程师

作为一个推荐系统业余爱好者,在机器学习领域的鄙视链中,我感觉一直地位不高,时常被搞NLP CV语音等高科技技术的朋友鄙视. 最近甚至被人问,推荐算法开源包多如牛毛,我们为什么还要专门的推荐算法工程师?(难道想要辞退我!?惊) 不得不说,我想吐槽这个观点很久了.事实上搞推荐的工作不等于 import IBCF 或者 import time SVD++ import tensor啊摔! 于是找回帐号打开N年不用的博客,写一篇随想,其中含有大量主观臆断以及学术错误,尽量不中英夹杂术语之外的英文,如果有

React技术栈系列—基础01

React简介 于2013年来自Facebook开源项目. 和Angular不一样的是,React并不是一个完整的MVC/MVVM框架,它只专注于提供清晰.直接的View视图层解决方案.它的功能全部以构建组件视图为核心,并提供类似控制器的函数接口和生命周期函数.所以在React中么有控制器.没有服务.没有指令.没有过滤器等等这些. Virtual DOM 是React中的一个非常重要的概念,在日常开发中,前端需要将后端的数据呈现到界面中,同事还要能对用户的操作提供反馈,并且作用到UI上,这些操作

React技术栈系列—基础02---组件和生命周期

组件 坦白地说,学习一门技术或者某个框架,最好的资源是其官方文档,只是咱英文不好,看不懂呀,但也的看看呀. Waht is Component? Components let you split the UI into independent, reusable pieces, and think about eachpiece in isolation. 组件让你可以拆分UI为独立.可以被复用的单元,每个单元是独立的. Conceptually, components are like Jav

《转》探寻微博背后的大数据原理:微博推荐算法简述

“We are leaving the age of information and entering the age of recommendation” — Chris Anderson in The Long Tail. 我们正在远离信息,而进入推荐时代.——克里斯·安德森 在介绍微博推荐算法之前,我们先聊一聊推荐系统和推荐算法.有这样一些问题:推荐系统适用哪些场景?用来解决什么问题.具有怎样的价值?效果如何衡量? 推荐系统诞生很早,但真正被大家所重视,缘起于以”facebook”为代表的

为什么“高大上”的算法工程师变成了数据民工?

1.算法与算法工程师 先来一段我在知乎里回答"做算法工程师是一种怎样的体验?"的答案(其中的思想并非原创,而是山寨自新加坡某大学一门Quantitative Investment课程的ppt) 理想中的算法工程师:提出假设->收集数据->训练模型->解释结果.实际中的算法工程师:提出假设->收集数据->预处理->预处理->训练模型->调试->调试->重新收集数据->预处理->收集更多数据->调试->调试

新闻推荐系统:基于内容的推荐算法(Recommender System:Content-based Recommendation)

因为开发了一个新闻推荐系统的模块,在推荐算法这一块涉及到了基于内容的推荐算法(Content-Based Recommendation),于是借此机会,基于自己看了网上各种资料后对该分类方法的理解,用尽量清晰明了的语言,结合算法和自己开发推荐模块本身,记录下这些过程,供自己回顾,也供大家参考~ 目录 一.基于内容的推荐算法 + TFIDF 二.在推荐系统中的具体实现技巧 正文 一.基于内容的推荐算法 + TFIDF 主流推荐算法大致可分为: 基于内容(相似度)的推荐 基于用户/物品相似度的协同过

算法、技术及其它

在和刘同学长谈之后,我再次对前一段时间的想法进行了反思,结合聊天中的新感受,整理在这里. (注:标题里的算法,指机器学习算法,或者说“算法工程师”这个职位名称里的“算法”,不是“算法与数据结构”里的那个算法.谁能告诉我有没有什么更好的名字来区别这它们,或许是“机器学习算法”与“传统算法”?) 算法与算法工程师 先来一段我在知乎里回答“做算法工程师是一种怎样的体验?”的答案(其中的思想并非原创,而是山寨自新加坡某大学一门Quantitative Investment课程的ppt) 理想中的算法工程