KDD‘21华为数值型特征做embedding,An Embedding Learning Framework for Numerical Features in CTR Prediction

2023-11-01

在这里插入图片描述

本文是针对数值型特征做embedding的方法。

背景

在这里插入图片描述

图1
常用的数值型embedding方法可以分为以下三类:

No Embedding

这类方法不做embedding,而是直接用原始的数值作为特征,或者在数值上面做一些改进,例如youtube对于数值型特征分别做平方和平方根得到
e YouTube  = [ x ~ 1 2 , x ~ 1 , x ~ 1 , x ~ 2 2 , x ~ 2 , x ~ 2 , … , x ~ N 2 , x ~ N , x ~ N ] \mathrm{e}_{\text {YouTube }}=\left[\tilde{x}_{1}^{2}, \tilde{x}_{1}, \sqrt{\tilde{x}_{1}}, \tilde{x}_{2}^{2}, \tilde{x}_{2}, \sqrt{\tilde{x}_{2}}, \ldots, \tilde{x}_{N}^{2}, \tilde{x}_{N}, \sqrt{\tilde{x}_{N}}\right] eYouTube =[x~12,x~1,x~1 ,x~22,x~2,x~2 ,,x~N2,x~N,x~N ]
例如facebook的DLRM直接用DNN对数值特征建模 e D L R M = [ D N N ( [ x 1 , x 2 . . . , x N ] ) ] e_DLRM=[DNN([x_1,x_2...,x_N])] eDLRM=[DNN([x1,x2...,xN])]直接用DNN提取。
以上这些No Embedding方法无法捕获数值型特征域中的高阶信息,只是粗暴的直接利用了这些特征值。

Field Embedding

Field Embedding方法将一个域(field)内的数值型特征共享一个field embedding,简单理解就是同一个域内的特征采用同一个向量来转换。公式如下:
e E F = [ x 1 ⋅ e 1 , . . . , x N ⋅ e N ] e_{EF}=[x_1 \cdot e_1,...,x_N \cdot e_N] eEF=[x1e1,...,xNeN]
其中 e i ∈ R d e_i \in R^d eiRd表示第i个域对应的转换向量,d为转换后的维度。由于每一个域共享了单个embedding向量使得这种方式的表达能力也是受限的。

Discretization

离散化的方式就是将连续特征转换为离散特征(例如分桶)。将域内的特征进行离散化,然后在进行转换。
e j = E j ⋅ d j ( x j ) e_j=E_j \cdot d_j(x_j) ej=Ejdj(xj)
E j ∈ R H j × d E_j \in R^{H_j \times d} EjRHj×d表示第j个域对应的embedding矩阵, H j H_j Hj就是第j个域内离散化后的桶的个数。$d_j
$就是离散化函数。常用的离散化函数有以下三种:

EDD/EFD(Equal Distance/Frequency Discretization)

等距or等频离散化。
等距就是每个区间大小一样,将原始特征划分为 H j H_j Hj个等宽的桶。找到最大、最小值,然后根据桶的个数进行等分 w j = ( x j max ⁡ − x j min ⁡ ) / H j w_{j}=\left(x_{j}^{\max }-x_{j}^{\min }\right) / H_{j} wj=(xjmaxxjmin)/Hj,通过下式得到每个区间内的值对应的离散值。
x ^ j = d j E D D ( x j ) =  floor  ( ( x j − x j m i n ) / w j ) \widehat{x}_{j}=d_{j}^{E D D}\left(x_{j}\right)=\text { floor }\left(\left(x_{j}-x_{j}^{m i n}\right) / w_{j}\right) x j=djEDD(xj)= floor ((xjxjmin)/wj)
等频就是希望每个区间内的特征数得一样。

LD (Logarithm Discretization)

log离散化也是比较常用的离散化方法,公式如下:
x ^ j = d j L D ( x j ) =  floor  ( log ⁡ ( x j ) 2 ) \widehat{x}_{j}=d_{j}^{L D}\left(x_{j}\right)=\text { floor }\left(\log \left(x_{j}\right)^{2}\right) x j=djLD(xj)= floor (log(xj)2)

