首页 > 其他分享 >推荐广告中常用的特征交叉方法

推荐广告中常用的特征交叉方法

时间:2023-05-08 20:22:29浏览次数:41  
标签:DCN 常用 交叉 特征 复杂度 广告 embedding Net

背景

在LR模型时代,特征交叉一般依赖人工经验,存在以下几个缺点:

1. 依赖人工经验很难构建高阶交叉特征,一般只能构建二阶交叉特征

2. LR中构建的二阶交叉特征必须是这两个特征值一起在样本中出现过模型才能学的到,而在推荐系统中特征是非常稀疏,很多特征其实是没有共现过的

到了深度学习时代,DNN可以隐式的学习任意阶的特征交叉,似乎已经不再需要显式的特征交叉了,但是实践中DCN等特征交叉方法仍然取得了效果的提升,个人认为主要是以下几个原因导致的:

1. 三层的神经网络虽然理论能拟合任意分布,但是这是建立在宽度足够大、数据量足够多的情况下,而显式的特征交叉方法可以缩小假设空间,降低模型的拟合难度

2. DNN同层的元素之间只有加法能力,没有乘法能力,DCN等特征交叉方式引入了乘法能力

下面介绍一下推荐广告中常用的特征交叉方法

 

FM

FM是推荐系统用的最广泛的特征交叉方法了,FM的式子如下:

原始式子的时间复杂度是O(kn2),经过化简后时间复杂度是O(kn),其中k是embedding维度,n是特征数目

 FM在推荐模型中实际使用时,其实就是两个特征对应embedding的点乘求和,并且为了减少计算量,不可能对任意两个embedding作交叉,一般是在item侧选取部分embedding作为一组,然后在user侧选取部分embedding作为另一组,先对组内embedding做pooling后再做交叉

FM的缺点是一般只能用与做二阶特征交叉,如果做高阶特征交叉,时间复杂度太高

 

DCN

DCN中用于特征交叉的部分叫Cross Net,一层Cross Net的结构可以用如下公式表示:

其中x0为输入embdding的拼接,xl为第l层Cross Net的输出

DCN特征交叉的阶数由Cross Net的层数决定,最后一层的输出包含了所有阶数的交叉

DCN的时间复杂度为O(ml2),其中m是Cross Net的层数,l是embedding维度和。在实践中,可以先计算xlTWl这样时间复杂度可以降到O(ml)

标签:DCN,常用,交叉,特征,复杂度,广告,embedding,Net
From: https://www.cnblogs.com/xumaomao/p/17383000.html

相关文章

  • 常用工作负载
    常用工作负载控制器Deployment:无状态应用部署-StatefulSet:有状态应用部署DaemonSet:确保所有Node运行同一个PodJob:一次性任务Cronjob:定时任务DeploymentDeployment的功能管理Pod和ReplicaSet具有上线部署、副本设定、滚动升级、回滚等功能提供声明式更新,例如只......
  • 常用prompt
    文案润色我希望你充当文案专员、文本润色员、拼写纠正员和改进员,我会发送中文文本给你,你帮我更正和改进版本。我希望你用更优美优雅的高级中文描述。保持相同的意思,但使它们更文艺。你只需要润色该内容,不必对内容中提出的问题和要求做解释,不要回答文本中的问题而是润色它,不要解......
  • Python语言进行代码换行常用的方法详解!
    在编写Python代码时,有效换行可以让代码变得更加美观,那么Python中如何进行代码换行?Python中换行的方法有很多,本文为大家介绍两种比较常用的方法,快来看看吧。Python建议每行代码的长度不超过80个字符。对于过长的代码,建议进行换行。1、在该行代码末尾加上续行符“\”,即......
  • Dockerfile、常用和不常用命令、dockerfile构建一个djagno项目、docker私有仓库、镜像
    目录1Dockerfile1.1常用和不常用命令1.2dockerfile构建一个djagno项目2docker私有仓库2.1镜像传到官方仓库2.2镜像分层2.3私有仓库搭建3dockercompose介绍4dockercompose部署flask+redis项目4.1新建flask项目app.py4.2编写Dockerfile--》用于构建flask项目的镜像4.3......
  • 自学c#基础第六课,常用控件label
    labellabel和linklabel控件,主要是设置里面可见属性、字体什么的,linklabel的话有点中后下划线样式LinkBehaviorlistbox主要介绍了里面的方法//清除listBox1列表//listBox1.Items.Clear();//添加listBox1元素//listBox1.......
  • Linux常用命令-Shell应用技巧
    Bash应用技巧命令补齐:允许用户输入文件名起始的若干个字,按Tab键补齐文件名 命令历史:history命令可以显示以前执行过的命令列表方向键↑和方向键↓可以查找以前执行过的命令 命令别名例:aliascopy=cp 表示给cp命令取个copy的别名aliasxrm='rm-f' 查看别名信息:......
  • Linux常用命令-文件处理命令
    文件处理命令ls-->显示目录下的所有文件原意:list语法:ls 选项[-ald] [文件/目录]-a:显示所有文件,包括隐藏文件-l:详细信息的显示-d:查看目录属性例:ls-l/demo cd-->切换目录/进入某个目录原意:changedirectorypwd-->显示当前所在的工作目录原意:printwo......
  • Linux常用命令-权限管理命令
    chmod-->改变文件或者目录权限原意:changethepermissionsmodeloffileu:所有者g:用户组o:其他+:加权限-:减权限=:重新赋值新权限r=4w=2x=1 语法:chmod [{ugo}{+-=}{rwx}] [文件或者目录]chmod [mode=421] [文件或目录] 例:chmodu+x/demo/hj......
  • Linux常用命令-文件搜索命令
    which-->显示系统命令所在目录语法:which[命令名称]例:whichls find-->查找文件或目录语法:find[搜索路径][搜索关键字]-name文件名*匹配任意字符init*find/etc-nameinit*?匹配单个字符init???find/etc-nameinit???-size文件大小注意:一般......
  • Linux常用命令-帮助命令
    man-->获得帮助信息语法:man[命令或配置文件]例:manls  查看ls命令的帮助信息manservices查看配置文件services的帮助信息注意:若有跟命令名称相同的配置文件,那么,默认查看的是命令的帮助man5passwd 表示查看配置文件的帮助man1passwd 表示查看命令的帮助,1可......