【推荐算法】ctr cvr联合建模问题合集

ctr和cvr分开建模相比ctcvr的优势?

在电商搜索推荐排序中,将ctr和cvr分开建模,相比直接建模ctcvr的优势是什么? - 萧瑟的回答 - 知乎

总结:

1、ctr的数据可以试试获取,能实时训练。但是cvr存在延迟现象,样本更新慢。一起训练容易出现跷跷板现象。

2、分开建模可以输出2个指标,便于调控。

3、CTR肯定是需要单独建模的,因为它影响用户的长期的参与度,也影响未来收益

CTCVR低,不代表用户不喜欢,也可能是因为其他原因(比如没钱,这个很容易建模,拿用户过去消费的金额,与当前商品的价格,一比就能知道)

观点1

在电商搜索推荐排序中,将ctr和cvr分开建模,相比直接建模ctcvr的优势是什么? - 萧瑟的回答 - 知乎

分开建模的话。可能有下面几个好处:

  1. 方便机制等进行更灵活的调控。电商排序公式,往往不会就是简单的 ctr∗cvr∗pricectr*cvr*price ,很多时候可能是类似这样的一些更复杂的排序公式 ctra+ctrb∗cvrc+ctrd∗cvre∗pricefctr^a+ctr^b*cvr^c+ctr^d*cvr^e*price^f ,这个时候就需要有单独的ctr和cvr分数以便进行调控。另外像很多广告业务,基于点击计费,那么也需要单独的ctr分数。cvr分数可能会用到的广告出价bid的调整上。
  2. 分开使迭代更方便。样本上,cvr的转化信号往往存在一定的延迟,长的可能好几天。而ctr的点击信号,长的一般也就几十分钟,如果ctr和cvr一起建模的话,对于实时训练系统来说,样本上可能会面临比较大的挑战。另外ctr和cvr一起训练,效果可能相互影响,出现跷跷板效应,新的算法迭代ctr和cvr离线在线指标出现一个涨一个跌的问题,会让人非常头疼

当然ctr和cvr放一起训练建模,也有一些优势,特别是如果算法组人力紧张的话,联合建模相比分开迭代,可以节省很多人力维护成本。

淘宝一些核心业务的算法组,ctr和cvr模型也经历过多次分分合合。ctr和cvr模型是否要放一起训练迭代,并没有标准答案,和当前组内人力情况、业务情况,技术迭代情况等都息息相关。

观点2

ctr和cvr分开建模,相比一起建模的好处。https://zhuanlan.zhihu.com/p/599920653

CTR肯定是需要单独建模的,因为它影响用户的长期的参与度,也影响未来收益

CTCVR低,不代表用户不喜欢,也可能是因为其他原因(比如没钱,这个很容易建模,拿用户过去消费的金额,与当前商品的价格,一比就能知道)

这个时候,如果只按CTCVR排序,只给用户显示那些物美价廉的东西,

一来用户审美疲劳

二来也失去了给用户种草的机会。万一哪天用户中彩票了,或者一狠心想剁手了,在你们的app上却不展示合适的商品,岂不是白白浪费了机会。

其次,CTCVR你也预估不准。

其实哪个XTR都不可能绝对预估准,因此需要修正。

有了CTR,CVR,我修正CTCVR起来,还能多有一些信息可咨利用

另外,ctr和cvr一起训练,出现跷跷板现象,经常出现一个涨一个跌的情况,比较麻烦。

观点3

ctr和cvr联合建模的好处 https://www.zhihu.com/question/546623702/answer/2621988648

有些单个任务数据不充分造成模型不能训练收敛到较好的性能。多个相关任务在一起训练,配置合适的网络结构,可以实现多个任务的样本共用,每个任务得样本都变多了,能够帮助模型训练收敛。

举个例子,比如CTR(点击率预估)和CVR(转化率)联合建模。对于CTR任务来说,CVR的转化样本是高质量的点击人群,加入CVR转化样本能够帮助CTR任务更加倾向高质量点击。反之对于CVR任务,一般样本比较稀疏,通过加入CTR的浅层转化样本,也能够帮助先粗分辨更可能转化的人群。

当然多任务模型需要配置好网络参数和门控,增强多个任务间的互相增益,降低多个任务负向干扰。

观点4

工作时建模ctr*cvr时,关于esmm的几个疑问?

1.esmm 的ctr 网络输出还是ctr么(是否有偏)

2.esmm 针对ctr、cvr 分布差异大(任务不太相关,比如ctr多数来自新用户,cvr多数转化来自老用户)是否会带来cvr侧的不稳定

3.为什么esmmcvr 侧塔会高估

观点5

MMOE解决跷跷板现象 https://zhuanlan.zhihu.com/p/462953458

mmoe借鉴了ensamble的解决思路,训练一批模型,**每个task用其中不同的一些模型。这样也就缓解了样本分布差别大导致的跷跷板问题。**实践经验表明expert的个数越多效果会越好,但边际效应递减,而且过多可能模型难以收敛。根据数据量,一般都会学习4-6个expert。

观点6(好)

cvr是否ctr的简单复制 - 彭红卿的文章 - 知乎

分别预估然后相乘算pctcvr是最佳做法么

初次碰到计算pctcvr是用pctr和pcvr相乘得出的,有人可能习以为常,有人可能就会有疑惑,为啥非得这么做,为啥不直接预估pctcvr,有哪些好处和坏处?

