【摘要】 本文用图示的方法梳理和介绍了多值类别特征加入到CTR预估模型的一般方法,通俗易懂。

我们都知道一般单值类别特征加入到CTR预估模型的方法是先对单值类别特征进行one-hot,然后和embedding 矩阵相乘转换成多维稠密特征,如下图 1 所示:

▲ 图1. 单值类别特征处理方法

上篇文章稠密特征加入CTR预估模型的方法中又总结了稠密特征加入到CTR预估模型中的方法。而在现实实际问题中,往往还会出现多值类别特征,比如我接触到的2019腾讯广告算法大赛中用户的行为兴趣特征就是多值类别特征,也就是一个用户可以有多个类别的兴趣,比如打篮球,乒乓球和跳舞等,并且不同用户的兴趣个数不一样。还有2019知乎看山杯比赛中的用户感兴趣的话题特征,也就是一个用户感兴趣的话题可以有多个,并且不同的用户感兴趣的话题个数不一,这些特征的形式都一般是如下结构(拿用户感兴趣的话题特征来说):

在CTR预估模型中,对这种多值类别特征的常用处理方法总结归纳如下:

▌非加权法

最常规的也最简单的是先对所有‘话题’集合进行one hot编码,然后按照图 1 方式对多值类别特征中的每一项进行稠密特征的转换,最后对转换后的稠密特征向量进行拼接,然后按项求均值或最大值或最小值等,整个过程可以用如图 2 表示:

▲ 图2. 常见多值类别特征处理方法

可以看出,这样对多值类别特征进行处理之后,可以把每个多值类别特征转换在同一维度空间中,这样输入到神经网络中不用为了保持输入维度一致而进行padding,使输入变稀疏,也方便和其他特征做交叉特征。

▌加权法

仔细一想,如果对多值类型特征直接求均值似乎不是很符合常理,毕竟用户对每个感兴趣话题的喜爱程度不一样,这就有了权重的引入,而不是简单粗暴的求均值了,具体引入权重的做法如图 3 示意图:

▲ 图3. 多值类别特征加权处理方法

那么权重是怎样得来的,总结以下:

❶ 通过数据挖掘得到多值特征中每个值的权重

例如用户感兴趣话题这个多值类型特征的权重可以这样获得:用户在相关话题问题下回答问题的个数或相关话题回答点赞的次数,也就是回答相关话题问题的个数越多,表明越对该话题越感兴趣,权重越大;点赞相关话题回答的次数越多,表明越对该话题越感兴趣,权重越大。

❷ 通过神经网络自动学习多值特征中每个值的权重

1.借鉴论文FiBiNET[1]中把SE模块用在学习不同embedding vector权重的思想。主要过程如图 4 :

▲ 图4. 利用SENet加权思想

先对得到的多维稠密特征横向求均值,这部分在SE[2]模块中称作squeeze,也就是压缩的意思,然后再用两个全连接层进行全连接操作,这部分在SE模块中称作excitation,也就是激励提取的意思,最终的输出也就是学习得到的多值类别特征中每个值对应的权重。由于是针对多值类别特征的处理,因此这里在编程实现的时候需要按照max length 进行padding之后,再进行one hot编码等后续操作。

2.借鉴论文AutoInt[3]中学习transformer[4]注意力机制的思想来学习得到embedding vector 在Value空间上的权重信息。具体操作如图 5 所示,M是多值类别特征值的个数:

▲ 图5. 利用transformer attention思想

先通过矩阵乘法线性变换将每个投射到多个子空间中,分别是Query,Key和Value三个空间,计算公式分别如下:

然后计算当前与多值类别特征中其他embedding vector 的相似度,即通过如下向量内积公式得到:

然后利用softmax对计算得到的相似度进行归一化,公式为:

该归一化后的值即为学习得到的每个在Value空间的权重,因此加权求和不是对加权,而是对映射到Value空间的特征进行加权求和,用公式表示如下:

总的来说,通过神经网络学习得到权重相比较通过数据挖掘得到权重来说计算复杂,计算量大,因此在选择时需要权衡一下。

除了多值类别特征,还有行为序列特征,他们的处理方法也有相似之处,可以互相借鉴学习,后面有时间介绍一些简单的行为序列特征的处理方法,感兴趣的可以关注一下公众号,精彩下期见~

▌参考文献

[1][FiBiNET] Combining Feature Importance and Bilinear feature Interaction for Click-Through Rate Prediction (RecSys 2019)

[2][SENet] Squeeze-and-Excitation Networks (CVPR 2018)

[3][AutoInt] AutoInt: Automatic Feature Interaction Learning via Self-Attentive Neural Networks (2018 arxiv)

[4][Transformer] Attention is all you need

点击以下标题查看更多往期内容:

  • CTR预估模型的发展有这样的规律

  • 稠密特征加入CTR预估模型的方法

  • 推荐系统技术演进趋势:召回->排序->重排