TD (Tree-based Discretization).

基于树模型的离散化(例如GBDT),树本身可以通过节点的划分对不同特征值划分到不同的节点,从而对其进行离散化。
虽然上述方法应用很广泛,但是存在以下三个问题:

  • TPP (Two-Phase Problem):上述方法如果要用到ctr模型中都得是两阶段的,即先做离散化,然后在做模型训练,无法同模型一起优化训练。
  • SBD (Similar value But Dis-similar embedding):这些划分方法可能存在将相似的值划分到不同的组,从而导致最终的embedding表征相差很大,比如一些边界值。例如5和6,而当时的分界条件刚好是5.5的话,5和6就会被分到不同的组。
  • DBS (Dis-similar value But Same embedding):同一个桶中可能会包含两个相差很大的值,但是他们却被分到一组,导致他们的embedding表征最后就是很相似。

方法

AutoDis总体框架

AutoDis主要包含三部分:meta embeddings,
automatic discretization and aggregation
,将这三部分结合起来可用公式表示为
e j = f ( d j Auto  ( x j ) , M E j ) \mathrm{e}_{j}=f\left(d_{j}^{\text {Auto }}\left(x_{j}\right), \mathrm{ME}_{j}\right) ej=f(djAuto (xj),MEj)
其中 M E j ME_j MEj表示第j个域对应的meta embedding矩阵, d j A u t o ( ) d_j^{Auto}() djAuto()表示automatic discretization自动离散化方法,最终的f()表示aggregation将他们融合到一起。

Meta Embedding

最直接的方式是将对每一个数值型特征值都赋予embedding,但是这回导致参数特别多。而field embedding的方式对每一个域内直接用单个向量进行转换,导致表达能力差。为了平衡该参数量和表达能力,本文设计了Meta embedding对第j个域内进行分桶后得到 H j H_j Hj个桶,对每个桶对应一个embedding。

Automatic Discretization

自动离散化。上述离散化方法我们可以称之为硬离散化(hard discretization),是完全限定好条件,然后将值固定划分到一个区域内。而本文所提方法可以称之为软离散化(soft),采用网络学习的方法。
h j = L e a k y R e L U ( w j x j ) x ~ j = W j   h j + α h j \begin{array}{l} \left.\mathbf{h}_{j}=LeakyReLU( \mathbf{w}_{j} x_{j}\right) \\ \widetilde{\mathbf{x}}_{j}=\mathrm{W}_{j} \mathrm{~h}_{j}+\alpha \mathbf{h}_{j} \end{array} hj=LeakyReLU(wjxj)x j=Wj hj+αhj
将第j个特征输入到两层神经网络中,具体计算方式如上式所示, α \alpha α为超参数,控制结合比例, w j ∈ R 1 × H j w_j \in R^{1 \times H_j} wjR1×Hj, W j ∈ R H j × H j W_j \in R^{H_j \times H_j} WjRHj×Hj,因此计算后得到 H j H_j Hj维的向量,在通过softmax标准化得到该向量属于每一个桶的概率。
x ^ j h = e 1 τ x ~ j h ∑ l = 1 H j e 1 τ x ~ j l \widehat{x}_{j}^{h}=\frac{e^{\frac{1}{\tau} \widetilde{x}_{j}^{h}}}{\sum_{l=1}^{H_{j}} e^{\frac{1}{\tau} \widetilde{x}_{j}^{l}}} x jh=l=1Hjeτ1x jleτ1x jh
其中温度系数 τ \tau τ控制离散化后的分布情况。硬离散化后,得到的是具体分到哪一个桶中,而这里的软离散化是分到各个桶的概率 x ^ j = d j Auto  ( x j ) = [ x ^ j 1 , … , x ^ j h , … , x ^ j H j ] \widehat{\mathrm{x}}_{j}=d_{j}^{\text {Auto }}\left(x_{j}\right)=\left[\widehat{x}_{j}^{1}, \ldots, \widehat{x}_{j}^{h}, \ldots, \widehat{x}_{j}^{H_{j}}\right] x j=djAuto (xj)=[x j1,,x jh,,x jHj]。当温度系数接近无穷大时,离散化后的整体分布接近均匀分布;而当系数接近0时,整体分布接近one-hot。因此调整到合适的温度系数对最终结果影响很大,而本文提出了自适应的方法,将温度系数的计算和模型融合到一起。
τ x j = S i g m o i d ( W j 2 L e a k y R e L U ( W j 1 [ n ˉ j ∥ x j ] ) ) \tau_{x_{j}}=Sigmoid\left(\mathbf{W}_{j}^{2} LeakyReLU \left(\mathbf{W}_{j}^{1}\left[\bar{n}_{j} \| x_{j}\right]\right)\right) τxj=Sigmoid(Wj2LeakyReLU(Wj1[nˉjxj]))
其中W为可学习参数,而x为特征, n j n_j nj表示统计特征(均值,累积分布cdf)

