Weighted LR (WCE Weighted cross entropy)

在推荐系统中,我们常常需要用用户的观看时长作为目标来进行建模,那么如何训练一个模型来预估模型的用户的播放时长呢?

很容易想到把播放时长的预估问题作为一个回归问题,采用mse loss,但是mse loss存在两个问题:

  1. 分布假设:假设是预估label、误差项符合正态分布
  2. 预估局限:对离群值敏感

 

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一般来说有两种办法:

    1. 将正样本按照weight做重复sampling,然后输入模型进行训练;
    2. 在训练的梯度下降过程中,通过改变梯度的weight来得到Weighted LR。 

WCE其实假设了样本分布服从几何分布,如果样本分布不是几何分布,可能导致效果不好

 

参考资料

https://zhuanlan.zhihu.com/p/61827629

https://www.cnblogs.com/hellojamest/p/11871108.html

 

posted @ 2021-08-30 18:39  xd_xumaomao  阅读(1495)  评论(0编辑  收藏  举报