`
liyonghui160com
  • 浏览: 777383 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

推荐ABTest的实现策略总结

 
阅读更多


 

1. 背景介绍
       一个新推荐算法或者新策略开发完毕之后,在全流量上线之前要评估新功能或者新策略的优劣,常用的评估方法是A-B测试,做法是在全量中抽样出两份小流量,分别走新策略分支和旧策略分支,通过对比这两份流量下的各指标的差异,我们可以评估出新策略的优劣,进而决定新策略是否全流量。
抽样是指按照某种确定的随机化方法,对线上流量进行划分。抽样可以指这种划分的方法,也可以指划分得到的一个流量子集。抽样是一种特殊的小流量,要求对流量的划分必须保证均匀性和随机性,我们把抽样的过程称为流量切分,流量切分是指把全流量进行均匀的打散,提取出其中固定的流量比例,本文主要涉及的是流量切分的实现。


2. 流量切分架构
       做到流量切分的常用的方法是单层流量切分,流量切分需要以某种方式进行,即流量切分的打散依据


2.1  UUID hash
       我们可以依据流量中的cookie(用户的唯一标识)打散,我们依据cookie(用户的唯一标识)打散,那么我们的切分对象全集就是所有的用户。
 



 


                                                                图1.1 单层流量切分架构示意图

 


       有了上面的想法,我们如何实现单层流量切分呢?如图1.1所示,我们按照指定的流量切分方式,将所需要的输入参数cookie先经过一次一致性hash计算,产生结果的均匀性和随机性由一致性hash算法来保证,有了一致性hash产生的结果,流量切分的过程还没有结束,我们还需要将一致性hash结果对应到切分对象的全集上面,实现方法是将切分对象全集看作是一个区间段,然后将一致性hash结果对应到区间段上面,区间的大小是切分的最小粒度决定的,例如,如果需要最小切分粒度为1%,则我们选取的区间段为[0,99],有了区间段的定义,我们可以将一致性hash结果对一个cookie取模,这个数可以唯一的对应到切分对象全集区间上面,这样我们就将所有的流量打到了流量切分对象全集上面。
       我们再将区间段按照实验需求细分,划分成若干子区间,用作于实验对比,例如下图所示,将整个100%的区间分为多个子区间(多少个推荐算法或者推荐策略),每个子区间(推荐算法或者推荐策略)使用唯一的编号——sid,作为区间的唯一的标识,sid=1的子区间对应的流量为1%,那么它的子区间就是[0,1],同理,sid=2的第二个1%的子区间对应的区间值为[2,3],这样我们就将一个100%的完整区间划分成了若干个(100)子区间,两个比例相同的子区间就可以用作于实验策略对比。
 



 

 


        将用户通过一致性HASH到不同的推荐算法或者推荐策略上。

 



 

 


        这样做的缺点是,固定的用户只看到固定的一份推荐数据或者推荐策略。最终收集到的是一部分用户对这个推荐算法或者推荐策略的评价。

 

 

2.2、 随机
      如果是随机打散,那么我们的切分对象全集就是该站点的所有的流量。
这样切分流量的方式与用户无关,和系统的流量有关,随机胡的方式给用户展示不同的推荐算法或者推荐策略的数据。

 



 


         这样做使一个推荐算法或者推荐策略展示给不同用户,得到的是所有的用户对这个推荐算法或者推荐策略的评价。这样得到的评介更准确。

 

 

  • 大小: 93.8 KB
  • 大小: 34.6 KB
  • 大小: 14.4 KB
  • 大小: 20.3 KB
分享到:
评论

相关推荐

    uabTest(google gears)

    总结起来,"uabTest"是一个基于Google Gears的离线应用示例,它展示了如何利用离线存储、状态检测和数据同步等功能来构建健壮的Web应用。通过对该项目的学习,开发者不仅可以掌握Google Gears的相关技术,还能进一步...

    停不下来的推荐实践

    - **模型评估**:采用AB-test等方法评估模型的有效性,并持续优化。 - **个性化推荐**:根据用户的行为数据(如顶、踩、跳过等)和上下文信息(如时间、位置等)进行个性化推荐。 ##### 2.2 案例分析 - **微博推荐...

    reactab简单声明式和通用的AB测试React组件

    总结来说,`react-ab`是一个强大的工具,它使React开发者能够快速、简洁地在应用中实现A/B测试。通过声明式的API和事件追踪功能,我们可以轻松地比较不同的设计,优化用户体验,从而提升产品性能。在实际开发中,...

    Ruby-Rails的AB测试

    在Ruby on Rails中实现A/B测试可以帮助开发者了解哪种设计、布局或策略更能吸引用户,从而提高转化率、增加用户满意度。 首先,理解A/B测试的基本概念是至关重要的。A组通常代表控制组,即原有的设计或功能,而B组...

    腾讯信鸽实时精准推送系统的演进与实践.pdf

    12. ABTest和自定义用户画像:通过实验对比和个性化标签,优化推送效果。 在实时精准推送系统中,离线数据采集和实时数据采集相结合,用于构建用户画像和兴趣模型。通过离线算法训练和实时算法训练,持续迭代模型,...

    C 代码 构成 3 级基本线性代数子程序 (BLAS) 对于矩阵-矩阵运算, 使用双精度实数算术.rar

    Gemm的实现需要考虑矩阵的存储方式、内存访问模式和并行计算策略。为了优化性能,通常会使用诸如缓存对齐、循环展开、内联函数以及多线程等技术。在"blas3_d_test"目录下,包含了测试用例,这些测试用例可以验证所...

    App竞品技术分析

    ABTest - 流程图展示了AB测试的基本步骤:设置策略、分发用户、收集数据并评估效果。 - 配置文件包含pageId、version、clientType等关键字段,用于精确控制实验范围。 - 注意事项包括:确保策略分配的公平性、合理...

    电商数据精细化运营解决方案.pptx

    此外,通过AB-Test营销,测试不同触点的效果,可以持续优化购买转化率。 总结来说,电商数据精细化运营解决方案旨在通过用户画像、场景营销、数据整合与分析,实现用户增长、活跃度提升和转化率优化。在这一过程中...

    微博 超级粉丝通产品介绍.pdf

    在广告创意的优化上,系统会根据粉丝关系、兴趣倾向和互动历史等因素,自动选择最佳创意进行展示,通过AB-test系统持续优化广告效果。 最后,超级粉丝通的广告效果追踪功能强大,不仅提供曝光和点击数的统计,还...

    《App研发录:架构设计、Crash分析和竞品技术分析》迷你书.pdf

    - **AB Test**:通过A/B测试方法优化产品设计。 - **WaxPatch**:了解WaxPatch等热补丁技术的应用场景。 - **效果评估**:评估上述技术手段的效果。 ### 四、其他相关主题 #### 1. 移动项目管理和团队建设 - **...

    php页面静态化学习笔记.doc

    例如,`ab.exe -n 10000 -c 100 http://localhost/phpstatic/test.php`。当服务器无法承载高并发时,需调整Apache的多路处理模块(MPM),如预处理进程(prefork)或工作模式(worker),以提升最大并发数。 在实现...

    PHP面静态化技术.docx

    页面静态化和缓存技术是提升网站性能的关键手段,通过真静态化、伪静态化以及缓存策略,可以有效解决大型网站的访问速度、SEO优化和安全性问题。在实施这些技术时,需要注意URL设计、页面内容生成、服务器性能监控等...

    tkinter通过label实现balloon以及延伸

    总结来说,虽然`tkinter`在视觉效果和控件多样性方面可能不如`wx`或`pyqt`,但通过巧妙的编程技巧和对基础控件的扩展,我们仍然可以创建出功能强大的用户界面。如果你有其他优化`tkinter`应用的方法,分享你的经验会...

    ceres源码安装包,用于SLAM十四讲中的环境安装使用

    总结来说,"ceres-solver-e51e9b46f6ca88ab8b2266d0e362771db6d98067"这个压缩包包含了Ceres Solver的一个特定版本的源代码,用于SLAM十四讲的环境搭建。通过这个安装包,你可以深入了解非线性优化在SLAM中的应用,...

    05_PHP的缓存与静态化应用.pdf

    C:\apache\bin>ab -n10000 -c10 http://localhost/test/test.php ... Timetakenfortests:285.400386seconds ... ``` 可以看到,PHP脚本的测试耗时约为285秒左右。如果同样的测试应用于静态HTML文件,则可以预期会有...

    Android 将网络的Url资源转换为Drawable资源方式

    总结来说,将网络URL转换为Drawable主要有以下几种方法: 1. 直接在主线程转换(不推荐,可能导致ANR) 2. 使用后台线程加载并使用`post()`更新UI 3. 使用`AsyncTask`异步加载 4. 使用第三方库(如Glide、Picasso等...

    deepin使用crontab自动更换壁纸

    【起因】 在Deepin操作系统中,...总结起来,通过编写Python脚本和配置`crontab`,我们可以突破Deepin默认壁纸更换功能的限制,实现更自由的壁纸更换策略。同时,这也是学习和理解Linux自动化任务管理的一个好例子。

Global site tag (gtag.js) - Google Analytics