Weighted Logistic Regression和Youtube时长预估

news2025/1/13 8:10:04

前段时间阅读了youtube的经典论文《Deep Neural Networks for YouTube Recommendations》,其通过weighted LR来实现时长预估,在其原文中对实现的描述非常短,大概意思是在损失函数中,对正例(点击)的交叉熵项,添加观看时长T_i作为权重,会使得LR预估的odds=\theta X能代表观看时长,即e^{\theta X}可以表示对观看时长的预估,这篇论文很多博文都分析烂大街了,但对于weighted LR来实现时长预估的原理,很多博主分析都很有问题,或者分析似是而非,本文将会从最本质来说明其实现思想。

The model is trained with logistic regression under crossentropy loss . However, the positive (clicked) impressions are weighted by the observed watch time on the video. Negative (unclicked) impressions all receive unit weight. In this way, the odds learned by the logistic regression are  \sum{T_i}/(N-k), where N is the number of training examples, k is the number of positive impressions, and T_i is the watch time of the ith impression. Assuming the fraction of positive impressions is small (which is true in our case), the learned odds are approximately E(T)(1+P), where P is the click probability and E(T) is the expected watch time of the impression. Since P is small, this product is close to E(T). For inference we use the exponential function e x as the final activation function to produce these odds that closely estimate expected watch time.

首先要说明的一点的是,基础LR主要是解决分类问题的概率p估计,假设对于一个二分类问题,模型的目标是预估label=1的概率p,其结构大概分成两个部分:

  • 通过线性回归拟合几率,其中p/1-p表示的是几率,\theta表示的模型的参数,X表示输入(式1):

log\frac{p}{1-p} = Wx + b = \theta X                                                                                       

  • 通过sigmord函数转换为p值(式2):

p=\frac{e^{\theta X}}{1+e^{\theta X}}                                                                                                              

  • 模型的优化目标(式3):

argmax \prod P(y_i|label=1)P(1-y_i|label=0) = argmax \prod P(y_i)^{label}P(1-y_i)^{1-label}     

  • 其损失函数可以表示为,即交叉熵函数(式4):

Loss =-[\sum label_i \cdot log(p_i) + (1 - label_i) \cdot log(1 - p_i)]

说完了基本LR的形式,我们回到Youtube的weighted LR的情况下,其主要是在交叉熵Loss函数添加了权重值,即正例用观看时长T_i作为权重值,负例的权重值为1,如下label我直接用click_i表示(式5):

Loss =-[\sum T_i \cdot click_i \cdot log(p_i) + 1 \cdot (1 - click_i) \cdot log(1 - p_i)] 

在论文中简单说明了下,如果损失函数通过这种权重设计后,经过训练,LR的输出就由原来的(式1)变为(式6):

log\frac{t p}{1-p} = Wx + b = \theta X

此处的tp表示对时长期望E(T)的预估,在p值远小于1的情况下,存在如下的近似形式(式7),即e^{\theta X}可以表示对观看时长的预估。 

 \frac{E(T)}{1-p} = e^{\theta X} \approx \frac{E(T)(1-p^2)}{1-p} \approx E(T)(1+p) \approx E(T)

现在最大的问题是,如何由带权重值的Loss(式5)推导出(式6)的结果:

  • 假设(式6)经过sigmord函数转换为(式8)

\tilde{p} = \frac{e^{\theta X}}{1+e^{\theta X}} = \frac{tp}{1-p} *\frac{1-p}{1-p+tp} = \frac{tp}{1-p + tp}

1- \tilde{p} = \frac{1-p}{1-p + tp}

  • 此时我们对比(式8)和(式2),在新weighted LR模型下,预估的label由变成了t * label,而负例仍为1-label,此时还是二分类问题,只是预估的label有变化,因此我们的优化目标变成如下(式9)

argmax \prod [P(y_i)^{label}]^{T_i}P(1-y_i)^{1-label}=argmax \prod P(y_i)^{label\cdot T_i}P(1-y_i)^{1-label}

  • 其损失函数可以表示为(式9),即同(式5)的形式:

Loss =-[\sum T_i \cdot click_i \cdot log(P(y_i)) + 1 \cdot (1 - click_i) \cdot log(1 - P(y_i))] 

总结:youtube采用weighted LR对时长进行预估的方式,实在是非常巧妙。对于时长等连续值预估的回归模型一直以来都相对复杂,而youtube仅仅只是通过调整损失函数的正例项权重值,就将原来由对点击率预估转换为对时长的预估,这里面虽然看起来简单,其中的一些细节值得反复思考。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/117837.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

中断的分类,中断指令,中断类型码,中断向量表,中断优先级

目录 PC机的中断系统 中断的分类 内部中断(软件中断) 故障 陷阱 异常终止 中断指令 指令类型中断指令 INT N 溢出中断指令 INTO 中断返回指令 IRET 外部中断(硬件中断) 非屏蔽中断(NMI) 可…

Springboot实现定时任务调度