这么做的理由可以列好些出来,比如,分开预估就是两个模型,就可以有两拨人有事情做(大雾)。技术上呢?有一种说法是,ctcvr的正例太稀疏了,拆开来更好学习。业务上的理由有,比如app的转化有延迟,因此app ctr和app cvr数据处理流程不一样,模型的更新周期不一样,拆开更合理。还有一种说法是,ctr和cvr的特征不一样,所以拆开合情合理

端到端预估也有不少好处,比如app ctr在某些媒体上可能有很多行为码不好界定是否属于点击,比如自动播放的那些。端到端就直接跨过这个问题,毕竟转化的定义是清晰的。

另外,在召回和粗排阶段,是否直接预估pctcvr又更合理呢?

ctr有的特征是否cvr就该有

比如ctr使用了用户行为特征,cvr模型是否就一定也要用上,cvr特征永远是ctr特征的超集?

ctr是否能使用转化相关的特征,cvr能否使用点击相关特征

比如ctr能否使用用户转化行为相关特征,为什么会有效?而cvr使用点击相关特征又会有正面效果么?

ctr和cvr预估值怎样相互影响

ctr和cvr的低估和高估会怎样影响到对方?ctr数据的收集基本在站内就能完成,因此ctr相对来说会更容易做的更准确,当然点击label定义不清又是另外一种情形。而转化受广告主回传等因素的影响,真值的波动会比ctr大,从而容易导致预估偏差。因此ctr是pctcvr预估的稳定剂,预估偏差不能太大。

采样偏差在预估和统计上的影响

sampling selection bias的问题在esmm论文里头已经说的比较清楚了,训练的样本空间(其实是特征空间)应该跟推断的样本空间一致。不一致会发生什么情况呢?就拿cvr预估来说,如果还是用点击作为负样本,转化作为正样本来训练模型,相比esmm来说,正样本是没丢的,也就是正样本的特征空间也不会有损失。点击未转化的样本(通常意义的cvr负样本)也一个没少,那么损失的都是什么呢,是那些曝光没点击的,大概率是cvr的负样本。这些负样本会对特征空间有所扩充,而且会让负样本本身预估更准确。举个例子,有点击的用户可能集中在20-60岁之间,假设其他岁数就变成一个缺省值"-",如果是按照非esmm的cvr训练模式训练出来一个模型,在线上会有大量的样本命中"-",这个时候这些样本的预估值就会比较接近,没有区分度。对于ocpx系统来说,这是比较要命的,我们希望所有样本之间都有能区分它们的特征,从而能预估一个更细致的值,更好地控制成本,哪怕是这些预估值很低,意味着几乎不可能发生转化。个人理解可以看做是easy negative(相对positive而言)里头的hard(negative之间)情形,因为你需要把"-"再分开。这块跟召回用全量空间的样本有相似之处,都是一不小心就会导致训练的样本空间小于推断的样本空间,区别在于召回的全量空间包括没有曝光的样本,而esmm的全量空间包括没有点击的样本。 esmm认为能曝光出来已经是能产生转化的最低要求了,未曝光样本(同样会出现新特征值)在esmm看来属于冷启动问题,需要靠实时模型和泛化特征等手段来解决。

采样偏差在一个不太为人注意的任务上也存在,那就是统计。比如计算pcvr和tcvr之间的预估偏差,这个时候,是统计发生了点击后的预估值和点击后的真实值之间的gap,还是统计所有曝光的预估值的均值再和真实值相比?

在线学习

ctr模型用在线方式的处理,问题不太大,毕竟点击行为从端上上报不会比曝光延迟太久,漏掉正样本的情况比较少。但cvr的转化就不一样了,延迟的转化在app安装和激活上尤其明显,电商推荐的收藏到付费也可能时间很长。label延迟的情况下到底是否适合在线学习,这个事情业界好像是先整在线再说,快速数据流转成为一种理念。于是梯度补偿等方法也被提出来,没太多理论保证,但这也是为"快"所付出的代价。按预估转化时间分桶打散听起来更合理一些,也能跟在线处理结合,只是更复杂一些。

相关推荐
小言从不摸鱼10 分钟前
【AI大模型】ChatGPT模型原理介绍(下)
人工智能·python·深度学习·机器学习·自然语言处理·chatgpt
jiao0000134 分钟前
数据结构——队列
c语言·数据结构·算法
迷迭所归处2 小时前
C++ —— 关于vector
开发语言·c++·算法
leon6252 小时前
优化算法(一)—遗传算法(Genetic Algorithm)附MATLAB程序
开发语言·算法·matlab
CV工程师小林2 小时前
【算法】BFS 系列之边权为 1 的最短路问题
数据结构·c++·算法·leetcode·宽度优先
Navigator_Z3 小时前
数据结构C //线性表(链表)ADT结构及相关函数
c语言·数据结构·算法·链表
Aic山鱼3 小时前
【如何高效学习数据结构:构建编程的坚实基石】
数据结构·学习·算法
天玑y3 小时前
算法设计与分析(背包问题
c++·经验分享·笔记·学习·算法·leetcode·蓝桥杯
sjsjs113 小时前
【数据结构-一维差分】力扣1893. 检查是否区域内所有整数都被覆盖
数据结构·算法·leetcode
redcocal3 小时前
地平线秋招
python·嵌入式硬件·算法·fpga开发·求职招聘