RecSys:排序中的融分公式与视频播放建模
引言
前置博客精排多目标模型
排序03:融合预估分数
在推荐系统中,如何将多个预估指标(如点击率、点赞率等)融合为一个综合分数是关键问题。以下是几种常见的融合方法:
1.简单的加权和
pclick+w1⋅plike+w2⋅pcollect+...p_{click} + w_1 \cdot p_{like} + w_2 \cdot p_{collect} + ... pclick+w1⋅plike+w2⋅pcollect+...
2. 点击率乘以加权和(具有实际意义)
点赞、收藏、转发等用户交互行为本质上都是在 点击行为发生之后才进行的,所以点击率*点赞率等指标实际上某个用户行为发生的概率
pclick∗(1+w1⋅plike+w2⋅pcollect+....)p_{click} * (1 + w_1 \cdot p_{like} + w_2 \cdot p_{collect} + ....) pclick∗(1+w1⋅plike+w2⋅pcollect+....)
- pclick∗1p_{click} * 1pclick∗1 表示点击率本身
- pclick∗plikep_{click} * p_{like}pclick∗plike 表示曝光后用户点赞的联合概率
3.海外某短视频平台的连乘融合
采用连乘方式,其中wnw_nwn 和 ana_nan为超参数,ptimep_{time}ptime是预估的播放时长
(1+w1⋅ptime)a1×(1+w2⋅plike)a2(1 + w_1 \cdot p_{time})^{a_1} \times (1 + w_2 \cdot p_{like})^{a_2} (1+w1⋅ptime)a1×(1+w2⋅plike)a2
4. 国内某短视频App的排名融合
独特之处在于先排序再融合:
- 先根据目标精排得分对候选视频进行排序,比如对预估时长进行排序
- 如果某视频排名第rtimer_{time}rtime,那么他的得分就是 1rtimeα1+β1\frac{1}{r_{time}^{\alpha_1} + \beta_1 }rtimeα1+β11,排名越小,得分越高
- 对点击、点赞等指标也进行同样处理
- 最终融合公式
w1rtimea1+β1+w2rclicka2+β2+w3rlikea3+β3+...\frac{w_1}{r_{time}^{a_1} + \beta_1} + \frac{w_2}{r_{click}^{a_2} + \beta_2} + \frac{w_3}{r_{like}^{a_3} + \beta_3} + ... rtimea1+β1w1+rclicka2+β2w2+rlikea3+β3w3+...
5. 国内某电商平台的转化路径融合
电商场景考虑完整转换路径:
- 电商转化过程:曝光 ->点击->加入购物车->付款
- 模型预估:pclick,pcart,ppayp_{click}, p_{cart}, p_{pay}pclick,pcart,ppay
- 融分公式(超参a1a_1a1-a4a_4a4需调优):
pclicka1×pcarta2×ppaya3p_{click}^{a_1} \times p_{cart}^{a_2} \times p_{pay}^{a_3} pclicka1×pcarta2×ppaya3
当该公式指数为1时,直接反映商品预期营收
排序04:视频播放建模
-
图文笔记排序的主要依据:
点击、点赞、收藏、转发、评论 …
- 用户的点击和交互反映出用户对图文笔记的兴趣
-
视频排序依据 还有播放时长和完播率
- 用户把视频视频播放完,自然而然也能说明用户喜欢该视频
-
直接用回归拟合播放时长效果不好,建议用Youtube的时长建模【1】
播放时长预估
- Sigmoid的公式是 p=11+e−z=ez1+ezp = \frac{1}{1 + e^{-z}} = \frac{e^z}{1 + e^z}p=1+e−z1=1+ezez
- 拟合目标; y=t1+ty = \frac{t}{ 1 + t}y=1+tt,我们可以看到两者的形式非常像,如果p=yp = yp=y,那么eze^zez就等于t播放时长的预估,那么在模型预估的时候我们直接输出exp(z)即可
-
训练阶段:
- 目标变量:y=t1+ty = \frac{t}{1 + t}y=1+tt(t为实际播放时长)
- 模型输出z经sigmoid转换:p=exp(z)1+exp(z)p = \frac{exp(z)}{1 + exp(z)}p=1+exp(z)exp(z)
- 损失函数(交叉熵):
−(t1+t⋅logp+11+tlog(1−p))-(\frac{t}{1+t} \cdot logp + \frac{1}{1+t}log(1-p)) −(1+tt⋅logp+1+t1log(1−p)) - 实际中可简化去掉1+t项
-
推理阶段:
- 直接输出exp(z)exp(z)exp(z)作为时长预估
- 将exp(z)exp(z)exp(z)纳入融合公式
完播率预估
回归方法
-
例:视频长度10分钟,实际播放4分钟,则实际播放率为y=0.4。
-
让预估播放率 p拟合y:
- loss=−(y⋅logp)+(1−y)⋅log(1−p)loss = -(y\cdot logp)+(1-y)\cdot log(1-p)loss=−(y⋅logp)+(1−y)⋅log(1−p)
-
线上预估完播率,模型输出p=0.73,意思是预计播放73%,反应中用户的兴趣
二元分类方法
-
定义完播指标,比完播80%
-
例如:视频长度10分钟,播放>8分钟作为正样本,播放<8分钟作为负样本
-
做二元分类训练模型:播放>80% VS 播放<80%
-
线上预估完播率,模型输出p=0.73,意思是
- 预估的播放量会跟点击率等指标一起,作为排序的依据
实际应用
- 实际中不能直接把完播率用于融分公式中
- 直觉上,15s的视频完播率会很高,但是15分钟的完播率就会很低了
- 如果直接使用完播率,会有利于短视频推荐而不利于长视频推荐
解决方法
- 用函数f拟合完播率,这样可以公平对待长短视频
- 线上预估完播率,然后做调整
pfinish=预估完播率f(视频长度)p_{finish} = \frac{预估完播率}{f(视频长度)} pfinish=f(视频长度)预估完播率
- 把pfinishp_finishpfinish作为融分公式的一项,能够反应用户对视频的兴趣,视频时长越长,函数值f越小
- 与点击率,点赞率等视频一起决定视频的排序
引用
【1】Paul Covington, Jay Adams, & Emte Sargin. Deep Neural Networks for YouTube Recommendations. In RecSys, 2016.
【2】王树森 推荐系统