前言 今天给大家分享一下,如何使用springboot快速实现简单的定时调度任务?有两种方法:基于注解的声明式调度任务注册;另外一种是基于实现SchedulingConfigurer的编程式的调度任务注册。 1. 基于注解(Scheduled&#…

Problem Set 2

Regularized Normal Equation for Linear Re-gression Given a data set {ar(), y()}i1,.-.,m with x()∈ R" and g(∈ R, the generalform of regularized linear regression is as follows n (he(zr)- g)3入>0号 (1) ” 2m i1 j1 Derive the normal equation. 设 X[(…

P7 PyTorch 属性统计

目录 Norm min max argmax argmin prod sum dim keepdim topk & kthvalue eq&equal一 Norm 作用: 求范数 1.1 1阶范数 # -*- coding: utf-8 -*- """ Created on Thu Dec 22 21:48:02 2022author: cxf """ import torc…

前端_Vue_8.生命周期钩子、侦听器

文章目录一、生命周期钩子1.1. 注册生命周期钩子1.2. 生命周期图示二、侦听器2.1. 基本示例2.2. 深层侦听器2.3. 即时回调的侦听器2.4. 回调的触发时机2.5. this.$watch()2.6. 停止侦听器一、生命周期钩子 每个Vue组件实例在创建时都需要经历一系列的初始化步骤,比…

重要升级:SpreadJS 16.0 crack SpreadJS 2023

SpreadJS 16.0 crack,建议大家赶紧升级,速度提升65% Adds enhancements for TableSheet, Designer, Calculation, Shape and Workbook. December 22, 2022 - 16:53New Version Features New File Format New .sjs file format makes the ExcelIO process…

Java语法:final关键字

一、final是什么? final关键字是最终的意思,可以修饰(类、方法、变量)。 二、final的作用 修饰类:表明该类是最终类,不能被继承; 报错说明:不发从最终的Animal类继承 修饰方法&…

数论专题(2)莫比乌斯反演

今天我们开始莫比乌斯反演的学习.这篇博文特别多的公式,强迫症患者请勿观看 莫比乌斯反演 莫比乌斯函数: 定义莫比乌斯函数,当时,. 当是square-free number时,设的质因数分解有项,则; 否则,; 根据上面,我们不难验证也是积性函数 定理 ,即和互为彼此的逆 证明 设n的不…

4.防止数据权限越权

涉及的修改 这次提交内容很简单,就是在这些类的操作上,添加了 checkXxxDataScope()方法校验,下面来看下这个方法的实现 /*** 校验用户是否有数据权限* * param userId 用户id*/ Override public void checkUserDataScope(Long userId) {if (…

RMQ延迟队列

目录一、场景二、TTL和DLX三、开发步骤一、场景 “订单下单成功后,15分钟未支付自动取消” 1.传统处理超时订单 采取定时任务轮训数据库订单,并且批量处理。其弊端也是显而易见的;对服务器、数据库性会有很大的要求, 并且当处理大…

jeecg-boot前端实现表格插槽、定制化修改

大家好,我是雄雄。 前言 关于jeecg-boot,之前介绍过好多好多次,至于说这是个什么样的技术,这里不在详细介绍,大家可以在gitee或者百度上搜搜,大致了解一下。 因为是个开源的框架,所以一般小项目…

Unity 3D 创建简单的几何模型 || Unity 3D Assets 游戏资源目录管理

Unity 3D 创建简单的几何模型 Unity 3D 是一个强大的游戏开发引擎。在游戏开发中使用的模型常常是从外部导入的,Unity 3D 为了方便游戏开发者快速创建模型,提供了一些简单的几何模型,其中包括立方体、球体、圆柱体、胶囊体等。 自由物体创建…

单测在商家前端业务中的实践

1. 背景 商家系统是提供给得物商家在得物平台上可以稳定运营的服务抓手,前端代码也伴随着系统的发展而不断壮大。这样将导致文档却更新不及时,最后想再通过这些文档回溯业务逻辑也非常困难。 且若代码结构上没有关注,动辄就会产出一个大几千…

LFU 的设计与实现

LFU 的设计与实现 作者:Grey 原文地址: 博客园:LFU 的设计与实现 CSDN:LFU 的设计与实现 题目描述 LFU(least frequently used)。即最不经常使用页置换算法。 题目链接:LeetCode 460. LF…

浅析Linux字符设备驱动程序内核机制

前段时间在学习linux设备驱动的时候,看了陈学松著的《深入Linux设备驱动程序内核机制》一书。说实话,这是一本很好的书,作者不但给出了在设备驱动程序开发过程中的所需要的知识点(如相应的函数和数据结构),…

从零开始的MySQL(2)

目录1.数据库约束1.1 unique1.2 not null1.3 default1.5 primary key1.6 foreign key2. 将A的记录插入到B中3.聚合函数3.1 count()函数3.2 sum()函数3.3 avg()函数3.4 max()函数3.5 MIN()函数3.6 group by4.联合查询4.1 内连接4.2 外连接4.3 自连接4.4 子连接1.数据库约束 约束…

【简单易上手】昇思MindSpore邀你定制专属Diffusion模型

昇思MindSpore首个可训练diffusion模型DDPM马上要和大家见面了,操作简单,可训练推理,单卡即可运行,欢迎广大产学研开发者使用启智社区免费Ascend NPU算力体验 最近爆火的AI绘图,相信大家并不陌生了。 从AI绘图软件生成…

知识图谱的知识表示:向量表示方法

目录 从词向量到实体向量 知识图谱向量表示学习模型 TransE TransH TransR TransD TransX系列总结 DisMult 从词向量到实体向量 知识图谱的向量表示。有一类词是代表实体的,假如对这类实体词的向量做一些计算,比如用Rome向量减去Italy的向量&am…

使用界面组件Telerik ThemeBuilder研发主题,只需要这七步!

Telerik DevCraft包含一个完整的产品栈来构建您下一个Web、移动和桌面应用程序。它使用HTML和每个.NET平台的UI库,加快开发速度。Telerik DevCraft提供最完整的工具箱,用于构建现代和面向未来的业务应用程序。 ThemeBuilder是一个web应用程序&#xff0…

前端基础(一)_初识JavaScript

最开始的时候,浏览器只能显示文本和图片,并不能做各种动态的操作。 一、JavaScript的历史 1、网景公司的布兰登艾奇开发了js 2、借鉴了java的数据管理机制、c的函数 3、Js的创建是用来解决浏览器和用户之间互动的问题(表单提交的问题&#…