Aggregation Function

通过自动离散化,我们可以得到对应每个分桶的概率,而每个分桶都会对应meta embedding中的一个embedding,现在需要用一些方法将这两个部分结合起来。

  • Max-Pooling:选择概率最大的桶对应的embedding,这种就是之前的硬离散化
  • Top-K-Sum:将最大的前K个概率对应的embedding求和,无法根本上解决DBS问题,并且没有考虑到embedding之间的相互关系
  • Weighted-Average:很久分桶的概率对embedding进行加权平均,其实也很好理解,一方面,所有embedding都考虑到了;另一方面,权重大的占比大,更重要。

更多内容可以关注“秋枫学习笔记”,感谢大家的支持

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

KDD‘21华为数值型特征做embedding,An Embedding Learning Framework for Numerical Features in CTR Prediction 的相关文章

  • csdn笔记

    一阶系统的单位阶跃响应 unit Step Response 时间常数 Time constant 1 对于一阶系统 线性时不变 来说 传递函数的一般形式 2 时间常数 是系统特性 可用来识别系统 1 a 稳定时间Tss 4 4 a 3 系

随机推荐

  • pandas写入数据到Excel

    pandas将dataframe写入Excel 大数据写入 split count df shape 0 1000000 1 for i in range split count writer pd ExcelWriter xlsx for
  • 第十九篇 ResNet——论文翻译

    文章目录 摘要 1 引言 2 相关工作 3 深度残差学习 3 1 残差学习 3 2 快捷恒等映射 3 3 网络架构 3 4 实现 4 实验 4 1 ImageNet 分类 4 2 CIFAR 10 和分析 4 3 PASCAL 和 MS C
  • kvm中支持SCSI硬盘接口

    在KVM中安装ubuntu14 硬盘接口采用SCSI 可以正常安装 但是安装centos7却不行 原因是Centos7中没有SCSI驱动 在ubuntu中用lsmod命令查看 可以发现ubuntu中加载了sym53c8xx驱动 就是因为缺少
  • vue3自定义指令之复制指令、拖拽指令、按钮长按指令

    1 复制指令 主要用到 document execCommand Copy 这个api app directive copy beforeMount el binding el targetContent binding value el
  • 设计模式学习书籍推荐(设计模式书籍你读过哪几本)

    概述 想成为大神级别的攻城狮 就读以下这些书籍吧 让你从小白到大神 写出有灵魂程序 进阶之路 始于行动 编程重在理解加多实践 在当今快速发展的时代 要学会站在巨人的肩膀上 吸取经验 看书就是最快与最低成本的进阶之路 史上没有最好的书籍 只有
  • Flutter 布局(一)- Container详解

    Flutter 布局 一 Container详解 Q吹个大气球Q关注 62018 06 03 18 36 26字数 2 301阅读 84 509 本文主要介绍Flutter中非常常见的Container 列举了一些实际例子介绍如何使用 1
  • C#学习路线

    导读 计算机课程是一门实践的课程 而编程尤甚 入门建议从 Visual C 从入门到精通 或者 C 入门经典 这本书中文翻译比较生硬晦涩 可看原版 开始学习 过度到 C 高级编程 和 深入理解C 学习C 前提是下载好Visual Studi
  • 高斯整数环学习心得随笔及其实现

    高斯整数环学习心得随笔 过些天补上 代码 两个高斯整数相伴 即为相等 小于和大于 用复数的范数Norm来比较 应用场景举例 高斯整数环的唯一分解定理证明 整除和取模 带余除法 复数除法的结果是个有理数 但为了方便还是直接用double存了
  • torch 矩阵操作

    1 按索引赋值 index put index put不改变变量本身 index put 改变变量本身 相当于inplace操作 index input 维度1坐标列表 维度2坐标列表 赋值列表 x torch ones 3 3 print
  • Ubuntu20.04换为清华的镜像源

    安装过程 Ubuntu 的软件源配置文件是 etc apt sources list 在修改之前 先将系统自带的该文件做个备份 将该文件替换为清华源官网提供的内容 即可使用 TUNA 的软件源镜像 第一步 切换到root账户 sudo s
  • web前端(HTML+CSS)试题总结

    一 填空题 1 网页的后缀名通常为 xxx html 或 xxx htm 的页面 2 请写出在网页中设定表格边框的厚度的属性 border 设定表格单元格之间宽度属性 cellspacing 设定表格资料与单元格线的距离属性 cellpad
  • docker_run_application

    docker三种方式运行application 1 一次性运行 docker run ubuntu 14 04 bin echo Hello world 登录到container ubuntu14 04 运行命令 bin echo Hell
  • 六、HSV颜色空间应用实例——颜色分割提取与替换

    教程汇总 python基础入门系列 通过之前的章节 四 OpenCV颜色空间 HSV颜色模型 我们已经初步认识了HSV颜色空间的特性与优势 现在就来看两个典型的应用实例 颜色分割提取 与 颜色替换 颜色分割 通过HSV颜色空间的操作我们可以
  • visual studio 2019 调试驱动

    搭建驱动开发环境 搭建环境需要两台机器 本地机器用来代码开发 一台虚拟机用来测试和安装驱动 搭建驱动开发环境参考 visual studio 添加调试机器 驱动工程的属性 gt Driver Installer gt Deployment
  • 第三篇.WDF驱动之Helloworld

    借助Microsoft提供的kmdf框架 来理解一下驱动的一般流程 驱动的开发流程 1 驱动程序入口函数 DriverEntry 驱动程序的入口函数 类似于 main函数 程序的标准入口函数是DriverEntry 与WDM不同 WDF的D
  • Vue2.0安装Element-ui

    1 在项目终端输入 npm i element ui S 如果想知道是否安装成功 2 随后在main js里引入element组件 加载 element 组件库 import ElementUI from element ui 加载 ele
  • Linux入门级命令

    目录 1 开启终端 2 Linux命令格式 3 扩展 Linux下的命令补全 4 切换用户 5 uname命令 6 ls命令 用法一 用法二 用法三 7 pwd命令 8 cd命令 9 clear命令 10 reboot命令 11 shutd
  • MySQL表字段设置默认值

    环境 MySQL 5 1 命令行工具 问题 MySQL表字段设置默认值 解决 SQL CREATE TABLE test i a int NOT NULL DEFAULT 1 ts b timestamp NOT NULL DEFAULT
  • chrome启动参数设置

    chrome禁止本地浏览时加载本地其他文件 可以采用添加启动参数的方式来支持 添加参数为 allow file access from files 或者 disable web security Google Chrome 浏览器默认安装路
  • KDD‘21华为数值型特征做embedding,An Embedding Learning Framework for Numerical Features in CTR Prediction

    本文是针对数值型特征做embedding的方法 背景 图1 常用的数值型embedding方法可以分为以下三类 No Embedding 这类方法不做embedding 而是直接用原始的数值作为特征 或者在数值上面做一些改进 例如youtu