在推荐系统中,我们常常需要用用户的观看时长作为目标来进行建模,那么如何训练一个模型来预估模型的用户的播放时长呢?
很容易想到把播放时长的预估问题作为一个回归问题,但是回归问题没有分类问题这么好预测。那么如何用分类的方法来解决这个问题呢,答案就是使用Weighted LR
先看一下一件事情发生的几率(Odds)的定义(时间发生的概率比上不发生的概率):
如果对Odds取自然对数,再让ln(Odds)等于一个线性回归函数,那么就得到了下面的等式:
其中logit(p/(1-p))就是大名鼎鼎的logit函数,logistics regression又名logit regression,上面的式子就是逻辑回归的由来。我们再做进一步运算,就可以转变成我们熟悉的逻辑回归的形式:
所以,LR其实就是事情发生的对数几率的回归模型
在这里,我们把观看时常作为样本的权重(负样本权重为1)加入到上面公式中,可以得到:
由于在视频推荐场景中,用户打开一个视频的概率p往往是一个很小的值,因此上式可以继续简化:
这样,加权后的对数几率预测的就是观看时长的期望
因此,YouTube采用 这一指数形式预测的就是曝光这个视频时,用户观看这个视频的时长的期望!利用该指标排序后再进行推荐,是完全符合YouTube的推荐场景和以观看时长为优化目标的设定的
训练Weighted LR一般来说有两种办法:
- 将正样本按照weight做重复sampling,然后输入模型进行训练;
- 在训练的梯度下降过程中,通过改变梯度的weight来得到Weighted LR。
总结和思考
参考[Youtube] Deep Neural Networks for YouTube Recommendations (Youtube 2016)这篇论文中的图
可以看到,训练时,还是当成一个二分类问题来训练就可以了
serving时,计算就是观看时常的预估值,完美的把一个回归任务转换成了一个分类任务
疑问
1. 正负样本是如何划分的?
参考资料
https://zhuanlan.zhihu.com/p/61827629
https://www.cnblogs.com/hellojamest/p/11871108.html