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

news/2024/7/5 4:46:00

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.为什么esmm cvr 侧塔会高估

观点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延迟的情况下到底是否适合在线学习,这个事情业界好像是先整在线再说,快速数据流转成为一种理念。于是梯度补偿等方法也被提出来,没太多理论保证,但这也是为“快”所付出的代价。按预估转化时间分桶打散听起来更合理一些,也能跟在线处理结合,只是更复杂一些。


http://lihuaxi.xjx100.cn/news/1693129.html

相关文章

万物归宗系列01-html基本语法

万物归宗系列&#xff0c;即什么都懂一点系列。 HTML是标签语言&#xff0c;一般成双成对。 Hypertext Markup Language&#xff1a;超⽂本标记语⾔。是⽤来制作⽹页的⼀种标记语⾔。 1 基本框架 <!DOCTYPE html> <html lang"en"> <head><meta…

从实时数据库转战时序数据库,他陪伴 TDengine 从 1.0 走到 3.0

关于采访嘉宾 在关胜亮的学生时代&#xff0c;“神童”这个称号如影随形&#xff0c;很多人初听时会觉得这个称谓略显夸张&#xff0c;有些人还会认为这是不是就是一种调侃&#xff0c;但是如果你听说过他的经历&#xff0c;就会理解这一称号的意义所在了。 受到教师母亲的影…

React之引入css的方式

一、是什么 组件式开发选择合适的css解决方案尤为重要 通常会遵循以下规则&#xff1a; 可以编写局部css&#xff0c;不会随意污染其他组件内的原生&#xff1b;可以编写动态的css&#xff0c;可以获取当前组件的一些状态&#xff0c;根据状态的变化生成不同的css样式&#…

2023 1019 广州akw,笔试,SPC软件工程师

1. 共用体 共用体的出现主要是为了解决以下两个主要痛点&#xff1a; 内存节省&#xff1a;在一些编程场景中&#xff0c;需要存储多种不同数据类型的数据&#xff0c;但不一定需要同时存储所有这些数据。如果使用独立的变量或结构体来表示这些数据&#xff0c;会浪费内存空间…

在js中常见的时间格式及其转换

在计算机编程中&#xff0c;常见的时间格式有以下几种&#xff1a; 1&#xff1a;ISO 8601 格式&#xff1a;国际标准的日期和时间表示方法。 格式为 “YYYY-MM-DDTHH:mm:ss.sssZ”&#xff0c;其中 “T” 是日期和时间的分隔符&#xff0c;“Z” 表示时区。 例如&#xff0c;…

使用kubekey部署k8s集群和kubesphere、在已有k8s集群上部署kubesphere

目录 前言什么是kubekey&#xff08;简称kk&#xff09;单节点上安装 kubesphere&#xff08;all in one 快速熟悉kubesphere&#xff09;部署 kubernetes和和kubesphere 多节点安装部署 kubernetes和和kubesphere 离线安装k8s v1.22.17和kubesphere v3.3.2联网-在已有k8s集群上…

JAVA-分布式锁

今天给大家带来一个项目中单模块加锁的方法 原理是通过springAOP前后置任务对需要调用的方法加锁&#xff0c;不懂aop的可以先去学习一下aop&#xff0c;这里就直接上锁代码了 //配置文件还没配置package com.cfood.order.aop;import io.lettuce.core.RedisClient; import org…

DAC8563数模转换模块的使用介绍

前言 DAC8563为16位低功耗、电压输出、双通道的数模转换器&#xff0c;其包括一个2.5V4ppm/C 内部基准&#xff0c;从而提供了一个 2.5V 或 5V 的满量程输出电压范围。 此内部基准有一精度&#xff0c;并且能够在 VREFIN/VREFOUT引脚上提供或吸收高个 5mV 的初始达 20mA 的电流…