Weighted LR (WCE Weighted cross entropy)
在推荐系统中,我们常常需要用用户的观看时长作为目标来进行建模,那么如何训练一个模型来预估模型的用户的播放时长呢?
很容易想到把播放时长的预估问题作为一个回归问题,采用mse loss,但是mse loss存在两个问题:
- 分布假设:假设是预估label、误差项符合正态分布
- 预估局限:对离群值敏感
Youtube在经典论文 (Deep Neural Networks for YouTube Recommendations) 提出了WCE损失函数,巧妙的用一个分类任务来预测播放时长
我们知道LR的对数几率可以表示为:
正好就是模型过sigmoid函数之前的值,Youtube在论文中中指出可以把正样本的label置为ti(观看时长),负样本的label为0,这样损失函数可以写为:
做如下推导:
其中n是正样本的数目,k是负样本的数目,得出可以用ewx来表示预估的观看时长
可以为每一个正例增加一个负例来解决近似的问题,用y表示时长,loss变为:
可以得出wce loss在低估(y'<y)和高估(y'>y)时梯度不是对称的,低估时梯度很大,高估时梯度很小,很容易导致模型高估
可以看到,训练时,还是当成一个二分类问题来训练就可以了
serving时,计算ewx就是观看时常的预估值,完美的把一个回归任务转换成了一个分类任务
训练Weighted LR一般来说有两种办法:
- 将正样本按照weight做重复sampling,然后输入模型进行训练;
- 在训练的梯度下降过程中,通过改变梯度的weight来得到Weighted LR。
WCE其实假设了样本分布服从几何分布,如果样本分布不是几何分布,可能导致效果不好
参考资料
https://zhuanlan.zhihu.com/p/61827629
https://www.cnblogs.com/hellojamest/p/11871108.html