
多触点归因(MTA, Multi-Touch Attribution Model)是计算广告里的经典问题,对于一次转化中的各模块影响进行定性/定量的判断。归因模型对于搜索跟单、AB 口径、样本 Label 都有直接的影响,常见的规则型的归因模型有首次归因、末次归因、平均归因、复杂归因模型(Markov 模型归因、Shap 值分解归因)。比如推荐模块,更为关注何时进行首次触达,进行有效“种草”,倾向于进行首次归因;如果是关注转化的模块,例如搜索,会注重最后的订单成单是否是由搜索转化的,因此会倾向于末次归因。不同的归因方式,会用来解决不同的业务问题。(2)时间相关性
在归因分析中,关联事件的时间窗口是很重要的。例如,怀疑因素 X 引发了疾病 Y,那么对于 Y 的实验分析工作,就需要观察 X 发生的时间来做判断。一条订单的产生,通常会经历这些流程:曝光→点击→加购→下单→支付→出库→完成。这一流程,往往会跨越一定的时间窗口, 也就是说电商里的订单反馈,是有很大迟滞的!对于我们的 AB 实验同样,6 月 1 8 日用户 A 从购物车里下的订单,是 06-01 的时候进入 Test 实验 X 并加购的。即使 06-18 的时候 Test X 下线了,用户 A 已经被划分到 Test F 了,那么这个订单依然和 Test F 无关。因此,我们需要回追真正用户真正受到策略影响的时间,以此保证下单行为和搜索行为在时间窗口上的相关性。
另一个有趣的问题是,样本独立性问题,在社交/团购类 APP 很容易出现样本间溢出效应。例如,当团购 APP 在针对新的“促销推送”功能做 AB 实验时,test组收到影响的用户可能通过分享、或者线下方式,告知自己周边的 base 用户,从而造成 treatment 策略同时影响了 base 和 test 组的用户。(2)实验变量——TreatmentTreatment 应当尽量单一,Multi-Treatment 的加入会导致实验效果的混淆。若一个实验策略,需要多个模块同步修改,在多层正交分流的前提下,可以进行联合实验,观察整体策略效果。如下图中的例子,在蓝色圈选的时间点,一个精排排序策略的全量,导致了当前在观测的 EE 策略实验效果突然反向。因此,实验期间出现多个 treatment 共同影响的时候,很难严谨评估出这个策略本身是否有问题,因此要尽量保证单一 treatment,减少实验间的耦合破坏多层正交性。
(3)实验效应——Metrics评估一个实验指标的优劣,可以考虑以下三个方面:
因果推断典型框架之一是 Rubin’s Potential outcome 框架,其核心是寻找反事实样本。从个体效应的角度,在现实生活中反事实样本通常难以获取,但通常电商样本的数据量足够大,在一群人中总能找到某个事实的反情况样本。
(1)样本纠偏为解决以上问题,首先会做样本纠偏,用 PSM 回归 propensity score,修正样本分布,借用用户画像 tag 寻找 confounder。例如年龄可能会导致抽烟和不抽烟的用户发生变化,如果直接把抽烟的用户和不抽烟的用户放在一起,去看死亡率,那肯定会有问题。因此首先要控制 base 和 test 组年龄分布相同。当实验只看一个 treatment 的影响时候,年龄这样的 confounder 就会带来影响。在对于 ATE 的计算上可以把 propensity score 代入,去做 PSM,找两组样本尽可能一样,或者是用 IPTW 这种方法,把每个样本对于 treatment effect 的贡献做权重上的调整。我们更多会关注 IPTW 的方法,因为 PSM 有一个关键的问题是,去做 matching,总有一部分样本是 match 不到的,那么 match 不到的这部分样本上面的收益和损失,可能就已经带来了选择偏差。(2)方差缩减CUPED 方差缩减的想法也很朴素,就是如果能够找到在 treatment 真正作用之前,这个样本本身就是一个很爱点击很爱反馈的样本,那么进入 treatment 之后,这样的可能会给 treatment effect 的估计带来偏差。我们要尽可能用实验前的样本行为来减少实验中带来的 variance。这时的做法就如图中公式,找到一个协变量x。比如要去评估 UCTR 指标,如果能找到他的回访周期是否频繁,浏览深度如何等,就可以通过这些协变量来消除点击上的 variance。这个协变量的相关系数越高,对方差的缩减就越大。上图右下角的图展示了 P 值的缩减效果,原本要七八天都无法收敛的实验,现在使用 CUPED 方法,第四天就可以看到收敛效果。但这里的缩减不一定正确,可能让你在第四天就做出了错误的决定,p 值后续可能又会增高。因此使用方差缩减,在反向实验时要加强验证,避免误显著带来错误决策。 (3)分流单元切换
在电商搜索里,用户划分在样本量不足的情况下,通常难以构建有效的 AB实验。解决方案是让一个用户同时暴露在两种实验策略下,即不使用用户维度分流,而是使用 interleaving 坑位穿插分流,这种实验方式在 feed 流实验中会更为有效。对比正交分流实验,interleaving 分流方式收敛速度会非常快。但是,在电商排序场景中,interleaving 分流方式会存在一定的风险:一方面,电商场景存在 position bias,首位商品的 ctr 会明显高于后续位置,interleaving 分流需要非常严格按照位置进行分流,否则极易产生错误结论;另一方面,base 和 test 穿插的搜索结果页,可能导致用户整体翻页下滑,换句话说,坑位样本的提升效果不一定在用户样本上仍然存在,后续的正交分流 holdback 实验是非常重要的。
(2)ITE 的建模——Uplift Model 预估 ITE 此处建模的目的是,分析实验在样本维度的异质性损益,用于综合评估实验风险。其中,Transform Outcome 方法用于转化因果 label,Tree- based model 建模用于得到可解释规则。使用 Qini Curve 评估实验对于敏感样本的排序能力。例如,对于新品实验进行分析,其中较为敏感的 feature 是“商品评论数”,基于该 feature 划分样本可以发现,对于高评论用户的新品策略收益是最大的。
(2)DID 修正后的多重差分在下图例子中,一组物理实验,在 2022-01-07 前后出现了集群切换,同时在 2022-01-12 前后出现了实验策略的反向交换。因此,此处不再是常规的 DID 双重差分,而是需要引入 treatment、timing、group 三重变量的多重差分。搜索实验中应用 DID 方法有以下问题需要关注:首先,DID 务必需要进行 Common Trends 校验,回归实验前虚拟的时间变量和分组变量交叉项;对于非平稳时间序列,此处增加时间项修正误差;经典双重 DID 评估斜率变化,适合评估绝对值,而搜索场景评估截距变化,关注的是 ratio 指标。 
搜索 session 分布符合一种很典型的分布,即幂率分布,它的特征是有显著的转折点,累积可能有一个很快的上升并最终收敛在某一区间,如果对纵轴和横轴都取 log 会变成线性。而幂律分布的成因,有一个非常有趣的解释。借由无标度网络的角度来看,样本间不独立,增量与存量不独立,从而带来了头部节点指数级别的“度”增长。
结合幂率分布的性质,我们可以围绕流量分发的集中程度进行指标设计:
为什么存在分段幂率效应?我们可以通过一个生动的例子来看,人类的城市化进程中,人口的分布就是一个典型的幂率效应。人类的迁徙聚落,就是一个无标度网络连接的过程。我们会从一个县走到一个省的省会,也可能从省会走到首都,北上广这样超级城市的诞生就是人口流动和迁徙带来的。但是,人口的流动和迁徙也会有不满足线性特征的情况,比如右图中西欧城市化进程中的人口分布,因为土地承载力是有极限的,头部城市无法完全满足幂率特征。类似的,我们 query 的承载力也是有极限的。不可能在一个 query 上满足所有用户需求。用户的需求会进一步细化。这样去看我们现在的流量分发,就可以很好的意识到,头部流量上偏离拟合,就是因为这一部分的流量承接已经饱和了,没有更多的成长空间了。通过拟合值和真实值之间的差异,或者去校验幂率分布和真实分布之间的差异是从哪个断点开始的,就能很好地确认哪些词是头部词。同时,在二八定律下,80% 的流量能覆盖哪些词,这些词其实就是我们真正的去再做细化的腰部词。最后,可能还有很巨量的尾部词,已经是非常细化的用户需求了,我们也需要通过算法去引导。
今天的分享就到这里,谢谢大家。 很好奇,就使用rubyonrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
有时我需要处理键/值数据。我不喜欢使用数组,因为它们在大小上没有限制(很容易不小心添加超过2个项目,而且您最终需要稍后验证大小)。此外,0和1的索引变成了魔数(MagicNumber),并且在传达含义方面做得很差(“当我说0时,我的意思是head...”)。散列也不合适,因为可能会不小心添加额外的条目。我写了下面的类来解决这个问题:classPairattr_accessor:head,:taildefinitialize(h,t)@head,@tail=h,tendend它工作得很好并且解决了问题,但我很想知道:Ruby标准库是否已经带有这样一个类? 最佳
我使用Nokogiri(Rubygem)css搜索寻找某些在我的html里面。看起来Nokogiri的css搜索不喜欢正则表达式。我想切换到Nokogiri的xpath搜索,因为这似乎支持搜索字符串中的正则表达式。如何在xpath搜索中实现下面提到的(伪)css搜索?require'rubygems'require'nokogiri'value=Nokogiri::HTML.parse(ABBlaCD3"HTML_END#my_blockisgivenmy_bl="1"#my_eqcorrespondstothisregexmy_eq="\/[0-9]+\/"#FIXMEThefoll
我正在尝试使用Curbgem执行以下POST以解析云curl-XPOST\-H"X-Parse-Application-Id:PARSE_APP_ID"\-H"X-Parse-REST-API-Key:PARSE_API_KEY"\-H"Content-Type:image/jpeg"\--data-binary'@myPicture.jpg'\https://api.parse.com/1/files/pic.jpg用这个:curl=Curl::Easy.new("https://api.parse.com/1/files/lion.jpg")curl.multipart_form_
无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD
导读:随着叮咚买菜业务的发展,不同的业务场景对数据分析提出了不同的需求,他们希望引入一款实时OLAP数据库,构建一个灵活的多维实时查询和分析的平台,统一数据的接入和查询方案,解决各业务线对数据高效实时查询和精细化运营的需求。经过调研选型,最终引入ApacheDoris作为最终的OLAP分析引擎,Doris作为核心的OLAP引擎支持复杂地分析操作、提供多维的数据视图,在叮咚买菜数十个业务场景中广泛应用。作者|叮咚买菜资深数据工程师韩青叮咚买菜创立于2017年5月,是一家专注美好食物的创业公司。叮咚买菜专注吃的事业,为满足更多人“想吃什么”而努力,通过美好食材的供应、美好滋味的开发以及美食品牌的孵
本教程将在Unity3D中混合Optitrack与数据手套的数据流,在人体运动的基础上,添加双手手指部分的运动。双手手背的角度仍由Optitrack提供,数据手套提供双手手指的角度。 01 客户端软件分别安装MotiveBody与MotionVenus并校准人体与数据手套。MotiveBodyMotionVenus数据手套使用、校准流程参照:https://gitee.com/foheart_1/foheart-h1-data-summary.git02 数据转发打开MotiveBody软件的Streaming,开始向Unity3D广播数据;MotionVenus中设置->选项选择Unit
文章目录一、概述简介原理模块二、配置Mysql使用版本环境要求1.操作系统2.mysql要求三、配置canal-server离线下载在线下载上传解压修改配置单机配置集群配置分库分表配置1.修改全局配置2.实例配置垂直分库水平分库3.修改group-instance.xml4.启动监听四、配置canal-adapter1修改启动配置2配置映射文件3启动ES数据同步查询所有订阅同步数据同步开关启动4.验证五、配置canal-admin一、概述简介canal是Alibaba旗下的一款开源项目,Java开发。基于数据库增量日志解析,提供增量数据订阅&消费。Git地址:https://github.co
本文主要介绍在使用Selenium进行自动化测试或者任务时,对于使用了iframe的页面,如何定位iframe中的元素文章目录场景描述解决方案具体代码场景描述当我们在使用Selenium进行自动化测试的时候,可能会遇到一些界面或者窗体是使用HTML的iframe标签进行承载的。对于iframe中的标签,如果直接查找是无法找到的,会抛出没有找到元素的异常。比如近在咫尺的例子就是,CSDN的登录窗体就是使用的iframe,大家可以尝试通过F12开发者模式查看到的tag_name,class_name,id或者xpath来定位中的页面元素,会抛出NoSuchElementException异常。解决