训练集山准确率高测试集上准确率很低_推荐算法改版前的AB测试
编辑导语:所谓推荐算法就是利用用户的一些行为,通过一些数学算法,推测出用户可能喜欢的东西;如今很多软件都有这样的操作,对于此系统的设计也会进行测试;本文作者分享了关于推荐算法改版前的AB测试,我们一起来看一下。
一、实验背景及目的
1. 实验背景
某商城,搭建了以个性化推荐系统为核心的“猜你喜欢”功能;功能上线后,发现推荐的准确率(用户进入物品详情页定义为判断真正的正样本)较低;对此,数据分析师优化了推荐模型。
2. 实验目的
在新的推荐模型上线前,进行AB测试,以此判断新模型是否能够显著提升推荐的准确率。
二、AB测试说明及测试流程
1. AB测试定义
AB测试是为明确某个问题,制作两个(A/B)或多个(A/B/n)版本,在同一时间维度,分别让组成成分相同(相似)的访客群组(目标人群)随机的访问这些版本,收集各群组的用户体验数据和业务数据;最后分析、评估出最好版本,正式采用。
2. AB测试的特点
- 先验性: A/B测试能够先于上线,得出结论;不再需要先将版本发布,再通过数据验证效果,从而一定程度上减少改版带来的风险。
- 并行性: A/B测试是将两个或以上的方案同时在线试验,这样做的好处在于保证了每个版本对应的时间环境、数据环境保持一致,便于更加科学客观地对比优劣。
- 科学性: 如果能保证流量分配的科学性,将相似特征的用户均匀的分配到试验组中,就可以避免出现数据偏差,使得试验的结果更有代表性。
3. 应用场景
1)产品UI
不同行业的产品需要不同的风格,同时还要与企业的品牌相得益彰。利用A/B 测试优化UI能给用户带来更好的交互体验和视觉感受。
2)文案内容
顾名思义是指用户阅读到的文字内容——小到图片配文和按钮文字,大到文章标题甚至版块主题;这些部分都可以尝试变换文案内容,测试不同方案的数据效果。
3)页面布局
有些时候,可能根本不需要对产品的UI或是文案内容作出调整,只是在布局排版上的改变,就可以出现增长的效果。
4)产品功能
想给产品增加一个新功能,可是很难确定是否能达到用户的预期,如果盲目上线,可能会造成一些损失;使用A/B 测试,对你的用户真正负责;例如,社交类产品在付费查看照片的新功能正式上线前,需要进行A/B 测试,以验证功能的使用情况和效果。
5)算法/算法
包括基于内容的推荐算法(根据用户的历史记录推荐相似内容)、基于协同过滤的推荐算法(根据有相似兴趣用户的行为推荐相关内容)、基于关联规则的推荐算法(根据商品/内容本身的相关性给用户推荐);算法优化迭代前,需要真实的数据进行测试。
4. 实验流程
三、实验设计
1. 假设检验的基本概念
统计假设:是对总体参数(包括总体均值μ等)的具体数值所作的陈述。
原假设:是试验者想收集证据予以反对的假设 ,又称“零假设”,记为 H0。
备择假设:也称“研究假设”,是试验者想收集证据予以支持的假设,记为 H1。
双侧检验与单侧检验:如果备择假设没有特定的方向性,并含有符号“=”,这样的称为双侧检验;如果备择假设具有特定的方向性,并含有符号 “>” 或 “
临界值:是指在原假设为真的条件下,样本数据拒绝原假设这样一个事件发生的概率。
第 I 类错误(弃真错误):原假设为真时拒绝原假设;第 I 类错误的概率记为 α(alpha)。
第 II 类错误(取伪错误):原假设为假时未拒绝原假设。第 II 类错误的概率记为 β(Beta)。
2. 实验原理说明
先认定原假设成立,然后在事先给定的显著性水平下,构造一个小概率事件,根据抽样结果观察小概率事件是否发生;若小概率事件发生,则拒绝原假设,否则接受原假设。
3. 实验流程设计
1) 提出假设
本次AB测试,目的是希望提升猜你喜欢功能的推荐效果。所以选取推荐系统的准确率,作为优化指标。
准确率表示预测为正的样本中,真正的正样本的比例。公式如下:
R(u)是根据用户在训练集上的行为给用户作出的推荐列表,而T(u)是用户在测试集上的行为列表。
最简单的例子:例如推荐系统给用户推荐了10件物品,用户进入物品详情页定义为判断真正的正样本的行为,用户进入了其中3件物品的详情页,则此时准确率=3/10=30%。
假设我们认为,如果新的推荐算法,比原推荐算法,显著高于5%以上,则可将新推荐算法发布至生产环境。
此时我们可以得到假设:
原假设H0:π2-π1≤5%
备择假设H1:π2-π1>5%
2)确定显著性水平α
本次实验中,α 值设定 0.05(5%),这是假设检验中最常用的小概率标准值;表示原假设为真时,拒绝原假设的概率。
3)确定临界值
临界值是显著性水平对应的标准正态分布的分位数,显著性水平0.05的情况下,单侧检验对应的标准正态分布的分位数是1.645,双侧检验的标准正态分布的分位数为1.96。
4)收集实验数据,得出结论
由样本值求得检验统计量的优化指标的数值。若观察值在拒绝域内,则拒绝原假设H0,否则接受原假设H1。
四、开始测试并分析数据
定义新推荐算法的准确率为π1,新推荐算法的准确率为π2。
Ho:π1-π2≤5%
H1:π1-π2>5%
实验目标人群:从进入商城,且使用了“为你推荐”功能的用户流量(UV)中,随机抽取5%,作为实验目标人群;其中的50%为实验组,50%为对照组。
实验时间:1周
假设检验方式:
不同的AB测试场景,适用于不同的检验方式,如上图所示。
本次AB测试,由于两个推荐系统版本是独立的,且样本数足够大,认为满足正态分布。
根据HO、H1的假设,可判断本次检验为两个独立样本的总体均值的单侧检验,且总体方差未知,需要用样本方差代替总体方差。
此时计算统计量公式为:
显著性水平:0.05。
临界值:在显著性水平为0.05时,单侧检验的临界值Zα为1.645。
实验数据(为方便计算):实验一周后,有10000用户,使用新推荐算法,准确率的平均值为41%,标准差为20%;有10000用户,使用原推荐算法,准确率的平均值为35%,标准差为10%。此时新算法的准确率定义为x,则x的平均值=41%,原算法的推荐率定义为y,则y的平均值=35%。
计算检验统计量:
检验结果:统计量Z=4.4722,临界值Zα=1.645.由于统计量的值大于临界值而落入拒绝域内,所以拒绝原假设H0,认为新推荐算法的准确率,比原推荐算法显著高出5%,新版本算法可发布至生产环境。
本文由 @16哥 原创发布于人人都是产品经理,未经许可,禁止转载。
题图来自 unsplash,基于 CC0 协议
训练集山准确率高测试集上准确率很低_推荐算法改版前的AB测试相关推荐
- 训练集山准确率高测试集上准确率很低_拒绝DNN过拟合,谷歌准确预测训练集与测试集泛化差异,还开源了数据集 | ICLR 2019...
鱼羊 发自 凹非寺 量子位 报道 | 公众号 QbitAI 深度神经网络(DNN)如今已经无处不在,从下围棋到打星际,DNN已经渗透到图像识别.图像分割.机器翻译等各种领域,并且总是表现惊艳. 然而, ...
- 深度神经网络训练过程中为什么验证集上波动很大_图神经网络的新基准
作者 | 李光明 编辑 | 贾 伟 编者注:本文解读论文与我们曾发文章<Bengio 团队力作:GNN 对比基准横空出世,图神经网络的「ImageNet」来了>所解读论文,为同一篇,不同作 ...
- 负载均衡集群、高可用集群详解,DR、NAT超详细搭建步骤
集群概述 流量相关: PV:PV(page view)即页面浏览量或点击量,是衡量一个网站或网页用户访问量.具体的说,PV值就是所有访问者在24小时(0点到24点)内看了某个网站多少个页面或某 ...
- 加载tf模型 正确率很低_深度学习模型训练全流程!
↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:黄星源.奉现,Datawhale优秀学习者 本文从构建数据验证集. ...
- 为什么程序员的脾气都很大_脾气暴躁的程序员的测试包:评论
为什么程序员的脾气都很大 After having gotten some constructive feedback regarding my testing practices on the ba ...
- 虚拟机CPU使用率很高,主机的CPU很低
已经将虚拟机CPU和内存使用率调到最大,在虚拟机中运行程序,虚拟机中CPU使用率达到80%左右,而主机CPU使用率只有20%左右 求解,有没有什么办法可以提高主机CPU使用率
- 测试集没标签,可以拿来测模型吗?
文:维建 编:白鹡鸰 背景 正常情况下,我们可以用一个带标签的数据集来测试分类器的表现(称之为测试集).然而,现实中,因为种种因素的制约(标注成本高.标注难度大等 Google:穷人不配搞机器学习), ...
- 测试集涨点猛如虎,推上线无收益?算法新手翻车原因盘点!
文 | 杨旭东@知乎 在推荐算法领域,时常会出现模型离线评测效果好,比如AUC.准召等指标大涨,但上线后业务指标效果不佳,甚至下降的情况,比如线上CTR或CVR下跌. 本文尝试列举一些常见的原因,为大 ...
- 2021年大数据Flink(五):Standalone-HA高可用集群模式
目录 Standalone-HA高可用集群模式 原理 操作 1.集群规划 2.启动ZooKeeper 3.启动HDFS 4.停止Flink集群 5.修改flink-conf.yaml 6.修改mast ...
最新文章
- 计算机系统的安全需求的需求等级,计算机信息系统安全等级保护 通用技术要求.PDF...
- 转载:《TypeScript 中文入门教程》 4、类
- 评估指标:ROC,AUC,Precision、Recall、F1-score
- rsync+inotify实现实时同步案例--转
- linux samba代码,Linux下Samba服务器源码安装及配置
- 基于多进程和基于多线程服务器的优缺点及nginx服务器的启动过程
- 电脑底部任务栏点不动_「方法」在电脑上使用小程序的方法
- 【Python面试】 说说Python中有几种数据类型?​
- 不知道Mysql排序的特性,加班到12点,认了认了!
- bat批处理教程 24
- 某道词典在线翻译JS解密,完全扣js代码解密 (小白基础篇)
- 还在用Postman?来,花2分钟体验下ApiPost的魅力!
- 文字垂直居中,水平居中 a标签水平居中只要给他的父级设置text-align=center
- Java设计模式--代理模式与JDK动态代理,cglib动态代理
- RS锁存器,D锁存器、D触发器简介
- 卫生洁具安装工艺标准
- 腾讯广告算法大赛2019
- Edgedetect 边沿检测(Verilog)
- 微信小程序开发竟然这么简单?!
- vim 光标快速移动技巧总结