作者:wanderist

多值类别特征加入CTR预估模型的方法相关推荐

  1. 不为人知的稠密特征加入CTR预估模型的方法

    [摘要] 本文介绍了一种比较新颖的稠密特征加入CTR预估模型的方法并用图示的方法演示了基本稠密特征加入神经网络中过程. 稠密特征一般是相对稀疏特征来说的,我们知道类别特征经过独热编码之后比较稀疏,比如 ...

  2. [深度学习]CTR模型如何加入稠密连续型|多值类别特征

    一 稠密连续类型特征的处理 在点击率预估问题中,可以尝试的几种方法 1.归一化后直接拼接到embedding向量侧dnn部分,不参与fm部分交叉 归一化的方式可以包括:直接对原始特征做归一化:通过bn ...

  3. 深度CTR预估模型中的特征自动组合机制演化简史

    文 | 杨旭东 源 | 知乎 众所周知,深度学习在计算机视觉.语音识别.自然语言处理等领域最先取得突破并成为主流方法.但是,深度学习为什么是在这些领域而不是其他领域最先成功呢?我想一个原因就是图像.语 ...

  4. 深度长文 | 从FM推演各深度CTR预估模型(附开源代码)

    作者丨龙心尘 & 寒小阳 研究方向丨机器学习,数据挖掘 题记:多年以后,当资深算法专家们看着无缝对接用户需求的广告收入节节攀升时,他们可能会想起自己之前痛苦推导 FM 与深度学习公式的某个夜晚 ...

  5. 从FM推演各深度学习CTR预估模型

    本文的PDF版本.代码实现和数据可以在我的github取到. 1.引言 点击率(click-through rate, CTR)是互联网公司进行流量分配的核心依据之一.比如互联网广告平台,为了精细化权 ...

  6. 万字长文梳理CTR预估模型发展过程与关系图谱

    " 本文主要是对CTR预估中的常见模型进行梳理与总结,并分成模块进行概述.每个模型都会从「模型结构」.「优势」.「不足」三个方面进行探讨,在最后对所有模型之间的关系进行比较与总结" ...

  7. 从FM推演各深度CTR预估模型(附代码)

    作者: 龙心尘 && 寒小阳 时间:2018年7月 出处:https://blog.csdn.net/longxinchen_ml/article/details/81031736 h ...

  8. 主流CTR预估模型的演化及对比

    点击上方"AI派",选择"设为星标" 最新分享,第一时间送达! 文章作者:杨旭东 阿里巴巴 算法工程师 内容来源:算法工程师的自我修养@知乎专栏 出品社区:Da ...

  9. 前深度学习时代CTR预估模型的演化之路:从LR到FFM\n

    本文是王喆在 AI 前线 开设的原创技术专栏"深度学习 CTR 预估模型实践"的第二篇文章(以下"深度学习 CTR 预估模型实践"简称"深度 CTR ...

最新文章

  1. Android应用性能优化
  2. Jquery循环截取字符串(多出的字符串处理成...)
  3. SharedPreferences的工具类,使用起来方便、快捷
  4. arcgis自动完成面怎么用_硬派的自然断裂面石材怎么用才美?
  5. 移动端整屏滑动的实现
  6. 用户设置个人资料时,是否需要一个清空选项?
  7. CLEARTEXT communication to xxx not permitted by network security policy
  8. SSM中配置log4J输出sql语句
  9. 用CSS实现的模式窗口效果,弹出固定大小的窗口
  10. python PEP8规范
  11. 多个服务器数据互通_数据中心
  12. 分享一个自己写的table表格排序js插件(高效简洁)
  13. 螃蟹芯片RTL8762之修改蓝牙设备类型
  14. 辽宁移动cm201-2机顶盒把720P输出强制修改为1080P输出的方法
  15. PM:iOS 为什么感觉比 Android 流畅?
  16. Prevent Your Acne With Your Diet
  17. Install Qualcomm Development Environment
  18. cfa的pv怎么用计算机算,怎么用金融计算器算pv(金融计算器怎么用)
  19. rk3568适配温控风扇
  20. Hallucination Improves Few-Shot Object Detection

热门文章

  1. php如何做水仙花数,使用PHP实现水仙花数及各种特殊有趣数的输出
  2. 深度学习笔记(46) 深度卷积网络学习
  3. java c s聊天程序_Java建立C/S 模式聊天室服务器和客户端
  4. android开启热点softap模式,[RK3288][Android6.0] Wifi开启热点(SoftAP)流程小结
  5. oracle数据库启动多个监听,一台Oracle数据库服务器上两个监听同时使用
  6. 3d在调试区输出坐标_CSS3如何实现一个 3D 效果的魔方
  7. windows下命令
  8. 一些不错的sql语句
  9. 2019年3月23日
  10. [转帖]看完这篇文章你还敢说你懂JVM吗?